Index: imaps-frontend/node_modules/@babel/code-frame/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/code-frame/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/code-frame/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,19 +1,37 @@
 {
-  "name": "@babel/code-frame",
-  "version": "7.26.2",
-  "description": "Generate errors that contain a code frame that point to source locations.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_from": "@babel/code-frame@^7.26.0",
+  "_id": "@babel/code-frame@7.26.2",
+  "_inBundle": false,
+  "_integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+  "_location": "/@babel/code-frame",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/code-frame@^7.26.0",
+    "name": "@babel/code-frame",
+    "escapedName": "@babel%2fcode-frame",
+    "scope": "@babel",
+    "rawSpec": "^7.26.0",
+    "saveSpec": null,
+    "fetchSpec": "^7.26.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-code-frame"
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/template",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+  "_shasum": "4b5fab97d33338eff916235055f0ebc21e573a85",
+  "_spec": "@babel/code-frame@^7.26.0",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/core",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "@babel/helper-validator-identifier": "^7.25.9",
@@ -21,4 +39,6 @@
     "picocolors": "^1.0.0"
   },
+  "deprecated": false,
+  "description": "Generate errors that contain a code frame that point to source locations.",
   "devDependencies": {
     "import-meta-resolve": "^4.1.0",
@@ -28,4 +48,17 @@
     "node": ">=6.9.0"
   },
-  "type": "commonjs"
+  "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/code-frame",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-code-frame"
+  },
+  "type": "commonjs",
+  "version": "7.26.2"
 }
Index: imaps-frontend/node_modules/@babel/compat-data/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/compat-data/README.md	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/compat-data/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,5 @@
 # @babel/compat-data
 
-> 
+> The compat-data to determine required Babel plugins
 
 See our website [@babel/compat-data](https://babeljs.io/docs/babel-compat-data) for more information.
Index: imaps-frontend/node_modules/@babel/compat-data/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/compat-data/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/compat-data/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,15 +1,44 @@
 {
-  "name": "@babel/compat-data",
-  "version": "7.26.2",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "description": "",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-compat-data"
+  "_from": "@babel/compat-data@^7.25.9",
+  "_id": "@babel/compat-data@7.26.3",
+  "_inBundle": false,
+  "_integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
+  "_location": "/@babel/compat-data",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/compat-data@^7.25.9",
+    "name": "@babel/compat-data",
+    "escapedName": "@babel%2fcompat-data",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
   },
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@babel/helper-compilation-targets"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz",
+  "_shasum": "99488264a56b2aded63983abd6a417f03b92ed02",
+  "_spec": "@babel/compat-data@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/helper-compilation-targets",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "The compat-data to determine required Babel plugins",
+  "devDependencies": {
+    "@mdn/browser-compat-data": "^5.5.36",
+    "core-js-compat": "^3.37.1",
+    "electron-to-chromium": "^1.4.816"
+  },
+  "engines": {
+    "node": ">=6.9.0"
   },
   "exports": {
@@ -21,7 +50,5 @@
     "./plugin-bugfixes": "./plugin-bugfixes.js"
   },
-  "scripts": {
-    "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
-  },
+  "homepage": "https://github.com/babel/babel#readme",
   "keywords": [
     "babel",
@@ -29,12 +56,18 @@
     "compat-data"
   ],
-  "devDependencies": {
-    "@mdn/browser-compat-data": "^5.5.36",
-    "core-js-compat": "^3.37.1",
-    "electron-to-chromium": "^1.4.816"
+  "license": "MIT",
+  "name": "@babel/compat-data",
+  "publishConfig": {
+    "access": "public"
   },
-  "engines": {
-    "node": ">=6.9.0"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-compat-data"
   },
-  "type": "commonjs"
+  "scripts": {
+    "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
+  },
+  "type": "commonjs",
+  "version": "7.26.3"
 }
Index: imaps-frontend/node_modules/@babel/core/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/core/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/core/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,40 +1,30 @@
 {
-  "name": "@babel/core",
-  "version": "7.26.0",
-  "description": "Babel compiler core.",
-  "main": "./lib/index.js",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_from": "@babel/core@^7.26.0",
+  "_id": "@babel/core@7.26.0",
+  "_inBundle": false,
+  "_integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
+  "_location": "/@babel/core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/core@^7.26.0",
+    "name": "@babel/core",
+    "escapedName": "@babel%2fcore",
+    "scope": "@babel",
+    "rawSpec": "^7.26.0",
+    "saveSpec": null,
+    "fetchSpec": "^7.26.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-core"
-  },
-  "homepage": "https://babel.dev/docs/en/next/babel-core",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen",
-  "keywords": [
-    "6to5",
-    "babel",
-    "classes",
-    "const",
-    "es6",
-    "harmony",
-    "let",
-    "modules",
-    "transpile",
-    "transpiler",
-    "var",
-    "babel-core",
-    "compiler"
+  "_requiredBy": [
+    "/@vitejs/plugin-react"
   ],
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "funding": {
-    "type": "opencollective",
-    "url": "https://opencollective.com/babel"
+  "_resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
+  "_shasum": "d78b6023cc8f3114ccf049eb219613f74a747b40",
+  "_spec": "@babel/core@^7.26.0",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@vitejs/plugin-react",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
   "browser": {
@@ -46,4 +36,8 @@
     "./src/transform-file.ts": "./src/transform-file-browser.ts"
   },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "@ampproject/remapping": "^2.2.0",
@@ -63,4 +57,6 @@
     "semver": "^6.3.1"
   },
+  "deprecated": false,
+  "description": "Babel compiler core.",
   "devDependencies": {
     "@babel/helper-transform-fixture-test-runner": "^7.26.0",
@@ -79,4 +75,39 @@
     "ts-node": "^11.0.0-beta.1"
   },
-  "type": "commonjs"
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "funding": {
+    "type": "opencollective",
+    "url": "https://opencollective.com/babel"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-core",
+  "keywords": [
+    "6to5",
+    "babel",
+    "classes",
+    "const",
+    "es6",
+    "harmony",
+    "let",
+    "modules",
+    "transpile",
+    "transpiler",
+    "var",
+    "babel-core",
+    "compiler"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/core",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-core"
+  },
+  "type": "commonjs",
+  "version": "7.26.0"
 }
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/base.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/base.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/base.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -25,7 +25,5 @@
     var _node$directives$trai;
     const newline = node.body.length ? 2 : 1;
-    this.printSequence(node.directives, {
-      trailingCommentsLineOffset: newline
-    });
+    this.printSequence(node.directives, undefined, newline);
     if (!((_node$directives$trai = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai.length)) {
       this.newline(newline);
@@ -42,15 +40,10 @@
     var _node$directives$trai2;
     const newline = node.body.length ? 2 : 1;
-    this.printSequence(node.directives, {
-      indent: true,
-      trailingCommentsLineOffset: newline
-    });
+    this.printSequence(node.directives, true, newline);
     if (!((_node$directives$trai2 = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai2.length)) {
       this.newline(newline);
     }
   }
-  this.printSequence(node.body, {
-    indent: true
-  });
+  this.printSequence(node.body, true);
   exit();
   this.rightBrace(node);
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/base.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/base.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/base.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["File","node","program","print","interpreter","Program","_node$directives","noIndentInnerCommentsHere","printInnerComments","directivesLen","directives","length","_node$directives$trai","newline","body","printSequence","trailingCommentsLineOffset","trailingComments","BlockStatement","_node$directives2","token","exit","enterDelimited","_node$directives$trai2","indent","rightBrace","Directive","value","semicolon","unescapedSingleQuoteRE","unescapedDoubleQuoteRE","DirectiveLiteral","raw","getPossibleRaw","format","minified","undefined","test","Error","InterpreterDirective","Placeholder","name","expectedNode"],"sources":["../../src/generators/base.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function File(this: Printer, node: t.File) {\n  if (node.program) {\n    // Print this here to ensure that Program node 'leadingComments' still\n    // get printed after the hashbang.\n    this.print(node.program.interpreter);\n  }\n\n  this.print(node.program);\n}\n\nexport function Program(this: Printer, node: t.Program) {\n  // An empty Program doesn't have any inner tokens, so\n  // we must explicitly print its inner comments.\n  this.noIndentInnerCommentsHere();\n  this.printInnerComments();\n\n  const directivesLen = node.directives?.length;\n  if (directivesLen) {\n    const newline = node.body.length ? 2 : 1;\n    this.printSequence(node.directives, {\n      trailingCommentsLineOffset: newline,\n    });\n    if (!node.directives[directivesLen - 1].trailingComments?.length) {\n      this.newline(newline);\n    }\n  }\n\n  this.printSequence(node.body);\n}\n\nexport function BlockStatement(this: Printer, node: t.BlockStatement) {\n  this.token(\"{\");\n  const exit = this.enterDelimited();\n\n  const directivesLen = node.directives?.length;\n  if (directivesLen) {\n    const newline = node.body.length ? 2 : 1;\n    this.printSequence(node.directives, {\n      indent: true,\n      trailingCommentsLineOffset: newline,\n    });\n    if (!node.directives[directivesLen - 1].trailingComments?.length) {\n      this.newline(newline);\n    }\n  }\n\n  this.printSequence(node.body, { indent: true });\n\n  exit();\n  this.rightBrace(node);\n}\n\nexport function Directive(this: Printer, node: t.Directive) {\n  this.print(node.value);\n  this.semicolon();\n}\n\n// These regexes match an even number of \\ followed by a quote\nconst unescapedSingleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*'/;\nconst unescapedDoubleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*\"/;\n\nexport function DirectiveLiteral(this: Printer, node: t.DirectiveLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.token(raw);\n    return;\n  }\n\n  const { value } = node;\n\n  // NOTE: In directives we can't change escapings,\n  // because they change the behavior.\n  // e.g. \"us\\x65 strict\" (\\x65 is e) is not a \"use strict\" directive.\n\n  if (!unescapedDoubleQuoteRE.test(value)) {\n    this.token(`\"${value}\"`);\n  } else if (!unescapedSingleQuoteRE.test(value)) {\n    this.token(`'${value}'`);\n  } else {\n    throw new Error(\n      \"Malformed AST: it is not possible to print a directive containing\" +\n        \" both unescaped single and double quotes.\",\n    );\n  }\n}\n\nexport function InterpreterDirective(\n  this: Printer,\n  node: t.InterpreterDirective,\n) {\n  this.token(`#!${node.value}`);\n  this.newline(1, true);\n}\n\nexport function Placeholder(this: Printer, node: t.Placeholder) {\n  this.token(\"%%\");\n  this.print(node.name);\n  this.token(\"%%\");\n\n  if (node.expectedNode === \"Statement\") {\n    this.semicolon();\n  }\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["File","node","program","print","interpreter","Program","_node$directives","noIndentInnerCommentsHere","printInnerComments","directivesLen","directives","length","_node$directives$trai","newline","body","printSequence","undefined","trailingComments","BlockStatement","_node$directives2","token","exit","enterDelimited","_node$directives$trai2","rightBrace","Directive","value","semicolon","unescapedSingleQuoteRE","unescapedDoubleQuoteRE","DirectiveLiteral","raw","getPossibleRaw","format","minified","test","Error","InterpreterDirective","Placeholder","name","expectedNode"],"sources":["../../src/generators/base.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function File(this: Printer, node: t.File) {\n  if (node.program) {\n    // Print this here to ensure that Program node 'leadingComments' still\n    // get printed after the hashbang.\n    this.print(node.program.interpreter);\n  }\n\n  this.print(node.program);\n}\n\nexport function Program(this: Printer, node: t.Program) {\n  // An empty Program doesn't have any inner tokens, so\n  // we must explicitly print its inner comments.\n  this.noIndentInnerCommentsHere();\n  this.printInnerComments();\n\n  const directivesLen = node.directives?.length;\n  if (directivesLen) {\n    const newline = node.body.length ? 2 : 1;\n    this.printSequence(node.directives, undefined, newline);\n    if (!node.directives[directivesLen - 1].trailingComments?.length) {\n      this.newline(newline);\n    }\n  }\n\n  this.printSequence(node.body);\n}\n\nexport function BlockStatement(this: Printer, node: t.BlockStatement) {\n  this.token(\"{\");\n  const exit = this.enterDelimited();\n\n  const directivesLen = node.directives?.length;\n  if (directivesLen) {\n    const newline = node.body.length ? 2 : 1;\n    this.printSequence(node.directives, true, newline);\n    if (!node.directives[directivesLen - 1].trailingComments?.length) {\n      this.newline(newline);\n    }\n  }\n\n  this.printSequence(node.body, true);\n\n  exit();\n  this.rightBrace(node);\n}\n\nexport function Directive(this: Printer, node: t.Directive) {\n  this.print(node.value);\n  this.semicolon();\n}\n\n// These regexes match an even number of \\ followed by a quote\nconst unescapedSingleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*'/;\nconst unescapedDoubleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*\"/;\n\nexport function DirectiveLiteral(this: Printer, node: t.DirectiveLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.token(raw);\n    return;\n  }\n\n  const { value } = node;\n\n  // NOTE: In directives we can't change escapings,\n  // because they change the behavior.\n  // e.g. \"us\\x65 strict\" (\\x65 is e) is not a \"use strict\" directive.\n\n  if (!unescapedDoubleQuoteRE.test(value)) {\n    this.token(`\"${value}\"`);\n  } else if (!unescapedSingleQuoteRE.test(value)) {\n    this.token(`'${value}'`);\n  } else {\n    throw new Error(\n      \"Malformed AST: it is not possible to print a directive containing\" +\n        \" both unescaped single and double quotes.\",\n    );\n  }\n}\n\nexport function InterpreterDirective(\n  this: Printer,\n  node: t.InterpreterDirective,\n) {\n  this.token(`#!${node.value}`);\n  this.newline(1, true);\n}\n\nexport function Placeholder(this: Printer, node: t.Placeholder) {\n  this.token(\"%%\");\n  this.print(node.name);\n  this.token(\"%%\");\n\n  if (node.expectedNode === \"Statement\") {\n    this.semicolon();\n  }\n}\n"],"mappings":";;;;;;;;;;;;AAGO,SAASA,IAAIA,CAAgBC,IAAY,EAAE;EAChD,IAAIA,IAAI,CAACC,OAAO,EAAE;IAGhB,IAAI,CAACC,KAAK,CAACF,IAAI,CAACC,OAAO,CAACE,WAAW,CAAC;EACtC;EAEA,IAAI,CAACD,KAAK,CAACF,IAAI,CAACC,OAAO,CAAC;AAC1B;AAEO,SAASG,OAAOA,CAAgBJ,IAAe,EAAE;EAAA,IAAAK,gBAAA;EAGtD,IAAI,CAACC,yBAAyB,CAAC,CAAC;EAChC,IAAI,CAACC,kBAAkB,CAAC,CAAC;EAEzB,MAAMC,aAAa,IAAAH,gBAAA,GAAGL,IAAI,CAACS,UAAU,qBAAfJ,gBAAA,CAAiBK,MAAM;EAC7C,IAAIF,aAAa,EAAE;IAAA,IAAAG,qBAAA;IACjB,MAAMC,OAAO,GAAGZ,IAAI,CAACa,IAAI,CAACH,MAAM,GAAG,CAAC,GAAG,CAAC;IACxC,IAAI,CAACI,aAAa,CAACd,IAAI,CAACS,UAAU,EAAEM,SAAS,EAAEH,OAAO,CAAC;IACvD,IAAI,GAAAD,qBAAA,GAACX,IAAI,CAACS,UAAU,CAACD,aAAa,GAAG,CAAC,CAAC,CAACQ,gBAAgB,aAAnDL,qBAAA,CAAqDD,MAAM,GAAE;MAChE,IAAI,CAACE,OAAO,CAACA,OAAO,CAAC;IACvB;EACF;EAEA,IAAI,CAACE,aAAa,CAACd,IAAI,CAACa,IAAI,CAAC;AAC/B;AAEO,SAASI,cAAcA,CAAgBjB,IAAsB,EAAE;EAAA,IAAAkB,iBAAA;EACpE,IAAI,CAACC,SAAK,IAAI,CAAC;EACf,MAAMC,IAAI,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC;EAElC,MAAMb,aAAa,IAAAU,iBAAA,GAAGlB,IAAI,CAACS,UAAU,qBAAfS,iBAAA,CAAiBR,MAAM;EAC7C,IAAIF,aAAa,EAAE;IAAA,IAAAc,sBAAA;IACjB,MAAMV,OAAO,GAAGZ,IAAI,CAACa,IAAI,CAACH,MAAM,GAAG,CAAC,GAAG,CAAC;IACxC,IAAI,CAACI,aAAa,CAACd,IAAI,CAACS,UAAU,EAAE,IAAI,EAAEG,OAAO,CAAC;IAClD,IAAI,GAAAU,sBAAA,GAACtB,IAAI,CAACS,UAAU,CAACD,aAAa,GAAG,CAAC,CAAC,CAACQ,gBAAgB,aAAnDM,sBAAA,CAAqDZ,MAAM,GAAE;MAChE,IAAI,CAACE,OAAO,CAACA,OAAO,CAAC;IACvB;EACF;EAEA,IAAI,CAACE,aAAa,CAACd,IAAI,CAACa,IAAI,EAAE,IAAI,CAAC;EAEnCO,IAAI,CAAC,CAAC;EACN,IAAI,CAACG,UAAU,CAACvB,IAAI,CAAC;AACvB;AAEO,SAASwB,SAASA,CAAgBxB,IAAiB,EAAE;EAC1D,IAAI,CAACE,KAAK,CAACF,IAAI,CAACyB,KAAK,CAAC;EACtB,IAAI,CAACC,SAAS,CAAC,CAAC;AAClB;AAGA,MAAMC,sBAAsB,GAAG,uBAAuB;AACtD,MAAMC,sBAAsB,GAAG,uBAAuB;AAE/C,SAASC,gBAAgBA,CAAgB7B,IAAwB,EAAE;EACxE,MAAM8B,GAAG,GAAG,IAAI,CAACC,cAAc,CAAC/B,IAAI,CAAC;EACrC,IAAI,CAAC,IAAI,CAACgC,MAAM,CAACC,QAAQ,IAAIH,GAAG,KAAKf,SAAS,EAAE;IAC9C,IAAI,CAACI,KAAK,CAACW,GAAG,CAAC;IACf;EACF;EAEA,MAAM;IAAEL;EAAM,CAAC,GAAGzB,IAAI;EAMtB,IAAI,CAAC4B,sBAAsB,CAACM,IAAI,CAACT,KAAK,CAAC,EAAE;IACvC,IAAI,CAACN,KAAK,CAAC,IAAIM,KAAK,GAAG,CAAC;EAC1B,CAAC,MAAM,IAAI,CAACE,sBAAsB,CAACO,IAAI,CAACT,KAAK,CAAC,EAAE;IAC9C,IAAI,CAACN,KAAK,CAAC,IAAIM,KAAK,GAAG,CAAC;EAC1B,CAAC,MAAM;IACL,MAAM,IAAIU,KAAK,CACb,mEAAmE,GACjE,2CACJ,CAAC;EACH;AACF;AAEO,SAASC,oBAAoBA,CAElCpC,IAA4B,EAC5B;EACA,IAAI,CAACmB,KAAK,CAAC,KAAKnB,IAAI,CAACyB,KAAK,EAAE,CAAC;EAC7B,IAAI,CAACb,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;AACvB;AAEO,SAASyB,WAAWA,CAAgBrC,IAAmB,EAAE;EAC9D,IAAI,CAACmB,KAAK,CAAC,IAAI,CAAC;EAChB,IAAI,CAACjB,KAAK,CAACF,IAAI,CAACsC,IAAI,CAAC;EACrB,IAAI,CAACnB,KAAK,CAAC,IAAI,CAAC;EAEhB,IAAInB,IAAI,CAACuC,YAAY,KAAK,WAAW,EAAE;IACrC,IAAI,CAACb,SAAS,CAAC,CAAC;EAClB;AACF","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/classes.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/classes.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/classes.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -62,10 +62,5 @@
     separator == null || separator(-1);
     const exit = this.enterDelimited();
-    this.printJoin(node.body, {
-      statement: true,
-      indent: true,
-      separator,
-      printTrailingSeparator: true
-    });
+    this.printJoin(node.body, true, true, separator, true);
     exit();
     if (!this.endsWith(10)) this.newline();
@@ -207,7 +202,5 @@
   } else {
     this.newline();
-    this.printSequence(node.body, {
-      indent: true
-    });
+    this.printSequence(node.body, true);
     this.rightBrace(node);
   }
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/classes.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/classes.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/classes.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","isExportDefaultDeclaration","isExportNamedDeclaration","ClassDeclaration","node","parent","inExport","_shouldPrintDecoratorsBeforeExport","printJoin","decorators","declare","word","space","abstract","id","print","typeParameters","superClass","superTypeParameters","implements","printList","body","ClassBody","token","length","newline","separator","classBodyEmptySemicolonsPrinter","exit","enterDelimited","statement","indent","printTrailingSeparator","endsWith","rightBrace","printer","tokenMap","start","end","indexes","getIndexes","k","occurrenceCount","nextLocIndex","advanceNextLocIndex","i","tok","matchesOriginal","_tokens","undefined","ClassProperty","static","format","preserveFormat","_node$key$loc","endLine","key","loc","line","catchUp","tsPrintClassMemberModifiers","computed","_variance","optional","definite","typeAnnotation","value","semicolon","ClassAccessorProperty","_node$key$loc2","ClassPrivateProperty","ClassMethod","_classMethodHead","ClassPrivateMethod","_node$key$loc3","_methodHead","StaticBlock","printSequence"],"sources":["../../src/generators/classes.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nexport function ClassDeclaration(\n  this: Printer,\n  node: t.ClassDeclaration,\n  parent: t.Node,\n) {\n  const inExport =\n    isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent);\n\n  if (\n    !inExport ||\n    !this._shouldPrintDecoratorsBeforeExport(\n      parent as t.ExportDeclaration & { declaration: t.ClassDeclaration },\n    )\n  ) {\n    this.printJoin(node.decorators);\n  }\n\n  if (node.declare) {\n    // TS\n    this.word(\"declare\");\n    this.space();\n  }\n\n  if (node.abstract) {\n    // TS\n    this.word(\"abstract\");\n    this.space();\n  }\n\n  this.word(\"class\");\n\n  if (node.id) {\n    this.space();\n    this.print(node.id);\n  }\n\n  this.print(node.typeParameters);\n\n  if (node.superClass) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.print(node.superClass);\n    this.print(node.superTypeParameters);\n  }\n\n  if (node.implements) {\n    this.space();\n    this.word(\"implements\");\n    this.space();\n    this.printList(node.implements);\n  }\n\n  this.space();\n  this.print(node.body);\n}\n\nexport { ClassDeclaration as ClassExpression };\n\nexport function ClassBody(this: Printer, node: t.ClassBody) {\n  this.token(\"{\");\n  if (node.body.length === 0) {\n    this.token(\"}\");\n  } else {\n    this.newline();\n\n    const separator = classBodyEmptySemicolonsPrinter(this, node);\n    separator?.(-1); // print leading semicolons in preserveFormat mode\n\n    const exit = this.enterDelimited();\n    this.printJoin(node.body, {\n      statement: true,\n      indent: true,\n      separator,\n      printTrailingSeparator: true,\n    });\n    exit();\n\n    if (!this.endsWith(charCodes.lineFeed)) this.newline();\n\n    this.rightBrace(node);\n  }\n}\n\nfunction classBodyEmptySemicolonsPrinter(printer: Printer, node: t.ClassBody) {\n  if (!printer.tokenMap || node.start == null || node.end == null) {\n    return null;\n  }\n\n  // \"empty statements\" in class bodies are not represented in the AST.\n  // Print them by checking if there are any ; tokens between the current AST\n  // member and the next one.\n\n  const indexes = printer.tokenMap.getIndexes(node);\n  if (!indexes) return null;\n\n  let k = 1; // start from 1 to skip '{'\n\n  let occurrenceCount = 0;\n\n  let nextLocIndex = 0;\n  const advanceNextLocIndex = () => {\n    while (\n      nextLocIndex < node.body.length &&\n      node.body[nextLocIndex].start == null\n    ) {\n      nextLocIndex++;\n    }\n  };\n  advanceNextLocIndex();\n\n  return (i: number) => {\n    if (nextLocIndex <= i) {\n      nextLocIndex = i + 1;\n      advanceNextLocIndex();\n    }\n\n    const end =\n      nextLocIndex === node.body.length\n        ? node.end\n        : node.body[nextLocIndex].start;\n\n    let tok;\n    while (\n      k < indexes.length &&\n      printer.tokenMap.matchesOriginal(\n        (tok = printer._tokens[indexes[k]]),\n        \";\",\n      ) &&\n      tok.start < end\n    ) {\n      printer.token(\";\", undefined, occurrenceCount++);\n      k++;\n    }\n  };\n}\n\nexport function ClassProperty(this: Printer, node: t.ClassProperty) {\n  this.printJoin(node.decorators);\n\n  if (!node.static && !this.format.preserveFormat) {\n    // catch up to property key, avoid line break\n    // between member TS modifiers and the property key.\n    const endLine = node.key.loc?.end?.line;\n    if (endLine) this.catchUp(endLine);\n  }\n\n  this.tsPrintClassMemberModifiers(node);\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    this._variance(node);\n    this.print(node.key);\n  }\n\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassAccessorProperty(\n  this: Printer,\n  node: t.ClassAccessorProperty,\n) {\n  this.printJoin(node.decorators);\n\n  // catch up to property key, avoid line break\n  // between member modifiers and the property key.\n  const endLine = node.key.loc?.end?.line;\n  if (endLine) this.catchUp(endLine);\n\n  // TS does not support class accessor property yet\n  this.tsPrintClassMemberModifiers(node);\n\n  this.word(\"accessor\", true);\n  this.space();\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    // Todo: Flow does not support class accessor property yet.\n    this._variance(node);\n    this.print(node.key);\n  }\n\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassPrivateProperty(\n  this: Printer,\n  node: t.ClassPrivateProperty,\n) {\n  this.printJoin(node.decorators);\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.print(node.key);\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassMethod(this: Printer, node: t.ClassMethod) {\n  this._classMethodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function ClassPrivateMethod(this: Printer, node: t.ClassPrivateMethod) {\n  this._classMethodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function _classMethodHead(\n  this: Printer,\n  node: t.ClassMethod | t.ClassPrivateMethod | t.TSDeclareMethod,\n) {\n  this.printJoin(node.decorators);\n\n  if (!this.format.preserveFormat) {\n    // catch up to method key, avoid line break\n    // between member modifiers/method heads and the method key.\n    const endLine = node.key.loc?.end?.line;\n    if (endLine) this.catchUp(endLine);\n  }\n\n  this.tsPrintClassMemberModifiers(node);\n  this._methodHead(node);\n}\n\nexport function StaticBlock(this: Printer, node: t.StaticBlock) {\n  this.word(\"static\");\n  this.space();\n  this.token(\"{\");\n  if (node.body.length === 0) {\n    this.token(\"}\");\n  } else {\n    this.newline();\n    this.printSequence(node.body, { indent: true });\n    this.rightBrace(node);\n  }\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","isExportDefaultDeclaration","isExportNamedDeclaration","ClassDeclaration","node","parent","inExport","_shouldPrintDecoratorsBeforeExport","printJoin","decorators","declare","word","space","abstract","id","print","typeParameters","superClass","superTypeParameters","implements","printList","body","ClassBody","token","length","newline","separator","classBodyEmptySemicolonsPrinter","exit","enterDelimited","endsWith","rightBrace","printer","tokenMap","start","end","indexes","getIndexes","k","occurrenceCount","nextLocIndex","advanceNextLocIndex","i","tok","matchesOriginal","_tokens","undefined","ClassProperty","static","format","preserveFormat","_node$key$loc","endLine","key","loc","line","catchUp","tsPrintClassMemberModifiers","computed","_variance","optional","definite","typeAnnotation","value","semicolon","ClassAccessorProperty","_node$key$loc2","ClassPrivateProperty","ClassMethod","_classMethodHead","ClassPrivateMethod","_node$key$loc3","_methodHead","StaticBlock","printSequence"],"sources":["../../src/generators/classes.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nexport function ClassDeclaration(\n  this: Printer,\n  node: t.ClassDeclaration,\n  parent: t.Node,\n) {\n  const inExport =\n    isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent);\n\n  if (\n    !inExport ||\n    !this._shouldPrintDecoratorsBeforeExport(\n      parent as t.ExportDeclaration & { declaration: t.ClassDeclaration },\n    )\n  ) {\n    this.printJoin(node.decorators);\n  }\n\n  if (node.declare) {\n    // TS\n    this.word(\"declare\");\n    this.space();\n  }\n\n  if (node.abstract) {\n    // TS\n    this.word(\"abstract\");\n    this.space();\n  }\n\n  this.word(\"class\");\n\n  if (node.id) {\n    this.space();\n    this.print(node.id);\n  }\n\n  this.print(node.typeParameters);\n\n  if (node.superClass) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.print(node.superClass);\n    this.print(\n      process.env.BABEL_8_BREAKING\n        ? // @ts-ignore(Babel 7 vs Babel 8) Renamed\n          node.superTypeArguments\n        : // @ts-ignore(Babel 7 vs Babel 8) Renamed\n          node.superTypeParameters,\n    );\n  }\n\n  if (node.implements) {\n    this.space();\n    this.word(\"implements\");\n    this.space();\n    this.printList(node.implements);\n  }\n\n  this.space();\n  this.print(node.body);\n}\n\nexport { ClassDeclaration as ClassExpression };\n\nexport function ClassBody(this: Printer, node: t.ClassBody) {\n  this.token(\"{\");\n  if (node.body.length === 0) {\n    this.token(\"}\");\n  } else {\n    this.newline();\n\n    const separator = classBodyEmptySemicolonsPrinter(this, node);\n    separator?.(-1); // print leading semicolons in preserveFormat mode\n\n    const exit = this.enterDelimited();\n    this.printJoin(node.body, true, true, separator, true);\n    exit();\n\n    if (!this.endsWith(charCodes.lineFeed)) this.newline();\n\n    this.rightBrace(node);\n  }\n}\n\nfunction classBodyEmptySemicolonsPrinter(printer: Printer, node: t.ClassBody) {\n  if (!printer.tokenMap || node.start == null || node.end == null) {\n    return null;\n  }\n\n  // \"empty statements\" in class bodies are not represented in the AST.\n  // Print them by checking if there are any ; tokens between the current AST\n  // member and the next one.\n\n  const indexes = printer.tokenMap.getIndexes(node);\n  if (!indexes) return null;\n\n  let k = 1; // start from 1 to skip '{'\n\n  let occurrenceCount = 0;\n\n  let nextLocIndex = 0;\n  const advanceNextLocIndex = () => {\n    while (\n      nextLocIndex < node.body.length &&\n      node.body[nextLocIndex].start == null\n    ) {\n      nextLocIndex++;\n    }\n  };\n  advanceNextLocIndex();\n\n  return (i: number) => {\n    if (nextLocIndex <= i) {\n      nextLocIndex = i + 1;\n      advanceNextLocIndex();\n    }\n\n    const end =\n      nextLocIndex === node.body.length\n        ? node.end\n        : node.body[nextLocIndex].start;\n\n    let tok;\n    while (\n      k < indexes.length &&\n      printer.tokenMap.matchesOriginal(\n        (tok = printer._tokens[indexes[k]]),\n        \";\",\n      ) &&\n      tok.start < end\n    ) {\n      printer.token(\";\", undefined, occurrenceCount++);\n      k++;\n    }\n  };\n}\n\nexport function ClassProperty(this: Printer, node: t.ClassProperty) {\n  this.printJoin(node.decorators);\n\n  if (!node.static && !this.format.preserveFormat) {\n    // catch up to property key, avoid line break\n    // between member TS modifiers and the property key.\n    const endLine = node.key.loc?.end?.line;\n    if (endLine) this.catchUp(endLine);\n  }\n\n  this.tsPrintClassMemberModifiers(node);\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    this._variance(node);\n    this.print(node.key);\n  }\n\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassAccessorProperty(\n  this: Printer,\n  node: t.ClassAccessorProperty,\n) {\n  this.printJoin(node.decorators);\n\n  // catch up to property key, avoid line break\n  // between member modifiers and the property key.\n  const endLine = node.key.loc?.end?.line;\n  if (endLine) this.catchUp(endLine);\n\n  // TS does not support class accessor property yet\n  this.tsPrintClassMemberModifiers(node);\n\n  this.word(\"accessor\", true);\n  this.space();\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    // Todo: Flow does not support class accessor property yet.\n    this._variance(node);\n    this.print(node.key);\n  }\n\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassPrivateProperty(\n  this: Printer,\n  node: t.ClassPrivateProperty,\n) {\n  this.printJoin(node.decorators);\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.print(node.key);\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassMethod(this: Printer, node: t.ClassMethod) {\n  this._classMethodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function ClassPrivateMethod(this: Printer, node: t.ClassPrivateMethod) {\n  this._classMethodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function _classMethodHead(\n  this: Printer,\n  node: t.ClassMethod | t.ClassPrivateMethod | t.TSDeclareMethod,\n) {\n  this.printJoin(node.decorators);\n\n  if (!this.format.preserveFormat) {\n    // catch up to method key, avoid line break\n    // between member modifiers/method heads and the method key.\n    const endLine = node.key.loc?.end?.line;\n    if (endLine) this.catchUp(endLine);\n  }\n\n  this.tsPrintClassMemberModifiers(node);\n  this._methodHead(node);\n}\n\nexport function StaticBlock(this: Printer, node: t.StaticBlock) {\n  this.word(\"static\");\n  this.space();\n  this.token(\"{\");\n  if (node.body.length === 0) {\n    this.token(\"}\");\n  } else {\n    this.newline();\n    this.printSequence(node.body, true);\n    this.rightBrace(node);\n  }\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/deprecated.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/deprecated.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/deprecated.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.addDeprecatedGenerators = addDeprecatedGenerators;
+function addDeprecatedGenerators(PrinterClass) {
+  {
+    const deprecatedBabel7Generators = {
+      Noop() {},
+      TSExpressionWithTypeArguments(node) {
+        this.print(node.expression);
+        this.print(node.typeParameters);
+      },
+      DecimalLiteral(node) {
+        const raw = this.getPossibleRaw(node);
+        if (!this.format.minified && raw !== undefined) {
+          this.word(raw);
+          return;
+        }
+        this.word(node.value + "m");
+      }
+    };
+    Object.assign(PrinterClass.prototype, deprecatedBabel7Generators);
+  }
+}
+
+//# sourceMappingURL=deprecated.js.map
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/deprecated.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/deprecated.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/deprecated.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["addDeprecatedGenerators","PrinterClass","deprecatedBabel7Generators","Noop","TSExpressionWithTypeArguments","node","print","expression","typeParameters","DecimalLiteral","raw","getPossibleRaw","format","minified","undefined","word","value","Object","assign","prototype"],"sources":["../../src/generators/deprecated.ts"],"sourcesContent":["import type Printer from \"../printer\";\nimport type * as t from \"@babel/types\";\n\nexport type DeprecatedBabel7ASTTypes =\n  | \"Noop\"\n  | \"TSExpressionWithTypeArguments\"\n  | \"DecimalLiteral\";\n\nexport function addDeprecatedGenerators(PrinterClass: typeof Printer) {\n  // Add Babel 7 generator methods that is removed in Babel 8\n  if (!process.env.BABEL_8_BREAKING) {\n    const deprecatedBabel7Generators = {\n      Noop(this: Printer) {},\n\n      TSExpressionWithTypeArguments(\n        this: Printer,\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        node: t.TSExpressionWithTypeArguments,\n      ) {\n        this.print(node.expression);\n        this.print(node.typeParameters);\n      },\n\n      DecimalLiteral(this: Printer, node: any) {\n        const raw = this.getPossibleRaw(node);\n        if (!this.format.minified && raw !== undefined) {\n          this.word(raw);\n          return;\n        }\n        this.word(node.value + \"m\");\n      },\n    } satisfies Record<\n      DeprecatedBabel7ASTTypes,\n      (this: Printer, node: any) => void\n    >;\n    Object.assign(PrinterClass.prototype, deprecatedBabel7Generators);\n  }\n}\n"],"mappings":";;;;;;AAQO,SAASA,uBAAuBA,CAACC,YAA4B,EAAE;EAEjC;IACjC,MAAMC,0BAA0B,GAAG;MACjCC,IAAIA,CAAA,EAAgB,CAAC,CAAC;MAEtBC,6BAA6BA,CAG3BC,IAAqC,EACrC;QACA,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,UAAU,CAAC;QAC3B,IAAI,CAACD,KAAK,CAACD,IAAI,CAACG,cAAc,CAAC;MACjC,CAAC;MAEDC,cAAcA,CAAgBJ,IAAS,EAAE;QACvC,MAAMK,GAAG,GAAG,IAAI,CAACC,cAAc,CAACN,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,CAACO,MAAM,CAACC,QAAQ,IAAIH,GAAG,KAAKI,SAAS,EAAE;UAC9C,IAAI,CAACC,IAAI,CAACL,GAAG,CAAC;UACd;QACF;QACA,IAAI,CAACK,IAAI,CAACV,IAAI,CAACW,KAAK,GAAG,GAAG,CAAC;MAC7B;IACF,CAGC;IACDC,MAAM,CAACC,MAAM,CAACjB,YAAY,CAACkB,SAAS,EAAEjB,0BAA0B,CAAC;EACnE;AACF","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/expressions.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/expressions.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/expressions.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -98,5 +98,7 @@
   }
   this.print(node.typeArguments);
-  this.print(node.typeParameters);
+  {
+    this.print(node.typeParameters);
+  }
   if (node.optional) {
     this.token("?.");
@@ -107,7 +109,5 @@
   this.tokenChar(40);
   const exit = this.enterDelimited();
-  this.printList(node.arguments, {
-    printTrailingSeparator: this.shouldPrintTrailingComma(")")
-  });
+  this.printList(node.arguments, this.shouldPrintTrailingComma(")"));
   exit();
   this.rightParens(node);
@@ -164,5 +164,7 @@
 function OptionalCallExpression(node) {
   this.print(node.callee);
-  this.print(node.typeParameters);
+  {
+    this.print(node.typeParameters);
+  }
   if (node.optional) {
     this.token("?.");
@@ -178,10 +180,10 @@
   this.print(node.callee);
   this.print(node.typeArguments);
-  this.print(node.typeParameters);
+  {
+    this.print(node.typeParameters);
+  }
   this.tokenChar(40);
   const exit = this.enterDelimited();
-  this.printList(node.arguments, {
-    printTrailingSeparator: this.shouldPrintTrailingComma(")")
-  });
+  this.printList(node.arguments, this.shouldPrintTrailingComma(")"));
   exit();
   this.rightParens(node);
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/expressions.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/expressions.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/expressions.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","_index","isCallExpression","isLiteral","isMemberExpression","isNewExpression","isPattern","UnaryExpression","node","operator","word","space","token","print","argument","DoExpression","async","body","ParenthesizedExpression","exit","enterDelimited","expression","rightParens","UpdateExpression","prefix","ConditionalExpression","test","consequent","alternate","NewExpression","parent","callee","format","minified","arguments","length","optional","typeArguments","typeParameters","tokenMap","endMatches","printList","printTrailingSeparator","shouldPrintTrailingComma","SequenceExpression","expressions","ThisExpression","Super","_shouldPrintDecoratorsBeforeExport","decoratorsBeforeExport","start","declaration","Decorator","newline","OptionalMemberExpression","computed","property","object","TypeError","value","OptionalCallExpression","CallExpression","Import","AwaitExpression","printTerminatorless","YieldExpression","delegate","EmptyStatement","semicolon","ExpressionStatement","tokenContext","TokenContext","expressionStatement","AssignmentPattern","left","type","typeAnnotation","right","AssignmentExpression","_endsWithDiv","BindExpression","MemberExpression","MetaProperty","meta","PrivateName","id","V8IntrinsicIdentifier","name","ModuleExpression","indent","directives","dedent","rightBrace"],"sources":["../../src/generators/expressions.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isCallExpression,\n  isLiteral,\n  isMemberExpression,\n  isNewExpression,\n  isPattern,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function UnaryExpression(this: Printer, node: t.UnaryExpression) {\n  const { operator } = node;\n  if (\n    operator === \"void\" ||\n    operator === \"delete\" ||\n    operator === \"typeof\" ||\n    // throwExpressions\n    operator === \"throw\"\n  ) {\n    this.word(operator);\n    this.space();\n  } else {\n    this.token(operator);\n  }\n\n  this.print(node.argument);\n}\n\nexport function DoExpression(this: Printer, node: t.DoExpression) {\n  if (node.async) {\n    this.word(\"async\", true);\n    this.space();\n  }\n  this.word(\"do\");\n  this.space();\n  this.print(node.body);\n}\n\nexport function ParenthesizedExpression(\n  this: Printer,\n  node: t.ParenthesizedExpression,\n) {\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.print(node.expression);\n  exit();\n  this.rightParens(node);\n}\n\nexport function UpdateExpression(this: Printer, node: t.UpdateExpression) {\n  if (node.prefix) {\n    this.token(node.operator);\n    this.print(node.argument);\n  } else {\n    this.print(node.argument, true);\n    this.token(node.operator);\n  }\n}\n\nexport function ConditionalExpression(\n  this: Printer,\n  node: t.ConditionalExpression,\n) {\n  this.print(node.test);\n  this.space();\n  this.token(\"?\");\n  this.space();\n  this.print(node.consequent);\n  this.space();\n  this.token(\":\");\n  this.space();\n  this.print(node.alternate);\n}\n\nexport function NewExpression(\n  this: Printer,\n  node: t.NewExpression,\n  parent: t.Node,\n) {\n  this.word(\"new\");\n  this.space();\n  this.print(node.callee);\n  if (\n    this.format.minified &&\n    node.arguments.length === 0 &&\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    !node.optional &&\n    !isCallExpression(parent, { callee: node }) &&\n    !isMemberExpression(parent) &&\n    !isNewExpression(parent)\n  ) {\n    return;\n  }\n\n  this.print(node.typeArguments); // Flow\n  this.print(node.typeParameters); // TS\n\n  // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n  if (node.optional) {\n    // TODO: This can never happen\n    this.token(\"?.\");\n  }\n\n  if (\n    node.arguments.length === 0 &&\n    this.tokenMap &&\n    !this.tokenMap.endMatches(node, \")\")\n  ) {\n    return;\n  }\n\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments, {\n    printTrailingSeparator: this.shouldPrintTrailingComma(\")\"),\n  });\n  exit();\n  this.rightParens(node);\n}\n\nexport function SequenceExpression(this: Printer, node: t.SequenceExpression) {\n  this.printList(node.expressions);\n}\n\nexport function ThisExpression(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function Super(this: Printer) {\n  this.word(\"super\");\n}\n\nexport function _shouldPrintDecoratorsBeforeExport(\n  this: Printer,\n  node: t.ExportDeclaration & { declaration: t.ClassDeclaration },\n) {\n  if (typeof this.format.decoratorsBeforeExport === \"boolean\") {\n    return this.format.decoratorsBeforeExport;\n  }\n  return (\n    typeof node.start === \"number\" && node.start === node.declaration.start\n  );\n}\n\nexport function Decorator(this: Printer, node: t.Decorator) {\n  this.token(\"@\");\n  this.print(node.expression);\n  this.newline();\n}\n\nexport function OptionalMemberExpression(\n  this: Printer,\n  node: t.OptionalMemberExpression,\n) {\n  let { computed } = node;\n  const { optional, property } = node;\n\n  this.print(node.object);\n\n  if (!computed && isMemberExpression(property)) {\n    throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n  }\n\n  // @ts-expect-error todo(flow->ts) maybe instead of typeof check specific literal types?\n  if (isLiteral(property) && typeof property.value === \"number\") {\n    computed = true;\n  }\n  if (optional) {\n    this.token(\"?.\");\n  }\n\n  if (computed) {\n    this.token(\"[\");\n    this.print(property);\n    this.token(\"]\");\n  } else {\n    if (!optional) {\n      this.token(\".\");\n    }\n    this.print(property);\n  }\n}\n\nexport function OptionalCallExpression(\n  this: Printer,\n  node: t.OptionalCallExpression,\n) {\n  this.print(node.callee);\n\n  this.print(node.typeParameters); // TS\n\n  if (node.optional) {\n    this.token(\"?.\");\n  }\n\n  this.print(node.typeArguments); // Flow\n\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments);\n  exit();\n  this.rightParens(node);\n}\n\nexport function CallExpression(this: Printer, node: t.CallExpression) {\n  this.print(node.callee);\n\n  this.print(node.typeArguments); // Flow\n  this.print(node.typeParameters); // TS\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments, {\n    printTrailingSeparator: this.shouldPrintTrailingComma(\")\"),\n  });\n  exit();\n  this.rightParens(node);\n}\n\nexport function Import(this: Printer) {\n  this.word(\"import\");\n}\n\nexport function AwaitExpression(this: Printer, node: t.AwaitExpression) {\n  this.word(\"await\");\n\n  if (node.argument) {\n    this.space();\n    this.printTerminatorless(node.argument);\n  }\n}\n\nexport function YieldExpression(this: Printer, node: t.YieldExpression) {\n  this.word(\"yield\", true);\n\n  if (node.delegate) {\n    this.token(\"*\");\n    if (node.argument) {\n      this.space();\n      // line terminators are allowed after yield*\n      this.print(node.argument);\n    }\n  } else {\n    if (node.argument) {\n      this.space();\n      this.printTerminatorless(node.argument);\n    }\n  }\n}\n\nexport function EmptyStatement(this: Printer) {\n  this.semicolon(true /* force */);\n}\n\nexport function ExpressionStatement(\n  this: Printer,\n  node: t.ExpressionStatement,\n) {\n  this.tokenContext |= TokenContext.expressionStatement;\n  this.print(node.expression);\n  this.semicolon();\n}\n\nexport function AssignmentPattern(this: Printer, node: t.AssignmentPattern) {\n  this.print(node.left);\n  if (node.left.type === \"Identifier\" || isPattern(node.left)) {\n    if (node.left.optional) this.token(\"?\");\n    this.print(node.left.typeAnnotation);\n  }\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.right);\n}\n\nexport function AssignmentExpression(\n  this: Printer,\n  node: t.AssignmentExpression | t.BinaryExpression | t.LogicalExpression,\n) {\n  this.print(node.left);\n\n  this.space();\n  if (node.operator === \"in\" || node.operator === \"instanceof\") {\n    this.word(node.operator);\n  } else {\n    this.token(node.operator);\n    this._endsWithDiv = node.operator === \"/\";\n  }\n  this.space();\n\n  this.print(node.right);\n}\n\nexport function BindExpression(this: Printer, node: t.BindExpression) {\n  this.print(node.object);\n  this.token(\"::\");\n  this.print(node.callee);\n}\n\nexport {\n  AssignmentExpression as BinaryExpression,\n  AssignmentExpression as LogicalExpression,\n};\n\nexport function MemberExpression(this: Printer, node: t.MemberExpression) {\n  this.print(node.object);\n\n  if (!node.computed && isMemberExpression(node.property)) {\n    throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n  }\n\n  let computed = node.computed;\n  // @ts-expect-error todo(flow->ts) maybe use specific literal types\n  if (isLiteral(node.property) && typeof node.property.value === \"number\") {\n    computed = true;\n  }\n\n  if (computed) {\n    const exit = this.enterDelimited();\n    this.token(\"[\");\n    this.print(node.property);\n    this.token(\"]\");\n    exit();\n  } else {\n    this.token(\".\");\n    this.print(node.property);\n  }\n}\n\nexport function MetaProperty(this: Printer, node: t.MetaProperty) {\n  this.print(node.meta);\n  this.token(\".\");\n  this.print(node.property);\n}\n\nexport function PrivateName(this: Printer, node: t.PrivateName) {\n  this.token(\"#\");\n  this.print(node.id);\n}\n\nexport function V8IntrinsicIdentifier(\n  this: Printer,\n  node: t.V8IntrinsicIdentifier,\n) {\n  this.token(\"%\");\n  this.word(node.name);\n}\n\nexport function ModuleExpression(this: Printer, node: t.ModuleExpression) {\n  this.word(\"module\", true);\n  this.space();\n  this.token(\"{\");\n  this.indent();\n  const { body } = node;\n  if (body.body.length || body.directives.length) {\n    this.newline();\n  }\n  this.print(body);\n  this.dedent();\n  this.rightBrace(node);\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","_index","isCallExpression","isLiteral","isMemberExpression","isNewExpression","isPattern","UnaryExpression","node","operator","word","space","token","print","argument","DoExpression","async","body","ParenthesizedExpression","exit","enterDelimited","expression","rightParens","UpdateExpression","prefix","ConditionalExpression","test","consequent","alternate","NewExpression","parent","callee","format","minified","arguments","length","optional","typeArguments","typeParameters","tokenMap","endMatches","printList","shouldPrintTrailingComma","SequenceExpression","expressions","ThisExpression","Super","_shouldPrintDecoratorsBeforeExport","decoratorsBeforeExport","start","declaration","Decorator","newline","OptionalMemberExpression","computed","property","object","TypeError","value","OptionalCallExpression","CallExpression","Import","AwaitExpression","printTerminatorless","YieldExpression","delegate","EmptyStatement","semicolon","ExpressionStatement","tokenContext","TokenContext","expressionStatement","AssignmentPattern","left","type","typeAnnotation","right","AssignmentExpression","_endsWithDiv","BindExpression","MemberExpression","MetaProperty","meta","PrivateName","id","V8IntrinsicIdentifier","name","ModuleExpression","indent","directives","dedent","rightBrace"],"sources":["../../src/generators/expressions.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isCallExpression,\n  isLiteral,\n  isMemberExpression,\n  isNewExpression,\n  isPattern,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function UnaryExpression(this: Printer, node: t.UnaryExpression) {\n  const { operator } = node;\n  if (\n    operator === \"void\" ||\n    operator === \"delete\" ||\n    operator === \"typeof\" ||\n    // throwExpressions\n    operator === \"throw\"\n  ) {\n    this.word(operator);\n    this.space();\n  } else {\n    this.token(operator);\n  }\n\n  this.print(node.argument);\n}\n\nexport function DoExpression(this: Printer, node: t.DoExpression) {\n  if (node.async) {\n    this.word(\"async\", true);\n    this.space();\n  }\n  this.word(\"do\");\n  this.space();\n  this.print(node.body);\n}\n\nexport function ParenthesizedExpression(\n  this: Printer,\n  node: t.ParenthesizedExpression,\n) {\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.print(node.expression);\n  exit();\n  this.rightParens(node);\n}\n\nexport function UpdateExpression(this: Printer, node: t.UpdateExpression) {\n  if (node.prefix) {\n    this.token(node.operator);\n    this.print(node.argument);\n  } else {\n    this.print(node.argument, true);\n    this.token(node.operator);\n  }\n}\n\nexport function ConditionalExpression(\n  this: Printer,\n  node: t.ConditionalExpression,\n) {\n  this.print(node.test);\n  this.space();\n  this.token(\"?\");\n  this.space();\n  this.print(node.consequent);\n  this.space();\n  this.token(\":\");\n  this.space();\n  this.print(node.alternate);\n}\n\nexport function NewExpression(\n  this: Printer,\n  node: t.NewExpression,\n  parent: t.Node,\n) {\n  this.word(\"new\");\n  this.space();\n  this.print(node.callee);\n  if (\n    this.format.minified &&\n    node.arguments.length === 0 &&\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    !node.optional &&\n    !isCallExpression(parent, { callee: node }) &&\n    !isMemberExpression(parent) &&\n    !isNewExpression(parent)\n  ) {\n    return;\n  }\n\n  this.print(node.typeArguments);\n  if (!process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // Legacy TS AST\n  }\n\n  // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n  if (node.optional) {\n    // TODO: This can never happen\n    this.token(\"?.\");\n  }\n\n  if (\n    node.arguments.length === 0 &&\n    this.tokenMap &&\n    !this.tokenMap.endMatches(node, \")\")\n  ) {\n    return;\n  }\n\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments, this.shouldPrintTrailingComma(\")\"));\n  exit();\n  this.rightParens(node);\n}\n\nexport function SequenceExpression(this: Printer, node: t.SequenceExpression) {\n  this.printList(node.expressions);\n}\n\nexport function ThisExpression(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function Super(this: Printer) {\n  this.word(\"super\");\n}\n\nexport function _shouldPrintDecoratorsBeforeExport(\n  this: Printer,\n  node: t.ExportDeclaration & { declaration: t.ClassDeclaration },\n) {\n  if (typeof this.format.decoratorsBeforeExport === \"boolean\") {\n    return this.format.decoratorsBeforeExport;\n  }\n  return (\n    typeof node.start === \"number\" && node.start === node.declaration.start\n  );\n}\n\nexport function Decorator(this: Printer, node: t.Decorator) {\n  this.token(\"@\");\n  this.print(node.expression);\n  this.newline();\n}\n\nexport function OptionalMemberExpression(\n  this: Printer,\n  node: t.OptionalMemberExpression,\n) {\n  let { computed } = node;\n  const { optional, property } = node;\n\n  this.print(node.object);\n\n  if (!computed && isMemberExpression(property)) {\n    throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n  }\n\n  // @ts-expect-error todo(flow->ts) maybe instead of typeof check specific literal types?\n  if (isLiteral(property) && typeof property.value === \"number\") {\n    computed = true;\n  }\n  if (optional) {\n    this.token(\"?.\");\n  }\n\n  if (computed) {\n    this.token(\"[\");\n    this.print(property);\n    this.token(\"]\");\n  } else {\n    if (!optional) {\n      this.token(\".\");\n    }\n    this.print(property);\n  }\n}\n\nexport function OptionalCallExpression(\n  this: Printer,\n  node: t.OptionalCallExpression,\n) {\n  this.print(node.callee);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // legacy TS AST\n  }\n\n  if (node.optional) {\n    this.token(\"?.\");\n  }\n\n  this.print(node.typeArguments);\n\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments);\n  exit();\n  this.rightParens(node);\n}\n\nexport function CallExpression(this: Printer, node: t.CallExpression) {\n  this.print(node.callee);\n\n  this.print(node.typeArguments);\n  if (!process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // legacy TS AST\n  }\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments, this.shouldPrintTrailingComma(\")\"));\n  exit();\n  this.rightParens(node);\n}\n\nexport function Import(this: Printer) {\n  this.word(\"import\");\n}\n\nexport function AwaitExpression(this: Printer, node: t.AwaitExpression) {\n  this.word(\"await\");\n\n  if (node.argument) {\n    this.space();\n    this.printTerminatorless(node.argument);\n  }\n}\n\nexport function YieldExpression(this: Printer, node: t.YieldExpression) {\n  this.word(\"yield\", true);\n\n  if (node.delegate) {\n    this.token(\"*\");\n    if (node.argument) {\n      this.space();\n      // line terminators are allowed after yield*\n      this.print(node.argument);\n    }\n  } else {\n    if (node.argument) {\n      this.space();\n      this.printTerminatorless(node.argument);\n    }\n  }\n}\n\nexport function EmptyStatement(this: Printer) {\n  this.semicolon(true /* force */);\n}\n\nexport function ExpressionStatement(\n  this: Printer,\n  node: t.ExpressionStatement,\n) {\n  this.tokenContext |= TokenContext.expressionStatement;\n  this.print(node.expression);\n  this.semicolon();\n}\n\nexport function AssignmentPattern(this: Printer, node: t.AssignmentPattern) {\n  this.print(node.left);\n  if (node.left.type === \"Identifier\" || isPattern(node.left)) {\n    if (node.left.optional) this.token(\"?\");\n    this.print(node.left.typeAnnotation);\n  }\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.right);\n}\n\nexport function AssignmentExpression(\n  this: Printer,\n  node: t.AssignmentExpression | t.BinaryExpression | t.LogicalExpression,\n) {\n  this.print(node.left);\n\n  this.space();\n  if (node.operator === \"in\" || node.operator === \"instanceof\") {\n    this.word(node.operator);\n  } else {\n    this.token(node.operator);\n    this._endsWithDiv = node.operator === \"/\";\n  }\n  this.space();\n\n  this.print(node.right);\n}\n\nexport function BindExpression(this: Printer, node: t.BindExpression) {\n  this.print(node.object);\n  this.token(\"::\");\n  this.print(node.callee);\n}\n\nexport {\n  AssignmentExpression as BinaryExpression,\n  AssignmentExpression as LogicalExpression,\n};\n\nexport function MemberExpression(this: Printer, node: t.MemberExpression) {\n  this.print(node.object);\n\n  if (!node.computed && isMemberExpression(node.property)) {\n    throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n  }\n\n  let computed = node.computed;\n  // @ts-expect-error todo(flow->ts) maybe use specific literal types\n  if (isLiteral(node.property) && typeof node.property.value === \"number\") {\n    computed = true;\n  }\n\n  if (computed) {\n    const exit = this.enterDelimited();\n    this.token(\"[\");\n    this.print(node.property);\n    this.token(\"]\");\n    exit();\n  } else {\n    this.token(\".\");\n    this.print(node.property);\n  }\n}\n\nexport function MetaProperty(this: Printer, node: t.MetaProperty) {\n  this.print(node.meta);\n  this.token(\".\");\n  this.print(node.property);\n}\n\nexport function PrivateName(this: Printer, node: t.PrivateName) {\n  this.token(\"#\");\n  this.print(node.id);\n}\n\nexport function V8IntrinsicIdentifier(\n  this: Printer,\n  node: t.V8IntrinsicIdentifier,\n) {\n  this.token(\"%\");\n  this.word(node.name);\n}\n\nexport function ModuleExpression(this: Printer, node: t.ModuleExpression) {\n  this.word(\"module\", true);\n  this.space();\n  this.token(\"{\");\n  this.indent();\n  const { body } = node;\n  if (body.body.length || body.directives.length) {\n    this.newline();\n  }\n  this.print(body);\n  this.dedent();\n  this.rightBrace(node);\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/flow.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/flow.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/flow.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -418,7 +418,5 @@
 }
 function IntersectionTypeAnnotation(node) {
-  this.printJoin(node.types, {
-    separator: andSeparator
-  });
+  this.printJoin(node.types, undefined, undefined, andSeparator);
 }
 function MixedTypeAnnotation() {
@@ -474,5 +472,5 @@
 function TypeParameterInstantiation(node) {
   this.tokenChar(60);
-  this.printList(node.params, {});
+  this.printList(node.params);
   this.tokenChar(62);
 }
@@ -520,15 +518,10 @@
     this.newline();
     this.space();
-    this.printJoin(props, {
-      addNewlines(leading) {
-        if (leading && !props[0]) return 1;
-      },
-      indent: true,
-      statement: true,
-      iterator: () => {
-        if (props.length !== 1 || node.inexact) {
-          this.tokenChar(44);
-          this.space();
-        }
+    this.printJoin(props, true, true, undefined, undefined, function addNewlines(leading) {
+      if (leading && !props[0]) return 1;
+    }, () => {
+      if (props.length !== 1 || node.inexact) {
+        this.tokenChar(44);
+        this.space();
       }
     });
@@ -631,7 +624,5 @@
 }
 function UnionTypeAnnotation(node) {
-  this.printJoin(node.types, {
-    separator: orSeparator
-  });
+  this.printJoin(node.types, undefined, undefined, orSeparator);
 }
 function TypeCastExpression(node) {
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/flow.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/flow.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/flow.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","_modules","_index","_types2","isDeclareExportDeclaration","isStatement","AnyTypeAnnotation","word","ArrayTypeAnnotation","node","print","elementType","token","BooleanTypeAnnotation","BooleanLiteralTypeAnnotation","value","NullLiteralTypeAnnotation","DeclareClass","parent","space","_interfaceish","DeclareFunction","id","typeAnnotation","predicate","semicolon","InferredPredicate","DeclaredPredicate","DeclareInterface","InterfaceDeclaration","DeclareModule","body","DeclareModuleExports","DeclareTypeAlias","TypeAlias","DeclareOpaqueType","OpaqueType","DeclareVariable","DeclareExportDeclaration","default","FlowExportDeclaration","call","DeclareExportAllDeclaration","ExportAllDeclaration","EnumDeclaration","enumExplicitType","context","name","hasExplicitType","enumBody","members","indent","newline","member","hasUnknownMembers","dedent","EnumBooleanBody","explicitType","EnumNumberBody","EnumStringBody","EnumSymbolBody","EnumDefaultedMember","enumInitializedMember","init","EnumBooleanMember","EnumNumberMember","EnumStringMember","declaration","declar","specifiers","length","printList","source","ExistsTypeAnnotation","FunctionTypeAnnotation","typeParameters","this","params","rest","type","method","returnType","FunctionTypeParam","optional","InterfaceExtends","_node$extends","extends","_node$mixins","_node$implements","mixins","implements","_variance","_node$variance","kind","variance","andSeparator","occurrenceCount","InterfaceTypeAnnotation","_node$extends2","IntersectionTypeAnnotation","printJoin","types","separator","MixedTypeAnnotation","EmptyTypeAnnotation","NullableTypeAnnotation","NumberTypeAnnotation","StringTypeAnnotation","ThisTypeAnnotation","TupleTypeAnnotation","TypeofTypeAnnotation","argument","right","TypeAnnotation","tokenContext","TokenContext","arrowFlowReturnType","TypeParameterInstantiation","TypeParameter","bound","supertype","impltype","ObjectTypeAnnotation","exact","props","properties","callProperties","indexers","internalSlots","addNewlines","leading","statement","iterator","inexact","ObjectTypeInternalSlot","static","ObjectTypeCallProperty","ObjectTypeIndexer","key","ObjectTypeProperty","proto","ObjectTypeSpreadProperty","QualifiedTypeIdentifier","qualification","SymbolTypeAnnotation","orSeparator","UnionTypeAnnotation","TypeCastExpression","expression","Variance","VoidTypeAnnotation","IndexedAccessType","objectType","indexType","OptionalIndexedAccessType"],"sources":["../../src/generators/flow.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport { isDeclareExportDeclaration, isStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { ExportAllDeclaration } from \"./modules.ts\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function AnyTypeAnnotation(this: Printer) {\n  this.word(\"any\");\n}\n\nexport function ArrayTypeAnnotation(\n  this: Printer,\n  node: t.ArrayTypeAnnotation,\n) {\n  this.print(node.elementType, true);\n  this.token(\"[\");\n  this.token(\"]\");\n}\n\nexport function BooleanTypeAnnotation(this: Printer) {\n  this.word(\"boolean\");\n}\n\nexport function BooleanLiteralTypeAnnotation(\n  this: Printer,\n  node: t.BooleanLiteralTypeAnnotation,\n) {\n  this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteralTypeAnnotation(this: Printer) {\n  this.word(\"null\");\n}\n\nexport function DeclareClass(\n  this: Printer,\n  node: t.DeclareClass,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"class\");\n  this.space();\n  this._interfaceish(node);\n}\n\nexport function DeclareFunction(\n  this: Printer,\n  node: t.DeclareFunction,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"function\");\n  this.space();\n  this.print(node.id);\n  // @ts-ignore(Babel 7 vs Babel 8) TODO(Babel 8) Remove this comment, since we'll remove the Noop node\n  this.print(node.id.typeAnnotation.typeAnnotation);\n\n  if (node.predicate) {\n    this.space();\n    this.print(node.predicate);\n  }\n\n  this.semicolon();\n}\n\nexport function InferredPredicate(this: Printer) {\n  this.token(\"%\");\n  this.word(\"checks\");\n}\n\nexport function DeclaredPredicate(this: Printer, node: t.DeclaredPredicate) {\n  this.token(\"%\");\n  this.word(\"checks\");\n  this.token(\"(\");\n  this.print(node.value);\n  this.token(\")\");\n}\n\nexport function DeclareInterface(this: Printer, node: t.DeclareInterface) {\n  this.word(\"declare\");\n  this.space();\n  this.InterfaceDeclaration(node);\n}\n\nexport function DeclareModule(this: Printer, node: t.DeclareModule) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"module\");\n  this.space();\n  this.print(node.id);\n  this.space();\n  this.print(node.body);\n}\n\nexport function DeclareModuleExports(\n  this: Printer,\n  node: t.DeclareModuleExports,\n) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"module\");\n  this.token(\".\");\n  this.word(\"exports\");\n  this.print(node.typeAnnotation);\n}\n\nexport function DeclareTypeAlias(this: Printer, node: t.DeclareTypeAlias) {\n  this.word(\"declare\");\n  this.space();\n  this.TypeAlias(node);\n}\n\nexport function DeclareOpaqueType(\n  this: Printer,\n  node: t.DeclareOpaqueType,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.OpaqueType(node);\n}\n\nexport function DeclareVariable(\n  this: Printer,\n  node: t.DeclareVariable,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"var\");\n  this.space();\n  this.print(node.id);\n  this.print(node.id.typeAnnotation);\n  this.semicolon();\n}\n\nexport function DeclareExportDeclaration(\n  this: Printer,\n  node: t.DeclareExportDeclaration,\n) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"export\");\n  this.space();\n  if (node.default) {\n    this.word(\"default\");\n    this.space();\n  }\n\n  FlowExportDeclaration.call(this, node);\n}\n\nexport function DeclareExportAllDeclaration(\n  this: Printer,\n  node: t.DeclareExportAllDeclaration,\n) {\n  this.word(\"declare\");\n  this.space();\n  ExportAllDeclaration.call(this, node);\n}\n\nexport function EnumDeclaration(this: Printer, node: t.EnumDeclaration) {\n  const { id, body } = node;\n  this.word(\"enum\");\n  this.space();\n  this.print(id);\n  this.print(body);\n}\n\nfunction enumExplicitType(\n  context: Printer,\n  name: string,\n  hasExplicitType: boolean,\n) {\n  if (hasExplicitType) {\n    context.space();\n    context.word(\"of\");\n    context.space();\n    context.word(name);\n  }\n  context.space();\n}\n\nfunction enumBody(context: Printer, node: t.EnumBody) {\n  const { members } = node;\n  context.token(\"{\");\n  context.indent();\n  context.newline();\n  for (const member of members) {\n    context.print(member);\n    context.newline();\n  }\n  if (node.hasUnknownMembers) {\n    context.token(\"...\");\n    context.newline();\n  }\n  context.dedent();\n  context.token(\"}\");\n}\n\nexport function EnumBooleanBody(this: Printer, node: t.EnumBooleanBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"boolean\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumNumberBody(this: Printer, node: t.EnumNumberBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"number\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumStringBody(this: Printer, node: t.EnumStringBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"string\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumSymbolBody(this: Printer, node: t.EnumSymbolBody) {\n  enumExplicitType(this, \"symbol\", true);\n  enumBody(this, node);\n}\n\nexport function EnumDefaultedMember(\n  this: Printer,\n  node: t.EnumDefaultedMember,\n) {\n  const { id } = node;\n  this.print(id);\n  this.token(\",\");\n}\n\nfunction enumInitializedMember(\n  context: Printer,\n  node: t.EnumBooleanMember | t.EnumNumberMember | t.EnumStringMember,\n) {\n  context.print(node.id);\n  context.space();\n  context.token(\"=\");\n  context.space();\n  context.print(node.init);\n  context.token(\",\");\n}\n\nexport function EnumBooleanMember(this: Printer, node: t.EnumBooleanMember) {\n  enumInitializedMember(this, node);\n}\n\nexport function EnumNumberMember(this: Printer, node: t.EnumNumberMember) {\n  enumInitializedMember(this, node);\n}\n\nexport function EnumStringMember(this: Printer, node: t.EnumStringMember) {\n  enumInitializedMember(this, node);\n}\n\nfunction FlowExportDeclaration(\n  this: Printer,\n  node: t.DeclareExportDeclaration,\n) {\n  if (node.declaration) {\n    const declar = node.declaration;\n    this.print(declar);\n    if (!isStatement(declar)) this.semicolon();\n  } else {\n    this.token(\"{\");\n    if (node.specifiers.length) {\n      this.space();\n      this.printList(node.specifiers);\n      this.space();\n    }\n    this.token(\"}\");\n\n    if (node.source) {\n      this.space();\n      this.word(\"from\");\n      this.space();\n      this.print(node.source);\n    }\n\n    this.semicolon();\n  }\n}\n\nexport function ExistsTypeAnnotation(this: Printer) {\n  this.token(\"*\");\n}\n\nexport function FunctionTypeAnnotation(\n  this: Printer,\n  node: t.FunctionTypeAnnotation,\n  parent?: t.Node,\n) {\n  this.print(node.typeParameters);\n  this.token(\"(\");\n\n  if (node.this) {\n    this.word(\"this\");\n    this.token(\":\");\n    this.space();\n    this.print(node.this.typeAnnotation);\n    if (node.params.length || node.rest) {\n      this.token(\",\");\n      this.space();\n    }\n  }\n\n  this.printList(node.params);\n\n  if (node.rest) {\n    if (node.params.length) {\n      this.token(\",\");\n      this.space();\n    }\n    this.token(\"...\");\n    this.print(node.rest);\n  }\n\n  this.token(\")\");\n\n  // this node type is overloaded, not sure why but it makes it EXTREMELY annoying\n\n  const type = parent?.type;\n  if (\n    type != null &&\n    (type === \"ObjectTypeCallProperty\" ||\n      type === \"ObjectTypeInternalSlot\" ||\n      type === \"DeclareFunction\" ||\n      (type === \"ObjectTypeProperty\" && parent.method))\n  ) {\n    this.token(\":\");\n  } else {\n    this.space();\n    this.token(\"=>\");\n  }\n\n  this.space();\n  this.print(node.returnType);\n}\n\nexport function FunctionTypeParam(this: Printer, node: t.FunctionTypeParam) {\n  this.print(node.name);\n  if (node.optional) this.token(\"?\");\n  if (node.name) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.typeAnnotation);\n}\n\nexport function InterfaceExtends(this: Printer, node: t.InterfaceExtends) {\n  this.print(node.id);\n  this.print(node.typeParameters, true);\n}\n\nexport {\n  InterfaceExtends as ClassImplements,\n  InterfaceExtends as GenericTypeAnnotation,\n};\n\nexport function _interfaceish(\n  this: Printer,\n  node: t.InterfaceDeclaration | t.DeclareInterface | t.DeclareClass,\n) {\n  this.print(node.id);\n  this.print(node.typeParameters);\n  if (node.extends?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(node.extends);\n  }\n  if (node.type === \"DeclareClass\") {\n    if (node.mixins?.length) {\n      this.space();\n      this.word(\"mixins\");\n      this.space();\n      this.printList(node.mixins);\n    }\n    if (node.implements?.length) {\n      this.space();\n      this.word(\"implements\");\n      this.space();\n      this.printList(node.implements);\n    }\n  }\n  this.space();\n  this.print(node.body);\n}\n\nexport function _variance(\n  this: Printer,\n  node:\n    | t.TypeParameter\n    | t.ObjectTypeIndexer\n    | t.ObjectTypeProperty\n    | t.ClassProperty\n    | t.ClassPrivateProperty\n    | t.ClassAccessorProperty,\n) {\n  const kind = node.variance?.kind;\n  if (kind != null) {\n    if (kind === \"plus\") {\n      this.token(\"+\");\n    } else if (kind === \"minus\") {\n      this.token(\"-\");\n    }\n  }\n}\n\nexport function InterfaceDeclaration(\n  this: Printer,\n  node: t.InterfaceDeclaration | t.DeclareInterface,\n) {\n  this.word(\"interface\");\n  this.space();\n  this._interfaceish(node);\n}\n\nfunction andSeparator(this: Printer, occurrenceCount: number) {\n  this.space();\n  this.token(\"&\", false, occurrenceCount);\n  this.space();\n}\n\nexport function InterfaceTypeAnnotation(\n  this: Printer,\n  node: t.InterfaceTypeAnnotation,\n) {\n  this.word(\"interface\");\n  if (node.extends?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(node.extends);\n  }\n  this.space();\n  this.print(node.body);\n}\n\nexport function IntersectionTypeAnnotation(\n  this: Printer,\n  node: t.IntersectionTypeAnnotation,\n) {\n  this.printJoin(node.types, { separator: andSeparator });\n}\n\nexport function MixedTypeAnnotation(this: Printer) {\n  this.word(\"mixed\");\n}\n\nexport function EmptyTypeAnnotation(this: Printer) {\n  this.word(\"empty\");\n}\n\nexport function NullableTypeAnnotation(\n  this: Printer,\n  node: t.NullableTypeAnnotation,\n) {\n  this.token(\"?\");\n  this.print(node.typeAnnotation);\n}\n\nexport {\n  NumericLiteral as NumberLiteralTypeAnnotation,\n  StringLiteral as StringLiteralTypeAnnotation,\n} from \"./types.ts\";\n\nexport function NumberTypeAnnotation(this: Printer) {\n  this.word(\"number\");\n}\n\nexport function StringTypeAnnotation(this: Printer) {\n  this.word(\"string\");\n}\n\nexport function ThisTypeAnnotation(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function TupleTypeAnnotation(\n  this: Printer,\n  node: t.TupleTypeAnnotation,\n) {\n  this.token(\"[\");\n  this.printList(node.types);\n  this.token(\"]\");\n}\n\nexport function TypeofTypeAnnotation(\n  this: Printer,\n  node: t.TypeofTypeAnnotation,\n) {\n  this.word(\"typeof\");\n  this.space();\n  this.print(node.argument);\n}\n\nexport function TypeAlias(\n  this: Printer,\n  node: t.TypeAlias | t.DeclareTypeAlias,\n) {\n  this.word(\"type\");\n  this.space();\n  this.print(node.id);\n  this.print(node.typeParameters);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.right);\n  this.semicolon();\n}\n\nexport function TypeAnnotation(\n  this: Printer,\n  node: t.TypeAnnotation,\n  parent: t.Node,\n) {\n  this.token(\":\");\n  this.space();\n  if (parent.type === \"ArrowFunctionExpression\") {\n    this.tokenContext |= TokenContext.arrowFlowReturnType;\n  } else if (\n    // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n    node.optional\n  ) {\n    this.token(\"?\");\n  }\n  this.print(node.typeAnnotation);\n}\n\nexport function TypeParameterInstantiation(\n  this: Printer,\n  node: t.TypeParameterInstantiation,\n): void {\n  this.token(\"<\");\n  this.printList(node.params, {});\n  this.token(\">\");\n}\n\nexport { TypeParameterInstantiation as TypeParameterDeclaration };\n\nexport function TypeParameter(this: Printer, node: t.TypeParameter) {\n  this._variance(node);\n\n  this.word(node.name);\n\n  if (node.bound) {\n    this.print(node.bound);\n  }\n\n  if (node.default) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.default);\n  }\n}\n\nexport function OpaqueType(\n  this: Printer,\n  node: t.OpaqueType | t.DeclareOpaqueType,\n) {\n  this.word(\"opaque\");\n  this.space();\n  this.word(\"type\");\n  this.space();\n  this.print(node.id);\n  this.print(node.typeParameters);\n  if (node.supertype) {\n    this.token(\":\");\n    this.space();\n    this.print(node.supertype);\n  }\n\n  if (node.impltype) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.impltype);\n  }\n  this.semicolon();\n}\n\nexport function ObjectTypeAnnotation(\n  this: Printer,\n  node: t.ObjectTypeAnnotation,\n) {\n  if (node.exact) {\n    this.token(\"{|\");\n  } else {\n    this.token(\"{\");\n  }\n\n  // TODO: remove the array fallbacks and instead enforce the types to require an array\n  const props = [\n    ...node.properties,\n    ...(node.callProperties || []),\n    ...(node.indexers || []),\n    ...(node.internalSlots || []),\n  ];\n\n  if (props.length) {\n    this.newline();\n\n    this.space();\n\n    this.printJoin(props, {\n      addNewlines(leading) {\n        if (leading && !props[0]) return 1;\n      },\n      indent: true,\n      statement: true,\n      iterator: () => {\n        if (props.length !== 1 || node.inexact) {\n          this.token(\",\");\n          this.space();\n        }\n      },\n    });\n\n    this.space();\n  }\n\n  if (node.inexact) {\n    this.indent();\n    this.token(\"...\");\n    if (props.length) {\n      this.newline();\n    }\n    this.dedent();\n  }\n\n  if (node.exact) {\n    this.token(\"|}\");\n  } else {\n    this.token(\"}\");\n  }\n}\n\nexport function ObjectTypeInternalSlot(\n  this: Printer,\n  node: t.ObjectTypeInternalSlot,\n) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.token(\"[\");\n  this.token(\"[\");\n  this.print(node.id);\n  this.token(\"]\");\n  this.token(\"]\");\n  if (node.optional) this.token(\"?\");\n  if (!node.method) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeCallProperty(\n  this: Printer,\n  node: t.ObjectTypeCallProperty,\n) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeIndexer(this: Printer, node: t.ObjectTypeIndexer) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this._variance(node);\n  this.token(\"[\");\n  if (node.id) {\n    this.print(node.id);\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.key);\n  this.token(\"]\");\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ObjectTypeProperty(this: Printer, node: t.ObjectTypeProperty) {\n  if (node.proto) {\n    this.word(\"proto\");\n    this.space();\n  }\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  if (node.kind === \"get\" || node.kind === \"set\") {\n    this.word(node.kind);\n    this.space();\n  }\n  this._variance(node);\n  this.print(node.key);\n  if (node.optional) this.token(\"?\");\n  if (!node.method) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeSpreadProperty(\n  this: Printer,\n  node: t.ObjectTypeSpreadProperty,\n) {\n  this.token(\"...\");\n  this.print(node.argument);\n}\n\nexport function QualifiedTypeIdentifier(\n  this: Printer,\n  node: t.QualifiedTypeIdentifier,\n) {\n  this.print(node.qualification);\n  this.token(\".\");\n  this.print(node.id);\n}\n\nexport function SymbolTypeAnnotation(this: Printer) {\n  this.word(\"symbol\");\n}\n\nfunction orSeparator(this: Printer, occurrenceCount: number) {\n  this.space();\n  this.token(\"|\", false, occurrenceCount);\n  this.space();\n}\n\nexport function UnionTypeAnnotation(\n  this: Printer,\n  node: t.UnionTypeAnnotation,\n) {\n  this.printJoin(node.types, { separator: orSeparator });\n}\n\nexport function TypeCastExpression(this: Printer, node: t.TypeCastExpression) {\n  this.token(\"(\");\n  this.print(node.expression);\n  this.print(node.typeAnnotation);\n  this.token(\")\");\n}\n\nexport function Variance(this: Printer, node: t.Variance) {\n  if (node.kind === \"plus\") {\n    this.token(\"+\");\n  } else {\n    this.token(\"-\");\n  }\n}\n\nexport function VoidTypeAnnotation(this: Printer) {\n  this.word(\"void\");\n}\n\nexport function IndexedAccessType(this: Printer, node: t.IndexedAccessType) {\n  this.print(node.objectType, true);\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n\nexport function OptionalIndexedAccessType(\n  this: Printer,\n  node: t.OptionalIndexedAccessType,\n) {\n  this.print(node.objectType);\n  if (node.optional) {\n    this.token(\"?.\");\n  }\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","_modules","_index","_types2","isDeclareExportDeclaration","isStatement","AnyTypeAnnotation","word","ArrayTypeAnnotation","node","print","elementType","token","BooleanTypeAnnotation","BooleanLiteralTypeAnnotation","value","NullLiteralTypeAnnotation","DeclareClass","parent","space","_interfaceish","DeclareFunction","id","typeAnnotation","predicate","semicolon","InferredPredicate","DeclaredPredicate","DeclareInterface","InterfaceDeclaration","DeclareModule","body","DeclareModuleExports","DeclareTypeAlias","TypeAlias","DeclareOpaqueType","OpaqueType","DeclareVariable","DeclareExportDeclaration","default","FlowExportDeclaration","call","DeclareExportAllDeclaration","ExportAllDeclaration","EnumDeclaration","enumExplicitType","context","name","hasExplicitType","enumBody","members","indent","newline","member","hasUnknownMembers","dedent","EnumBooleanBody","explicitType","EnumNumberBody","EnumStringBody","EnumSymbolBody","EnumDefaultedMember","enumInitializedMember","init","EnumBooleanMember","EnumNumberMember","EnumStringMember","declaration","declar","specifiers","length","printList","source","ExistsTypeAnnotation","FunctionTypeAnnotation","typeParameters","this","params","rest","type","method","returnType","FunctionTypeParam","optional","InterfaceExtends","_node$extends","extends","_node$mixins","_node$implements","mixins","implements","_variance","_node$variance","kind","variance","andSeparator","occurrenceCount","InterfaceTypeAnnotation","_node$extends2","IntersectionTypeAnnotation","printJoin","types","undefined","MixedTypeAnnotation","EmptyTypeAnnotation","NullableTypeAnnotation","NumberTypeAnnotation","StringTypeAnnotation","ThisTypeAnnotation","TupleTypeAnnotation","TypeofTypeAnnotation","argument","right","TypeAnnotation","tokenContext","TokenContext","arrowFlowReturnType","TypeParameterInstantiation","TypeParameter","bound","supertype","impltype","ObjectTypeAnnotation","exact","props","properties","callProperties","indexers","internalSlots","addNewlines","leading","inexact","ObjectTypeInternalSlot","static","ObjectTypeCallProperty","ObjectTypeIndexer","key","ObjectTypeProperty","proto","ObjectTypeSpreadProperty","QualifiedTypeIdentifier","qualification","SymbolTypeAnnotation","orSeparator","UnionTypeAnnotation","TypeCastExpression","expression","Variance","VoidTypeAnnotation","IndexedAccessType","objectType","indexType","OptionalIndexedAccessType"],"sources":["../../src/generators/flow.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport { isDeclareExportDeclaration, isStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { ExportAllDeclaration } from \"./modules.ts\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function AnyTypeAnnotation(this: Printer) {\n  this.word(\"any\");\n}\n\nexport function ArrayTypeAnnotation(\n  this: Printer,\n  node: t.ArrayTypeAnnotation,\n) {\n  this.print(node.elementType, true);\n  this.token(\"[\");\n  this.token(\"]\");\n}\n\nexport function BooleanTypeAnnotation(this: Printer) {\n  this.word(\"boolean\");\n}\n\nexport function BooleanLiteralTypeAnnotation(\n  this: Printer,\n  node: t.BooleanLiteralTypeAnnotation,\n) {\n  this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteralTypeAnnotation(this: Printer) {\n  this.word(\"null\");\n}\n\nexport function DeclareClass(\n  this: Printer,\n  node: t.DeclareClass,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"class\");\n  this.space();\n  this._interfaceish(node);\n}\n\nexport function DeclareFunction(\n  this: Printer,\n  node: t.DeclareFunction,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"function\");\n  this.space();\n  this.print(node.id);\n  // @ts-ignore(Babel 7 vs Babel 8) TODO(Babel 8) Remove this comment, since we'll remove the Noop node\n  this.print(node.id.typeAnnotation.typeAnnotation);\n\n  if (node.predicate) {\n    this.space();\n    this.print(node.predicate);\n  }\n\n  this.semicolon();\n}\n\nexport function InferredPredicate(this: Printer) {\n  this.token(\"%\");\n  this.word(\"checks\");\n}\n\nexport function DeclaredPredicate(this: Printer, node: t.DeclaredPredicate) {\n  this.token(\"%\");\n  this.word(\"checks\");\n  this.token(\"(\");\n  this.print(node.value);\n  this.token(\")\");\n}\n\nexport function DeclareInterface(this: Printer, node: t.DeclareInterface) {\n  this.word(\"declare\");\n  this.space();\n  this.InterfaceDeclaration(node);\n}\n\nexport function DeclareModule(this: Printer, node: t.DeclareModule) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"module\");\n  this.space();\n  this.print(node.id);\n  this.space();\n  this.print(node.body);\n}\n\nexport function DeclareModuleExports(\n  this: Printer,\n  node: t.DeclareModuleExports,\n) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"module\");\n  this.token(\".\");\n  this.word(\"exports\");\n  this.print(node.typeAnnotation);\n}\n\nexport function DeclareTypeAlias(this: Printer, node: t.DeclareTypeAlias) {\n  this.word(\"declare\");\n  this.space();\n  this.TypeAlias(node);\n}\n\nexport function DeclareOpaqueType(\n  this: Printer,\n  node: t.DeclareOpaqueType,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.OpaqueType(node);\n}\n\nexport function DeclareVariable(\n  this: Printer,\n  node: t.DeclareVariable,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"var\");\n  this.space();\n  this.print(node.id);\n  this.print(node.id.typeAnnotation);\n  this.semicolon();\n}\n\nexport function DeclareExportDeclaration(\n  this: Printer,\n  node: t.DeclareExportDeclaration,\n) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"export\");\n  this.space();\n  if (node.default) {\n    this.word(\"default\");\n    this.space();\n  }\n\n  FlowExportDeclaration.call(this, node);\n}\n\nexport function DeclareExportAllDeclaration(\n  this: Printer,\n  node: t.DeclareExportAllDeclaration,\n) {\n  this.word(\"declare\");\n  this.space();\n  ExportAllDeclaration.call(this, node);\n}\n\nexport function EnumDeclaration(this: Printer, node: t.EnumDeclaration) {\n  const { id, body } = node;\n  this.word(\"enum\");\n  this.space();\n  this.print(id);\n  this.print(body);\n}\n\nfunction enumExplicitType(\n  context: Printer,\n  name: string,\n  hasExplicitType: boolean,\n) {\n  if (hasExplicitType) {\n    context.space();\n    context.word(\"of\");\n    context.space();\n    context.word(name);\n  }\n  context.space();\n}\n\nfunction enumBody(context: Printer, node: t.EnumBody) {\n  const { members } = node;\n  context.token(\"{\");\n  context.indent();\n  context.newline();\n  for (const member of members) {\n    context.print(member);\n    context.newline();\n  }\n  if (node.hasUnknownMembers) {\n    context.token(\"...\");\n    context.newline();\n  }\n  context.dedent();\n  context.token(\"}\");\n}\n\nexport function EnumBooleanBody(this: Printer, node: t.EnumBooleanBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"boolean\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumNumberBody(this: Printer, node: t.EnumNumberBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"number\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumStringBody(this: Printer, node: t.EnumStringBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"string\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumSymbolBody(this: Printer, node: t.EnumSymbolBody) {\n  enumExplicitType(this, \"symbol\", true);\n  enumBody(this, node);\n}\n\nexport function EnumDefaultedMember(\n  this: Printer,\n  node: t.EnumDefaultedMember,\n) {\n  const { id } = node;\n  this.print(id);\n  this.token(\",\");\n}\n\nfunction enumInitializedMember(\n  context: Printer,\n  node: t.EnumBooleanMember | t.EnumNumberMember | t.EnumStringMember,\n) {\n  context.print(node.id);\n  context.space();\n  context.token(\"=\");\n  context.space();\n  context.print(node.init);\n  context.token(\",\");\n}\n\nexport function EnumBooleanMember(this: Printer, node: t.EnumBooleanMember) {\n  enumInitializedMember(this, node);\n}\n\nexport function EnumNumberMember(this: Printer, node: t.EnumNumberMember) {\n  enumInitializedMember(this, node);\n}\n\nexport function EnumStringMember(this: Printer, node: t.EnumStringMember) {\n  enumInitializedMember(this, node);\n}\n\nfunction FlowExportDeclaration(\n  this: Printer,\n  node: t.DeclareExportDeclaration,\n) {\n  if (node.declaration) {\n    const declar = node.declaration;\n    this.print(declar);\n    if (!isStatement(declar)) this.semicolon();\n  } else {\n    this.token(\"{\");\n    if (node.specifiers.length) {\n      this.space();\n      this.printList(node.specifiers);\n      this.space();\n    }\n    this.token(\"}\");\n\n    if (node.source) {\n      this.space();\n      this.word(\"from\");\n      this.space();\n      this.print(node.source);\n    }\n\n    this.semicolon();\n  }\n}\n\nexport function ExistsTypeAnnotation(this: Printer) {\n  this.token(\"*\");\n}\n\nexport function FunctionTypeAnnotation(\n  this: Printer,\n  node: t.FunctionTypeAnnotation,\n  parent?: t.Node,\n) {\n  this.print(node.typeParameters);\n  this.token(\"(\");\n\n  if (node.this) {\n    this.word(\"this\");\n    this.token(\":\");\n    this.space();\n    this.print(node.this.typeAnnotation);\n    if (node.params.length || node.rest) {\n      this.token(\",\");\n      this.space();\n    }\n  }\n\n  this.printList(node.params);\n\n  if (node.rest) {\n    if (node.params.length) {\n      this.token(\",\");\n      this.space();\n    }\n    this.token(\"...\");\n    this.print(node.rest);\n  }\n\n  this.token(\")\");\n\n  // this node type is overloaded, not sure why but it makes it EXTREMELY annoying\n\n  const type = parent?.type;\n  if (\n    type != null &&\n    (type === \"ObjectTypeCallProperty\" ||\n      type === \"ObjectTypeInternalSlot\" ||\n      type === \"DeclareFunction\" ||\n      (type === \"ObjectTypeProperty\" && parent.method))\n  ) {\n    this.token(\":\");\n  } else {\n    this.space();\n    this.token(\"=>\");\n  }\n\n  this.space();\n  this.print(node.returnType);\n}\n\nexport function FunctionTypeParam(this: Printer, node: t.FunctionTypeParam) {\n  this.print(node.name);\n  if (node.optional) this.token(\"?\");\n  if (node.name) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.typeAnnotation);\n}\n\nexport function InterfaceExtends(this: Printer, node: t.InterfaceExtends) {\n  this.print(node.id);\n  this.print(node.typeParameters, true);\n}\n\nexport {\n  InterfaceExtends as ClassImplements,\n  InterfaceExtends as GenericTypeAnnotation,\n};\n\nexport function _interfaceish(\n  this: Printer,\n  node: t.InterfaceDeclaration | t.DeclareInterface | t.DeclareClass,\n) {\n  this.print(node.id);\n  this.print(node.typeParameters);\n  if (node.extends?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(node.extends);\n  }\n  if (node.type === \"DeclareClass\") {\n    if (node.mixins?.length) {\n      this.space();\n      this.word(\"mixins\");\n      this.space();\n      this.printList(node.mixins);\n    }\n    if (node.implements?.length) {\n      this.space();\n      this.word(\"implements\");\n      this.space();\n      this.printList(node.implements);\n    }\n  }\n  this.space();\n  this.print(node.body);\n}\n\nexport function _variance(\n  this: Printer,\n  node:\n    | t.TypeParameter\n    | t.ObjectTypeIndexer\n    | t.ObjectTypeProperty\n    | t.ClassProperty\n    | t.ClassPrivateProperty\n    | t.ClassAccessorProperty,\n) {\n  const kind = node.variance?.kind;\n  if (kind != null) {\n    if (kind === \"plus\") {\n      this.token(\"+\");\n    } else if (kind === \"minus\") {\n      this.token(\"-\");\n    }\n  }\n}\n\nexport function InterfaceDeclaration(\n  this: Printer,\n  node: t.InterfaceDeclaration | t.DeclareInterface,\n) {\n  this.word(\"interface\");\n  this.space();\n  this._interfaceish(node);\n}\n\nfunction andSeparator(this: Printer, occurrenceCount: number) {\n  this.space();\n  this.token(\"&\", false, occurrenceCount);\n  this.space();\n}\n\nexport function InterfaceTypeAnnotation(\n  this: Printer,\n  node: t.InterfaceTypeAnnotation,\n) {\n  this.word(\"interface\");\n  if (node.extends?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(node.extends);\n  }\n  this.space();\n  this.print(node.body);\n}\n\nexport function IntersectionTypeAnnotation(\n  this: Printer,\n  node: t.IntersectionTypeAnnotation,\n) {\n  this.printJoin(node.types, undefined, undefined, andSeparator);\n}\n\nexport function MixedTypeAnnotation(this: Printer) {\n  this.word(\"mixed\");\n}\n\nexport function EmptyTypeAnnotation(this: Printer) {\n  this.word(\"empty\");\n}\n\nexport function NullableTypeAnnotation(\n  this: Printer,\n  node: t.NullableTypeAnnotation,\n) {\n  this.token(\"?\");\n  this.print(node.typeAnnotation);\n}\n\nexport {\n  NumericLiteral as NumberLiteralTypeAnnotation,\n  StringLiteral as StringLiteralTypeAnnotation,\n} from \"./types.ts\";\n\nexport function NumberTypeAnnotation(this: Printer) {\n  this.word(\"number\");\n}\n\nexport function StringTypeAnnotation(this: Printer) {\n  this.word(\"string\");\n}\n\nexport function ThisTypeAnnotation(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function TupleTypeAnnotation(\n  this: Printer,\n  node: t.TupleTypeAnnotation,\n) {\n  this.token(\"[\");\n  this.printList(node.types);\n  this.token(\"]\");\n}\n\nexport function TypeofTypeAnnotation(\n  this: Printer,\n  node: t.TypeofTypeAnnotation,\n) {\n  this.word(\"typeof\");\n  this.space();\n  this.print(node.argument);\n}\n\nexport function TypeAlias(\n  this: Printer,\n  node: t.TypeAlias | t.DeclareTypeAlias,\n) {\n  this.word(\"type\");\n  this.space();\n  this.print(node.id);\n  this.print(node.typeParameters);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.right);\n  this.semicolon();\n}\n\nexport function TypeAnnotation(\n  this: Printer,\n  node: t.TypeAnnotation,\n  parent: t.Node,\n) {\n  this.token(\":\");\n  this.space();\n  if (parent.type === \"ArrowFunctionExpression\") {\n    this.tokenContext |= TokenContext.arrowFlowReturnType;\n  } else if (\n    // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n    node.optional\n  ) {\n    this.token(\"?\");\n  }\n  this.print(node.typeAnnotation);\n}\n\nexport function TypeParameterInstantiation(\n  this: Printer,\n  node: t.TypeParameterInstantiation,\n): void {\n  this.token(\"<\");\n  this.printList(node.params);\n  this.token(\">\");\n}\n\nexport { TypeParameterInstantiation as TypeParameterDeclaration };\n\nexport function TypeParameter(this: Printer, node: t.TypeParameter) {\n  this._variance(node);\n\n  this.word(node.name);\n\n  if (node.bound) {\n    this.print(node.bound);\n  }\n\n  if (node.default) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.default);\n  }\n}\n\nexport function OpaqueType(\n  this: Printer,\n  node: t.OpaqueType | t.DeclareOpaqueType,\n) {\n  this.word(\"opaque\");\n  this.space();\n  this.word(\"type\");\n  this.space();\n  this.print(node.id);\n  this.print(node.typeParameters);\n  if (node.supertype) {\n    this.token(\":\");\n    this.space();\n    this.print(node.supertype);\n  }\n\n  if (node.impltype) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.impltype);\n  }\n  this.semicolon();\n}\n\nexport function ObjectTypeAnnotation(\n  this: Printer,\n  node: t.ObjectTypeAnnotation,\n) {\n  if (node.exact) {\n    this.token(\"{|\");\n  } else {\n    this.token(\"{\");\n  }\n\n  // TODO: remove the array fallbacks and instead enforce the types to require an array\n  const props = [\n    ...node.properties,\n    ...(node.callProperties || []),\n    ...(node.indexers || []),\n    ...(node.internalSlots || []),\n  ];\n\n  if (props.length) {\n    this.newline();\n\n    this.space();\n\n    this.printJoin(\n      props,\n      true,\n      true,\n      undefined,\n      undefined,\n      function addNewlines(leading) {\n        if (leading && !props[0]) return 1;\n      },\n      () => {\n        if (props.length !== 1 || node.inexact) {\n          this.token(\",\");\n          this.space();\n        }\n      },\n    );\n\n    this.space();\n  }\n\n  if (node.inexact) {\n    this.indent();\n    this.token(\"...\");\n    if (props.length) {\n      this.newline();\n    }\n    this.dedent();\n  }\n\n  if (node.exact) {\n    this.token(\"|}\");\n  } else {\n    this.token(\"}\");\n  }\n}\n\nexport function ObjectTypeInternalSlot(\n  this: Printer,\n  node: t.ObjectTypeInternalSlot,\n) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.token(\"[\");\n  this.token(\"[\");\n  this.print(node.id);\n  this.token(\"]\");\n  this.token(\"]\");\n  if (node.optional) this.token(\"?\");\n  if (!node.method) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeCallProperty(\n  this: Printer,\n  node: t.ObjectTypeCallProperty,\n) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeIndexer(this: Printer, node: t.ObjectTypeIndexer) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this._variance(node);\n  this.token(\"[\");\n  if (node.id) {\n    this.print(node.id);\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.key);\n  this.token(\"]\");\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ObjectTypeProperty(this: Printer, node: t.ObjectTypeProperty) {\n  if (node.proto) {\n    this.word(\"proto\");\n    this.space();\n  }\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  if (node.kind === \"get\" || node.kind === \"set\") {\n    this.word(node.kind);\n    this.space();\n  }\n  this._variance(node);\n  this.print(node.key);\n  if (node.optional) this.token(\"?\");\n  if (!node.method) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeSpreadProperty(\n  this: Printer,\n  node: t.ObjectTypeSpreadProperty,\n) {\n  this.token(\"...\");\n  this.print(node.argument);\n}\n\nexport function QualifiedTypeIdentifier(\n  this: Printer,\n  node: t.QualifiedTypeIdentifier,\n) {\n  this.print(node.qualification);\n  this.token(\".\");\n  this.print(node.id);\n}\n\nexport function SymbolTypeAnnotation(this: Printer) {\n  this.word(\"symbol\");\n}\n\nfunction orSeparator(this: Printer, occurrenceCount: number) {\n  this.space();\n  this.token(\"|\", false, occurrenceCount);\n  this.space();\n}\n\nexport function UnionTypeAnnotation(\n  this: Printer,\n  node: t.UnionTypeAnnotation,\n) {\n  this.printJoin(node.types, undefined, undefined, orSeparator);\n}\n\nexport function TypeCastExpression(this: Printer, node: t.TypeCastExpression) {\n  this.token(\"(\");\n  this.print(node.expression);\n  this.print(node.typeAnnotation);\n  this.token(\")\");\n}\n\nexport function Variance(this: Printer, node: t.Variance) {\n  if (node.kind === \"plus\") {\n    this.token(\"+\");\n  } else {\n    this.token(\"-\");\n  }\n}\n\nexport function VoidTypeAnnotation(this: Printer) {\n  this.word(\"void\");\n}\n\nexport function IndexedAccessType(this: Printer, node: t.IndexedAccessType) {\n  this.print(node.objectType, true);\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n\nexport function OptionalIndexedAccessType(\n  this: Printer,\n  node: t.OptionalIndexedAccessType,\n) {\n  this.print(node.objectType);\n  if (node.optional) {\n    this.token(\"?.\");\n  }\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/jsx.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/jsx.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/jsx.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -81,10 +81,13 @@
   this.tokenChar(60);
   this.print(node.name);
-  this.print(node.typeParameters);
+  {
+    if (node.typeArguments) {
+      this.print(node.typeArguments);
+    }
+    this.print(node.typeParameters);
+  }
   if (node.attributes.length > 0) {
     this.space();
-    this.printJoin(node.attributes, {
-      separator: spaceSeparator
-    });
+    this.printJoin(node.attributes, undefined, undefined, spaceSeparator);
   }
   if (node.selfClosing) {
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/jsx.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/jsx.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/jsx.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["JSXAttribute","node","print","name","value","token","JSXIdentifier","word","JSXNamespacedName","namespace","JSXMemberExpression","object","property","JSXSpreadAttribute","argument","rightBrace","JSXExpressionContainer","expression","JSXSpreadChild","JSXText","raw","getPossibleRaw","undefined","JSXElement","open","openingElement","selfClosing","indent","child","children","dedent","closingElement","spaceSeparator","space","JSXOpeningElement","typeParameters","attributes","length","printJoin","separator","JSXClosingElement","JSXEmptyExpression","printInnerComments","JSXFragment","openingFragment","closingFragment","JSXOpeningFragment","JSXClosingFragment"],"sources":["../../src/generators/jsx.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function JSXAttribute(this: Printer, node: t.JSXAttribute) {\n  this.print(node.name);\n  if (node.value) {\n    this.token(\"=\");\n    this.print(node.value);\n  }\n}\n\nexport function JSXIdentifier(this: Printer, node: t.JSXIdentifier) {\n  this.word(node.name);\n}\n\nexport function JSXNamespacedName(this: Printer, node: t.JSXNamespacedName) {\n  this.print(node.namespace);\n  this.token(\":\");\n  this.print(node.name);\n}\n\nexport function JSXMemberExpression(\n  this: Printer,\n  node: t.JSXMemberExpression,\n) {\n  this.print(node.object);\n  this.token(\".\");\n  this.print(node.property);\n}\n\nexport function JSXSpreadAttribute(this: Printer, node: t.JSXSpreadAttribute) {\n  this.token(\"{\");\n  this.token(\"...\");\n  this.print(node.argument);\n  this.rightBrace(node);\n}\n\nexport function JSXExpressionContainer(\n  this: Printer,\n  node: t.JSXExpressionContainer,\n) {\n  this.token(\"{\");\n  this.print(node.expression);\n  this.rightBrace(node);\n}\n\nexport function JSXSpreadChild(this: Printer, node: t.JSXSpreadChild) {\n  this.token(\"{\");\n  this.token(\"...\");\n  this.print(node.expression);\n  this.rightBrace(node);\n}\n\nexport function JSXText(this: Printer, node: t.JSXText) {\n  const raw = this.getPossibleRaw(node);\n\n  if (raw !== undefined) {\n    this.token(raw, true);\n  } else {\n    this.token(node.value, true);\n  }\n}\n\nexport function JSXElement(this: Printer, node: t.JSXElement) {\n  const open = node.openingElement;\n  this.print(open);\n  if (open.selfClosing) return;\n\n  this.indent();\n  for (const child of node.children) {\n    this.print(child);\n  }\n  this.dedent();\n\n  this.print(node.closingElement);\n}\n\nfunction spaceSeparator(this: Printer) {\n  this.space();\n}\n\nexport function JSXOpeningElement(this: Printer, node: t.JSXOpeningElement) {\n  this.token(\"<\");\n  this.print(node.name);\n  this.print(node.typeParameters); // TS\n  if (node.attributes.length > 0) {\n    this.space();\n    this.printJoin(node.attributes, { separator: spaceSeparator });\n  }\n  if (node.selfClosing) {\n    this.space();\n    this.token(\"/\");\n  }\n  this.token(\">\");\n}\n\nexport function JSXClosingElement(this: Printer, node: t.JSXClosingElement) {\n  this.token(\"<\");\n  this.token(\"/\");\n  this.print(node.name);\n  this.token(\">\");\n}\n\nexport function JSXEmptyExpression(this: Printer) {\n  // This node is empty, so forcefully print its inner comments.\n  this.printInnerComments();\n}\n\nexport function JSXFragment(this: Printer, node: t.JSXFragment) {\n  this.print(node.openingFragment);\n\n  this.indent();\n  for (const child of node.children) {\n    this.print(child);\n  }\n  this.dedent();\n\n  this.print(node.closingFragment);\n}\n\nexport function JSXOpeningFragment(this: Printer) {\n  this.token(\"<\");\n  this.token(\">\");\n}\n\nexport function JSXClosingFragment(this: Printer) {\n  this.token(\"</\");\n  this.token(\">\");\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["JSXAttribute","node","print","name","value","token","JSXIdentifier","word","JSXNamespacedName","namespace","JSXMemberExpression","object","property","JSXSpreadAttribute","argument","rightBrace","JSXExpressionContainer","expression","JSXSpreadChild","JSXText","raw","getPossibleRaw","undefined","JSXElement","open","openingElement","selfClosing","indent","child","children","dedent","closingElement","spaceSeparator","space","JSXOpeningElement","typeArguments","typeParameters","attributes","length","printJoin","JSXClosingElement","JSXEmptyExpression","printInnerComments","JSXFragment","openingFragment","closingFragment","JSXOpeningFragment","JSXClosingFragment"],"sources":["../../src/generators/jsx.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function JSXAttribute(this: Printer, node: t.JSXAttribute) {\n  this.print(node.name);\n  if (node.value) {\n    this.token(\"=\");\n    this.print(node.value);\n  }\n}\n\nexport function JSXIdentifier(this: Printer, node: t.JSXIdentifier) {\n  this.word(node.name);\n}\n\nexport function JSXNamespacedName(this: Printer, node: t.JSXNamespacedName) {\n  this.print(node.namespace);\n  this.token(\":\");\n  this.print(node.name);\n}\n\nexport function JSXMemberExpression(\n  this: Printer,\n  node: t.JSXMemberExpression,\n) {\n  this.print(node.object);\n  this.token(\".\");\n  this.print(node.property);\n}\n\nexport function JSXSpreadAttribute(this: Printer, node: t.JSXSpreadAttribute) {\n  this.token(\"{\");\n  this.token(\"...\");\n  this.print(node.argument);\n  this.rightBrace(node);\n}\n\nexport function JSXExpressionContainer(\n  this: Printer,\n  node: t.JSXExpressionContainer,\n) {\n  this.token(\"{\");\n  this.print(node.expression);\n  this.rightBrace(node);\n}\n\nexport function JSXSpreadChild(this: Printer, node: t.JSXSpreadChild) {\n  this.token(\"{\");\n  this.token(\"...\");\n  this.print(node.expression);\n  this.rightBrace(node);\n}\n\nexport function JSXText(this: Printer, node: t.JSXText) {\n  const raw = this.getPossibleRaw(node);\n\n  if (raw !== undefined) {\n    this.token(raw, true);\n  } else {\n    this.token(node.value, true);\n  }\n}\n\nexport function JSXElement(this: Printer, node: t.JSXElement) {\n  const open = node.openingElement;\n  this.print(open);\n  if (open.selfClosing) return;\n\n  this.indent();\n  for (const child of node.children) {\n    this.print(child);\n  }\n  this.dedent();\n\n  this.print(node.closingElement);\n}\n\nfunction spaceSeparator(this: Printer) {\n  this.space();\n}\n\nexport function JSXOpeningElement(this: Printer, node: t.JSXOpeningElement) {\n  this.token(\"<\");\n  this.print(node.name);\n  if (process.env.BABEL_8_BREAKING) {\n    //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.typeArguments);\n  } else {\n    if (node.typeArguments) {\n      this.print(node.typeArguments); // Flow AST\n    }\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // Legacy TS AST\n  }\n\n  if (node.attributes.length > 0) {\n    this.space();\n    this.printJoin(node.attributes, undefined, undefined, spaceSeparator);\n  }\n  if (node.selfClosing) {\n    this.space();\n    this.token(\"/\");\n  }\n  this.token(\">\");\n}\n\nexport function JSXClosingElement(this: Printer, node: t.JSXClosingElement) {\n  this.token(\"<\");\n  this.token(\"/\");\n  this.print(node.name);\n  this.token(\">\");\n}\n\nexport function JSXEmptyExpression(this: Printer) {\n  // This node is empty, so forcefully print its inner comments.\n  this.printInnerComments();\n}\n\nexport function JSXFragment(this: Printer, node: t.JSXFragment) {\n  this.print(node.openingFragment);\n\n  this.indent();\n  for (const child of node.children) {\n    this.print(child);\n  }\n  this.dedent();\n\n  this.print(node.closingFragment);\n}\n\nexport function JSXOpeningFragment(this: Printer) {\n  this.token(\"<\");\n  this.token(\">\");\n}\n\nexport function JSXClosingFragment(this: Printer) {\n  this.token(\"</\");\n  this.token(\">\");\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/modules.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/modules.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/modules.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -95,7 +95,5 @@
   this.token("{", null, occurrenceCount);
   this.space();
-  this.printList(attributes || assertions, {
-    printTrailingSeparator: this.shouldPrintTrailingComma("}")
-  });
+  this.printList(attributes || assertions, this.shouldPrintTrailingComma("}"));
   this.space();
   this.token("}", null, occurrenceCount);
@@ -161,7 +159,5 @@
       if (specifiers.length) {
         this.space();
-        this.printList(specifiers, {
-          printTrailingSeparator: this.shouldPrintTrailingComma("}")
-        });
+        this.printList(specifiers, this.shouldPrintTrailingComma("}"));
         this.space();
       }
@@ -233,7 +229,5 @@
     this.tokenChar(123);
     this.space();
-    this.printList(specifiers, {
-      printTrailingSeparator: this.shouldPrintTrailingComma("}")
-    });
+    this.printList(specifiers, this.shouldPrintTrailingComma("}"));
     this.space();
     this.tokenChar(125);
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/modules.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/modules.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/modules.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","_index","isClassDeclaration","isExportDefaultSpecifier","isExportNamespaceSpecifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","isStatement","ImportSpecifier","node","importKind","word","space","print","imported","local","name","ImportDefaultSpecifier","ExportDefaultSpecifier","exported","ExportSpecifier","exportKind","ExportNamespaceSpecifier","token","warningShown","_printAttributes","hasPreviousBrace","importAttributesKeyword","format","attributes","assertions","console","warn","useAssertKeyword","printList","occurrenceCount","printTrailingSeparator","shouldPrintTrailingComma","ExportAllDeclaration","_node$attributes","_node$assertions","length","source","semicolon","maybePrintDecoratorsBeforeExport","printer","declaration","_shouldPrintDecoratorsBeforeExport","printJoin","decorators","ExportNamedDeclaration","declar","specifiers","slice","hasSpecial","first","shift","hasBrace","_node$attributes2","_node$assertions2","ExportDefaultDeclaration","noIndentInnerCommentsHere","tokenContext","TokenContext","exportDefault","ImportDeclaration","_node$attributes3","_node$assertions3","isTypeKind","module","phase","hasSpecifiers","ImportAttribute","key","value","ImportNamespaceSpecifier","ImportExpression","options"],"sources":["../../src/generators/modules.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isClassDeclaration,\n  isExportDefaultSpecifier,\n  isExportNamespaceSpecifier,\n  isImportDefaultSpecifier,\n  isImportNamespaceSpecifier,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function ImportSpecifier(this: Printer, node: t.ImportSpecifier) {\n  if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n    this.word(node.importKind);\n    this.space();\n  }\n\n  this.print(node.imported);\n  // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n  if (node.local && node.local.name !== node.imported.name) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(node.local);\n  }\n}\n\nexport function ImportDefaultSpecifier(\n  this: Printer,\n  node: t.ImportDefaultSpecifier,\n) {\n  this.print(node.local);\n}\n\nexport function ExportDefaultSpecifier(\n  this: Printer,\n  node: t.ExportDefaultSpecifier,\n) {\n  this.print(node.exported);\n}\n\nexport function ExportSpecifier(this: Printer, node: t.ExportSpecifier) {\n  if (node.exportKind === \"type\") {\n    this.word(\"type\");\n    this.space();\n  }\n\n  this.print(node.local);\n  // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n  if (node.exported && node.local.name !== node.exported.name) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(node.exported);\n  }\n}\n\nexport function ExportNamespaceSpecifier(\n  this: Printer,\n  node: t.ExportNamespaceSpecifier,\n) {\n  this.token(\"*\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.print(node.exported);\n}\n\nlet warningShown = false;\n\nexport function _printAttributes(\n  this: Printer,\n  node: Extract<t.Node, { attributes?: t.ImportAttribute[] }>,\n  hasPreviousBrace: boolean,\n) {\n  const { importAttributesKeyword } = this.format;\n  const { attributes, assertions } = node;\n\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    attributes &&\n    !importAttributesKeyword &&\n    // In the production build only show the warning once.\n    // We want to show it per-usage locally for tests.\n    (!process.env.IS_PUBLISH || !warningShown)\n  ) {\n    warningShown = true;\n    console.warn(`\\\nYou are using import attributes, without specifying the desired output syntax.\nPlease specify the \"importAttributesKeyword\" generator option, whose value can be one of:\n - \"with\"        : \\`import { a } from \"b\" with { type: \"json\" };\\`\n - \"assert\"      : \\`import { a } from \"b\" assert { type: \"json\" };\\`\n - \"with-legacy\" : \\`import { a } from \"b\" with type: \"json\";\\`\n`);\n  }\n\n  const useAssertKeyword =\n    importAttributesKeyword === \"assert\" ||\n    (!importAttributesKeyword && assertions);\n\n  this.word(useAssertKeyword ? \"assert\" : \"with\");\n  this.space();\n\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !useAssertKeyword &&\n    importAttributesKeyword !== \"with\"\n  ) {\n    // with-legacy\n    this.printList(attributes || assertions);\n    return;\n  }\n\n  const occurrenceCount = hasPreviousBrace ? 1 : 0;\n\n  this.token(\"{\", null, occurrenceCount);\n  this.space();\n  this.printList(attributes || assertions, {\n    printTrailingSeparator: this.shouldPrintTrailingComma(\"}\"),\n  });\n  this.space();\n  this.token(\"}\", null, occurrenceCount);\n}\n\nexport function ExportAllDeclaration(\n  this: Printer,\n  node: t.ExportAllDeclaration | t.DeclareExportAllDeclaration,\n) {\n  this.word(\"export\");\n  this.space();\n  if (node.exportKind === \"type\") {\n    this.word(\"type\");\n    this.space();\n  }\n  this.token(\"*\");\n  this.space();\n  this.word(\"from\");\n  this.space();\n  if (node.attributes?.length || node.assertions?.length) {\n    this.print(node.source, true);\n    this.space();\n    this._printAttributes(node, false);\n  } else {\n    this.print(node.source);\n  }\n\n  this.semicolon();\n}\n\nfunction maybePrintDecoratorsBeforeExport(\n  printer: Printer,\n  node: t.ExportNamedDeclaration | t.ExportDefaultDeclaration,\n) {\n  if (\n    isClassDeclaration(node.declaration) &&\n    printer._shouldPrintDecoratorsBeforeExport(\n      node as t.ExportNamedDeclaration & { declaration: t.ClassDeclaration },\n    )\n  ) {\n    printer.printJoin(node.declaration.decorators);\n  }\n}\n\nexport function ExportNamedDeclaration(\n  this: Printer,\n  node: t.ExportNamedDeclaration,\n) {\n  maybePrintDecoratorsBeforeExport(this, node);\n\n  this.word(\"export\");\n  this.space();\n  if (node.declaration) {\n    const declar = node.declaration;\n    this.print(declar);\n    if (!isStatement(declar)) this.semicolon();\n  } else {\n    if (node.exportKind === \"type\") {\n      this.word(\"type\");\n      this.space();\n    }\n\n    const specifiers = node.specifiers.slice(0);\n\n    // print \"special\" specifiers first\n    let hasSpecial = false;\n    for (;;) {\n      const first = specifiers[0];\n      if (\n        isExportDefaultSpecifier(first) ||\n        isExportNamespaceSpecifier(first)\n      ) {\n        hasSpecial = true;\n        this.print(specifiers.shift());\n        if (specifiers.length) {\n          this.token(\",\");\n          this.space();\n        }\n      } else {\n        break;\n      }\n    }\n\n    let hasBrace = false;\n    if (specifiers.length || (!specifiers.length && !hasSpecial)) {\n      hasBrace = true;\n      this.token(\"{\");\n      if (specifiers.length) {\n        this.space();\n        this.printList(specifiers, {\n          printTrailingSeparator: this.shouldPrintTrailingComma(\"}\"),\n        });\n        this.space();\n      }\n      this.token(\"}\");\n    }\n\n    if (node.source) {\n      this.space();\n      this.word(\"from\");\n      this.space();\n      if (node.attributes?.length || node.assertions?.length) {\n        this.print(node.source, true);\n        this.space();\n        this._printAttributes(node, hasBrace);\n      } else {\n        this.print(node.source);\n      }\n    }\n\n    this.semicolon();\n  }\n}\n\nexport function ExportDefaultDeclaration(\n  this: Printer,\n  node: t.ExportDefaultDeclaration,\n) {\n  maybePrintDecoratorsBeforeExport(this, node);\n\n  this.word(\"export\");\n  this.noIndentInnerCommentsHere();\n  this.space();\n  this.word(\"default\");\n  this.space();\n  this.tokenContext |= TokenContext.exportDefault;\n  const declar = node.declaration;\n  this.print(declar);\n  if (!isStatement(declar)) this.semicolon();\n}\n\nexport function ImportDeclaration(this: Printer, node: t.ImportDeclaration) {\n  this.word(\"import\");\n  this.space();\n\n  const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n  if (isTypeKind) {\n    this.noIndentInnerCommentsHere();\n    this.word(node.importKind);\n    this.space();\n  } else if (node.module) {\n    this.noIndentInnerCommentsHere();\n    this.word(\"module\");\n    this.space();\n  } else if (node.phase) {\n    this.noIndentInnerCommentsHere();\n    this.word(node.phase);\n    this.space();\n  }\n\n  const specifiers = node.specifiers.slice(0);\n  const hasSpecifiers = !!specifiers.length;\n  // print \"special\" specifiers first. The loop condition is constant,\n  // but there is a \"break\" in the body.\n  while (hasSpecifiers) {\n    const first = specifiers[0];\n    if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n      this.print(specifiers.shift());\n      if (specifiers.length) {\n        this.token(\",\");\n        this.space();\n      }\n    } else {\n      break;\n    }\n  }\n\n  let hasBrace = false;\n  if (specifiers.length) {\n    hasBrace = true;\n    this.token(\"{\");\n    this.space();\n    this.printList(specifiers, {\n      printTrailingSeparator: this.shouldPrintTrailingComma(\"}\"),\n    });\n    this.space();\n    this.token(\"}\");\n  } else if (isTypeKind && !hasSpecifiers) {\n    hasBrace = true;\n    this.token(\"{\");\n    this.token(\"}\");\n  }\n\n  if (hasSpecifiers || isTypeKind) {\n    this.space();\n    this.word(\"from\");\n    this.space();\n  }\n\n  if (node.attributes?.length || node.assertions?.length) {\n    this.print(node.source, true);\n    this.space();\n    this._printAttributes(node, hasBrace);\n  } else {\n    this.print(node.source);\n  }\n\n  this.semicolon();\n}\n\nexport function ImportAttribute(this: Printer, node: t.ImportAttribute) {\n  this.print(node.key);\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ImportNamespaceSpecifier(\n  this: Printer,\n  node: t.ImportNamespaceSpecifier,\n) {\n  this.token(\"*\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.print(node.local);\n}\n\nexport function ImportExpression(this: Printer, node: t.ImportExpression) {\n  this.word(\"import\");\n  if (node.phase) {\n    this.token(\".\");\n    this.word(node.phase);\n  }\n  this.token(\"(\");\n  this.print(node.source);\n  if (node.options != null) {\n    this.token(\",\");\n    this.space();\n    this.print(node.options);\n  }\n  this.token(\")\");\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","_index","isClassDeclaration","isExportDefaultSpecifier","isExportNamespaceSpecifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","isStatement","ImportSpecifier","node","importKind","word","space","print","imported","local","name","ImportDefaultSpecifier","ExportDefaultSpecifier","exported","ExportSpecifier","exportKind","ExportNamespaceSpecifier","token","warningShown","_printAttributes","hasPreviousBrace","importAttributesKeyword","format","attributes","assertions","console","warn","useAssertKeyword","printList","occurrenceCount","shouldPrintTrailingComma","ExportAllDeclaration","_node$attributes","_node$assertions","length","source","semicolon","maybePrintDecoratorsBeforeExport","printer","declaration","_shouldPrintDecoratorsBeforeExport","printJoin","decorators","ExportNamedDeclaration","declar","specifiers","slice","hasSpecial","first","shift","hasBrace","_node$attributes2","_node$assertions2","ExportDefaultDeclaration","noIndentInnerCommentsHere","tokenContext","TokenContext","exportDefault","ImportDeclaration","_node$attributes3","_node$assertions3","isTypeKind","module","phase","hasSpecifiers","ImportAttribute","key","value","ImportNamespaceSpecifier","ImportExpression","options"],"sources":["../../src/generators/modules.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isClassDeclaration,\n  isExportDefaultSpecifier,\n  isExportNamespaceSpecifier,\n  isImportDefaultSpecifier,\n  isImportNamespaceSpecifier,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function ImportSpecifier(this: Printer, node: t.ImportSpecifier) {\n  if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n    this.word(node.importKind);\n    this.space();\n  }\n\n  this.print(node.imported);\n  // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n  if (node.local && node.local.name !== node.imported.name) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(node.local);\n  }\n}\n\nexport function ImportDefaultSpecifier(\n  this: Printer,\n  node: t.ImportDefaultSpecifier,\n) {\n  this.print(node.local);\n}\n\nexport function ExportDefaultSpecifier(\n  this: Printer,\n  node: t.ExportDefaultSpecifier,\n) {\n  this.print(node.exported);\n}\n\nexport function ExportSpecifier(this: Printer, node: t.ExportSpecifier) {\n  if (node.exportKind === \"type\") {\n    this.word(\"type\");\n    this.space();\n  }\n\n  this.print(node.local);\n  // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n  if (node.exported && node.local.name !== node.exported.name) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(node.exported);\n  }\n}\n\nexport function ExportNamespaceSpecifier(\n  this: Printer,\n  node: t.ExportNamespaceSpecifier,\n) {\n  this.token(\"*\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.print(node.exported);\n}\n\nlet warningShown = false;\n\nexport function _printAttributes(\n  this: Printer,\n  node: Extract<t.Node, { attributes?: t.ImportAttribute[] }>,\n  hasPreviousBrace: boolean,\n) {\n  const { importAttributesKeyword } = this.format;\n  const { attributes, assertions } = node;\n\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    attributes &&\n    !importAttributesKeyword &&\n    // In the production build only show the warning once.\n    // We want to show it per-usage locally for tests.\n    (!process.env.IS_PUBLISH || !warningShown)\n  ) {\n    warningShown = true;\n    console.warn(`\\\nYou are using import attributes, without specifying the desired output syntax.\nPlease specify the \"importAttributesKeyword\" generator option, whose value can be one of:\n - \"with\"        : \\`import { a } from \"b\" with { type: \"json\" };\\`\n - \"assert\"      : \\`import { a } from \"b\" assert { type: \"json\" };\\`\n - \"with-legacy\" : \\`import { a } from \"b\" with type: \"json\";\\`\n`);\n  }\n\n  const useAssertKeyword =\n    importAttributesKeyword === \"assert\" ||\n    (!importAttributesKeyword && assertions);\n\n  this.word(useAssertKeyword ? \"assert\" : \"with\");\n  this.space();\n\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !useAssertKeyword &&\n    importAttributesKeyword !== \"with\"\n  ) {\n    // with-legacy\n    this.printList(attributes || assertions);\n    return;\n  }\n\n  const occurrenceCount = hasPreviousBrace ? 1 : 0;\n\n  this.token(\"{\", null, occurrenceCount);\n  this.space();\n  this.printList(attributes || assertions, this.shouldPrintTrailingComma(\"}\"));\n  this.space();\n  this.token(\"}\", null, occurrenceCount);\n}\n\nexport function ExportAllDeclaration(\n  this: Printer,\n  node: t.ExportAllDeclaration | t.DeclareExportAllDeclaration,\n) {\n  this.word(\"export\");\n  this.space();\n  if (node.exportKind === \"type\") {\n    this.word(\"type\");\n    this.space();\n  }\n  this.token(\"*\");\n  this.space();\n  this.word(\"from\");\n  this.space();\n  if (node.attributes?.length || node.assertions?.length) {\n    this.print(node.source, true);\n    this.space();\n    this._printAttributes(node, false);\n  } else {\n    this.print(node.source);\n  }\n\n  this.semicolon();\n}\n\nfunction maybePrintDecoratorsBeforeExport(\n  printer: Printer,\n  node: t.ExportNamedDeclaration | t.ExportDefaultDeclaration,\n) {\n  if (\n    isClassDeclaration(node.declaration) &&\n    printer._shouldPrintDecoratorsBeforeExport(\n      node as t.ExportNamedDeclaration & { declaration: t.ClassDeclaration },\n    )\n  ) {\n    printer.printJoin(node.declaration.decorators);\n  }\n}\n\nexport function ExportNamedDeclaration(\n  this: Printer,\n  node: t.ExportNamedDeclaration,\n) {\n  maybePrintDecoratorsBeforeExport(this, node);\n\n  this.word(\"export\");\n  this.space();\n  if (node.declaration) {\n    const declar = node.declaration;\n    this.print(declar);\n    if (!isStatement(declar)) this.semicolon();\n  } else {\n    if (node.exportKind === \"type\") {\n      this.word(\"type\");\n      this.space();\n    }\n\n    const specifiers = node.specifiers.slice(0);\n\n    // print \"special\" specifiers first\n    let hasSpecial = false;\n    for (;;) {\n      const first = specifiers[0];\n      if (\n        isExportDefaultSpecifier(first) ||\n        isExportNamespaceSpecifier(first)\n      ) {\n        hasSpecial = true;\n        this.print(specifiers.shift());\n        if (specifiers.length) {\n          this.token(\",\");\n          this.space();\n        }\n      } else {\n        break;\n      }\n    }\n\n    let hasBrace = false;\n    if (specifiers.length || (!specifiers.length && !hasSpecial)) {\n      hasBrace = true;\n      this.token(\"{\");\n      if (specifiers.length) {\n        this.space();\n        this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n        this.space();\n      }\n      this.token(\"}\");\n    }\n\n    if (node.source) {\n      this.space();\n      this.word(\"from\");\n      this.space();\n      if (node.attributes?.length || node.assertions?.length) {\n        this.print(node.source, true);\n        this.space();\n        this._printAttributes(node, hasBrace);\n      } else {\n        this.print(node.source);\n      }\n    }\n\n    this.semicolon();\n  }\n}\n\nexport function ExportDefaultDeclaration(\n  this: Printer,\n  node: t.ExportDefaultDeclaration,\n) {\n  maybePrintDecoratorsBeforeExport(this, node);\n\n  this.word(\"export\");\n  this.noIndentInnerCommentsHere();\n  this.space();\n  this.word(\"default\");\n  this.space();\n  this.tokenContext |= TokenContext.exportDefault;\n  const declar = node.declaration;\n  this.print(declar);\n  if (!isStatement(declar)) this.semicolon();\n}\n\nexport function ImportDeclaration(this: Printer, node: t.ImportDeclaration) {\n  this.word(\"import\");\n  this.space();\n\n  const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n  if (isTypeKind) {\n    this.noIndentInnerCommentsHere();\n    this.word(node.importKind);\n    this.space();\n  } else if (node.module) {\n    this.noIndentInnerCommentsHere();\n    this.word(\"module\");\n    this.space();\n  } else if (node.phase) {\n    this.noIndentInnerCommentsHere();\n    this.word(node.phase);\n    this.space();\n  }\n\n  const specifiers = node.specifiers.slice(0);\n  const hasSpecifiers = !!specifiers.length;\n  // print \"special\" specifiers first. The loop condition is constant,\n  // but there is a \"break\" in the body.\n  while (hasSpecifiers) {\n    const first = specifiers[0];\n    if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n      this.print(specifiers.shift());\n      if (specifiers.length) {\n        this.token(\",\");\n        this.space();\n      }\n    } else {\n      break;\n    }\n  }\n\n  let hasBrace = false;\n  if (specifiers.length) {\n    hasBrace = true;\n    this.token(\"{\");\n    this.space();\n    this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n    this.space();\n    this.token(\"}\");\n  } else if (isTypeKind && !hasSpecifiers) {\n    hasBrace = true;\n    this.token(\"{\");\n    this.token(\"}\");\n  }\n\n  if (hasSpecifiers || isTypeKind) {\n    this.space();\n    this.word(\"from\");\n    this.space();\n  }\n\n  if (node.attributes?.length || node.assertions?.length) {\n    this.print(node.source, true);\n    this.space();\n    this._printAttributes(node, hasBrace);\n  } else {\n    this.print(node.source);\n  }\n\n  this.semicolon();\n}\n\nexport function ImportAttribute(this: Printer, node: t.ImportAttribute) {\n  this.print(node.key);\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ImportNamespaceSpecifier(\n  this: Printer,\n  node: t.ImportNamespaceSpecifier,\n) {\n  this.token(\"*\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.print(node.local);\n}\n\nexport function ImportExpression(this: Printer, node: t.ImportExpression) {\n  this.word(\"import\");\n  if (node.phase) {\n    this.token(\".\");\n    this.word(node.phase);\n  }\n  this.token(\"(\");\n  this.print(node.source);\n  if (node.options != null) {\n    this.token(\",\");\n    this.space();\n    this.print(node.options);\n  }\n  this.token(\")\");\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/statements.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/statements.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/statements.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -207,9 +207,6 @@
   this.space();
   this.tokenChar(123);
-  this.printSequence(node.cases, {
-    indent: true,
-    addNewlines(leading, cas) {
-      if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
-    }
+  this.printSequence(node.cases, true, undefined, function addNewlines(leading, cas) {
+    if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
   });
   this.rightBrace(node);
@@ -227,7 +224,5 @@
   if (node.consequent.length) {
     this.newline();
-    this.printSequence(node.consequent, {
-      indent: true
-    });
+    this.printSequence(node.consequent, true);
   }
 }
@@ -260,11 +255,8 @@
     }
   }
-  this.printList(node.declarations, {
-    separator: hasInits ? function (occurrenceCount) {
-      this.token(",", false, occurrenceCount);
-      this.newline();
-    } : undefined,
-    indent: node.declarations.length > 1 ? true : false
-  });
+  this.printList(node.declarations, undefined, undefined, node.declarations.length > 1, hasInits ? function (occurrenceCount) {
+    this.token(",", false, occurrenceCount);
+    this.newline();
+  } : undefined);
   if (isFor(parent)) {
     if (isForStatement(parent)) {
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/statements.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/statements.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/statements.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","_index","isFor","isForStatement","isIfStatement","isStatement","WithStatement","node","word","space","token","print","object","printBlock","IfStatement","test","needsBlock","alternate","getLastStatement","consequent","newline","indent","printAndIndentOnComments","dedent","endsWith","statement","body","ForStatement","exit","enterForStatementInit","tokenContext","TokenContext","forHead","init","update","WhileStatement","ForXStatement","isForOf","type","await","noIndentInnerCommentsHere","forOfHead","forInHead","left","right","ForInStatement","exports","ForOfStatement","DoWhileStatement","semicolon","printStatementAfterKeyword","printer","printTerminatorless","BreakStatement","label","ContinueStatement","ReturnStatement","argument","ThrowStatement","LabeledStatement","TryStatement","block","handlers","handler","finalizer","CatchClause","param","typeAnnotation","SwitchStatement","discriminant","printSequence","cases","addNewlines","leading","cas","length","rightBrace","SwitchCase","DebuggerStatement","VariableDeclaration","parent","declare","kind","hasInits","declar","declarations","printList","separator","occurrenceCount","undefined","VariableDeclarator","id","definite"],"sources":["../../src/generators/statements.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isFor,\n  isForStatement,\n  isIfStatement,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function WithStatement(this: Printer, node: t.WithStatement) {\n  this.word(\"with\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.object);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport function IfStatement(this: Printer, node: t.IfStatement) {\n  this.word(\"if\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.space();\n\n  const needsBlock =\n    node.alternate && isIfStatement(getLastStatement(node.consequent));\n  if (needsBlock) {\n    this.token(\"{\");\n    this.newline();\n    this.indent();\n  }\n\n  this.printAndIndentOnComments(node.consequent);\n\n  if (needsBlock) {\n    this.dedent();\n    this.newline();\n    this.token(\"}\");\n  }\n\n  if (node.alternate) {\n    if (this.endsWith(charCodes.rightCurlyBrace)) this.space();\n    this.word(\"else\");\n    this.space();\n    this.printAndIndentOnComments(node.alternate);\n  }\n}\n\n// Recursively get the last statement.\nfunction getLastStatement(statement: t.Statement): t.Statement {\n  // @ts-expect-error: If statement.body is empty or not a Node, isStatement will return false\n  const { body } = statement;\n  if (isStatement(body) === false) {\n    return statement;\n  }\n\n  return getLastStatement(body);\n}\n\nexport function ForStatement(this: Printer, node: t.ForStatement) {\n  this.word(\"for\");\n  this.space();\n  this.token(\"(\");\n\n  {\n    const exit = this.enterForStatementInit();\n    this.tokenContext |= TokenContext.forHead;\n    this.print(node.init);\n    exit();\n  }\n\n  this.token(\";\");\n\n  if (node.test) {\n    this.space();\n    this.print(node.test);\n  }\n  this.token(\";\", false, 1);\n\n  if (node.update) {\n    this.space();\n    this.print(node.update);\n  }\n\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport function WhileStatement(this: Printer, node: t.WhileStatement) {\n  this.word(\"while\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nfunction ForXStatement(this: Printer, node: t.ForXStatement) {\n  this.word(\"for\");\n  this.space();\n  const isForOf = node.type === \"ForOfStatement\";\n  if (isForOf && node.await) {\n    this.word(\"await\");\n    this.space();\n  }\n  this.noIndentInnerCommentsHere();\n  this.token(\"(\");\n  {\n    const exit = isForOf ? null : this.enterForStatementInit();\n    this.tokenContext |= isForOf\n      ? TokenContext.forOfHead\n      : TokenContext.forInHead;\n    this.print(node.left);\n    exit?.();\n  }\n  this.space();\n  this.word(isForOf ? \"of\" : \"in\");\n  this.space();\n  this.print(node.right);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport const ForInStatement = ForXStatement;\nexport const ForOfStatement = ForXStatement;\n\nexport function DoWhileStatement(this: Printer, node: t.DoWhileStatement) {\n  this.word(\"do\");\n  this.space();\n  this.print(node.body);\n  this.space();\n  this.word(\"while\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.semicolon();\n}\n\nfunction printStatementAfterKeyword(printer: Printer, node: t.Node) {\n  if (node) {\n    printer.space();\n    printer.printTerminatorless(node);\n  }\n\n  printer.semicolon();\n}\n\nexport function BreakStatement(this: Printer, node: t.ContinueStatement) {\n  this.word(\"break\");\n  printStatementAfterKeyword(this, node.label);\n}\n\nexport function ContinueStatement(this: Printer, node: t.ContinueStatement) {\n  this.word(\"continue\");\n  printStatementAfterKeyword(this, node.label);\n}\n\nexport function ReturnStatement(this: Printer, node: t.ReturnStatement) {\n  this.word(\"return\");\n  printStatementAfterKeyword(this, node.argument);\n}\n\nexport function ThrowStatement(this: Printer, node: t.ThrowStatement) {\n  this.word(\"throw\");\n  printStatementAfterKeyword(this, node.argument);\n}\n\nexport function LabeledStatement(this: Printer, node: t.LabeledStatement) {\n  this.print(node.label);\n  this.token(\":\");\n  this.space();\n  this.print(node.body);\n}\n\nexport function TryStatement(this: Printer, node: t.TryStatement) {\n  this.word(\"try\");\n  this.space();\n  this.print(node.block);\n  this.space();\n\n  // Esprima bug puts the catch clause in a `handlers` array.\n  // see https://code.google.com/p/esprima/issues/detail?id=433\n  // We run into this from regenerator generated ast.\n  // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n  if (node.handlers) {\n    // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n    this.print(node.handlers[0]);\n  } else {\n    this.print(node.handler);\n  }\n\n  if (node.finalizer) {\n    this.space();\n    this.word(\"finally\");\n    this.space();\n    this.print(node.finalizer);\n  }\n}\n\nexport function CatchClause(this: Printer, node: t.CatchClause) {\n  this.word(\"catch\");\n  this.space();\n  if (node.param) {\n    this.token(\"(\");\n    this.print(node.param);\n    this.print(node.param.typeAnnotation);\n    this.token(\")\");\n    this.space();\n  }\n  this.print(node.body);\n}\n\nexport function SwitchStatement(this: Printer, node: t.SwitchStatement) {\n  this.word(\"switch\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.discriminant);\n  this.token(\")\");\n  this.space();\n  this.token(\"{\");\n\n  this.printSequence(node.cases, {\n    indent: true,\n    addNewlines(leading, cas) {\n      if (!leading && node.cases[node.cases.length - 1] === cas) return -1;\n    },\n  });\n\n  this.rightBrace(node);\n}\n\nexport function SwitchCase(this: Printer, node: t.SwitchCase) {\n  if (node.test) {\n    this.word(\"case\");\n    this.space();\n    this.print(node.test);\n    this.token(\":\");\n  } else {\n    this.word(\"default\");\n    this.token(\":\");\n  }\n\n  if (node.consequent.length) {\n    this.newline();\n    this.printSequence(node.consequent, { indent: true });\n  }\n}\n\nexport function DebuggerStatement(this: Printer) {\n  this.word(\"debugger\");\n  this.semicolon();\n}\n\nexport function VariableDeclaration(\n  this: Printer,\n  node: t.VariableDeclaration,\n  parent: t.Node,\n) {\n  if (node.declare) {\n    // TS\n    this.word(\"declare\");\n    this.space();\n  }\n\n  const { kind } = node;\n  if (kind === \"await using\") {\n    this.word(\"await\");\n    this.space();\n    this.word(\"using\", true);\n  } else {\n    this.word(kind, kind === \"using\");\n  }\n  this.space();\n\n  let hasInits = false;\n  // don't add whitespace to loop heads\n  if (!isFor(parent)) {\n    for (const declar of node.declarations) {\n      if (declar.init) {\n        // has an init so let's split it up over multiple lines\n        hasInits = true;\n      }\n    }\n  }\n\n  //\n  // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on\n  // this will format declarations like:\n  //\n  //   let foo = \"bar\", bar = \"foo\";\n  //\n  // into\n  //\n  //   let foo = \"bar\",\n  //       bar = \"foo\";\n  //\n\n  this.printList(node.declarations, {\n    separator: hasInits\n      ? function (this: Printer, occurrenceCount: number) {\n          this.token(\",\", false, occurrenceCount);\n          this.newline();\n        }\n      : undefined,\n    indent: node.declarations.length > 1 ? true : false,\n  });\n\n  if (isFor(parent)) {\n    // don't give semicolons to these nodes since they'll be inserted in the parent generator\n    if (isForStatement(parent)) {\n      if (parent.init === node) return;\n    } else {\n      if (parent.left === node) return;\n    }\n  }\n\n  this.semicolon();\n}\n\nexport function VariableDeclarator(this: Printer, node: t.VariableDeclarator) {\n  this.print(node.id);\n  if (node.definite) this.token(\"!\"); // TS\n  // @ts-ignore(Babel 7 vs Babel 8) Property 'typeAnnotation' does not exist on type 'MemberExpression'.\n  this.print(node.id.typeAnnotation);\n  if (node.init) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.init);\n  }\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","_index","isFor","isForStatement","isIfStatement","isStatement","WithStatement","node","word","space","token","print","object","printBlock","IfStatement","test","needsBlock","alternate","getLastStatement","consequent","newline","indent","printAndIndentOnComments","dedent","endsWith","statement","body","ForStatement","exit","enterForStatementInit","tokenContext","TokenContext","forHead","init","update","WhileStatement","ForXStatement","isForOf","type","await","noIndentInnerCommentsHere","forOfHead","forInHead","left","right","ForInStatement","exports","ForOfStatement","DoWhileStatement","semicolon","printStatementAfterKeyword","printer","printTerminatorless","BreakStatement","label","ContinueStatement","ReturnStatement","argument","ThrowStatement","LabeledStatement","TryStatement","block","handlers","handler","finalizer","CatchClause","param","typeAnnotation","SwitchStatement","discriminant","printSequence","cases","undefined","addNewlines","leading","cas","length","rightBrace","SwitchCase","DebuggerStatement","VariableDeclaration","parent","declare","kind","hasInits","declar","declarations","printList","occurrenceCount","VariableDeclarator","id","definite"],"sources":["../../src/generators/statements.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport {\n  isFor,\n  isForStatement,\n  isIfStatement,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function WithStatement(this: Printer, node: t.WithStatement) {\n  this.word(\"with\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.object);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport function IfStatement(this: Printer, node: t.IfStatement) {\n  this.word(\"if\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.space();\n\n  const needsBlock =\n    node.alternate && isIfStatement(getLastStatement(node.consequent));\n  if (needsBlock) {\n    this.token(\"{\");\n    this.newline();\n    this.indent();\n  }\n\n  this.printAndIndentOnComments(node.consequent);\n\n  if (needsBlock) {\n    this.dedent();\n    this.newline();\n    this.token(\"}\");\n  }\n\n  if (node.alternate) {\n    if (this.endsWith(charCodes.rightCurlyBrace)) this.space();\n    this.word(\"else\");\n    this.space();\n    this.printAndIndentOnComments(node.alternate);\n  }\n}\n\n// Recursively get the last statement.\nfunction getLastStatement(statement: t.Statement): t.Statement {\n  // @ts-expect-error: If statement.body is empty or not a Node, isStatement will return false\n  const { body } = statement;\n  if (isStatement(body) === false) {\n    return statement;\n  }\n\n  return getLastStatement(body);\n}\n\nexport function ForStatement(this: Printer, node: t.ForStatement) {\n  this.word(\"for\");\n  this.space();\n  this.token(\"(\");\n\n  {\n    const exit = this.enterForStatementInit();\n    this.tokenContext |= TokenContext.forHead;\n    this.print(node.init);\n    exit();\n  }\n\n  this.token(\";\");\n\n  if (node.test) {\n    this.space();\n    this.print(node.test);\n  }\n  this.token(\";\", false, 1);\n\n  if (node.update) {\n    this.space();\n    this.print(node.update);\n  }\n\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport function WhileStatement(this: Printer, node: t.WhileStatement) {\n  this.word(\"while\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nfunction ForXStatement(this: Printer, node: t.ForXStatement) {\n  this.word(\"for\");\n  this.space();\n  const isForOf = node.type === \"ForOfStatement\";\n  if (isForOf && node.await) {\n    this.word(\"await\");\n    this.space();\n  }\n  this.noIndentInnerCommentsHere();\n  this.token(\"(\");\n  {\n    const exit = isForOf ? null : this.enterForStatementInit();\n    this.tokenContext |= isForOf\n      ? TokenContext.forOfHead\n      : TokenContext.forInHead;\n    this.print(node.left);\n    exit?.();\n  }\n  this.space();\n  this.word(isForOf ? \"of\" : \"in\");\n  this.space();\n  this.print(node.right);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport const ForInStatement = ForXStatement;\nexport const ForOfStatement = ForXStatement;\n\nexport function DoWhileStatement(this: Printer, node: t.DoWhileStatement) {\n  this.word(\"do\");\n  this.space();\n  this.print(node.body);\n  this.space();\n  this.word(\"while\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.semicolon();\n}\n\nfunction printStatementAfterKeyword(printer: Printer, node: t.Node) {\n  if (node) {\n    printer.space();\n    printer.printTerminatorless(node);\n  }\n\n  printer.semicolon();\n}\n\nexport function BreakStatement(this: Printer, node: t.ContinueStatement) {\n  this.word(\"break\");\n  printStatementAfterKeyword(this, node.label);\n}\n\nexport function ContinueStatement(this: Printer, node: t.ContinueStatement) {\n  this.word(\"continue\");\n  printStatementAfterKeyword(this, node.label);\n}\n\nexport function ReturnStatement(this: Printer, node: t.ReturnStatement) {\n  this.word(\"return\");\n  printStatementAfterKeyword(this, node.argument);\n}\n\nexport function ThrowStatement(this: Printer, node: t.ThrowStatement) {\n  this.word(\"throw\");\n  printStatementAfterKeyword(this, node.argument);\n}\n\nexport function LabeledStatement(this: Printer, node: t.LabeledStatement) {\n  this.print(node.label);\n  this.token(\":\");\n  this.space();\n  this.print(node.body);\n}\n\nexport function TryStatement(this: Printer, node: t.TryStatement) {\n  this.word(\"try\");\n  this.space();\n  this.print(node.block);\n  this.space();\n\n  // Esprima bug puts the catch clause in a `handlers` array.\n  // see https://code.google.com/p/esprima/issues/detail?id=433\n  // We run into this from regenerator generated ast.\n  // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n  if (node.handlers) {\n    // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n    this.print(node.handlers[0]);\n  } else {\n    this.print(node.handler);\n  }\n\n  if (node.finalizer) {\n    this.space();\n    this.word(\"finally\");\n    this.space();\n    this.print(node.finalizer);\n  }\n}\n\nexport function CatchClause(this: Printer, node: t.CatchClause) {\n  this.word(\"catch\");\n  this.space();\n  if (node.param) {\n    this.token(\"(\");\n    this.print(node.param);\n    this.print(node.param.typeAnnotation);\n    this.token(\")\");\n    this.space();\n  }\n  this.print(node.body);\n}\n\nexport function SwitchStatement(this: Printer, node: t.SwitchStatement) {\n  this.word(\"switch\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.discriminant);\n  this.token(\")\");\n  this.space();\n  this.token(\"{\");\n\n  this.printSequence(\n    node.cases,\n    true,\n    undefined,\n    function addNewlines(leading, cas) {\n      if (!leading && node.cases[node.cases.length - 1] === cas) return -1;\n    },\n  );\n\n  this.rightBrace(node);\n}\n\nexport function SwitchCase(this: Printer, node: t.SwitchCase) {\n  if (node.test) {\n    this.word(\"case\");\n    this.space();\n    this.print(node.test);\n    this.token(\":\");\n  } else {\n    this.word(\"default\");\n    this.token(\":\");\n  }\n\n  if (node.consequent.length) {\n    this.newline();\n    this.printSequence(node.consequent, true);\n  }\n}\n\nexport function DebuggerStatement(this: Printer) {\n  this.word(\"debugger\");\n  this.semicolon();\n}\n\nexport function VariableDeclaration(\n  this: Printer,\n  node: t.VariableDeclaration,\n  parent: t.Node,\n) {\n  if (node.declare) {\n    // TS\n    this.word(\"declare\");\n    this.space();\n  }\n\n  const { kind } = node;\n  if (kind === \"await using\") {\n    this.word(\"await\");\n    this.space();\n    this.word(\"using\", true);\n  } else {\n    this.word(kind, kind === \"using\");\n  }\n  this.space();\n\n  let hasInits = false;\n  // don't add whitespace to loop heads\n  if (!isFor(parent)) {\n    for (const declar of node.declarations) {\n      if (declar.init) {\n        // has an init so let's split it up over multiple lines\n        hasInits = true;\n      }\n    }\n  }\n\n  //\n  // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on\n  // this will format declarations like:\n  //\n  //   let foo = \"bar\", bar = \"foo\";\n  //\n  // into\n  //\n  //   let foo = \"bar\",\n  //       bar = \"foo\";\n  //\n\n  this.printList(\n    node.declarations,\n    undefined,\n    undefined,\n    node.declarations.length > 1,\n    hasInits\n      ? function (this: Printer, occurrenceCount: number) {\n          this.token(\",\", false, occurrenceCount);\n          this.newline();\n        }\n      : undefined,\n  );\n\n  if (isFor(parent)) {\n    // don't give semicolons to these nodes since they'll be inserted in the parent generator\n    if (isForStatement(parent)) {\n      if (parent.init === node) return;\n    } else {\n      if (parent.left === node) return;\n    }\n  }\n\n  this.semicolon();\n}\n\nexport function VariableDeclarator(this: Printer, node: t.VariableDeclarator) {\n  this.print(node.id);\n  if (node.definite) this.token(\"!\"); // TS\n  // @ts-ignore(Babel 7 vs Babel 8) Property 'typeAnnotation' does not exist on type 'MemberExpression'.\n  this.print(node.id.typeAnnotation);\n  if (node.init) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.init);\n  }\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/template-literals.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/template-literals.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/template-literals.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -9,5 +9,7 @@
 function TaggedTemplateExpression(node) {
   this.print(node.tag);
-  this.print(node.typeParameters);
+  {
+    this.print(node.typeParameters);
+  }
   this.print(node.quasi);
 }
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/template-literals.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/template-literals.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/template-literals.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["TaggedTemplateExpression","node","print","tag","typeParameters","quasi","TemplateElement","Error","TemplateLiteral","quasis","partRaw","i","length","value","raw","token","expressions","tokenMap","findMatching","_catchUpTo","loc","start"],"sources":["../../src/generators/template-literals.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TaggedTemplateExpression(\n  this: Printer,\n  node: t.TaggedTemplateExpression,\n) {\n  this.print(node.tag);\n  this.print(node.typeParameters); // TS\n  this.print(node.quasi);\n}\n\nexport function TemplateElement(this: Printer) {\n  throw new Error(\"TemplateElement printing is handled in TemplateLiteral\");\n}\n\nexport function TemplateLiteral(this: Printer, node: t.TemplateLiteral) {\n  const quasis = node.quasis;\n\n  let partRaw = \"`\";\n\n  for (let i = 0; i < quasis.length; i++) {\n    partRaw += quasis[i].value.raw;\n\n    if (i + 1 < quasis.length) {\n      this.token(partRaw + \"${\", true);\n      this.print(node.expressions[i]);\n      partRaw = \"}\";\n\n      // In Babel 7 we have indivirual tokens for ${ and }, so the automatic\n      // catchup logic does not work. Manually look for those tokens.\n      if (!process.env.BABEL_8_BREAKING && this.tokenMap) {\n        const token = this.tokenMap.findMatching(node, \"}\", i);\n        if (token) this._catchUpTo(token.loc.start);\n      }\n    }\n  }\n\n  this.token(partRaw + \"`\", true);\n}\n"],"mappings":";;;;;;;;AAGO,SAASA,wBAAwBA,CAEtCC,IAAgC,EAChC;EACA,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,GAAG,CAAC;EACpB,IAAI,CAACD,KAAK,CAACD,IAAI,CAACG,cAAc,CAAC;EAC/B,IAAI,CAACF,KAAK,CAACD,IAAI,CAACI,KAAK,CAAC;AACxB;AAEO,SAASC,eAAeA,CAAA,EAAgB;EAC7C,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;AAC3E;AAEO,SAASC,eAAeA,CAAgBP,IAAuB,EAAE;EACtE,MAAMQ,MAAM,GAAGR,IAAI,CAACQ,MAAM;EAE1B,IAAIC,OAAO,GAAG,GAAG;EAEjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACtCD,OAAO,IAAID,MAAM,CAACE,CAAC,CAAC,CAACE,KAAK,CAACC,GAAG;IAE9B,IAAIH,CAAC,GAAG,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAE;MACzB,IAAI,CAACG,KAAK,CAACL,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC;MAChC,IAAI,CAACR,KAAK,CAACD,IAAI,CAACe,WAAW,CAACL,CAAC,CAAC,CAAC;MAC/BD,OAAO,GAAG,GAAG;MAIb,IAAqC,IAAI,CAACO,QAAQ,EAAE;QAClD,MAAMF,KAAK,GAAG,IAAI,CAACE,QAAQ,CAACC,YAAY,CAACjB,IAAI,EAAE,GAAG,EAAEU,CAAC,CAAC;QACtD,IAAII,KAAK,EAAE,IAAI,CAACI,UAAU,CAACJ,KAAK,CAACK,GAAG,CAACC,KAAK,CAAC;MAC7C;IACF;EACF;EAEA,IAAI,CAACN,KAAK,CAACL,OAAO,GAAG,GAAG,EAAE,IAAI,CAAC;AACjC","ignoreList":[]}
+{"version":3,"names":["TaggedTemplateExpression","node","print","tag","typeParameters","quasi","TemplateElement","Error","TemplateLiteral","quasis","partRaw","i","length","value","raw","token","expressions","tokenMap","findMatching","_catchUpTo","loc","start"],"sources":["../../src/generators/template-literals.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TaggedTemplateExpression(\n  this: Printer,\n  node: t.TaggedTemplateExpression,\n) {\n  this.print(node.tag);\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.typeArguments);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n    this.print(node.typeParameters);\n  }\n  this.print(node.quasi);\n}\n\nexport function TemplateElement(this: Printer) {\n  throw new Error(\"TemplateElement printing is handled in TemplateLiteral\");\n}\n\nexport function TemplateLiteral(this: Printer, node: t.TemplateLiteral) {\n  const quasis = node.quasis;\n\n  let partRaw = \"`\";\n\n  for (let i = 0; i < quasis.length; i++) {\n    partRaw += quasis[i].value.raw;\n\n    if (i + 1 < quasis.length) {\n      this.token(partRaw + \"${\", true);\n      this.print(node.expressions[i]);\n      partRaw = \"}\";\n\n      // In Babel 7 we have indivirual tokens for ${ and }, so the automatic\n      // catchup logic does not work. Manually look for those tokens.\n      if (!process.env.BABEL_8_BREAKING && this.tokenMap) {\n        const token = this.tokenMap.findMatching(node, \"}\", i);\n        if (token) this._catchUpTo(token.loc.start);\n      }\n    }\n  }\n\n  this.token(partRaw + \"`\", true);\n}\n"],"mappings":";;;;;;;;AAGO,SAASA,wBAAwBA,CAEtCC,IAAgC,EAChC;EACA,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,GAAG,CAAC;EAIb;IAEL,IAAI,CAACD,KAAK,CAACD,IAAI,CAACG,cAAc,CAAC;EACjC;EACA,IAAI,CAACF,KAAK,CAACD,IAAI,CAACI,KAAK,CAAC;AACxB;AAEO,SAASC,eAAeA,CAAA,EAAgB;EAC7C,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;AAC3E;AAEO,SAASC,eAAeA,CAAgBP,IAAuB,EAAE;EACtE,MAAMQ,MAAM,GAAGR,IAAI,CAACQ,MAAM;EAE1B,IAAIC,OAAO,GAAG,GAAG;EAEjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACtCD,OAAO,IAAID,MAAM,CAACE,CAAC,CAAC,CAACE,KAAK,CAACC,GAAG;IAE9B,IAAIH,CAAC,GAAG,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAE;MACzB,IAAI,CAACG,KAAK,CAACL,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC;MAChC,IAAI,CAACR,KAAK,CAACD,IAAI,CAACe,WAAW,CAACL,CAAC,CAAC,CAAC;MAC/BD,OAAO,GAAG,GAAG;MAIb,IAAqC,IAAI,CAACO,QAAQ,EAAE;QAClD,MAAMF,KAAK,GAAG,IAAI,CAACE,QAAQ,CAACC,YAAY,CAACjB,IAAI,EAAE,GAAG,EAAEU,CAAC,CAAC;QACtD,IAAII,KAAK,EAAE,IAAI,CAACI,UAAU,CAACJ,KAAK,CAACK,GAAG,CAACC,KAAK,CAAC;MAC7C;IACF;EACF;EAEA,IAAI,CAACN,KAAK,CAACL,OAAO,GAAG,GAAG,EAAE,IAAI,CAAC;AACjC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/types.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/types.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -8,5 +8,4 @@
 exports.BigIntLiteral = BigIntLiteral;
 exports.BooleanLiteral = BooleanLiteral;
-exports.DecimalLiteral = DecimalLiteral;
 exports.Identifier = Identifier;
 exports.NullLiteral = NullLiteral;
@@ -64,9 +63,5 @@
     const exit = this.enterDelimited();
     this.space();
-    this.printList(props, {
-      indent: true,
-      statement: true,
-      printTrailingSeparator: this.shouldPrintTrailingComma("}")
-    });
+    this.printList(props, this.shouldPrintTrailingComma("}"), true, true);
     this.space();
     exit();
@@ -139,9 +134,5 @@
   if (props.length) {
     this.space();
-    this.printList(props, {
-      indent: true,
-      statement: true,
-      printTrailingSeparator: this.shouldPrintTrailingComma(endToken)
-    });
+    this.printList(props, this.shouldPrintTrailingComma(endToken), true, true);
     this.space();
   }
@@ -218,12 +209,4 @@
   this.word(node.value + "n");
 }
-function DecimalLiteral(node) {
-  const raw = this.getPossibleRaw(node);
-  if (!this.format.minified && raw !== undefined) {
-    this.word(raw);
-    return;
-  }
-  this.word(node.value + "m");
-}
 const validTopicTokenSet = new Set(["^^", "@@", "^", "%", "#"]);
 function TopicReference() {
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/types.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/types.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/types.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","_jsesc","isAssignmentPattern","isIdentifier","lastRawIdentNode","lastRawIdentResult","_getRawIdentifier","node","name","token","tokenMap","find","tok","value","_originalCode","slice","start","end","Identifier","_node$loc","sourceIdentifierName","loc","identifierName","word","ArgumentPlaceholder","RestElement","print","argument","ObjectExpression","props","properties","length","exit","enterDelimited","space","printList","indent","statement","printTrailingSeparator","shouldPrintTrailingComma","sourceWithOffset","ObjectMethod","printJoin","decorators","_methodHead","body","ObjectProperty","computed","key","left","shorthand","ArrayExpression","elems","elements","len","i","elem","RecordExpression","startToken","endToken","format","recordAndTupleSyntaxType","Error","JSON","stringify","TupleExpression","RegExpLiteral","pattern","flags","BooleanLiteral","NullLiteral","NumericLiteral","raw","getPossibleRaw","opts","jsescOption","str","numbers","number","jsesc","minified","StringLiteral","undefined","val","BigIntLiteral","DecimalLiteral","validTopicTokenSet","Set","TopicReference","topicToken","has","givenTopicTokenJSON","validTopics","Array","from","v","join","PipelineTopicExpression","expression","PipelineBareFunction","callee","PipelinePrimaryTopicReference"],"sources":["../../src/generators/types.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport { isAssignmentPattern, isIdentifier } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport jsesc from \"jsesc\";\n\nlet lastRawIdentNode: t.Identifier | null = null;\nlet lastRawIdentResult: string = \"\";\nexport function _getRawIdentifier(this: Printer, node: t.Identifier) {\n  if (node === lastRawIdentNode) return lastRawIdentResult;\n  lastRawIdentNode = node;\n\n  const { name } = node;\n  const token = this.tokenMap.find(node, tok => tok.value === name);\n  if (token) {\n    lastRawIdentResult = this._originalCode.slice(token.start, token.end);\n    return lastRawIdentResult;\n  }\n  return (lastRawIdentResult = node.name);\n}\n\nexport function Identifier(this: Printer, node: t.Identifier) {\n  this.sourceIdentifierName(node.loc?.identifierName || node.name);\n\n  this.word(this.tokenMap ? this._getRawIdentifier(node) : node.name);\n}\n\nexport function ArgumentPlaceholder(this: Printer) {\n  this.token(\"?\");\n}\n\nexport function RestElement(this: Printer, node: t.RestElement) {\n  this.token(\"...\");\n  this.print(node.argument);\n}\n\nexport { RestElement as SpreadElement };\n\nexport function ObjectExpression(this: Printer, node: t.ObjectExpression) {\n  const props = node.properties;\n\n  this.token(\"{\");\n\n  if (props.length) {\n    const exit = this.enterDelimited();\n    this.space();\n    this.printList(props, {\n      indent: true,\n      statement: true,\n      printTrailingSeparator: this.shouldPrintTrailingComma(\"}\"),\n    });\n    this.space();\n    exit();\n  }\n\n  this.sourceWithOffset(\"end\", node.loc, -1);\n\n  this.token(\"}\");\n}\n\nexport { ObjectExpression as ObjectPattern };\n\nexport function ObjectMethod(this: Printer, node: t.ObjectMethod) {\n  this.printJoin(node.decorators);\n  this._methodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function ObjectProperty(this: Printer, node: t.ObjectProperty) {\n  this.printJoin(node.decorators);\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    // print `({ foo: foo = 5 } = {})` as `({ foo = 5 } = {});`\n    if (\n      isAssignmentPattern(node.value) &&\n      isIdentifier(node.key) &&\n      // @ts-expect-error todo(flow->ts) `.name` does not exist on some types in union\n      node.key.name === node.value.left.name\n    ) {\n      this.print(node.value);\n      return;\n    }\n\n    this.print(node.key);\n\n    // shorthand!\n    if (\n      node.shorthand &&\n      isIdentifier(node.key) &&\n      isIdentifier(node.value) &&\n      node.key.name === node.value.name\n    ) {\n      return;\n    }\n  }\n\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ArrayExpression(this: Printer, node: t.ArrayExpression) {\n  const elems = node.elements;\n  const len = elems.length;\n\n  this.token(\"[\");\n\n  const exit = this.enterDelimited();\n\n  for (let i = 0; i < elems.length; i++) {\n    const elem = elems[i];\n    if (elem) {\n      if (i > 0) this.space();\n      this.print(elem);\n      if (i < len - 1 || this.shouldPrintTrailingComma(\"]\")) {\n        this.token(\",\", false, i);\n      }\n    } else {\n      // If the array expression ends with a hole, that hole\n      // will be ignored by the interpreter, but if it ends with\n      // two (or more) holes, we need to write out two (or more)\n      // commas so that the resulting code is interpreted with\n      // both (all) of the holes.\n      this.token(\",\", false, i);\n    }\n  }\n\n  exit();\n\n  this.token(\"]\");\n}\n\nexport { ArrayExpression as ArrayPattern };\n\nexport function RecordExpression(this: Printer, node: t.RecordExpression) {\n  const props = node.properties;\n\n  let startToken;\n  let endToken;\n  if (process.env.BABEL_8_BREAKING) {\n    startToken = \"#{\";\n    endToken = \"}\";\n  } else {\n    if (this.format.recordAndTupleSyntaxType === \"bar\") {\n      startToken = \"{|\";\n      endToken = \"|}\";\n    } else if (\n      this.format.recordAndTupleSyntaxType !== \"hash\" &&\n      this.format.recordAndTupleSyntaxType != null\n    ) {\n      throw new Error(\n        `The \"recordAndTupleSyntaxType\" generator option must be \"bar\" or \"hash\" (${JSON.stringify(\n          this.format.recordAndTupleSyntaxType,\n        )} received).`,\n      );\n    } else {\n      startToken = \"#{\";\n      endToken = \"}\";\n    }\n  }\n\n  this.token(startToken);\n\n  if (props.length) {\n    this.space();\n    this.printList(props, {\n      indent: true,\n      statement: true,\n      printTrailingSeparator: this.shouldPrintTrailingComma(endToken),\n    });\n    this.space();\n  }\n  this.token(endToken);\n}\n\nexport function TupleExpression(this: Printer, node: t.TupleExpression) {\n  const elems = node.elements;\n  const len = elems.length;\n\n  let startToken;\n  let endToken;\n  if (process.env.BABEL_8_BREAKING) {\n    startToken = \"#[\";\n    endToken = \"]\";\n  } else {\n    if (this.format.recordAndTupleSyntaxType === \"bar\") {\n      startToken = \"[|\";\n      endToken = \"|]\";\n    } else if (this.format.recordAndTupleSyntaxType === \"hash\") {\n      startToken = \"#[\";\n      endToken = \"]\";\n    } else {\n      throw new Error(\n        `${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`,\n      );\n    }\n  }\n\n  this.token(startToken);\n\n  for (let i = 0; i < elems.length; i++) {\n    const elem = elems[i];\n    if (elem) {\n      if (i > 0) this.space();\n      this.print(elem);\n      if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) {\n        this.token(\",\", false, i);\n      }\n    }\n  }\n\n  this.token(endToken);\n}\n\nexport function RegExpLiteral(this: Printer, node: t.RegExpLiteral) {\n  this.word(`/${node.pattern}/${node.flags}`);\n}\n\nexport function BooleanLiteral(this: Printer, node: t.BooleanLiteral) {\n  this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteral(this: Printer) {\n  this.word(\"null\");\n}\n\nexport function NumericLiteral(this: Printer, node: t.NumericLiteral) {\n  const raw = this.getPossibleRaw(node);\n  const opts = this.format.jsescOption;\n  const value = node.value;\n  const str = value + \"\";\n  if (opts.numbers) {\n    this.number(jsesc(value, opts), value);\n  } else if (raw == null) {\n    this.number(str, value); // normalize\n  } else if (this.format.minified) {\n    this.number(raw.length < str.length ? raw : str, value);\n  } else {\n    this.number(raw, value);\n  }\n}\n\nexport function StringLiteral(this: Printer, node: t.StringLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.token(raw);\n    return;\n  }\n\n  const val = jsesc(node.value, this.format.jsescOption);\n\n  this.token(val);\n}\n\nexport function BigIntLiteral(this: Printer, node: t.BigIntLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.word(raw);\n    return;\n  }\n  this.word(node.value + \"n\");\n}\n\n// TODO: Remove in Babel 8\nexport function DecimalLiteral(this: Printer, node: any) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.word(raw);\n    return;\n  }\n  this.word(node.value + \"m\");\n}\n\n// Hack pipe operator\nconst validTopicTokenSet = new Set([\"^^\", \"@@\", \"^\", \"%\", \"#\"]);\nexport function TopicReference(this: Printer) {\n  const { topicToken } = this.format;\n\n  if (validTopicTokenSet.has(topicToken)) {\n    this.token(topicToken);\n  } else {\n    const givenTopicTokenJSON = JSON.stringify(topicToken);\n    const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));\n    throw new Error(\n      `The \"topicToken\" generator option must be one of ` +\n        `${validTopics.join(\", \")} (${givenTopicTokenJSON} received instead).`,\n    );\n  }\n}\n\n// Smart-mix pipe operator\nexport function PipelineTopicExpression(\n  this: Printer,\n  node: t.PipelineTopicExpression,\n) {\n  this.print(node.expression);\n}\n\nexport function PipelineBareFunction(\n  this: Printer,\n  node: t.PipelineBareFunction,\n) {\n  this.print(node.callee);\n}\n\nexport function PipelinePrimaryTopicReference(this: Printer) {\n  this.token(\"#\");\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","_jsesc","isAssignmentPattern","isIdentifier","lastRawIdentNode","lastRawIdentResult","_getRawIdentifier","node","name","token","tokenMap","find","tok","value","_originalCode","slice","start","end","Identifier","_node$loc","sourceIdentifierName","loc","identifierName","word","ArgumentPlaceholder","RestElement","print","argument","ObjectExpression","props","properties","length","exit","enterDelimited","space","printList","shouldPrintTrailingComma","sourceWithOffset","ObjectMethod","printJoin","decorators","_methodHead","body","ObjectProperty","computed","key","left","shorthand","ArrayExpression","elems","elements","len","i","elem","RecordExpression","startToken","endToken","format","recordAndTupleSyntaxType","Error","JSON","stringify","TupleExpression","RegExpLiteral","pattern","flags","BooleanLiteral","NullLiteral","NumericLiteral","raw","getPossibleRaw","opts","jsescOption","str","numbers","number","jsesc","minified","StringLiteral","undefined","val","BigIntLiteral","validTopicTokenSet","Set","TopicReference","topicToken","has","givenTopicTokenJSON","validTopics","Array","from","v","join","PipelineTopicExpression","expression","PipelineBareFunction","callee","PipelinePrimaryTopicReference"],"sources":["../../src/generators/types.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport { isAssignmentPattern, isIdentifier } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport jsesc from \"jsesc\";\n\nlet lastRawIdentNode: t.Identifier | null = null;\nlet lastRawIdentResult: string = \"\";\nexport function _getRawIdentifier(this: Printer, node: t.Identifier) {\n  if (node === lastRawIdentNode) return lastRawIdentResult;\n  lastRawIdentNode = node;\n\n  const { name } = node;\n  const token = this.tokenMap.find(node, tok => tok.value === name);\n  if (token) {\n    lastRawIdentResult = this._originalCode.slice(token.start, token.end);\n    return lastRawIdentResult;\n  }\n  return (lastRawIdentResult = node.name);\n}\n\nexport function Identifier(this: Printer, node: t.Identifier) {\n  this.sourceIdentifierName(node.loc?.identifierName || node.name);\n\n  this.word(this.tokenMap ? this._getRawIdentifier(node) : node.name);\n}\n\nexport function ArgumentPlaceholder(this: Printer) {\n  this.token(\"?\");\n}\n\nexport function RestElement(this: Printer, node: t.RestElement) {\n  this.token(\"...\");\n  this.print(node.argument);\n}\n\nexport { RestElement as SpreadElement };\n\nexport function ObjectExpression(this: Printer, node: t.ObjectExpression) {\n  const props = node.properties;\n\n  this.token(\"{\");\n\n  if (props.length) {\n    const exit = this.enterDelimited();\n    this.space();\n    this.printList(props, this.shouldPrintTrailingComma(\"}\"), true, true);\n    this.space();\n    exit();\n  }\n\n  this.sourceWithOffset(\"end\", node.loc, -1);\n\n  this.token(\"}\");\n}\n\nexport { ObjectExpression as ObjectPattern };\n\nexport function ObjectMethod(this: Printer, node: t.ObjectMethod) {\n  this.printJoin(node.decorators);\n  this._methodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function ObjectProperty(this: Printer, node: t.ObjectProperty) {\n  this.printJoin(node.decorators);\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    // print `({ foo: foo = 5 } = {})` as `({ foo = 5 } = {});`\n    if (\n      isAssignmentPattern(node.value) &&\n      isIdentifier(node.key) &&\n      // @ts-expect-error todo(flow->ts) `.name` does not exist on some types in union\n      node.key.name === node.value.left.name\n    ) {\n      this.print(node.value);\n      return;\n    }\n\n    this.print(node.key);\n\n    // shorthand!\n    if (\n      node.shorthand &&\n      isIdentifier(node.key) &&\n      isIdentifier(node.value) &&\n      node.key.name === node.value.name\n    ) {\n      return;\n    }\n  }\n\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ArrayExpression(this: Printer, node: t.ArrayExpression) {\n  const elems = node.elements;\n  const len = elems.length;\n\n  this.token(\"[\");\n\n  const exit = this.enterDelimited();\n\n  for (let i = 0; i < elems.length; i++) {\n    const elem = elems[i];\n    if (elem) {\n      if (i > 0) this.space();\n      this.print(elem);\n      if (i < len - 1 || this.shouldPrintTrailingComma(\"]\")) {\n        this.token(\",\", false, i);\n      }\n    } else {\n      // If the array expression ends with a hole, that hole\n      // will be ignored by the interpreter, but if it ends with\n      // two (or more) holes, we need to write out two (or more)\n      // commas so that the resulting code is interpreted with\n      // both (all) of the holes.\n      this.token(\",\", false, i);\n    }\n  }\n\n  exit();\n\n  this.token(\"]\");\n}\n\nexport { ArrayExpression as ArrayPattern };\n\nexport function RecordExpression(this: Printer, node: t.RecordExpression) {\n  const props = node.properties;\n\n  let startToken;\n  let endToken;\n  if (process.env.BABEL_8_BREAKING) {\n    startToken = \"#{\";\n    endToken = \"}\";\n  } else {\n    if (this.format.recordAndTupleSyntaxType === \"bar\") {\n      startToken = \"{|\";\n      endToken = \"|}\";\n    } else if (\n      this.format.recordAndTupleSyntaxType !== \"hash\" &&\n      this.format.recordAndTupleSyntaxType != null\n    ) {\n      throw new Error(\n        `The \"recordAndTupleSyntaxType\" generator option must be \"bar\" or \"hash\" (${JSON.stringify(\n          this.format.recordAndTupleSyntaxType,\n        )} received).`,\n      );\n    } else {\n      startToken = \"#{\";\n      endToken = \"}\";\n    }\n  }\n\n  this.token(startToken);\n\n  if (props.length) {\n    this.space();\n    this.printList(props, this.shouldPrintTrailingComma(endToken), true, true);\n    this.space();\n  }\n  this.token(endToken);\n}\n\nexport function TupleExpression(this: Printer, node: t.TupleExpression) {\n  const elems = node.elements;\n  const len = elems.length;\n\n  let startToken;\n  let endToken;\n  if (process.env.BABEL_8_BREAKING) {\n    startToken = \"#[\";\n    endToken = \"]\";\n  } else {\n    if (this.format.recordAndTupleSyntaxType === \"bar\") {\n      startToken = \"[|\";\n      endToken = \"|]\";\n    } else if (this.format.recordAndTupleSyntaxType === \"hash\") {\n      startToken = \"#[\";\n      endToken = \"]\";\n    } else {\n      throw new Error(\n        `${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`,\n      );\n    }\n  }\n\n  this.token(startToken);\n\n  for (let i = 0; i < elems.length; i++) {\n    const elem = elems[i];\n    if (elem) {\n      if (i > 0) this.space();\n      this.print(elem);\n      if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) {\n        this.token(\",\", false, i);\n      }\n    }\n  }\n\n  this.token(endToken);\n}\n\nexport function RegExpLiteral(this: Printer, node: t.RegExpLiteral) {\n  this.word(`/${node.pattern}/${node.flags}`);\n}\n\nexport function BooleanLiteral(this: Printer, node: t.BooleanLiteral) {\n  this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteral(this: Printer) {\n  this.word(\"null\");\n}\n\nexport function NumericLiteral(this: Printer, node: t.NumericLiteral) {\n  const raw = this.getPossibleRaw(node);\n  const opts = this.format.jsescOption;\n  const value = node.value;\n  const str = value + \"\";\n  if (opts.numbers) {\n    this.number(jsesc(value, opts), value);\n  } else if (raw == null) {\n    this.number(str, value); // normalize\n  } else if (this.format.minified) {\n    this.number(raw.length < str.length ? raw : str, value);\n  } else {\n    this.number(raw, value);\n  }\n}\n\nexport function StringLiteral(this: Printer, node: t.StringLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.token(raw);\n    return;\n  }\n\n  const val = jsesc(node.value, this.format.jsescOption);\n\n  this.token(val);\n}\n\nexport function BigIntLiteral(this: Printer, node: t.BigIntLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.word(raw);\n    return;\n  }\n  this.word(node.value + \"n\");\n}\n\n// Hack pipe operator\nconst validTopicTokenSet = new Set([\"^^\", \"@@\", \"^\", \"%\", \"#\"]);\nexport function TopicReference(this: Printer) {\n  const { topicToken } = this.format;\n\n  if (validTopicTokenSet.has(topicToken)) {\n    this.token(topicToken);\n  } else {\n    const givenTopicTokenJSON = JSON.stringify(topicToken);\n    const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));\n    throw new Error(\n      `The \"topicToken\" generator option must be one of ` +\n        `${validTopics.join(\", \")} (${givenTopicTokenJSON} received instead).`,\n    );\n  }\n}\n\n// Smart-mix pipe operator\nexport function PipelineTopicExpression(\n  this: Printer,\n  node: t.PipelineTopicExpression,\n) {\n  this.print(node.expression);\n}\n\nexport function PipelineBareFunction(\n  this: Printer,\n  node: t.PipelineBareFunction,\n) {\n  this.print(node.callee);\n}\n\nexport function PipelinePrimaryTopicReference(this: Printer) {\n  this.token(\"#\");\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/typescript.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/typescript.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/typescript.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,5 +10,5 @@
 exports.TSBooleanKeyword = TSBooleanKeyword;
 exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration;
-exports.TSInterfaceHeritage = exports.TSExpressionWithTypeArguments = exports.TSClassImplements = TSClassImplements;
+exports.TSInterfaceHeritage = exports.TSClassImplements = TSClassImplements;
 exports.TSConditionalType = TSConditionalType;
 exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration;
@@ -16,4 +16,5 @@
 exports.TSDeclareFunction = TSDeclareFunction;
 exports.TSDeclareMethod = TSDeclareMethod;
+exports.TSEnumBody = TSEnumBody;
 exports.TSEnumDeclaration = TSEnumDeclaration;
 exports.TSEnumMember = TSEnumMember;
@@ -84,7 +85,5 @@
     printTrailingSeparator || (printTrailingSeparator = this.shouldPrintTrailingComma(">"));
   }
-  this.printList(node.params, {
-    printTrailingSeparator
-  });
+  this.printList(node.params, printTrailingSeparator);
   this.tokenChar(62);
 }
@@ -282,6 +281,7 @@
 }
 function TSTypeReference(node) {
-  this.print(node.typeName, !!node.typeParameters);
-  this.print(node.typeParameters);
+  const typeArguments = node.typeParameters;
+  this.print(node.typeName, !!typeArguments);
+  this.print(typeArguments);
 }
 function TSTypePredicate(node) {
@@ -302,13 +302,11 @@
   this.space();
   this.print(node.exprName);
-  if (node.typeParameters) {
-    this.print(node.typeParameters);
+  const typeArguments = node.typeParameters;
+  if (typeArguments) {
+    this.print(typeArguments);
   }
 }
 function TSTypeLiteral(node) {
-  printBraced(this, node, () => this.printJoin(node.members, {
-    indent: true,
-    statement: true
-  }));
+  printBraced(this, node, () => this.printJoin(node.members, true, true));
 }
 function TSArrayType(node) {
@@ -319,7 +317,5 @@
 function TSTupleType(node) {
   this.tokenChar(91);
-  this.printList(node.elementTypes, {
-    printTrailingSeparator: this.shouldPrintTrailingComma("]")
-  });
+  this.printList(node.elementTypes, this.shouldPrintTrailingComma("]"));
   this.tokenChar(93);
 }
@@ -352,10 +348,8 @@
     printer.token(sep);
   }
-  printer.printJoin(node.types, {
-    separator(i) {
-      this.space();
-      this.token(sep, null, i + hasLeadingToken);
-      this.space();
-    }
+  printer.printJoin(node.types, undefined, undefined, function (i) {
+    this.space();
+    this.token(sep, null, i + hasLeadingToken);
+    this.space();
   });
 }
@@ -450,5 +444,5 @@
 function TSClassImplements(node) {
   this.print(node.expression);
-  this.print(node.typeParameters);
+  this.print(node.typeArguments);
 }
 function TSInterfaceDeclaration(node) {
@@ -478,8 +472,5 @@
 }
 function TSInterfaceBody(node) {
-  printBraced(this, node, () => this.printJoin(node.body, {
-    indent: true,
-    statement: true
-  }));
+  printBraced(this, node, () => this.printJoin(node.body, true, true));
 }
 function TSTypeAliasDeclaration(node) {
@@ -529,5 +520,7 @@
 function TSInstantiationExpression(node) {
   this.print(node.expression);
-  this.print(node.typeParameters);
+  {
+    this.print(node.typeParameters);
+  }
 }
 function TSEnumDeclaration(node) {
@@ -535,6 +528,5 @@
     declare,
     const: isConst,
-    id,
-    members
+    id
   } = node;
   if (declare) {
@@ -550,11 +542,12 @@
   this.print(id);
   this.space();
+  {
+    TSEnumBody.call(this, node);
+  }
+}
+function TSEnumBody(node) {
   printBraced(this, node, () => {
     var _this$shouldPrintTrai;
-    return this.printList(members, {
-      indent: true,
-      statement: true,
-      printTrailingSeparator: (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true
-    });
+    return this.printList(node.members, (_this$shouldPrintTrai = this.shouldPrintTrailingComma("}")) != null ? _this$shouldPrintTrai : true, true, true);
   });
 }
@@ -582,26 +575,26 @@
     this.space();
   }
-  if (!node.global) {
-    this.word(kind != null ? kind : id.type === "Identifier" ? "namespace" : "module");
-    this.space();
-  }
-  this.print(id);
-  if (!node.body) {
-    this.semicolon();
-    return;
-  }
-  let body = node.body;
-  while (body.type === "TSModuleDeclaration") {
-    this.tokenChar(46);
-    this.print(body.id);
-    body = body.body;
-  }
-  this.space();
-  this.print(body);
+  {
+    if (!node.global) {
+      this.word(kind != null ? kind : id.type === "Identifier" ? "namespace" : "module");
+      this.space();
+    }
+    this.print(id);
+    if (!node.body) {
+      this.semicolon();
+      return;
+    }
+    let body = node.body;
+    while (body.type === "TSModuleDeclaration") {
+      this.tokenChar(46);
+      this.print(body.id);
+      body = body.body;
+    }
+    this.space();
+    this.print(body);
+  }
 }
 function TSModuleBlock(node) {
-  printBraced(this, node, () => this.printSequence(node.body, {
-    indent: true
-  }));
+  printBraced(this, node, () => this.printSequence(node.body, true));
 }
 function TSImportType(node) {
@@ -609,9 +602,13 @@
     argument,
     qualifier,
-    typeParameters
+    options
   } = node;
   this.word("import");
   this.tokenChar(40);
   this.print(argument);
+  if (options) {
+    this.tokenChar(44);
+    this.print(options);
+  }
   this.tokenChar(41);
   if (qualifier) {
@@ -619,6 +616,7 @@
     this.print(qualifier);
   }
-  if (typeParameters) {
-    this.print(typeParameters);
+  const typeArguments = node.typeParameters;
+  if (typeArguments) {
+    this.print(typeArguments);
   }
 }
Index: imaps-frontend/node_modules/@babel/generator/lib/generators/typescript.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/generators/typescript.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/generators/typescript.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["TSTypeAnnotation","node","parent","token","type","typeAnnotation","space","optional","print","TSTypeParameterInstantiation","printTrailingSeparator","params","length","tokenMap","start","end","find","t","matchesOriginal","shouldPrintTrailingComma","printList","TSTypeParameter","in","word","out","name","constraint","default","TSParameterProperty","accessibility","readonly","_param","parameter","TSDeclareFunction","declare","_functionHead","semicolon","TSDeclareMethod","_classMethodHead","TSQualifiedName","left","right","TSCallSignatureDeclaration","tsPrintSignatureDeclarationBase","maybePrintTrailingCommaOrSemicolon","printer","endMatches","TSConstructSignatureDeclaration","TSPropertySignature","tsPrintPropertyOrMethodName","computed","key","TSMethodSignature","kind","TSIndexSignature","static","isStatic","_parameters","parameters","TSAnyKeyword","TSBigIntKeyword","TSUnknownKeyword","TSNumberKeyword","TSObjectKeyword","TSBooleanKeyword","TSStringKeyword","TSSymbolKeyword","TSVoidKeyword","TSUndefinedKeyword","TSNullKeyword","TSNeverKeyword","TSIntrinsicKeyword","TSThisType","TSFunctionType","tsPrintFunctionOrConstructorType","TSConstructorType","abstract","typeParameters","returnType","TSTypeReference","typeName","TSTypePredicate","asserts","parameterName","TSTypeQuery","exprName","TSTypeLiteral","printBraced","printJoin","members","indent","statement","TSArrayType","elementType","TSTupleType","elementTypes","TSOptionalType","TSRestType","TSNamedTupleMember","label","TSUnionType","tsPrintUnionOrIntersectionType","TSIntersectionType","sep","_printer$tokenMap","hasLeadingToken","startMatches","types","separator","i","TSConditionalType","checkType","extendsType","trueType","falseType","TSInferType","typeParameter","TSParenthesizedType","TSTypeOperator","operator","TSIndexedAccessType","objectType","indexType","TSMappedType","nameType","exit","enterDelimited","tokenIfPlusMinus","self","tok","TSLiteralType","literal","TSClassImplements","expression","TSInterfaceDeclaration","id","extends","extendz","body","TSInterfaceBody","TSTypeAliasDeclaration","TSTypeExpression","TSTypeAssertion","TSInstantiationExpression","TSEnumDeclaration","const","isConst","_this$shouldPrintTrai","TSEnumMember","initializer","TSModuleDeclaration","global","TSModuleBlock","printSequence","TSImportType","argument","qualifier","TSImportEqualsDeclaration","isExport","moduleReference","TSExternalModuleReference","TSNonNullExpression","TSExportAssignment","TSNamespaceExportDeclaration","tsPrintClassMemberModifiers","isField","printModifiersList","override","cb","rightBrace","modifiers","_printer$tokenMap2","modifiersSet","Set","modifier","add","has","value","delete","size"],"sources":["../../src/generators/typescript.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TSTypeAnnotation(\n  this: Printer,\n  node: t.TSTypeAnnotation,\n  parent: t.Node,\n) {\n  // TODO(@nicolo-ribaudo): investigate not including => in the range\n  // of the return type of an arrow function type\n  this.token(\n    (parent.type === \"TSFunctionType\" || parent.type === \"TSConstructorType\") &&\n      (process.env.BABEL_8_BREAKING\n        ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n          parent.returnType\n        : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n          parent.typeAnnotation) === node\n      ? \"=>\"\n      : \":\",\n  );\n  this.space();\n  // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n  if (node.optional) this.token(\"?\");\n  this.print(node.typeAnnotation);\n}\n\nexport function TSTypeParameterInstantiation(\n  this: Printer,\n  node: t.TSTypeParameterInstantiation,\n  parent: t.Node,\n): void {\n  this.token(\"<\");\n\n  let printTrailingSeparator =\n    parent.type === \"ArrowFunctionExpression\" && node.params.length === 1;\n  if (this.tokenMap && node.start != null && node.end != null) {\n    // Only force the trailing comma for pre-existing nodes if they\n    // already had a comma (either because they were multi-param, or\n    // because they had a trailing comma)\n    printTrailingSeparator &&= !!this.tokenMap.find(node, t =>\n      this.tokenMap.matchesOriginal(t, \",\"),\n    );\n    // Preseve the trailing comma if it was there before\n    printTrailingSeparator ||= this.shouldPrintTrailingComma(\">\");\n  }\n\n  this.printList(node.params, { printTrailingSeparator });\n  this.token(\">\");\n}\n\nexport { TSTypeParameterInstantiation as TSTypeParameterDeclaration };\n\nexport function TSTypeParameter(this: Printer, node: t.TSTypeParameter) {\n  if (node.in) {\n    this.word(\"in\");\n    this.space();\n  }\n\n  if (node.out) {\n    this.word(\"out\");\n    this.space();\n  }\n\n  this.word(\n    !process.env.BABEL_8_BREAKING\n      ? (node.name as unknown as string)\n      : (node.name as unknown as t.Identifier).name,\n  );\n\n  if (node.constraint) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.print(node.constraint);\n  }\n\n  if (node.default) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.default);\n  }\n}\n\nexport function TSParameterProperty(\n  this: Printer,\n  node: t.TSParameterProperty,\n) {\n  if (node.accessibility) {\n    this.word(node.accessibility);\n    this.space();\n  }\n\n  if (node.readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n\n  this._param(node.parameter);\n}\n\nexport function TSDeclareFunction(\n  this: Printer,\n  node: t.TSDeclareFunction,\n  parent: t.ParentMaps[\"TSDeclareFunction\"],\n) {\n  if (node.declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this._functionHead(node, parent);\n  this.semicolon();\n}\n\nexport function TSDeclareMethod(this: Printer, node: t.TSDeclareMethod) {\n  this._classMethodHead(node);\n  this.semicolon();\n}\n\nexport function TSQualifiedName(this: Printer, node: t.TSQualifiedName) {\n  this.print(node.left);\n  this.token(\".\");\n  this.print(node.right);\n}\n\nexport function TSCallSignatureDeclaration(\n  this: Printer,\n  node: t.TSCallSignatureDeclaration,\n) {\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nfunction maybePrintTrailingCommaOrSemicolon(printer: Printer, node: t.Node) {\n  if (!printer.tokenMap || !node.start || !node.end) {\n    printer.semicolon();\n    return;\n  }\n\n  if (printer.tokenMap.endMatches(node, \",\")) {\n    printer.token(\",\");\n  } else if (printer.tokenMap.endMatches(node, \";\")) {\n    printer.semicolon();\n  }\n}\n\nexport function TSConstructSignatureDeclaration(\n  this: Printer,\n  node: t.TSConstructSignatureDeclaration,\n) {\n  this.word(\"new\");\n  this.space();\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSPropertySignature(\n  this: Printer,\n  node: t.TSPropertySignature,\n) {\n  const { readonly } = node;\n  if (readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n  this.tsPrintPropertyOrMethodName(node);\n  this.print(node.typeAnnotation);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function tsPrintPropertyOrMethodName(\n  this: Printer,\n  node: t.TSPropertySignature | t.TSMethodSignature,\n) {\n  if (node.computed) {\n    this.token(\"[\");\n  }\n  this.print(node.key);\n  if (node.computed) {\n    this.token(\"]\");\n  }\n  if (node.optional) {\n    this.token(\"?\");\n  }\n}\n\nexport function TSMethodSignature(this: Printer, node: t.TSMethodSignature) {\n  const { kind } = node;\n  if (kind === \"set\" || kind === \"get\") {\n    this.word(kind);\n    this.space();\n  }\n  this.tsPrintPropertyOrMethodName(node);\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSIndexSignature(this: Printer, node: t.TSIndexSignature) {\n  const { readonly, static: isStatic } = node;\n  if (isStatic) {\n    this.word(\"static\");\n    this.space();\n  }\n  if (readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n  this.token(\"[\");\n  this._parameters(node.parameters, \"]\");\n  this.print(node.typeAnnotation);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSAnyKeyword(this: Printer) {\n  this.word(\"any\");\n}\nexport function TSBigIntKeyword(this: Printer) {\n  this.word(\"bigint\");\n}\nexport function TSUnknownKeyword(this: Printer) {\n  this.word(\"unknown\");\n}\nexport function TSNumberKeyword(this: Printer) {\n  this.word(\"number\");\n}\nexport function TSObjectKeyword(this: Printer) {\n  this.word(\"object\");\n}\nexport function TSBooleanKeyword(this: Printer) {\n  this.word(\"boolean\");\n}\nexport function TSStringKeyword(this: Printer) {\n  this.word(\"string\");\n}\nexport function TSSymbolKeyword(this: Printer) {\n  this.word(\"symbol\");\n}\nexport function TSVoidKeyword(this: Printer) {\n  this.word(\"void\");\n}\nexport function TSUndefinedKeyword(this: Printer) {\n  this.word(\"undefined\");\n}\nexport function TSNullKeyword(this: Printer) {\n  this.word(\"null\");\n}\nexport function TSNeverKeyword(this: Printer) {\n  this.word(\"never\");\n}\nexport function TSIntrinsicKeyword(this: Printer) {\n  this.word(\"intrinsic\");\n}\n\nexport function TSThisType(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function TSFunctionType(this: Printer, node: t.TSFunctionType) {\n  this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function TSConstructorType(this: Printer, node: t.TSConstructorType) {\n  if (node.abstract) {\n    this.word(\"abstract\");\n    this.space();\n  }\n  this.word(\"new\");\n  this.space();\n  this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function tsPrintFunctionOrConstructorType(\n  this: Printer,\n  node: t.TSFunctionType | t.TSConstructorType,\n) {\n  const { typeParameters } = node;\n  const parameters = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.params\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.parameters;\n  this.print(typeParameters);\n  this.token(\"(\");\n  this._parameters(parameters, \")\");\n  this.space();\n  const returnType = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.returnType\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.typeAnnotation;\n  this.print(returnType);\n}\n\nexport function TSTypeReference(this: Printer, node: t.TSTypeReference) {\n  this.print(node.typeName, !!node.typeParameters);\n  this.print(node.typeParameters);\n}\n\nexport function TSTypePredicate(this: Printer, node: t.TSTypePredicate) {\n  if (node.asserts) {\n    this.word(\"asserts\");\n    this.space();\n  }\n  this.print(node.parameterName);\n  if (node.typeAnnotation) {\n    this.space();\n    this.word(\"is\");\n    this.space();\n    this.print(node.typeAnnotation.typeAnnotation);\n  }\n}\n\nexport function TSTypeQuery(this: Printer, node: t.TSTypeQuery) {\n  this.word(\"typeof\");\n  this.space();\n  this.print(node.exprName);\n\n  if (node.typeParameters) {\n    this.print(node.typeParameters);\n  }\n}\n\nexport function TSTypeLiteral(this: Printer, node: t.TSTypeLiteral) {\n  printBraced(this, node, () =>\n    this.printJoin(node.members, { indent: true, statement: true }),\n  );\n}\n\nexport function TSArrayType(this: Printer, node: t.TSArrayType) {\n  this.print(node.elementType, true);\n\n  this.token(\"[\");\n  this.token(\"]\");\n}\n\nexport function TSTupleType(this: Printer, node: t.TSTupleType) {\n  this.token(\"[\");\n  this.printList(node.elementTypes, {\n    printTrailingSeparator: this.shouldPrintTrailingComma(\"]\"),\n  });\n  this.token(\"]\");\n}\n\nexport function TSOptionalType(this: Printer, node: t.TSOptionalType) {\n  this.print(node.typeAnnotation);\n  this.token(\"?\");\n}\n\nexport function TSRestType(this: Printer, node: t.TSRestType) {\n  this.token(\"...\");\n  this.print(node.typeAnnotation);\n}\n\nexport function TSNamedTupleMember(this: Printer, node: t.TSNamedTupleMember) {\n  this.print(node.label);\n  if (node.optional) this.token(\"?\");\n  this.token(\":\");\n  this.space();\n  this.print(node.elementType);\n}\n\nexport function TSUnionType(this: Printer, node: t.TSUnionType) {\n  tsPrintUnionOrIntersectionType(this, node, \"|\");\n}\n\nexport function TSIntersectionType(this: Printer, node: t.TSIntersectionType) {\n  tsPrintUnionOrIntersectionType(this, node, \"&\");\n}\n\nfunction tsPrintUnionOrIntersectionType(\n  printer: Printer,\n  node: t.TSUnionType | t.TSIntersectionType,\n  sep: \"|\" | \"&\",\n) {\n  let hasLeadingToken = 0;\n  if (printer.tokenMap?.startMatches(node, sep)) {\n    hasLeadingToken = 1;\n    printer.token(sep);\n  }\n\n  printer.printJoin(node.types, {\n    separator(i) {\n      this.space();\n      this.token(sep, null, i + hasLeadingToken);\n      this.space();\n    },\n  });\n}\n\nexport function TSConditionalType(this: Printer, node: t.TSConditionalType) {\n  this.print(node.checkType);\n  this.space();\n  this.word(\"extends\");\n  this.space();\n  this.print(node.extendsType);\n  this.space();\n  this.token(\"?\");\n  this.space();\n  this.print(node.trueType);\n  this.space();\n  this.token(\":\");\n  this.space();\n  this.print(node.falseType);\n}\n\nexport function TSInferType(this: Printer, node: t.TSInferType) {\n  this.word(\"infer\");\n  this.print(node.typeParameter);\n}\n\nexport function TSParenthesizedType(\n  this: Printer,\n  node: t.TSParenthesizedType,\n) {\n  this.token(\"(\");\n  this.print(node.typeAnnotation);\n  this.token(\")\");\n}\n\nexport function TSTypeOperator(this: Printer, node: t.TSTypeOperator) {\n  this.word(node.operator);\n  this.space();\n  this.print(node.typeAnnotation);\n}\n\nexport function TSIndexedAccessType(\n  this: Printer,\n  node: t.TSIndexedAccessType,\n) {\n  this.print(node.objectType, true);\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n\nexport function TSMappedType(this: Printer, node: t.TSMappedType) {\n  const { nameType, optional, readonly, typeAnnotation } = node;\n  this.token(\"{\");\n  const exit = this.enterDelimited();\n  this.space();\n  if (readonly) {\n    tokenIfPlusMinus(this, readonly);\n    this.word(\"readonly\");\n    this.space();\n  }\n\n  this.token(\"[\");\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n    this.word(node.key.name);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    this.word(node.typeParameter.name);\n  }\n\n  this.space();\n  this.word(\"in\");\n  this.space();\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n    this.print(node.constraint);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    this.print(node.typeParameter.constraint);\n  }\n\n  if (nameType) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(nameType);\n  }\n\n  this.token(\"]\");\n\n  if (optional) {\n    tokenIfPlusMinus(this, optional);\n    this.token(\"?\");\n  }\n\n  if (typeAnnotation) {\n    this.token(\":\");\n    this.space();\n    this.print(typeAnnotation);\n  }\n  this.space();\n  exit();\n  this.token(\"}\");\n}\n\nfunction tokenIfPlusMinus(self: Printer, tok: true | \"+\" | \"-\") {\n  if (tok !== true) {\n    self.token(tok);\n  }\n}\n\nexport function TSLiteralType(this: Printer, node: t.TSLiteralType) {\n  this.print(node.literal);\n}\n\nexport function TSClassImplements(\n  this: Printer,\n  // TODO(Babel 8): Just use t.TSClassImplements\n  node: Extract<\n    t.Node,\n    { type: \"TSClassImplements\" | \"TSExpressionWithTypeArguments\" }\n  >,\n) {\n  this.print(node.expression);\n  this.print(node.typeParameters);\n}\n\nexport {\n  // TODO: Remove this in Babel 8\n  TSClassImplements as TSExpressionWithTypeArguments,\n  TSClassImplements as TSInterfaceHeritage,\n};\n\nexport function TSInterfaceDeclaration(\n  this: Printer,\n  node: t.TSInterfaceDeclaration,\n) {\n  const { declare, id, typeParameters, extends: extendz, body } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"interface\");\n  this.space();\n  this.print(id);\n  this.print(typeParameters);\n  if (extendz?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(extendz);\n  }\n  this.space();\n  this.print(body);\n}\n\nexport function TSInterfaceBody(this: Printer, node: t.TSInterfaceBody) {\n  printBraced(this, node, () =>\n    this.printJoin(node.body, { indent: true, statement: true }),\n  );\n}\n\nexport function TSTypeAliasDeclaration(\n  this: Printer,\n  node: t.TSTypeAliasDeclaration,\n) {\n  const { declare, id, typeParameters, typeAnnotation } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"type\");\n  this.space();\n  this.print(id);\n  this.print(typeParameters);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(typeAnnotation);\n  this.semicolon();\n}\n\nfunction TSTypeExpression(\n  this: Printer,\n  node: t.TSAsExpression | t.TSSatisfiesExpression,\n) {\n  const { type, expression, typeAnnotation } = node;\n  this.print(expression, true);\n  this.space();\n  this.word(type === \"TSAsExpression\" ? \"as\" : \"satisfies\");\n  this.space();\n  this.print(typeAnnotation);\n}\n\nexport {\n  TSTypeExpression as TSAsExpression,\n  TSTypeExpression as TSSatisfiesExpression,\n};\n\nexport function TSTypeAssertion(this: Printer, node: t.TSTypeAssertion) {\n  const { typeAnnotation, expression } = node;\n  this.token(\"<\");\n  this.print(typeAnnotation);\n  this.token(\">\");\n  this.space();\n  this.print(expression);\n}\n\nexport function TSInstantiationExpression(\n  this: Printer,\n  node: t.TSInstantiationExpression,\n) {\n  this.print(node.expression);\n  this.print(node.typeParameters);\n}\n\nexport function TSEnumDeclaration(this: Printer, node: t.TSEnumDeclaration) {\n  const { declare, const: isConst, id, members } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  if (isConst) {\n    this.word(\"const\");\n    this.space();\n  }\n  this.word(\"enum\");\n  this.space();\n  this.print(id);\n  this.space();\n\n  printBraced(this, node, () =>\n    this.printList(members, {\n      indent: true,\n      statement: true,\n      // TODO: Default to false for consistency with everything else\n      printTrailingSeparator: this.shouldPrintTrailingComma(\"}\") ?? true,\n    }),\n  );\n}\n\nexport function TSEnumMember(this: Printer, node: t.TSEnumMember) {\n  const { id, initializer } = node;\n  this.print(id);\n  if (initializer) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(initializer);\n  }\n}\n\nexport function TSModuleDeclaration(\n  this: Printer,\n  node: t.TSModuleDeclaration,\n) {\n  const { declare, id, kind } = node;\n\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n\n  if (!node.global) {\n    this.word(kind ?? (id.type === \"Identifier\" ? \"namespace\" : \"module\"));\n    this.space();\n  }\n  this.print(id);\n\n  if (!node.body) {\n    this.semicolon();\n    return;\n  }\n\n  let body = node.body;\n  while (body.type === \"TSModuleDeclaration\") {\n    this.token(\".\");\n    this.print(body.id);\n    body = body.body;\n  }\n\n  this.space();\n  this.print(body);\n}\n\nexport function TSModuleBlock(this: Printer, node: t.TSModuleBlock) {\n  printBraced(this, node, () =>\n    this.printSequence(node.body, { indent: true }),\n  );\n}\n\nexport function TSImportType(this: Printer, node: t.TSImportType) {\n  const { argument, qualifier, typeParameters } = node;\n  this.word(\"import\");\n  this.token(\"(\");\n  this.print(argument);\n  this.token(\")\");\n  if (qualifier) {\n    this.token(\".\");\n    this.print(qualifier);\n  }\n  if (typeParameters) {\n    this.print(typeParameters);\n  }\n}\n\nexport function TSImportEqualsDeclaration(\n  this: Printer,\n  node: t.TSImportEqualsDeclaration,\n) {\n  const { isExport, id, moduleReference } = node;\n  if (isExport) {\n    this.word(\"export\");\n    this.space();\n  }\n  this.word(\"import\");\n  this.space();\n  this.print(id);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(moduleReference);\n  this.semicolon();\n}\n\nexport function TSExternalModuleReference(\n  this: Printer,\n  node: t.TSExternalModuleReference,\n) {\n  this.token(\"require(\");\n  this.print(node.expression);\n  this.token(\")\");\n}\n\nexport function TSNonNullExpression(\n  this: Printer,\n  node: t.TSNonNullExpression,\n) {\n  this.print(node.expression);\n  this.token(\"!\");\n}\n\nexport function TSExportAssignment(this: Printer, node: t.TSExportAssignment) {\n  this.word(\"export\");\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.expression);\n  this.semicolon();\n}\n\nexport function TSNamespaceExportDeclaration(\n  this: Printer,\n  node: t.TSNamespaceExportDeclaration,\n) {\n  this.word(\"export\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.word(\"namespace\");\n  this.space();\n  this.print(node.id);\n  this.semicolon();\n}\n\nexport function tsPrintSignatureDeclarationBase(this: Printer, node: any) {\n  const { typeParameters } = node;\n  const parameters = process.env.BABEL_8_BREAKING\n    ? node.params\n    : node.parameters;\n  this.print(typeParameters);\n  this.token(\"(\");\n  this._parameters(parameters, \")\");\n  const returnType = process.env.BABEL_8_BREAKING\n    ? node.returnType\n    : node.typeAnnotation;\n  this.print(returnType);\n}\n\nexport function tsPrintClassMemberModifiers(\n  this: Printer,\n  node:\n    | t.ClassProperty\n    | t.ClassAccessorProperty\n    | t.ClassMethod\n    | t.ClassPrivateMethod\n    | t.TSDeclareMethod,\n) {\n  const isField =\n    node.type === \"ClassAccessorProperty\" || node.type === \"ClassProperty\";\n  printModifiersList(this, node, [\n    isField && node.declare && \"declare\",\n    node.accessibility,\n  ]);\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  printModifiersList(this, node, [\n    node.override && \"override\",\n    node.abstract && \"abstract\",\n    isField && node.readonly && \"readonly\",\n  ]);\n}\n\nfunction printBraced(printer: Printer, node: t.Node, cb: () => void) {\n  printer.token(\"{\");\n  const exit = printer.enterDelimited();\n  cb();\n  exit();\n  printer.rightBrace(node);\n}\n\nfunction printModifiersList(\n  printer: Printer,\n  node: t.Node,\n  modifiers: (string | false | null)[],\n) {\n  const modifiersSet = new Set<string>();\n  for (const modifier of modifiers) {\n    if (modifier) modifiersSet.add(modifier);\n  }\n\n  printer.tokenMap?.find(node, tok => {\n    if (modifiersSet.has(tok.value)) {\n      printer.token(tok.value);\n      printer.space();\n      modifiersSet.delete(tok.value);\n      return modifiersSet.size === 0;\n    }\n  });\n\n  for (const modifier of modifiersSet) {\n    printer.word(modifier);\n    printer.space();\n  }\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["TSTypeAnnotation","node","parent","token","type","typeAnnotation","space","optional","print","TSTypeParameterInstantiation","printTrailingSeparator","params","length","tokenMap","start","end","find","t","matchesOriginal","shouldPrintTrailingComma","printList","TSTypeParameter","in","word","out","name","constraint","default","TSParameterProperty","accessibility","readonly","_param","parameter","TSDeclareFunction","declare","_functionHead","semicolon","TSDeclareMethod","_classMethodHead","TSQualifiedName","left","right","TSCallSignatureDeclaration","tsPrintSignatureDeclarationBase","maybePrintTrailingCommaOrSemicolon","printer","endMatches","TSConstructSignatureDeclaration","TSPropertySignature","tsPrintPropertyOrMethodName","computed","key","TSMethodSignature","kind","TSIndexSignature","static","isStatic","_parameters","parameters","TSAnyKeyword","TSBigIntKeyword","TSUnknownKeyword","TSNumberKeyword","TSObjectKeyword","TSBooleanKeyword","TSStringKeyword","TSSymbolKeyword","TSVoidKeyword","TSUndefinedKeyword","TSNullKeyword","TSNeverKeyword","TSIntrinsicKeyword","TSThisType","TSFunctionType","tsPrintFunctionOrConstructorType","TSConstructorType","abstract","typeParameters","returnType","TSTypeReference","typeArguments","typeName","TSTypePredicate","asserts","parameterName","TSTypeQuery","exprName","TSTypeLiteral","printBraced","printJoin","members","TSArrayType","elementType","TSTupleType","elementTypes","TSOptionalType","TSRestType","TSNamedTupleMember","label","TSUnionType","tsPrintUnionOrIntersectionType","TSIntersectionType","sep","_printer$tokenMap","hasLeadingToken","startMatches","types","undefined","i","TSConditionalType","checkType","extendsType","trueType","falseType","TSInferType","typeParameter","TSParenthesizedType","TSTypeOperator","operator","TSIndexedAccessType","objectType","indexType","TSMappedType","nameType","exit","enterDelimited","tokenIfPlusMinus","self","tok","TSLiteralType","literal","TSClassImplements","expression","TSInterfaceDeclaration","id","extends","extendz","body","TSInterfaceBody","TSTypeAliasDeclaration","TSTypeExpression","TSTypeAssertion","TSInstantiationExpression","TSEnumDeclaration","const","isConst","TSEnumBody","call","_this$shouldPrintTrai","TSEnumMember","initializer","TSModuleDeclaration","global","TSModuleBlock","printSequence","TSImportType","argument","qualifier","options","TSImportEqualsDeclaration","isExport","moduleReference","TSExternalModuleReference","TSNonNullExpression","TSExportAssignment","TSNamespaceExportDeclaration","tsPrintClassMemberModifiers","isField","printModifiersList","override","cb","rightBrace","modifiers","_printer$tokenMap2","modifiersSet","Set","modifier","add","has","value","delete","size"],"sources":["../../src/generators/typescript.ts"],"sourcesContent":["import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TSTypeAnnotation(\n  this: Printer,\n  node: t.TSTypeAnnotation,\n  parent: t.Node,\n) {\n  // TODO(@nicolo-ribaudo): investigate not including => in the range\n  // of the return type of an arrow function type\n  this.token(\n    (parent.type === \"TSFunctionType\" || parent.type === \"TSConstructorType\") &&\n      (process.env.BABEL_8_BREAKING\n        ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n          parent.returnType\n        : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n          parent.typeAnnotation) === node\n      ? \"=>\"\n      : \":\",\n  );\n  this.space();\n  // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n  if (node.optional) this.token(\"?\");\n  this.print(node.typeAnnotation);\n}\n\nexport function TSTypeParameterInstantiation(\n  this: Printer,\n  node: t.TSTypeParameterInstantiation,\n  parent: t.Node,\n): void {\n  this.token(\"<\");\n\n  let printTrailingSeparator =\n    parent.type === \"ArrowFunctionExpression\" && node.params.length === 1;\n  if (this.tokenMap && node.start != null && node.end != null) {\n    // Only force the trailing comma for pre-existing nodes if they\n    // already had a comma (either because they were multi-param, or\n    // because they had a trailing comma)\n    printTrailingSeparator &&= !!this.tokenMap.find(node, t =>\n      this.tokenMap.matchesOriginal(t, \",\"),\n    );\n    // Preseve the trailing comma if it was there before\n    printTrailingSeparator ||= this.shouldPrintTrailingComma(\">\");\n  }\n\n  this.printList(node.params, printTrailingSeparator);\n  this.token(\">\");\n}\n\nexport { TSTypeParameterInstantiation as TSTypeParameterDeclaration };\n\nexport function TSTypeParameter(this: Printer, node: t.TSTypeParameter) {\n  if (node.in) {\n    this.word(\"in\");\n    this.space();\n  }\n\n  if (node.out) {\n    this.word(\"out\");\n    this.space();\n  }\n\n  this.word(\n    !process.env.BABEL_8_BREAKING\n      ? (node.name as unknown as string)\n      : (node.name as unknown as t.Identifier).name,\n  );\n\n  if (node.constraint) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.print(node.constraint);\n  }\n\n  if (node.default) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.default);\n  }\n}\n\nexport function TSParameterProperty(\n  this: Printer,\n  node: t.TSParameterProperty,\n) {\n  if (node.accessibility) {\n    this.word(node.accessibility);\n    this.space();\n  }\n\n  if (node.readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n\n  this._param(node.parameter);\n}\n\nexport function TSDeclareFunction(\n  this: Printer,\n  node: t.TSDeclareFunction,\n  parent: t.ParentMaps[\"TSDeclareFunction\"],\n) {\n  if (node.declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this._functionHead(node, parent);\n  this.semicolon();\n}\n\nexport function TSDeclareMethod(this: Printer, node: t.TSDeclareMethod) {\n  this._classMethodHead(node);\n  this.semicolon();\n}\n\nexport function TSQualifiedName(this: Printer, node: t.TSQualifiedName) {\n  this.print(node.left);\n  this.token(\".\");\n  this.print(node.right);\n}\n\nexport function TSCallSignatureDeclaration(\n  this: Printer,\n  node: t.TSCallSignatureDeclaration,\n) {\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nfunction maybePrintTrailingCommaOrSemicolon(printer: Printer, node: t.Node) {\n  if (!printer.tokenMap || !node.start || !node.end) {\n    printer.semicolon();\n    return;\n  }\n\n  if (printer.tokenMap.endMatches(node, \",\")) {\n    printer.token(\",\");\n  } else if (printer.tokenMap.endMatches(node, \";\")) {\n    printer.semicolon();\n  }\n}\n\nexport function TSConstructSignatureDeclaration(\n  this: Printer,\n  node: t.TSConstructSignatureDeclaration,\n) {\n  this.word(\"new\");\n  this.space();\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSPropertySignature(\n  this: Printer,\n  node: t.TSPropertySignature,\n) {\n  const { readonly } = node;\n  if (readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n  this.tsPrintPropertyOrMethodName(node);\n  this.print(node.typeAnnotation);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function tsPrintPropertyOrMethodName(\n  this: Printer,\n  node: t.TSPropertySignature | t.TSMethodSignature,\n) {\n  if (node.computed) {\n    this.token(\"[\");\n  }\n  this.print(node.key);\n  if (node.computed) {\n    this.token(\"]\");\n  }\n  if (node.optional) {\n    this.token(\"?\");\n  }\n}\n\nexport function TSMethodSignature(this: Printer, node: t.TSMethodSignature) {\n  const { kind } = node;\n  if (kind === \"set\" || kind === \"get\") {\n    this.word(kind);\n    this.space();\n  }\n  this.tsPrintPropertyOrMethodName(node);\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSIndexSignature(this: Printer, node: t.TSIndexSignature) {\n  const { readonly, static: isStatic } = node;\n  if (isStatic) {\n    this.word(\"static\");\n    this.space();\n  }\n  if (readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n  this.token(\"[\");\n  this._parameters(node.parameters, \"]\");\n  this.print(node.typeAnnotation);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSAnyKeyword(this: Printer) {\n  this.word(\"any\");\n}\nexport function TSBigIntKeyword(this: Printer) {\n  this.word(\"bigint\");\n}\nexport function TSUnknownKeyword(this: Printer) {\n  this.word(\"unknown\");\n}\nexport function TSNumberKeyword(this: Printer) {\n  this.word(\"number\");\n}\nexport function TSObjectKeyword(this: Printer) {\n  this.word(\"object\");\n}\nexport function TSBooleanKeyword(this: Printer) {\n  this.word(\"boolean\");\n}\nexport function TSStringKeyword(this: Printer) {\n  this.word(\"string\");\n}\nexport function TSSymbolKeyword(this: Printer) {\n  this.word(\"symbol\");\n}\nexport function TSVoidKeyword(this: Printer) {\n  this.word(\"void\");\n}\nexport function TSUndefinedKeyword(this: Printer) {\n  this.word(\"undefined\");\n}\nexport function TSNullKeyword(this: Printer) {\n  this.word(\"null\");\n}\nexport function TSNeverKeyword(this: Printer) {\n  this.word(\"never\");\n}\nexport function TSIntrinsicKeyword(this: Printer) {\n  this.word(\"intrinsic\");\n}\n\nexport function TSThisType(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function TSFunctionType(this: Printer, node: t.TSFunctionType) {\n  this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function TSConstructorType(this: Printer, node: t.TSConstructorType) {\n  if (node.abstract) {\n    this.word(\"abstract\");\n    this.space();\n  }\n  this.word(\"new\");\n  this.space();\n  this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function tsPrintFunctionOrConstructorType(\n  this: Printer,\n  node: t.TSFunctionType | t.TSConstructorType,\n) {\n  const { typeParameters } = node;\n  const parameters = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.params\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.parameters;\n  this.print(typeParameters);\n  this.token(\"(\");\n  this._parameters(parameters, \")\");\n  this.space();\n  const returnType = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.returnType\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.typeAnnotation;\n  this.print(returnType);\n}\n\nexport function TSTypeReference(this: Printer, node: t.TSTypeReference) {\n  const typeArguments = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.typeArguments\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.typeParameters;\n  this.print(node.typeName, !!typeArguments);\n  this.print(typeArguments);\n}\n\nexport function TSTypePredicate(this: Printer, node: t.TSTypePredicate) {\n  if (node.asserts) {\n    this.word(\"asserts\");\n    this.space();\n  }\n  this.print(node.parameterName);\n  if (node.typeAnnotation) {\n    this.space();\n    this.word(\"is\");\n    this.space();\n    this.print(node.typeAnnotation.typeAnnotation);\n  }\n}\n\nexport function TSTypeQuery(this: Printer, node: t.TSTypeQuery) {\n  this.word(\"typeof\");\n  this.space();\n  this.print(node.exprName);\n\n  const typeArguments = process.env.BABEL_8_BREAKING\n    ? //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      node.typeArguments\n    : //@ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n      node.typeParameters;\n  if (typeArguments) {\n    this.print(typeArguments);\n  }\n}\n\nexport function TSTypeLiteral(this: Printer, node: t.TSTypeLiteral) {\n  printBraced(this, node, () => this.printJoin(node.members, true, true));\n}\n\nexport function TSArrayType(this: Printer, node: t.TSArrayType) {\n  this.print(node.elementType, true);\n\n  this.token(\"[\");\n  this.token(\"]\");\n}\n\nexport function TSTupleType(this: Printer, node: t.TSTupleType) {\n  this.token(\"[\");\n  this.printList(node.elementTypes, this.shouldPrintTrailingComma(\"]\"));\n  this.token(\"]\");\n}\n\nexport function TSOptionalType(this: Printer, node: t.TSOptionalType) {\n  this.print(node.typeAnnotation);\n  this.token(\"?\");\n}\n\nexport function TSRestType(this: Printer, node: t.TSRestType) {\n  this.token(\"...\");\n  this.print(node.typeAnnotation);\n}\n\nexport function TSNamedTupleMember(this: Printer, node: t.TSNamedTupleMember) {\n  this.print(node.label);\n  if (node.optional) this.token(\"?\");\n  this.token(\":\");\n  this.space();\n  this.print(node.elementType);\n}\n\nexport function TSUnionType(this: Printer, node: t.TSUnionType) {\n  tsPrintUnionOrIntersectionType(this, node, \"|\");\n}\n\nexport function TSIntersectionType(this: Printer, node: t.TSIntersectionType) {\n  tsPrintUnionOrIntersectionType(this, node, \"&\");\n}\n\nfunction tsPrintUnionOrIntersectionType(\n  printer: Printer,\n  node: t.TSUnionType | t.TSIntersectionType,\n  sep: \"|\" | \"&\",\n) {\n  let hasLeadingToken = 0;\n  if (printer.tokenMap?.startMatches(node, sep)) {\n    hasLeadingToken = 1;\n    printer.token(sep);\n  }\n\n  printer.printJoin(node.types, undefined, undefined, function (i) {\n    this.space();\n    this.token(sep, null, i + hasLeadingToken);\n    this.space();\n  });\n}\n\nexport function TSConditionalType(this: Printer, node: t.TSConditionalType) {\n  this.print(node.checkType);\n  this.space();\n  this.word(\"extends\");\n  this.space();\n  this.print(node.extendsType);\n  this.space();\n  this.token(\"?\");\n  this.space();\n  this.print(node.trueType);\n  this.space();\n  this.token(\":\");\n  this.space();\n  this.print(node.falseType);\n}\n\nexport function TSInferType(this: Printer, node: t.TSInferType) {\n  this.word(\"infer\");\n  this.print(node.typeParameter);\n}\n\nexport function TSParenthesizedType(\n  this: Printer,\n  node: t.TSParenthesizedType,\n) {\n  this.token(\"(\");\n  this.print(node.typeAnnotation);\n  this.token(\")\");\n}\n\nexport function TSTypeOperator(this: Printer, node: t.TSTypeOperator) {\n  this.word(node.operator);\n  this.space();\n  this.print(node.typeAnnotation);\n}\n\nexport function TSIndexedAccessType(\n  this: Printer,\n  node: t.TSIndexedAccessType,\n) {\n  this.print(node.objectType, true);\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n\nexport function TSMappedType(this: Printer, node: t.TSMappedType) {\n  const { nameType, optional, readonly, typeAnnotation } = node;\n  this.token(\"{\");\n  const exit = this.enterDelimited();\n  this.space();\n  if (readonly) {\n    tokenIfPlusMinus(this, readonly);\n    this.word(\"readonly\");\n    this.space();\n  }\n\n  this.token(\"[\");\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n    this.word(node.key.name);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    this.word(node.typeParameter.name);\n  }\n\n  this.space();\n  this.word(\"in\");\n  this.space();\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n    this.print(node.constraint);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    this.print(node.typeParameter.constraint);\n  }\n\n  if (nameType) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(nameType);\n  }\n\n  this.token(\"]\");\n\n  if (optional) {\n    tokenIfPlusMinus(this, optional);\n    this.token(\"?\");\n  }\n\n  if (typeAnnotation) {\n    this.token(\":\");\n    this.space();\n    this.print(typeAnnotation);\n  }\n  this.space();\n  exit();\n  this.token(\"}\");\n}\n\nfunction tokenIfPlusMinus(self: Printer, tok: true | \"+\" | \"-\") {\n  if (tok !== true) {\n    self.token(tok);\n  }\n}\n\nexport function TSLiteralType(this: Printer, node: t.TSLiteralType) {\n  this.print(node.literal);\n}\n\nexport function TSClassImplements(\n  this: Printer,\n  // TODO(Babel 8): Just use t.TSClassImplements\n  node: t.Node & {\n    expression: t.TSEntityName;\n    typeArguments?: t.TSTypeParameterInstantiation;\n  },\n) {\n  this.print(node.expression);\n  this.print(node.typeArguments);\n}\n\nexport { TSClassImplements as TSInterfaceHeritage };\n\nexport function TSInterfaceDeclaration(\n  this: Printer,\n  node: t.TSInterfaceDeclaration,\n) {\n  const { declare, id, typeParameters, extends: extendz, body } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"interface\");\n  this.space();\n  this.print(id);\n  this.print(typeParameters);\n  if (extendz?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(extendz);\n  }\n  this.space();\n  this.print(body);\n}\n\nexport function TSInterfaceBody(this: Printer, node: t.TSInterfaceBody) {\n  printBraced(this, node, () => this.printJoin(node.body, true, true));\n}\n\nexport function TSTypeAliasDeclaration(\n  this: Printer,\n  node: t.TSTypeAliasDeclaration,\n) {\n  const { declare, id, typeParameters, typeAnnotation } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"type\");\n  this.space();\n  this.print(id);\n  this.print(typeParameters);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(typeAnnotation);\n  this.semicolon();\n}\n\nfunction TSTypeExpression(\n  this: Printer,\n  node: t.TSAsExpression | t.TSSatisfiesExpression,\n) {\n  const { type, expression, typeAnnotation } = node;\n  this.print(expression, true);\n  this.space();\n  this.word(type === \"TSAsExpression\" ? \"as\" : \"satisfies\");\n  this.space();\n  this.print(typeAnnotation);\n}\n\nexport {\n  TSTypeExpression as TSAsExpression,\n  TSTypeExpression as TSSatisfiesExpression,\n};\n\nexport function TSTypeAssertion(this: Printer, node: t.TSTypeAssertion) {\n  const { typeAnnotation, expression } = node;\n  this.token(\"<\");\n  this.print(typeAnnotation);\n  this.token(\">\");\n  this.space();\n  this.print(expression);\n}\n\nexport function TSInstantiationExpression(\n  this: Printer,\n  node: t.TSInstantiationExpression,\n) {\n  this.print(node.expression);\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.typeArguments);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters);\n  }\n}\n\nexport function TSEnumDeclaration(this: Printer, node: t.TSEnumDeclaration) {\n  const { declare, const: isConst, id } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  if (isConst) {\n    this.word(\"const\");\n    this.space();\n  }\n  this.word(\"enum\");\n  this.space();\n  this.print(id);\n  this.space();\n\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.body);\n  } else {\n    // cast to TSEnumBody for Babel 7 AST\n    TSEnumBody.call(this, node as unknown as t.TSEnumBody);\n  }\n}\n\nexport function TSEnumBody(this: Printer, node: t.TSEnumBody) {\n  printBraced(this, node, () =>\n    this.printList(\n      node.members,\n      this.shouldPrintTrailingComma(\"}\") ??\n        (process.env.BABEL_8_BREAKING ? false : true),\n      true,\n      true,\n    ),\n  );\n}\n\nexport function TSEnumMember(this: Printer, node: t.TSEnumMember) {\n  const { id, initializer } = node;\n  this.print(id);\n  if (initializer) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(initializer);\n  }\n}\n\nexport function TSModuleDeclaration(\n  this: Printer,\n  node: t.TSModuleDeclaration,\n) {\n  const { declare, id, kind } = node;\n\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (kind !== \"global\") {\n      this.word(kind);\n      this.space();\n    }\n\n    this.print(node.id);\n    if (!node.body) {\n      this.semicolon();\n      return;\n    }\n    this.space();\n    this.print(node.body);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    if (!node.global) {\n      this.word(kind ?? (id.type === \"Identifier\" ? \"namespace\" : \"module\"));\n      this.space();\n    }\n\n    this.print(id);\n\n    if (!node.body) {\n      this.semicolon();\n      return;\n    }\n\n    let body = node.body;\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    while (body.type === \"TSModuleDeclaration\") {\n      this.token(\".\");\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      this.print(body.id);\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      body = body.body;\n    }\n\n    this.space();\n    this.print(body);\n  }\n}\n\nexport function TSModuleBlock(this: Printer, node: t.TSModuleBlock) {\n  printBraced(this, node, () => this.printSequence(node.body, true));\n}\n\nexport function TSImportType(this: Printer, node: t.TSImportType) {\n  const { argument, qualifier, options } = node;\n  this.word(\"import\");\n  this.token(\"(\");\n  this.print(argument);\n  if (options) {\n    this.token(\",\");\n    this.print(options);\n  }\n  this.token(\")\");\n  if (qualifier) {\n    this.token(\".\");\n    this.print(qualifier);\n  }\n  const typeArguments = process.env.BABEL_8_BREAKING\n    ? //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      node.typeArguments\n    : //@ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n      node.typeParameters;\n  if (typeArguments) {\n    this.print(typeArguments);\n  }\n}\n\nexport function TSImportEqualsDeclaration(\n  this: Printer,\n  node: t.TSImportEqualsDeclaration,\n) {\n  const { isExport, id, moduleReference } = node;\n  if (isExport) {\n    this.word(\"export\");\n    this.space();\n  }\n  this.word(\"import\");\n  this.space();\n  this.print(id);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(moduleReference);\n  this.semicolon();\n}\n\nexport function TSExternalModuleReference(\n  this: Printer,\n  node: t.TSExternalModuleReference,\n) {\n  this.token(\"require(\");\n  this.print(node.expression);\n  this.token(\")\");\n}\n\nexport function TSNonNullExpression(\n  this: Printer,\n  node: t.TSNonNullExpression,\n) {\n  this.print(node.expression);\n  this.token(\"!\");\n}\n\nexport function TSExportAssignment(this: Printer, node: t.TSExportAssignment) {\n  this.word(\"export\");\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.expression);\n  this.semicolon();\n}\n\nexport function TSNamespaceExportDeclaration(\n  this: Printer,\n  node: t.TSNamespaceExportDeclaration,\n) {\n  this.word(\"export\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.word(\"namespace\");\n  this.space();\n  this.print(node.id);\n  this.semicolon();\n}\n\nexport function tsPrintSignatureDeclarationBase(this: Printer, node: any) {\n  const { typeParameters } = node;\n  const parameters = process.env.BABEL_8_BREAKING\n    ? node.params\n    : node.parameters;\n  this.print(typeParameters);\n  this.token(\"(\");\n  this._parameters(parameters, \")\");\n  const returnType = process.env.BABEL_8_BREAKING\n    ? node.returnType\n    : node.typeAnnotation;\n  this.print(returnType);\n}\n\nexport function tsPrintClassMemberModifiers(\n  this: Printer,\n  node:\n    | t.ClassProperty\n    | t.ClassAccessorProperty\n    | t.ClassMethod\n    | t.ClassPrivateMethod\n    | t.TSDeclareMethod,\n) {\n  const isField =\n    node.type === \"ClassAccessorProperty\" || node.type === \"ClassProperty\";\n  printModifiersList(this, node, [\n    isField && node.declare && \"declare\",\n    node.accessibility,\n  ]);\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  printModifiersList(this, node, [\n    node.override && \"override\",\n    node.abstract && \"abstract\",\n    isField && node.readonly && \"readonly\",\n  ]);\n}\n\nfunction printBraced(printer: Printer, node: t.Node, cb: () => void) {\n  printer.token(\"{\");\n  const exit = printer.enterDelimited();\n  cb();\n  exit();\n  printer.rightBrace(node);\n}\n\nfunction printModifiersList(\n  printer: Printer,\n  node: t.Node,\n  modifiers: (string | false | null)[],\n) {\n  const modifiersSet = new Set<string>();\n  for (const modifier of modifiers) {\n    if (modifier) modifiersSet.add(modifier);\n  }\n\n  printer.tokenMap?.find(node, tok => {\n    if (modifiersSet.has(tok.value)) {\n      printer.token(tok.value);\n      printer.space();\n      modifiersSet.delete(tok.value);\n      return modifiersSet.size === 0;\n    }\n  });\n\n  for (const modifier of modifiersSet) {\n    printer.word(modifier);\n    printer.space();\n  }\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/node/parentheses.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/node/parentheses.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/node/parentheses.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_t","require","_index","isArrayTypeAnnotation","isBinaryExpression","isCallExpression","isForOfStatement","isIndexedAccessType","isMemberExpression","isObjectPattern","isOptionalMemberExpression","isYieldExpression","isStatement","PRECEDENCE","Map","getBinaryPrecedence","node","nodeType","get","operator","isTSTypeExpression","isClassExtendsClause","parent","parentType","type","superClass","hasPostfixPart","object","callee","tag","NullableTypeAnnotation","FunctionTypeAnnotation","tokenContext","Boolean","TokenContext","arrowFlowReturnType","UpdateExpression","needsParenBeforeExpressionBrace","expressionStatement","arrowBody","ObjectExpression","DoExpression","async","Binary","left","parentPos","nodePos","right","undefined","UnionTypeAnnotation","OptionalIndexedAccessType","objectType","TSAsExpression","TSUnionType","TSInferType","TSInstantiationExpression","typeParameters","BinaryExpression","inForStatementInit","SequenceExpression","property","YieldExpression","test","ClassExpression","exportDefault","UnaryLike","FunctionExpression","ConditionalExpression","OptionalMemberExpression","AssignmentExpression","LogicalExpression","Identifier","_inForInit","getRawIdentifier","_node$extra","extra","parenthesized","rightType","id","name","isFollowedByBracket","computed","optional","forHead","forInHead","forOfHead","await"],"sources":["../../src/node/parentheses.ts"],"sourcesContent":["import {\n  isArrayTypeAnnotation,\n  isBinaryExpression,\n  isCallExpression,\n  isForOfStatement,\n  isIndexedAccessType,\n  isMemberExpression,\n  isObjectPattern,\n  isOptionalMemberExpression,\n  isYieldExpression,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport { TokenContext } from \"./index.ts\";\n\nconst PRECEDENCE = new Map([\n  [\"||\", 0],\n  [\"??\", 0],\n  [\"|>\", 0],\n  [\"&&\", 1],\n  [\"|\", 2],\n  [\"^\", 3],\n  [\"&\", 4],\n  [\"==\", 5],\n  [\"===\", 5],\n  [\"!=\", 5],\n  [\"!==\", 5],\n  [\"<\", 6],\n  [\">\", 6],\n  [\"<=\", 6],\n  [\">=\", 6],\n  [\"in\", 6],\n  [\"instanceof\", 6],\n  [\">>\", 7],\n  [\"<<\", 7],\n  [\">>>\", 7],\n  [\"+\", 8],\n  [\"-\", 8],\n  [\"*\", 9],\n  [\"/\", 9],\n  [\"%\", 9],\n  [\"**\", 10],\n]);\n\nfunction getBinaryPrecedence(\n  node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n  nodeType: string,\n): number;\nfunction getBinaryPrecedence(\n  node: t.Node,\n  nodeType: string,\n): number | undefined;\nfunction getBinaryPrecedence(node: t.Node, nodeType: string) {\n  if (nodeType === \"BinaryExpression\" || nodeType === \"LogicalExpression\") {\n    return PRECEDENCE.get((node as t.Binary).operator);\n  }\n  if (nodeType === \"TSAsExpression\" || nodeType === \"TSSatisfiesExpression\") {\n    return PRECEDENCE.get(\"in\");\n  }\n}\n\nfunction isTSTypeExpression(nodeType: string) {\n  return (\n    nodeType === \"TSAsExpression\" ||\n    nodeType === \"TSSatisfiesExpression\" ||\n    nodeType === \"TSTypeAssertion\"\n  );\n}\n\nconst isClassExtendsClause = (\n  node: t.Node,\n  parent: t.Node,\n): parent is t.Class => {\n  const parentType = parent.type;\n  return (\n    (parentType === \"ClassDeclaration\" || parentType === \"ClassExpression\") &&\n    parent.superClass === node\n  );\n};\n\nconst hasPostfixPart = (node: t.Node, parent: t.Node) => {\n  const parentType = parent.type;\n  return (\n    ((parentType === \"MemberExpression\" ||\n      parentType === \"OptionalMemberExpression\") &&\n      parent.object === node) ||\n    ((parentType === \"CallExpression\" ||\n      parentType === \"OptionalCallExpression\" ||\n      parentType === \"NewExpression\") &&\n      parent.callee === node) ||\n    (parentType === \"TaggedTemplateExpression\" && parent.tag === node) ||\n    parentType === \"TSNonNullExpression\"\n  );\n};\n\nexport function NullableTypeAnnotation(\n  node: t.NullableTypeAnnotation,\n  parent: t.Node,\n): boolean {\n  return isArrayTypeAnnotation(parent);\n}\n\nexport function FunctionTypeAnnotation(\n  node: t.FunctionTypeAnnotation,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  const parentType = parent.type;\n  return (\n    // (() => A) | (() => B)\n    parentType === \"UnionTypeAnnotation\" ||\n    // (() => A) & (() => B)\n    parentType === \"IntersectionTypeAnnotation\" ||\n    // (() => A)[]\n    parentType === \"ArrayTypeAnnotation\" ||\n    Boolean(tokenContext & TokenContext.arrowFlowReturnType)\n  );\n}\n\nexport function UpdateExpression(\n  node: t.UpdateExpression,\n  parent: t.Node,\n): boolean {\n  return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);\n}\n\nfunction needsParenBeforeExpressionBrace(tokenContext: number) {\n  return Boolean(\n    tokenContext & (TokenContext.expressionStatement | TokenContext.arrowBody),\n  );\n}\n\nexport function ObjectExpression(\n  node: t.ObjectExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return needsParenBeforeExpressionBrace(tokenContext);\n}\n\nexport function DoExpression(\n  node: t.DoExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  // `async do` can start an expression statement\n  return (\n    !node.async && Boolean(tokenContext & TokenContext.expressionStatement)\n  );\n}\n\nexport function Binary(\n  node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n  parent: t.Node,\n): boolean | undefined {\n  const parentType = parent.type;\n  if (\n    node.type === \"BinaryExpression\" &&\n    node.operator === \"**\" &&\n    parentType === \"BinaryExpression\" &&\n    parent.operator === \"**\"\n  ) {\n    return parent.left === node;\n  }\n\n  if (isClassExtendsClause(node, parent)) {\n    return true;\n  }\n\n  if (\n    hasPostfixPart(node, parent) ||\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    parentType === \"AwaitExpression\"\n  ) {\n    return true;\n  }\n\n  const parentPos = getBinaryPrecedence(parent, parentType);\n  if (parentPos != null) {\n    const nodePos = getBinaryPrecedence(node, node.type);\n    if (\n      // Logical expressions with the same precedence don't need parens.\n      (parentPos === nodePos &&\n        parentType === \"BinaryExpression\" &&\n        parent.right === node) ||\n      parentPos > nodePos\n    ) {\n      return true;\n    }\n  }\n\n  return undefined;\n}\n\nexport function UnionTypeAnnotation(\n  node: t.UnionTypeAnnotation,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"ArrayTypeAnnotation\" ||\n    parentType === \"NullableTypeAnnotation\" ||\n    parentType === \"IntersectionTypeAnnotation\" ||\n    parentType === \"UnionTypeAnnotation\"\n  );\n}\n\nexport { UnionTypeAnnotation as IntersectionTypeAnnotation };\n\nexport function OptionalIndexedAccessType(\n  node: t.OptionalIndexedAccessType,\n  parent: t.Node,\n): boolean {\n  return isIndexedAccessType(parent) && parent.objectType === node;\n}\n\nexport function TSAsExpression(\n  node: t.TSAsExpression | t.TSSatisfiesExpression,\n  parent: t.Node,\n): boolean {\n  if (\n    (parent.type === \"AssignmentExpression\" ||\n      parent.type === \"AssignmentPattern\") &&\n    parent.left === node\n  ) {\n    return true;\n  }\n  if (\n    parent.type === \"BinaryExpression\" &&\n    (parent.operator === \"|\" || parent.operator === \"&\") &&\n    node === parent.left\n  ) {\n    return true;\n  }\n  return Binary(node, parent);\n}\n\nexport { TSAsExpression as TSSatisfiesExpression };\n\nexport { UnaryLike as TSTypeAssertion };\n\nexport function TSUnionType(node: t.TSUnionType, parent: t.Node): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"TSArrayType\" ||\n    parentType === \"TSOptionalType\" ||\n    parentType === \"TSIntersectionType\" ||\n    parentType === \"TSRestType\"\n  );\n}\n\nexport { TSUnionType as TSIntersectionType };\n\nexport function TSInferType(node: t.TSInferType, parent: t.Node): boolean {\n  const parentType = parent.type;\n  return parentType === \"TSArrayType\" || parentType === \"TSOptionalType\";\n}\n\nexport function TSInstantiationExpression(\n  node: t.TSInstantiationExpression,\n  parent: t.Node,\n) {\n  const parentType = parent.type;\n  return (\n    (parentType === \"CallExpression\" ||\n      parentType === \"OptionalCallExpression\" ||\n      parentType === \"NewExpression\" ||\n      parentType === \"TSInstantiationExpression\") &&\n    !!parent.typeParameters\n  );\n}\n\nexport function BinaryExpression(\n  node: t.BinaryExpression,\n  parent: t.Node,\n  tokenContext: unknown,\n  inForStatementInit: boolean,\n): boolean {\n  // for ((1 in []);;);\n  // for (var x = (1 in []) in 2);\n  return node.operator === \"in\" && inForStatementInit;\n}\n\nexport function SequenceExpression(\n  node: t.SequenceExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"SequenceExpression\" ||\n    parentType === \"ParenthesizedExpression\" ||\n    (parentType === \"MemberExpression\" && parent.property === node) ||\n    (parentType === \"OptionalMemberExpression\" && parent.property === node) ||\n    parentType === \"TemplateLiteral\"\n  ) {\n    return false;\n  }\n  if (parentType === \"ClassDeclaration\") {\n    return true;\n  }\n  if (parentType === \"ForOfStatement\") {\n    return parent.right === node;\n  }\n  if (parentType === \"ExportDefaultDeclaration\") {\n    return true;\n  }\n\n  return !isStatement(parent);\n}\n\nexport function YieldExpression(\n  node: t.YieldExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"BinaryExpression\" ||\n    parentType === \"LogicalExpression\" ||\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    hasPostfixPart(node, parent) ||\n    (parentType === \"AwaitExpression\" && isYieldExpression(node)) ||\n    (parentType === \"ConditionalExpression\" && node === parent.test) ||\n    isClassExtendsClause(node, parent) ||\n    isTSTypeExpression(parentType)\n  );\n}\n\nexport { YieldExpression as AwaitExpression };\n\nexport function ClassExpression(\n  node: t.ClassExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return Boolean(\n    tokenContext &\n      (TokenContext.expressionStatement | TokenContext.exportDefault),\n  );\n}\n\nexport function UnaryLike(\n  node:\n    | t.UnaryLike\n    | t.TSTypeAssertion\n    | t.ArrowFunctionExpression\n    | t.ConditionalExpression\n    | t.AssignmentExpression,\n  parent: t.Node,\n): boolean {\n  return (\n    hasPostfixPart(node, parent) ||\n    (isBinaryExpression(parent) &&\n      parent.operator === \"**\" &&\n      parent.left === node) ||\n    isClassExtendsClause(node, parent)\n  );\n}\n\nexport function FunctionExpression(\n  node: t.FunctionExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return Boolean(\n    tokenContext &\n      (TokenContext.expressionStatement | TokenContext.exportDefault),\n  );\n}\n\nexport function ConditionalExpression(\n  node:\n    | t.ConditionalExpression\n    | t.ArrowFunctionExpression\n    | t.AssignmentExpression,\n  parent?: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    parentType === \"BinaryExpression\" ||\n    parentType === \"LogicalExpression\" ||\n    (parentType === \"ConditionalExpression\" && parent.test === node) ||\n    parentType === \"AwaitExpression\" ||\n    isTSTypeExpression(parentType)\n  ) {\n    return true;\n  }\n\n  return UnaryLike(node, parent);\n}\n\nexport { ConditionalExpression as ArrowFunctionExpression };\n\nexport function OptionalMemberExpression(\n  node: t.OptionalMemberExpression,\n  parent: t.Node,\n): boolean {\n  return (\n    (isCallExpression(parent) && parent.callee === node) ||\n    (isMemberExpression(parent) && parent.object === node)\n  );\n}\n\nexport { OptionalMemberExpression as OptionalCallExpression };\n\nexport function AssignmentExpression(\n  node: t.AssignmentExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  if (\n    needsParenBeforeExpressionBrace(tokenContext) &&\n    isObjectPattern(node.left)\n  ) {\n    return true;\n  } else {\n    return ConditionalExpression(node, parent);\n  }\n}\n\nexport function LogicalExpression(\n  node: t.LogicalExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (isTSTypeExpression(parentType)) return true;\n  if (parentType !== \"LogicalExpression\") return false;\n  switch (node.operator) {\n    case \"||\":\n      return parent.operator === \"??\" || parent.operator === \"&&\";\n    case \"&&\":\n      return parent.operator === \"??\";\n    case \"??\":\n      return parent.operator !== \"??\";\n  }\n}\n\nexport function Identifier(\n  node: t.Identifier,\n  parent: t.Node,\n  tokenContext: number,\n  _inForInit: boolean,\n  getRawIdentifier: (node: t.Identifier) => string,\n): boolean {\n  const parentType = parent.type;\n  // 13.15.2 AssignmentExpression RS: Evaluation\n  // (fn) = function () {};\n  if (\n    node.extra?.parenthesized &&\n    parentType === \"AssignmentExpression\" &&\n    parent.left === node\n  ) {\n    const rightType = parent.right.type;\n    if (\n      (rightType === \"FunctionExpression\" || rightType === \"ClassExpression\") &&\n      parent.right.id == null\n    ) {\n      return true;\n    }\n  }\n\n  if (getRawIdentifier && getRawIdentifier(node) !== node.name) {\n    return false;\n  }\n\n  // Non-strict code allows the identifier `let`, but it cannot occur as-is in\n  // certain contexts to avoid ambiguity with contextual keyword `let`.\n  if (node.name === \"let\") {\n    // Some contexts only forbid `let [`, so check if the next token would\n    // be the left bracket of a computed member expression.\n    const isFollowedByBracket =\n      isMemberExpression(parent, {\n        object: node,\n        computed: true,\n      }) ||\n      isOptionalMemberExpression(parent, {\n        object: node,\n        computed: true,\n        optional: false,\n      });\n    if (\n      isFollowedByBracket &&\n      tokenContext &\n        (TokenContext.expressionStatement |\n          TokenContext.forHead |\n          TokenContext.forInHead)\n    ) {\n      return true;\n    }\n    return Boolean(tokenContext & TokenContext.forOfHead);\n  }\n\n  // ECMAScript specifically forbids a for-of loop from starting with the\n  // token sequence `for (async of`, because it would be ambiguous with\n  // `for (async of => {};;)`, so we need to add extra parentheses.\n  return (\n    node.name === \"async\" &&\n    isForOfStatement(parent, { left: node, await: false })\n  );\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_t","require","_index","isArrayTypeAnnotation","isBinaryExpression","isCallExpression","isForOfStatement","isIndexedAccessType","isMemberExpression","isObjectPattern","isOptionalMemberExpression","isYieldExpression","isStatement","PRECEDENCE","Map","getBinaryPrecedence","node","nodeType","get","operator","isTSTypeExpression","isClassExtendsClause","parent","parentType","type","superClass","hasPostfixPart","object","callee","tag","NullableTypeAnnotation","FunctionTypeAnnotation","tokenContext","Boolean","TokenContext","arrowFlowReturnType","UpdateExpression","needsParenBeforeExpressionBrace","expressionStatement","arrowBody","ObjectExpression","DoExpression","async","Binary","left","parentPos","nodePos","right","undefined","UnionTypeAnnotation","OptionalIndexedAccessType","objectType","TSAsExpression","TSUnionType","TSInferType","TSInstantiationExpression","typeParameters","BinaryExpression","inForStatementInit","SequenceExpression","property","YieldExpression","test","ClassExpression","exportDefault","UnaryLike","FunctionExpression","ConditionalExpression","OptionalMemberExpression","AssignmentExpression","LogicalExpression","Identifier","_inForInit","getRawIdentifier","_node$extra","extra","parenthesized","rightType","id","name","isFollowedByBracket","computed","optional","forHead","forInHead","forOfHead","await"],"sources":["../../src/node/parentheses.ts"],"sourcesContent":["import {\n  isArrayTypeAnnotation,\n  isBinaryExpression,\n  isCallExpression,\n  isForOfStatement,\n  isIndexedAccessType,\n  isMemberExpression,\n  isObjectPattern,\n  isOptionalMemberExpression,\n  isYieldExpression,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport { TokenContext } from \"./index.ts\";\n\nconst PRECEDENCE = new Map([\n  [\"||\", 0],\n  [\"??\", 0],\n  [\"|>\", 0],\n  [\"&&\", 1],\n  [\"|\", 2],\n  [\"^\", 3],\n  [\"&\", 4],\n  [\"==\", 5],\n  [\"===\", 5],\n  [\"!=\", 5],\n  [\"!==\", 5],\n  [\"<\", 6],\n  [\">\", 6],\n  [\"<=\", 6],\n  [\">=\", 6],\n  [\"in\", 6],\n  [\"instanceof\", 6],\n  [\">>\", 7],\n  [\"<<\", 7],\n  [\">>>\", 7],\n  [\"+\", 8],\n  [\"-\", 8],\n  [\"*\", 9],\n  [\"/\", 9],\n  [\"%\", 9],\n  [\"**\", 10],\n]);\n\nfunction getBinaryPrecedence(\n  node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n  nodeType: string,\n): number;\nfunction getBinaryPrecedence(\n  node: t.Node,\n  nodeType: string,\n): number | undefined;\nfunction getBinaryPrecedence(node: t.Node, nodeType: string) {\n  if (nodeType === \"BinaryExpression\" || nodeType === \"LogicalExpression\") {\n    return PRECEDENCE.get((node as t.Binary).operator);\n  }\n  if (nodeType === \"TSAsExpression\" || nodeType === \"TSSatisfiesExpression\") {\n    return PRECEDENCE.get(\"in\");\n  }\n}\n\nfunction isTSTypeExpression(nodeType: string) {\n  return (\n    nodeType === \"TSAsExpression\" ||\n    nodeType === \"TSSatisfiesExpression\" ||\n    nodeType === \"TSTypeAssertion\"\n  );\n}\n\nconst isClassExtendsClause = (\n  node: t.Node,\n  parent: t.Node,\n): parent is t.Class => {\n  const parentType = parent.type;\n  return (\n    (parentType === \"ClassDeclaration\" || parentType === \"ClassExpression\") &&\n    parent.superClass === node\n  );\n};\n\nconst hasPostfixPart = (node: t.Node, parent: t.Node) => {\n  const parentType = parent.type;\n  return (\n    ((parentType === \"MemberExpression\" ||\n      parentType === \"OptionalMemberExpression\") &&\n      parent.object === node) ||\n    ((parentType === \"CallExpression\" ||\n      parentType === \"OptionalCallExpression\" ||\n      parentType === \"NewExpression\") &&\n      parent.callee === node) ||\n    (parentType === \"TaggedTemplateExpression\" && parent.tag === node) ||\n    parentType === \"TSNonNullExpression\"\n  );\n};\n\nexport function NullableTypeAnnotation(\n  node: t.NullableTypeAnnotation,\n  parent: t.Node,\n): boolean {\n  return isArrayTypeAnnotation(parent);\n}\n\nexport function FunctionTypeAnnotation(\n  node: t.FunctionTypeAnnotation,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  const parentType = parent.type;\n  return (\n    // (() => A) | (() => B)\n    parentType === \"UnionTypeAnnotation\" ||\n    // (() => A) & (() => B)\n    parentType === \"IntersectionTypeAnnotation\" ||\n    // (() => A)[]\n    parentType === \"ArrayTypeAnnotation\" ||\n    Boolean(tokenContext & TokenContext.arrowFlowReturnType)\n  );\n}\n\nexport function UpdateExpression(\n  node: t.UpdateExpression,\n  parent: t.Node,\n): boolean {\n  return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);\n}\n\nfunction needsParenBeforeExpressionBrace(tokenContext: number) {\n  return Boolean(\n    tokenContext & (TokenContext.expressionStatement | TokenContext.arrowBody),\n  );\n}\n\nexport function ObjectExpression(\n  node: t.ObjectExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return needsParenBeforeExpressionBrace(tokenContext);\n}\n\nexport function DoExpression(\n  node: t.DoExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  // `async do` can start an expression statement\n  return (\n    !node.async && Boolean(tokenContext & TokenContext.expressionStatement)\n  );\n}\n\nexport function Binary(\n  node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n  parent: t.Node,\n): boolean | undefined {\n  const parentType = parent.type;\n  if (\n    node.type === \"BinaryExpression\" &&\n    node.operator === \"**\" &&\n    parentType === \"BinaryExpression\" &&\n    parent.operator === \"**\"\n  ) {\n    return parent.left === node;\n  }\n\n  if (isClassExtendsClause(node, parent)) {\n    return true;\n  }\n\n  if (\n    hasPostfixPart(node, parent) ||\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    parentType === \"AwaitExpression\"\n  ) {\n    return true;\n  }\n\n  const parentPos = getBinaryPrecedence(parent, parentType);\n  if (parentPos != null) {\n    const nodePos = getBinaryPrecedence(node, node.type);\n    if (\n      // Logical expressions with the same precedence don't need parens.\n      (parentPos === nodePos &&\n        parentType === \"BinaryExpression\" &&\n        parent.right === node) ||\n      parentPos > nodePos\n    ) {\n      return true;\n    }\n  }\n\n  return undefined;\n}\n\nexport function UnionTypeAnnotation(\n  node: t.UnionTypeAnnotation,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"ArrayTypeAnnotation\" ||\n    parentType === \"NullableTypeAnnotation\" ||\n    parentType === \"IntersectionTypeAnnotation\" ||\n    parentType === \"UnionTypeAnnotation\"\n  );\n}\n\nexport { UnionTypeAnnotation as IntersectionTypeAnnotation };\n\nexport function OptionalIndexedAccessType(\n  node: t.OptionalIndexedAccessType,\n  parent: t.Node,\n): boolean {\n  return isIndexedAccessType(parent) && parent.objectType === node;\n}\n\nexport function TSAsExpression(\n  node: t.TSAsExpression | t.TSSatisfiesExpression,\n  parent: t.Node,\n): boolean {\n  if (\n    (parent.type === \"AssignmentExpression\" ||\n      parent.type === \"AssignmentPattern\") &&\n    parent.left === node\n  ) {\n    return true;\n  }\n  if (\n    parent.type === \"BinaryExpression\" &&\n    (parent.operator === \"|\" || parent.operator === \"&\") &&\n    node === parent.left\n  ) {\n    return true;\n  }\n  return Binary(node, parent);\n}\n\nexport { TSAsExpression as TSSatisfiesExpression };\n\nexport { UnaryLike as TSTypeAssertion };\n\nexport function TSUnionType(node: t.TSUnionType, parent: t.Node): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"TSArrayType\" ||\n    parentType === \"TSOptionalType\" ||\n    parentType === \"TSIntersectionType\" ||\n    parentType === \"TSRestType\"\n  );\n}\n\nexport { TSUnionType as TSIntersectionType };\n\nexport function TSInferType(node: t.TSInferType, parent: t.Node): boolean {\n  const parentType = parent.type;\n  return parentType === \"TSArrayType\" || parentType === \"TSOptionalType\";\n}\n\nexport function TSInstantiationExpression(\n  node: t.TSInstantiationExpression,\n  parent: t.Node,\n) {\n  const parentType = parent.type;\n  return (\n    (parentType === \"CallExpression\" ||\n      parentType === \"OptionalCallExpression\" ||\n      parentType === \"NewExpression\" ||\n      parentType === \"TSInstantiationExpression\") &&\n    !!(process.env.BABEL_8_BREAKING\n      ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n        parent.typeArguments\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        parent.typeParameters)\n  );\n}\n\nexport function BinaryExpression(\n  node: t.BinaryExpression,\n  parent: t.Node,\n  tokenContext: unknown,\n  inForStatementInit: boolean,\n): boolean {\n  // for ((1 in []);;);\n  // for (var x = (1 in []) in 2);\n  return node.operator === \"in\" && inForStatementInit;\n}\n\nexport function SequenceExpression(\n  node: t.SequenceExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"SequenceExpression\" ||\n    parentType === \"ParenthesizedExpression\" ||\n    (parentType === \"MemberExpression\" && parent.property === node) ||\n    (parentType === \"OptionalMemberExpression\" && parent.property === node) ||\n    parentType === \"TemplateLiteral\"\n  ) {\n    return false;\n  }\n  if (parentType === \"ClassDeclaration\") {\n    return true;\n  }\n  if (parentType === \"ForOfStatement\") {\n    return parent.right === node;\n  }\n  if (parentType === \"ExportDefaultDeclaration\") {\n    return true;\n  }\n\n  return !isStatement(parent);\n}\n\nexport function YieldExpression(\n  node: t.YieldExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"BinaryExpression\" ||\n    parentType === \"LogicalExpression\" ||\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    hasPostfixPart(node, parent) ||\n    (parentType === \"AwaitExpression\" && isYieldExpression(node)) ||\n    (parentType === \"ConditionalExpression\" && node === parent.test) ||\n    isClassExtendsClause(node, parent) ||\n    isTSTypeExpression(parentType)\n  );\n}\n\nexport { YieldExpression as AwaitExpression };\n\nexport function ClassExpression(\n  node: t.ClassExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return Boolean(\n    tokenContext &\n      (TokenContext.expressionStatement | TokenContext.exportDefault),\n  );\n}\n\nexport function UnaryLike(\n  node:\n    | t.UnaryLike\n    | t.TSTypeAssertion\n    | t.ArrowFunctionExpression\n    | t.ConditionalExpression\n    | t.AssignmentExpression,\n  parent: t.Node,\n): boolean {\n  return (\n    hasPostfixPart(node, parent) ||\n    (isBinaryExpression(parent) &&\n      parent.operator === \"**\" &&\n      parent.left === node) ||\n    isClassExtendsClause(node, parent)\n  );\n}\n\nexport function FunctionExpression(\n  node: t.FunctionExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return Boolean(\n    tokenContext &\n      (TokenContext.expressionStatement | TokenContext.exportDefault),\n  );\n}\n\nexport function ConditionalExpression(\n  node:\n    | t.ConditionalExpression\n    | t.ArrowFunctionExpression\n    | t.AssignmentExpression,\n  parent?: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    parentType === \"BinaryExpression\" ||\n    parentType === \"LogicalExpression\" ||\n    (parentType === \"ConditionalExpression\" && parent.test === node) ||\n    parentType === \"AwaitExpression\" ||\n    isTSTypeExpression(parentType)\n  ) {\n    return true;\n  }\n\n  return UnaryLike(node, parent);\n}\n\nexport { ConditionalExpression as ArrowFunctionExpression };\n\nexport function OptionalMemberExpression(\n  node: t.OptionalMemberExpression,\n  parent: t.Node,\n): boolean {\n  return (\n    (isCallExpression(parent) && parent.callee === node) ||\n    (isMemberExpression(parent) && parent.object === node)\n  );\n}\n\nexport { OptionalMemberExpression as OptionalCallExpression };\n\nexport function AssignmentExpression(\n  node: t.AssignmentExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  if (\n    needsParenBeforeExpressionBrace(tokenContext) &&\n    isObjectPattern(node.left)\n  ) {\n    return true;\n  } else {\n    return ConditionalExpression(node, parent);\n  }\n}\n\nexport function LogicalExpression(\n  node: t.LogicalExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (isTSTypeExpression(parentType)) return true;\n  if (parentType !== \"LogicalExpression\") return false;\n  switch (node.operator) {\n    case \"||\":\n      return parent.operator === \"??\" || parent.operator === \"&&\";\n    case \"&&\":\n      return parent.operator === \"??\";\n    case \"??\":\n      return parent.operator !== \"??\";\n  }\n}\n\nexport function Identifier(\n  node: t.Identifier,\n  parent: t.Node,\n  tokenContext: number,\n  _inForInit: boolean,\n  getRawIdentifier: (node: t.Identifier) => string,\n): boolean {\n  const parentType = parent.type;\n  // 13.15.2 AssignmentExpression RS: Evaluation\n  // (fn) = function () {};\n  if (\n    node.extra?.parenthesized &&\n    parentType === \"AssignmentExpression\" &&\n    parent.left === node\n  ) {\n    const rightType = parent.right.type;\n    if (\n      (rightType === \"FunctionExpression\" || rightType === \"ClassExpression\") &&\n      parent.right.id == null\n    ) {\n      return true;\n    }\n  }\n\n  if (getRawIdentifier && getRawIdentifier(node) !== node.name) {\n    return false;\n  }\n\n  // Non-strict code allows the identifier `let`, but it cannot occur as-is in\n  // certain contexts to avoid ambiguity with contextual keyword `let`.\n  if (node.name === \"let\") {\n    // Some contexts only forbid `let [`, so check if the next token would\n    // be the left bracket of a computed member expression.\n    const isFollowedByBracket =\n      isMemberExpression(parent, {\n        object: node,\n        computed: true,\n      }) ||\n      isOptionalMemberExpression(parent, {\n        object: node,\n        computed: true,\n        optional: false,\n      });\n    if (\n      isFollowedByBracket &&\n      tokenContext &\n        (TokenContext.expressionStatement |\n          TokenContext.forHead |\n          TokenContext.forInHead)\n    ) {\n      return true;\n    }\n    return Boolean(tokenContext & TokenContext.forOfHead);\n  }\n\n  // ECMAScript specifically forbids a for-of loop from starting with the\n  // token sequence `for (async of`, because it would be ambiguous with\n  // `for (async of => {};;)`, so we need to add extra parentheses.\n  return (\n    node.name === \"async\" &&\n    isForOfStatement(parent, { left: node, await: false })\n  );\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/lib/printer.js
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/printer.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/printer.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,4 +10,5 @@
 var _tokenMap = require("./token-map.js");
 var generatorFunctions = require("./generators/index.js");
+var _deprecated = require("./generators/deprecated.js");
 const {
   isExpression,
@@ -16,5 +17,5 @@
   isClassBody,
   isTSInterfaceBody,
-  isTSEnumDeclaration
+  isTSEnumMember
 } = _t;
 const SCIENTIFIC_NOTATION = /e/i;
@@ -50,4 +51,6 @@
     this.tokenMap = null;
     this._boundGetRawIdentifier = this._getRawIdentifier.bind(this);
+    this._printSemicolonBeforeNextNode = -1;
+    this._printSemicolonBeforeNextToken = -1;
     this.format = format;
     this._tokens = tokens;
@@ -114,4 +117,5 @@
       if (node.start != null && node.end != null) {
         if (!this.tokenMap.endMatches(node, ";")) {
+          this._printSemicolonBeforeNextNode = this._buf.getCurrentLine();
           return;
         }
@@ -151,8 +155,9 @@
     this.tokenContext = 0;
     this._maybePrintInnerComments(str);
+    this._maybeAddAuxComment();
+    if (this.tokenMap) this._catchUpToCurrentToken(str);
     if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) {
       this._space();
     }
-    this._maybeAddAuxComment();
     this._append(str, false);
     this._endsWithWord = true;
@@ -173,4 +178,6 @@
     this.tokenContext = 0;
     this._maybePrintInnerComments(str, occurrenceCount);
+    this._maybeAddAuxComment();
+    if (this.tokenMap) this._catchUpToCurrentToken(str, occurrenceCount);
     const lastChar = this.getLastChar();
     const strFirst = str.charCodeAt(0);
@@ -178,16 +185,17 @@
       this._space();
     }
-    this._maybeAddAuxComment();
-    this._append(str, maybeNewline, occurrenceCount);
+    this._append(str, maybeNewline);
     this._noLineTerminator = false;
   }
   tokenChar(char) {
     this.tokenContext = 0;
-    this._maybePrintInnerComments(String.fromCharCode(char));
+    const str = String.fromCharCode(char);
+    this._maybePrintInnerComments(str);
+    this._maybeAddAuxComment();
+    if (this.tokenMap) this._catchUpToCurrentToken(str);
     const lastChar = this.getLastChar();
     if (char === 43 && lastChar === 43 || char === 45 && lastChar === 45 || char === 46 && this._endsWithInteger) {
       this._space();
     }
-    this._maybeAddAuxComment();
     this._appendChar(char);
     this._noLineTerminator = false;
@@ -251,9 +259,17 @@
     this._queue(10);
   }
-  _append(str, maybeNewline, occurrenceCount = 0) {
-    if (this.tokenMap) {
-      const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount);
-      if (token) this._catchUpTo(token.loc.start);
-    }
+  _catchUpToCurrentToken(str, occurrenceCount = 0) {
+    const token = this.tokenMap.findMatching(this._currentNode, str, occurrenceCount);
+    if (token) this._catchUpTo(token.loc.start);
+    if (this._printSemicolonBeforeNextToken !== -1 && this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()) {
+      this._buf.appendChar(59);
+      this._endsWithWord = false;
+      this._endsWithInteger = false;
+      this._endsWithDiv = false;
+    }
+    this._printSemicolonBeforeNextToken = -1;
+    this._printSemicolonBeforeNextNode = -1;
+  }
+  _append(str, maybeNewline) {
     this._maybeIndent(str.charCodeAt(0));
     this._buf.append(str, maybeNewline);
@@ -263,8 +279,4 @@
   }
   _appendChar(char) {
-    if (this.tokenMap) {
-      const token = this.tokenMap.findMatching(this._currentNode, String.fromCharCode(char));
-      if (token) this._catchUpTo(token.loc.start);
-    }
     this._maybeIndent(char);
     this._buf.appendChar(char);
@@ -350,4 +362,7 @@
     const parent = this._currentNode;
     this._currentNode = node;
+    if (this.tokenMap) {
+      this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode;
+    }
     const oldInAux = this._insideAux;
     this._insideAux = node.loc == null;
@@ -460,9 +475,6 @@
     }
   }
-  printJoin(nodes, opts = {}) {
+  printJoin(nodes, statement, indent, separator, printTrailingSeparator, addNewlines, iterator, trailingCommentsLineOffset) {
     if (!(nodes != null && nodes.length)) return;
-    let {
-      indent
-    } = opts;
     if (indent == null && this.format.retainLines) {
       var _nodes$0$loc;
@@ -474,19 +486,19 @@
     if (indent) this.indent();
     const newlineOpts = {
-      addNewlines: opts.addNewlines,
+      addNewlines: addNewlines,
       nextNodeStartLine: 0
     };
-    const separator = opts.separator ? opts.separator.bind(this) : null;
+    const boundSeparator = separator == null ? void 0 : separator.bind(this);
     const len = nodes.length;
     for (let i = 0; i < len; i++) {
       const node = nodes[i];
       if (!node) continue;
-      if (opts.statement) this._printNewline(i === 0, newlineOpts);
-      this.print(node, undefined, opts.trailingCommentsLineOffset || 0);
-      opts.iterator == null || opts.iterator(node, i);
-      if (separator != null) {
-        if (i < len - 1) separator(i, false);else if (opts.printTrailingSeparator) separator(i, true);
-      }
-      if (opts.statement) {
+      if (statement) this._printNewline(i === 0, newlineOpts);
+      this.print(node, undefined, trailingCommentsLineOffset || 0);
+      iterator == null || iterator(node, i);
+      if (boundSeparator != null) {
+        if (i < len - 1) boundSeparator(i, false);else if (printTrailingSeparator) boundSeparator(i, true);
+      }
+      if (statement) {
         var _node$trailingComment2;
         if (!((_node$trailingComment2 = node.trailingComments) != null && _node$trailingComment2.length)) {
@@ -560,15 +572,9 @@
     this._indentInnerComments = false;
   }
-  printSequence(nodes, opts = {}) {
-    var _opts$indent;
-    opts.statement = true;
-    (_opts$indent = opts.indent) != null ? _opts$indent : opts.indent = false;
-    this.printJoin(nodes, opts);
-  }
-  printList(items, opts = {}) {
-    if (opts.separator == null) {
-      opts.separator = commaSeparator;
-    }
-    this.printJoin(items, opts);
+  printSequence(nodes, indent, trailingCommentsLineOffset, addNewlines) {
+    this.printJoin(nodes, true, indent != null ? indent : false, undefined, undefined, addNewlines, undefined, trailingCommentsLineOffset);
+  }
+  printList(items, printTrailingSeparator, statement, indent, separator, iterator) {
+    this.printJoin(items, statement, indent, separator != null ? separator : commaSeparator, printTrailingSeparator, undefined, iterator);
   }
   shouldPrintTrailingComma(listEnd) {
@@ -656,6 +662,19 @@
     }
     if (this._endsWithDiv) this._space();
-    this.source("start", comment.loc);
-    this._append(val, isBlockComment);
+    if (this.tokenMap) {
+      const {
+        _printSemicolonBeforeNextToken,
+        _printSemicolonBeforeNextNode
+      } = this;
+      this._printSemicolonBeforeNextToken = -1;
+      this._printSemicolonBeforeNextNode = -1;
+      this.source("start", comment.loc);
+      this._append(val, isBlockComment);
+      this._printSemicolonBeforeNextNode = _printSemicolonBeforeNextNode;
+      this._printSemicolonBeforeNextToken = _printSemicolonBeforeNextToken;
+    } else {
+      this.source("start", comment.loc);
+      this._append(val, isBlockComment);
+    }
     if (!isBlockComment && !noLineTerminator) {
       this.newline(1, true);
@@ -722,5 +741,5 @@
         if (len === 1) {
           const singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value);
-          const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumDeclaration(parent);
+          const shouldSkipNewline = singleLine && !isStatement(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumMember(node);
           if (type === 0) {
             this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction(parent, {
@@ -746,5 +765,5 @@
 Object.assign(Printer.prototype, generatorFunctions);
 {
-  Printer.prototype.Noop = function Noop() {};
+  (0, _deprecated.addDeprecatedGenerators)(Printer);
 }
 var _default = exports.default = Printer;
Index: imaps-frontend/node_modules/@babel/generator/lib/printer.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/generator/lib/printer.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/lib/printer.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_buffer","require","n","_t","_tokenMap","generatorFunctions","isExpression","isFunction","isStatement","isClassBody","isTSInterfaceBody","isTSEnumDeclaration","SCIENTIFIC_NOTATION","ZERO_DECIMAL_INTEGER","HAS_NEWLINE","HAS_NEWLINE_OR_BlOCK_COMMENT_END","commentIsNewline","c","type","test","value","needsParens","Printer","constructor","format","map","tokens","originalCode","inForStatementInit","tokenContext","_tokens","_originalCode","_currentNode","_indent","_indentRepeat","_insideAux","_noLineTerminator","_noLineTerminatorAfterNode","_printAuxAfterOnNextUserNode","_printedComments","Set","_endsWithInteger","_endsWithWord","_endsWithDiv","_lastCommentLine","_endsWithInnerRaw","_indentInnerComments","tokenMap","_boundGetRawIdentifier","_getRawIdentifier","bind","indent","style","length","_inputMap","_buf","Buffer","enterForStatementInit","enterDelimited","oldInForStatementInit","oldNoLineTerminatorAfterNode","generate","ast","preserveFormat","TokenMap","print","_maybeAddAuxComment","get","compact","concise","dedent","semicolon","force","_appendChar","node","start","end","endMatches","indexes","getIndexes","_catchUpTo","loc","_queue","rightBrace","minified","removeLastSemicolon","sourceWithOffset","token","rightParens","space","_space","hasContent","lastCp","getLastChar","word","str","noLineTerminatorAfter","_maybePrintInnerComments","charCodeAt","_append","number","isNonDecimalLiteral","secondChar","Number","isInteger","maybeNewline","occurrenceCount","lastChar","strFirst","tokenChar","char","String","fromCharCode","newline","i","retainLines","getNewlineCount","j","_newline","endsWith","endsWithCharAndNewline","removeTrailingNewline","exactSource","cb","_catchUp","source","prop","columnOffset","sourceIdentifierName","identifierName","pos","_canMarkIdName","sourcePosition","_sourcePosition","identifierNamePos","findMatching","_maybeIndent","append","appendChar","queue","firstChar","queueIndentation","_getIndent","_shouldIndent","catchUp","line","count","getCurrentLine","column","index","spacesCount","getCurrentColumn","spaces","slice","replace","repeat","printTerminatorless","trailingCommentsLineOffset","_node$extra","_node$leadingComments","_node$leadingComments2","nodeType","oldConcise","_compact","printMethod","undefined","ReferenceError","JSON","stringify","name","parent","oldInAux","parenthesized","extra","shouldPrintParens","retainFunctionParens","leadingComments","parentType","callee","indentParenthesized","some","oldInForStatementInitWasTrue","isLastChild","_node$trailingComment","trailingComments","_printLeadingComments","_printTrailingComments","enteredPositionlessNode","_printAuxBeforeComment","_printAuxAfterComment","comment","auxiliaryCommentBefore","_printComment","auxiliaryCommentAfter","getPossibleRaw","raw","rawValue","printJoin","nodes","opts","_nodes$0$loc","startLine","newlineOpts","addNewlines","nextNodeStartLine","separator","len","statement","_printNewline","iterator","printTrailingSeparator","_node$trailingComment2","_nextNode$loc","nextNode","printAndIndentOnComments","printBlock","body","lineOffset","innerComments","_printComments","comments","nextTokenStr","nextTokenOccurrenceCount","_this$tokenMap","printInnerComments","nextToken","hasSpace","printedCommentsCount","size","noIndentInnerCommentsHere","printSequence","_opts$indent","printList","items","commaSeparator","shouldPrintTrailingComma","listEnd","listEndIndex","findLastIndex","matchesOriginal","newLine","lastCommentLine","offset","_shouldPrintComment","ignore","has","commentTok","find","add","shouldPrintComment","skipNewLines","noLineTerminator","isBlockComment","printNewLines","lastCharCode","val","adjustMultilineComment","_comment$loc","newlineRegex","RegExp","indentSize","nodeLoc","hasLoc","nodeStartLine","nodeEndLine","lastLine","leadingCommentNewline","shouldPrint","commentStartLine","commentEndLine","Math","max","min","singleLine","shouldSkipNewline","properties","Object","assign","prototype","Noop","_default","exports","default","last"],"sources":["../src/printer.ts"],"sourcesContent":["import Buffer, { type Pos } from \"./buffer.ts\";\nimport type { Loc } from \"./buffer.ts\";\nimport * as n from \"./node/index.ts\";\nimport type * as t from \"@babel/types\";\nimport {\n  isExpression,\n  isFunction,\n  isStatement,\n  isClassBody,\n  isTSInterfaceBody,\n  isTSEnumDeclaration,\n} from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\n\nimport { TokenMap } from \"./token-map.ts\";\nimport type { GeneratorOptions } from \"./index.ts\";\nimport * as generatorFunctions from \"./generators/index.ts\";\nimport type SourceMap from \"./source-map.ts\";\nimport type { TraceMap } from \"@jridgewell/trace-mapping\";\nimport type { Token } from \"@babel/parser\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nconst SCIENTIFIC_NOTATION = /e/i;\nconst ZERO_DECIMAL_INTEGER = /\\.0+$/;\nconst HAS_NEWLINE = /[\\n\\r\\u2028\\u2029]/;\nconst HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\\n\\r\\u2028\\u2029]|\\*\\//;\n\nfunction commentIsNewline(c: t.Comment) {\n  return c.type === \"CommentLine\" || HAS_NEWLINE.test(c.value);\n}\n\nconst { needsParens } = n;\n\nconst enum COMMENT_TYPE {\n  LEADING,\n  INNER,\n  TRAILING,\n}\n\nconst enum COMMENT_SKIP_NEWLINE {\n  DEFAULT,\n  ALL,\n  LEADING,\n  TRAILING,\n}\n\nconst enum PRINT_COMMENT_HINT {\n  SKIP,\n  ALLOW,\n  DEFER,\n}\n\nexport type Format = {\n  shouldPrintComment: (comment: string) => boolean;\n  preserveFormat: boolean;\n  retainLines: boolean;\n  retainFunctionParens: boolean;\n  comments: boolean;\n  auxiliaryCommentBefore: string;\n  auxiliaryCommentAfter: string;\n  compact: boolean | \"auto\";\n  minified: boolean;\n  concise: boolean;\n  indent: {\n    adjustMultilineComment: boolean;\n    style: string;\n  };\n  /**\n   * @deprecated Removed in Babel 8, syntax type is always 'hash'\n   */\n  recordAndTupleSyntaxType?: GeneratorOptions[\"recordAndTupleSyntaxType\"];\n  jsescOption: jsescOptions;\n  /**\n   * @deprecated Removed in Babel 8, use `jsescOption` instead\n   */\n  jsonCompatibleStrings?: boolean;\n  /**\n   * For use with the Hack-style pipe operator.\n   * Changes what token is used for pipe bodies’ topic references.\n   */\n  topicToken?: GeneratorOptions[\"topicToken\"];\n  /**\n   * @deprecated Removed in Babel 8\n   */\n  decoratorsBeforeExport?: boolean;\n  /**\n   * The import attributes syntax style:\n   * - \"with\"        : `import { a } from \"b\" with { type: \"json\" };`\n   * - \"assert\"      : `import { a } from \"b\" assert { type: \"json\" };`\n   * - \"with-legacy\" : `import { a } from \"b\" with type: \"json\";`\n   */\n  importAttributesKeyword?: \"with\" | \"assert\" | \"with-legacy\";\n};\n\ninterface AddNewlinesOptions {\n  addNewlines(leading: boolean, node: t.Node): number;\n  nextNodeStartLine: number;\n}\n\ninterface PrintSequenceOptions extends Partial<AddNewlinesOptions> {\n  statement?: boolean;\n  indent?: boolean;\n  trailingCommentsLineOffset?: number;\n}\n\ninterface PrintListOptions {\n  separator?: (this: Printer, occurrenceCount: number, last: boolean) => void;\n  iterator?: (node: t.Node, index: number) => void;\n  statement?: boolean;\n  indent?: boolean;\n  printTrailingSeparator?: boolean;\n}\n\nexport type PrintJoinOptions = PrintListOptions & PrintSequenceOptions;\nclass Printer {\n  constructor(\n    format: Format,\n    map: SourceMap,\n    tokens?: Token[],\n    originalCode?: string,\n  ) {\n    this.format = format;\n\n    this._tokens = tokens;\n    this._originalCode = originalCode;\n\n    this._indentRepeat = format.indent.style.length;\n\n    this._inputMap = map?._inputMap;\n\n    this._buf = new Buffer(map, format.indent.style[0]);\n  }\n  declare _inputMap: TraceMap;\n\n  declare format: Format;\n\n  inForStatementInit: boolean = false;\n  enterForStatementInit() {\n    if (this.inForStatementInit) return () => {};\n    this.inForStatementInit = true;\n    return () => {\n      this.inForStatementInit = false;\n    };\n  }\n\n  enterDelimited() {\n    const oldInForStatementInit = this.inForStatementInit;\n    const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n    if (\n      oldInForStatementInit === false &&\n      oldNoLineTerminatorAfterNode === null\n    ) {\n      return () => {};\n    }\n    this.inForStatementInit = false;\n    this._noLineTerminatorAfterNode = null;\n    return () => {\n      this.inForStatementInit = oldInForStatementInit;\n      this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n    };\n  }\n\n  tokenContext: number = 0;\n\n  _tokens: Token[] = null;\n  _originalCode: string | null = null;\n\n  declare _buf: Buffer;\n  _currentNode: t.Node = null;\n  _indent: number = 0;\n  _indentRepeat: number = 0;\n  _insideAux: boolean = false;\n  _noLineTerminator: boolean = false;\n  _noLineTerminatorAfterNode: t.Node | null = null;\n  _printAuxAfterOnNextUserNode: boolean = false;\n  _printedComments = new Set<t.Comment>();\n  _endsWithInteger = false;\n  _endsWithWord = false;\n  _endsWithDiv = false;\n  _lastCommentLine = 0;\n  _endsWithInnerRaw: boolean = false;\n  _indentInnerComments: boolean = true;\n  tokenMap: TokenMap = null;\n\n  _boundGetRawIdentifier = this._getRawIdentifier.bind(this);\n\n  generate(ast: t.Node) {\n    if (this.format.preserveFormat) {\n      this.tokenMap = new TokenMap(ast, this._tokens, this._originalCode);\n    }\n    this.print(ast);\n    this._maybeAddAuxComment();\n\n    return this._buf.get();\n  }\n\n  /**\n   * Increment indent size.\n   */\n\n  indent(): void {\n    const { format } = this;\n    if (format.preserveFormat || format.compact || format.concise) {\n      return;\n    }\n\n    this._indent++;\n  }\n\n  /**\n   * Decrement indent size.\n   */\n\n  dedent(): void {\n    const { format } = this;\n    if (format.preserveFormat || format.compact || format.concise) {\n      return;\n    }\n\n    this._indent--;\n  }\n\n  /**\n   * Add a semicolon to the buffer.\n   */\n\n  semicolon(force: boolean = false): void {\n    this._maybeAddAuxComment();\n    if (force) {\n      this._appendChar(charCodes.semicolon);\n      this._noLineTerminator = false;\n      return;\n    }\n    if (this.tokenMap) {\n      const node = this._currentNode;\n      if (node.start != null && node.end != null) {\n        if (!this.tokenMap.endMatches(node, \";\")) {\n          // no semicolon\n          return;\n        }\n        const indexes = this.tokenMap.getIndexes(this._currentNode);\n        this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start);\n      }\n    }\n    this._queue(charCodes.semicolon);\n    this._noLineTerminator = false;\n  }\n\n  /**\n   * Add a right brace to the buffer.\n   */\n\n  rightBrace(node: t.Node): void {\n    if (this.format.minified) {\n      this._buf.removeLastSemicolon();\n    }\n    this.sourceWithOffset(\"end\", node.loc, -1);\n    this.token(\"}\");\n  }\n\n  rightParens(node: t.Node): void {\n    this.sourceWithOffset(\"end\", node.loc, -1);\n    this.token(\")\");\n  }\n\n  /**\n   * Add a space to the buffer unless it is compact.\n   */\n\n  space(force: boolean = false): void {\n    const { format } = this;\n    if (format.compact || format.preserveFormat) return;\n\n    if (force) {\n      this._space();\n    } else if (this._buf.hasContent()) {\n      const lastCp = this.getLastChar();\n      if (lastCp !== charCodes.space && lastCp !== charCodes.lineFeed) {\n        this._space();\n      }\n    }\n  }\n\n  /**\n   * Writes a token that can't be safely parsed without taking whitespace into account.\n   */\n\n  word(str: string, noLineTerminatorAfter: boolean = false): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(str);\n\n    // prevent concatenating words and creating // comment out of division and regex\n    if (\n      this._endsWithWord ||\n      (this._endsWithDiv && str.charCodeAt(0) === charCodes.slash)\n    ) {\n      this._space();\n    }\n\n    this._maybeAddAuxComment();\n    this._append(str, false);\n\n    this._endsWithWord = true;\n    this._noLineTerminator = noLineTerminatorAfter;\n  }\n\n  /**\n   * Writes a number token so that we can validate if it is an integer.\n   */\n\n  number(str: string, number?: number): void {\n    // const NON_DECIMAL_LITERAL = /^0[box]/;\n    function isNonDecimalLiteral(str: string) {\n      if (str.length > 2 && str.charCodeAt(0) === charCodes.digit0) {\n        const secondChar = str.charCodeAt(1);\n        return (\n          secondChar === charCodes.lowercaseB ||\n          secondChar === charCodes.lowercaseO ||\n          secondChar === charCodes.lowercaseX\n        );\n      }\n      return false;\n    }\n    this.word(str);\n\n    // Integer tokens need special handling because they cannot have '.'s inserted\n    // immediately after them.\n    this._endsWithInteger =\n      Number.isInteger(number) &&\n      !isNonDecimalLiteral(str) &&\n      !SCIENTIFIC_NOTATION.test(str) &&\n      !ZERO_DECIMAL_INTEGER.test(str) &&\n      str.charCodeAt(str.length - 1) !== charCodes.dot;\n  }\n\n  /**\n   * Writes a simple token.\n   *\n   * @param {string} str The string to append.\n   * @param {boolean} [maybeNewline=false] Wether `str` might potentially\n   *    contain a line terminator or not.\n   * @param {number} [occurrenceCount=0] The occurrence count of this token in\n   *    the current node. This is used when printing in `preserveFormat` mode,\n   *    to know which token we should map to (for example, to disambiguate the\n   *    commas in an array literal).\n   */\n  token(str: string, maybeNewline = false, occurrenceCount = 0): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(str, occurrenceCount);\n\n    const lastChar = this.getLastChar();\n    const strFirst = str.charCodeAt(0);\n    if (\n      (lastChar === charCodes.exclamationMark &&\n        // space is mandatory to avoid outputting <!--\n        // http://javascript.spec.whatwg.org/#comment-syntax\n        (str === \"--\" ||\n          // Needs spaces to avoid changing a! == 0 to a!== 0\n          strFirst === charCodes.equalsTo)) ||\n      // Need spaces for operators of the same kind to avoid: `a+++b`\n      (strFirst === charCodes.plusSign && lastChar === charCodes.plusSign) ||\n      (strFirst === charCodes.dash && lastChar === charCodes.dash) ||\n      // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n      (strFirst === charCodes.dot && this._endsWithInteger)\n    ) {\n      this._space();\n    }\n\n    this._maybeAddAuxComment();\n    this._append(str, maybeNewline, occurrenceCount);\n    this._noLineTerminator = false;\n  }\n\n  tokenChar(char: number): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(String.fromCharCode(char));\n\n    const lastChar = this.getLastChar();\n    if (\n      // Need spaces for operators of the same kind to avoid: `a+++b`\n      (char === charCodes.plusSign && lastChar === charCodes.plusSign) ||\n      (char === charCodes.dash && lastChar === charCodes.dash) ||\n      // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n      (char === charCodes.dot && this._endsWithInteger)\n    ) {\n      this._space();\n    }\n\n    this._maybeAddAuxComment();\n    this._appendChar(char);\n    this._noLineTerminator = false;\n  }\n\n  /**\n   * Add a newline (or many newlines), maintaining formatting.\n   * This function checks the number of newlines in the queue and subtracts them.\n   * It currently has some limitations.\n   * @see {Buffer#getNewlineCount}\n   */\n  newline(i: number = 1, force?: boolean): void {\n    if (i <= 0) return;\n\n    if (!force) {\n      if (this.format.retainLines || this.format.compact) return;\n\n      if (this.format.concise) {\n        this.space();\n        return;\n      }\n    }\n\n    if (i > 2) i = 2; // Max two lines\n\n    i -= this._buf.getNewlineCount();\n\n    for (let j = 0; j < i; j++) {\n      this._newline();\n    }\n\n    return;\n  }\n\n  endsWith(char: number): boolean {\n    return this.getLastChar() === char;\n  }\n\n  getLastChar(): number {\n    return this._buf.getLastChar();\n  }\n\n  endsWithCharAndNewline(): number {\n    return this._buf.endsWithCharAndNewline();\n  }\n\n  removeTrailingNewline(): void {\n    this._buf.removeTrailingNewline();\n  }\n\n  exactSource(loc: Loc | undefined, cb: () => void) {\n    if (!loc) {\n      cb();\n      return;\n    }\n\n    this._catchUp(\"start\", loc);\n\n    this._buf.exactSource(loc, cb);\n  }\n\n  source(prop: \"start\" | \"end\", loc: Loc | undefined): void {\n    if (!loc) return;\n\n    this._catchUp(prop, loc);\n\n    this._buf.source(prop, loc);\n  }\n\n  sourceWithOffset(\n    prop: \"start\" | \"end\",\n    loc: Loc | undefined,\n    columnOffset: number,\n  ): void {\n    if (!loc || this.format.preserveFormat) return;\n\n    this._catchUp(prop, loc);\n\n    this._buf.sourceWithOffset(prop, loc, columnOffset);\n  }\n\n  sourceIdentifierName(identifierName: string, pos?: Pos): void {\n    if (!this._buf._canMarkIdName) return;\n\n    const sourcePosition = this._buf._sourcePosition;\n    sourcePosition.identifierNamePos = pos;\n    sourcePosition.identifierName = identifierName;\n  }\n\n  _space(): void {\n    this._queue(charCodes.space);\n  }\n\n  _newline(): void {\n    this._queue(charCodes.lineFeed);\n  }\n\n  _append(\n    str: string,\n    maybeNewline: boolean,\n    occurrenceCount: number = 0,\n  ): void {\n    if (this.tokenMap) {\n      const token = this.tokenMap.findMatching(\n        this._currentNode,\n        str,\n        occurrenceCount,\n      );\n      if (token) this._catchUpTo(token.loc.start);\n    }\n\n    this._maybeIndent(str.charCodeAt(0));\n\n    this._buf.append(str, maybeNewline);\n\n    // callers are expected to then set these to `true` when needed\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n    this._endsWithDiv = false;\n  }\n\n  _appendChar(char: number): void {\n    if (this.tokenMap) {\n      const token = this.tokenMap.findMatching(\n        this._currentNode,\n        String.fromCharCode(char),\n      );\n      if (token) this._catchUpTo(token.loc.start);\n    }\n\n    this._maybeIndent(char);\n\n    this._buf.appendChar(char);\n\n    // callers are expected to then set these to `true` when needed\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n    this._endsWithDiv = false;\n  }\n\n  _queue(char: number) {\n    this._maybeIndent(char);\n\n    this._buf.queue(char);\n\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n  }\n\n  _maybeIndent(firstChar: number): void {\n    // we've got a newline before us so prepend on the indentation\n    if (\n      this._indent &&\n      firstChar !== charCodes.lineFeed &&\n      this.endsWith(charCodes.lineFeed)\n    ) {\n      this._buf.queueIndentation(this._getIndent());\n    }\n  }\n\n  _shouldIndent(firstChar: number) {\n    // we've got a newline before us so prepend on the indentation\n    if (\n      this._indent &&\n      firstChar !== charCodes.lineFeed &&\n      this.endsWith(charCodes.lineFeed)\n    ) {\n      return true;\n    }\n  }\n\n  catchUp(line: number) {\n    if (!this.format.retainLines) return;\n\n    // catch up to this nodes newline if we're behind\n    const count = line - this._buf.getCurrentLine();\n\n    for (let i = 0; i < count; i++) {\n      this._newline();\n    }\n  }\n\n  _catchUp(prop: \"start\" | \"end\", loc?: Loc) {\n    const { format } = this;\n    if (!format.preserveFormat) {\n      if (format.retainLines && loc?.[prop]) {\n        this.catchUp(loc[prop].line);\n      }\n      return;\n    }\n\n    // catch up to this nodes newline if we're behind\n    const pos = loc?.[prop];\n    if (pos != null) this._catchUpTo(pos);\n  }\n\n  _catchUpTo({ line, column, index }: Pos) {\n    const count = line - this._buf.getCurrentLine();\n    if (count > 0 && this._noLineTerminator) {\n      // We cannot inject new lines when _noLineTemrinator is set\n      // to `true`, or we would generate invalid code.\n      return;\n    }\n\n    for (let i = 0; i < count; i++) {\n      this._newline();\n    }\n\n    const spacesCount =\n      count > 0 ? column : column - this._buf.getCurrentColumn();\n    if (spacesCount > 0) {\n      const spaces = this._originalCode\n        ? this._originalCode\n            .slice(index - spacesCount, index)\n            // https://tc39.es/ecma262/#sec-white-space\n            .replace(/[^\\t\\v\\f\\uFEFF\\p{Space_Separator}]/gu, \" \")\n        : \" \".repeat(spacesCount);\n      this._append(spaces, false);\n    }\n  }\n\n  /**\n   * Get the current indent.\n   */\n\n  _getIndent(): number {\n    return this._indentRepeat * this._indent;\n  }\n\n  printTerminatorless(node: t.Node) {\n    /**\n     * Set some state that will be modified if a newline has been inserted before any\n     * non-space characters.\n     *\n     * This is to prevent breaking semantics for terminatorless separator nodes. eg:\n     *\n     *   return foo;\n     *\n     * returns `foo`. But if we do:\n     *\n     *   return\n     *   foo;\n     *\n     *  `undefined` will be returned and not `foo` due to the terminator.\n     */\n    this._noLineTerminator = true;\n    this.print(node);\n  }\n\n  print(\n    node: t.Node | null,\n    noLineTerminatorAfter?: boolean,\n    // trailingCommentsLineOffset also used to check if called from printJoin\n    // it will be ignored if `noLineTerminatorAfter||this._noLineTerminator`\n    trailingCommentsLineOffset?: number,\n  ) {\n    if (!node) return;\n\n    this._endsWithInnerRaw = false;\n\n    const nodeType = node.type;\n    const format = this.format;\n\n    const oldConcise = format.concise;\n    if (\n      // @ts-expect-error document _compact AST properties\n      node._compact\n    ) {\n      format.concise = true;\n    }\n\n    const printMethod =\n      this[\n        nodeType as Exclude<\n          t.Node[\"type\"],\n          // removed\n          | \"Noop\"\n          // renamed\n          | t.DeprecatedAliases[\"type\"]\n        >\n      ];\n    if (printMethod === undefined) {\n      throw new ReferenceError(\n        `unknown node of type ${JSON.stringify(\n          nodeType,\n        )} with constructor ${JSON.stringify(node.constructor.name)}`,\n      );\n    }\n\n    const parent = this._currentNode;\n    this._currentNode = node;\n\n    const oldInAux = this._insideAux;\n    this._insideAux = node.loc == null;\n    this._maybeAddAuxComment(this._insideAux && !oldInAux);\n\n    const parenthesized = node.extra?.parenthesized as boolean | undefined;\n    let shouldPrintParens =\n      (parenthesized && format.preserveFormat) ||\n      (parenthesized &&\n        format.retainFunctionParens &&\n        nodeType === \"FunctionExpression\") ||\n      needsParens(\n        node,\n        parent,\n        this.tokenContext,\n        this.inForStatementInit,\n        format.preserveFormat ? this._boundGetRawIdentifier : undefined,\n      );\n\n    if (\n      !shouldPrintParens &&\n      parenthesized &&\n      node.leadingComments?.length &&\n      node.leadingComments[0].type === \"CommentBlock\"\n    ) {\n      const parentType = parent?.type;\n      switch (parentType) {\n        case \"ExpressionStatement\":\n        case \"VariableDeclarator\":\n        case \"AssignmentExpression\":\n        case \"ReturnStatement\":\n          break;\n        case \"CallExpression\":\n        case \"OptionalCallExpression\":\n        case \"NewExpression\":\n          if (parent.callee !== node) break;\n        // falls through\n        default:\n          shouldPrintParens = true;\n      }\n    }\n\n    let indentParenthesized = false;\n    if (\n      !shouldPrintParens &&\n      this._noLineTerminator &&\n      (node.leadingComments?.some(commentIsNewline) ||\n        (this.format.retainLines &&\n          node.loc &&\n          node.loc.start.line > this._buf.getCurrentLine()))\n    ) {\n      shouldPrintParens = true;\n      indentParenthesized = true;\n    }\n\n    let oldNoLineTerminatorAfterNode;\n    let oldInForStatementInitWasTrue;\n    if (!shouldPrintParens) {\n      noLineTerminatorAfter ||=\n        parent &&\n        this._noLineTerminatorAfterNode === parent &&\n        n.isLastChild(parent, node);\n      if (noLineTerminatorAfter) {\n        if (node.trailingComments?.some(commentIsNewline)) {\n          if (isExpression(node)) shouldPrintParens = true;\n        } else {\n          oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n          this._noLineTerminatorAfterNode = node;\n        }\n      }\n    }\n\n    if (shouldPrintParens) {\n      this.token(\"(\");\n      if (indentParenthesized) this.indent();\n      this._endsWithInnerRaw = false;\n      if (this.inForStatementInit) {\n        oldInForStatementInitWasTrue = true;\n        this.inForStatementInit = false;\n      }\n      oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n      this._noLineTerminatorAfterNode = null;\n    }\n\n    this._lastCommentLine = 0;\n\n    this._printLeadingComments(node, parent);\n\n    const loc = nodeType === \"Program\" || nodeType === \"File\" ? null : node.loc;\n\n    this.exactSource(\n      loc,\n      // @ts-expect-error Expected 1 arguments, but got 3.\n      printMethod.bind(this, node, parent),\n    );\n\n    if (shouldPrintParens) {\n      this._printTrailingComments(node, parent);\n      if (indentParenthesized) {\n        this.dedent();\n        this.newline();\n      }\n      this.token(\")\");\n      this._noLineTerminator = noLineTerminatorAfter;\n      if (oldInForStatementInitWasTrue) this.inForStatementInit = true;\n    } else if (noLineTerminatorAfter && !this._noLineTerminator) {\n      this._noLineTerminator = true;\n      this._printTrailingComments(node, parent);\n    } else {\n      this._printTrailingComments(node, parent, trailingCommentsLineOffset);\n    }\n\n    // end\n    this._currentNode = parent;\n    format.concise = oldConcise;\n    this._insideAux = oldInAux;\n\n    if (oldNoLineTerminatorAfterNode !== undefined) {\n      this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n    }\n\n    this._endsWithInnerRaw = false;\n  }\n\n  _maybeAddAuxComment(enteredPositionlessNode?: boolean) {\n    if (enteredPositionlessNode) this._printAuxBeforeComment();\n    if (!this._insideAux) this._printAuxAfterComment();\n  }\n\n  _printAuxBeforeComment() {\n    if (this._printAuxAfterOnNextUserNode) return;\n    this._printAuxAfterOnNextUserNode = true;\n\n    const comment = this.format.auxiliaryCommentBefore;\n    if (comment) {\n      this._printComment(\n        {\n          type: \"CommentBlock\",\n          value: comment,\n        },\n        COMMENT_SKIP_NEWLINE.DEFAULT,\n      );\n    }\n  }\n\n  _printAuxAfterComment() {\n    if (!this._printAuxAfterOnNextUserNode) return;\n    this._printAuxAfterOnNextUserNode = false;\n\n    const comment = this.format.auxiliaryCommentAfter;\n    if (comment) {\n      this._printComment(\n        {\n          type: \"CommentBlock\",\n          value: comment,\n        },\n        COMMENT_SKIP_NEWLINE.DEFAULT,\n      );\n    }\n  }\n\n  getPossibleRaw(\n    node:\n      | t.StringLiteral\n      | t.NumericLiteral\n      | t.BigIntLiteral\n      | t.DirectiveLiteral\n      | t.JSXText,\n  ): string | undefined {\n    const extra = node.extra;\n    if (\n      extra?.raw != null &&\n      extra.rawValue != null &&\n      node.value === extra.rawValue\n    ) {\n      // @ts-expect-error: The extra.raw of these AST node types must be a string\n      return extra.raw;\n    }\n  }\n\n  printJoin(\n    nodes: Array<t.Node> | undefined | null,\n    opts: PrintJoinOptions = {},\n  ) {\n    if (!nodes?.length) return;\n\n    let { indent } = opts;\n\n    if (indent == null && this.format.retainLines) {\n      const startLine = nodes[0].loc?.start.line;\n      if (startLine != null && startLine !== this._buf.getCurrentLine()) {\n        indent = true;\n      }\n    }\n\n    if (indent) this.indent();\n\n    const newlineOpts: AddNewlinesOptions = {\n      addNewlines: opts.addNewlines,\n      nextNodeStartLine: 0,\n    };\n\n    const separator = opts.separator ? opts.separator.bind(this) : null;\n\n    const len = nodes.length;\n    for (let i = 0; i < len; i++) {\n      const node = nodes[i];\n      if (!node) continue;\n\n      if (opts.statement) this._printNewline(i === 0, newlineOpts);\n\n      this.print(node, undefined, opts.trailingCommentsLineOffset || 0);\n\n      opts.iterator?.(node, i);\n\n      if (separator != null) {\n        if (i < len - 1) separator(i, false);\n        else if (opts.printTrailingSeparator) separator(i, true);\n      }\n\n      if (opts.statement) {\n        if (!node.trailingComments?.length) {\n          this._lastCommentLine = 0;\n        }\n\n        if (i + 1 === len) {\n          this.newline(1);\n        } else {\n          const nextNode = nodes[i + 1];\n          newlineOpts.nextNodeStartLine = nextNode.loc?.start.line || 0;\n\n          this._printNewline(true, newlineOpts);\n        }\n      }\n    }\n\n    if (indent) this.dedent();\n  }\n\n  printAndIndentOnComments(node: t.Node) {\n    const indent = node.leadingComments && node.leadingComments.length > 0;\n    if (indent) this.indent();\n    this.print(node);\n    if (indent) this.dedent();\n  }\n\n  printBlock(parent: Extract<t.Node, { body: t.Statement }>) {\n    const node = parent.body;\n\n    if (node.type !== \"EmptyStatement\") {\n      this.space();\n    }\n\n    this.print(node);\n  }\n\n  _printTrailingComments(node: t.Node, parent?: t.Node, lineOffset?: number) {\n    const { innerComments, trailingComments } = node;\n    // We print inner comments here, so that if for some reason they couldn't\n    // be printed in earlier locations they are still printed *somewhere*,\n    // even if at the end of the node.\n    if (innerComments?.length) {\n      this._printComments(\n        COMMENT_TYPE.TRAILING,\n        innerComments,\n        node,\n        parent,\n        lineOffset,\n      );\n    }\n    if (trailingComments?.length) {\n      this._printComments(\n        COMMENT_TYPE.TRAILING,\n        trailingComments,\n        node,\n        parent,\n        lineOffset,\n      );\n    }\n  }\n\n  _printLeadingComments(node: t.Node, parent: t.Node) {\n    const comments = node.leadingComments;\n    if (!comments?.length) return;\n    this._printComments(COMMENT_TYPE.LEADING, comments, node, parent);\n  }\n\n  _maybePrintInnerComments(\n    nextTokenStr: string,\n    nextTokenOccurrenceCount?: number,\n  ) {\n    if (this._endsWithInnerRaw) {\n      this.printInnerComments(\n        this.tokenMap?.findMatching(\n          this._currentNode,\n          nextTokenStr,\n          nextTokenOccurrenceCount,\n        ),\n      );\n    }\n    this._endsWithInnerRaw = true;\n    this._indentInnerComments = true;\n  }\n\n  printInnerComments(nextToken?: Token) {\n    const node = this._currentNode;\n    const comments = node.innerComments;\n    if (!comments?.length) return;\n\n    const hasSpace = this.endsWith(charCodes.space);\n    const indent = this._indentInnerComments;\n    const printedCommentsCount = this._printedComments.size;\n    if (indent) this.indent();\n    this._printComments(\n      COMMENT_TYPE.INNER,\n      comments,\n      node,\n      undefined,\n      undefined,\n      nextToken,\n    );\n    if (hasSpace && printedCommentsCount !== this._printedComments.size) {\n      this.space();\n    }\n    if (indent) this.dedent();\n  }\n\n  noIndentInnerCommentsHere() {\n    this._indentInnerComments = false;\n  }\n\n  printSequence(nodes: t.Node[], opts: PrintSequenceOptions = {}) {\n    opts.statement = true;\n    opts.indent ??= false;\n    this.printJoin(nodes, opts);\n  }\n\n  printList(items: t.Node[], opts: PrintListOptions = {}) {\n    if (opts.separator == null) {\n      opts.separator = commaSeparator;\n    }\n\n    this.printJoin(items, opts);\n  }\n\n  shouldPrintTrailingComma(listEnd: string): boolean | null {\n    if (!this.tokenMap) return null;\n\n    const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token =>\n      this.tokenMap.matchesOriginal(token, listEnd),\n    );\n    if (listEndIndex <= 0) return null;\n    return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], \",\");\n  }\n\n  _printNewline(newLine: boolean, opts: AddNewlinesOptions) {\n    const format = this.format;\n\n    // Fast path since 'this.newline' does nothing when not tracking lines.\n    if (format.retainLines || format.compact) return;\n\n    // Fast path for concise since 'this.newline' just inserts a space when\n    // concise formatting is in use.\n    if (format.concise) {\n      this.space();\n      return;\n    }\n\n    if (!newLine) {\n      return;\n    }\n\n    const startLine = opts.nextNodeStartLine;\n    const lastCommentLine = this._lastCommentLine;\n    if (startLine > 0 && lastCommentLine > 0) {\n      const offset = startLine - lastCommentLine;\n      if (offset >= 0) {\n        this.newline(offset || 1);\n        return;\n      }\n    }\n\n    // don't add newlines at the beginning of the file\n    if (this._buf.hasContent()) {\n      // Here is the logic of the original line wrapping according to the node layout, we are not using it now.\n      // We currently add at most one newline to each node in the list, ignoring `opts.addNewlines`.\n\n      // let lines = 0;\n      // if (!leading) lines++; // always include at least a single line after\n      // if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;\n\n      // const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter;\n      // if (needs(node, parent)) lines++;\n\n      // this.newline(Math.min(2, lines));\n\n      this.newline(1);\n    }\n  }\n\n  // Returns `PRINT_COMMENT_HINT.DEFER` if the comment cannot be printed in this position due to\n  // line terminators, signaling that the print comments loop can stop and\n  // resume printing comments at the next possible position. This happens when\n  // printing inner comments, since if we have an inner comment with a multiline\n  // there is at least one inner position where line terminators are allowed.\n  _shouldPrintComment(\n    comment: t.Comment,\n    nextToken?: Token,\n  ): PRINT_COMMENT_HINT {\n    // Some plugins (such as flow-strip-types) use this to mark comments as removed using the AST-root 'comments' property,\n    // where they can't manually mutate the AST node comment lists.\n    if (comment.ignore) return PRINT_COMMENT_HINT.SKIP;\n\n    if (this._printedComments.has(comment)) return PRINT_COMMENT_HINT.SKIP;\n\n    if (\n      this._noLineTerminator &&\n      HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)\n    ) {\n      return PRINT_COMMENT_HINT.DEFER;\n    }\n\n    if (nextToken && this.tokenMap) {\n      const commentTok = this.tokenMap.find(\n        this._currentNode,\n        token => token.value === comment.value,\n      );\n      if (commentTok && commentTok.start > nextToken.start) {\n        return PRINT_COMMENT_HINT.DEFER;\n      }\n    }\n\n    this._printedComments.add(comment);\n\n    if (!this.format.shouldPrintComment(comment.value)) {\n      return PRINT_COMMENT_HINT.SKIP;\n    }\n\n    return PRINT_COMMENT_HINT.ALLOW;\n  }\n\n  _printComment(comment: t.Comment, skipNewLines: COMMENT_SKIP_NEWLINE) {\n    const noLineTerminator = this._noLineTerminator;\n    const isBlockComment = comment.type === \"CommentBlock\";\n\n    // Add a newline before and after a block comment, unless explicitly\n    // disallowed\n    const printNewLines =\n      isBlockComment &&\n      skipNewLines !== COMMENT_SKIP_NEWLINE.ALL &&\n      !this._noLineTerminator;\n\n    if (\n      printNewLines &&\n      this._buf.hasContent() &&\n      skipNewLines !== COMMENT_SKIP_NEWLINE.LEADING\n    ) {\n      this.newline(1);\n    }\n\n    const lastCharCode = this.getLastChar();\n    if (\n      lastCharCode !== charCodes.leftSquareBracket &&\n      lastCharCode !== charCodes.leftCurlyBrace &&\n      lastCharCode !== charCodes.leftParenthesis\n    ) {\n      this.space();\n    }\n\n    let val;\n    if (isBlockComment) {\n      val = `/*${comment.value}*/`;\n      if (this.format.indent.adjustMultilineComment) {\n        const offset = comment.loc?.start.column;\n        if (offset) {\n          const newlineRegex = new RegExp(\"\\\\n\\\\s{1,\" + offset + \"}\", \"g\");\n          val = val.replace(newlineRegex, \"\\n\");\n        }\n        if (this.format.concise) {\n          val = val.replace(/\\n(?!$)/g, `\\n`);\n        } else {\n          let indentSize = this.format.retainLines\n            ? 0\n            : this._buf.getCurrentColumn();\n\n          if (this._shouldIndent(charCodes.slash) || this.format.retainLines) {\n            indentSize += this._getIndent();\n          }\n\n          val = val.replace(/\\n(?!$)/g, `\\n${\" \".repeat(indentSize)}`);\n        }\n      }\n    } else if (!noLineTerminator) {\n      val = `//${comment.value}`;\n    } else {\n      // It was a single-line comment, so it's guaranteed to not\n      // contain newlines and it can be safely printed as a block\n      // comment.\n      val = `/*${comment.value}*/`;\n    }\n\n    // Avoid converting a / operator into a line comment by appending /* to it\n    if (this._endsWithDiv) this._space();\n\n    this.source(\"start\", comment.loc);\n    this._append(val, isBlockComment);\n\n    if (!isBlockComment && !noLineTerminator) {\n      this.newline(1, true);\n    }\n\n    if (printNewLines && skipNewLines !== COMMENT_SKIP_NEWLINE.TRAILING) {\n      this.newline(1);\n    }\n  }\n\n  _printComments(\n    type: COMMENT_TYPE,\n    comments: readonly t.Comment[],\n    node: t.Node,\n    parent?: t.Node,\n    lineOffset: number = 0,\n    nextToken?: Token,\n  ) {\n    const nodeLoc = node.loc;\n    const len = comments.length;\n    let hasLoc = !!nodeLoc;\n    const nodeStartLine = hasLoc ? nodeLoc.start.line : 0;\n    const nodeEndLine = hasLoc ? nodeLoc.end.line : 0;\n    let lastLine = 0;\n    let leadingCommentNewline = 0;\n\n    const maybeNewline = this._noLineTerminator\n      ? function () {}\n      : this.newline.bind(this);\n\n    for (let i = 0; i < len; i++) {\n      const comment = comments[i];\n\n      const shouldPrint = this._shouldPrintComment(comment, nextToken);\n      if (shouldPrint === PRINT_COMMENT_HINT.DEFER) {\n        hasLoc = false;\n        break;\n      }\n      if (hasLoc && comment.loc && shouldPrint === PRINT_COMMENT_HINT.ALLOW) {\n        const commentStartLine = comment.loc.start.line;\n        const commentEndLine = comment.loc.end.line;\n        if (type === COMMENT_TYPE.LEADING) {\n          let offset = 0;\n          if (i === 0) {\n            // Because currently we cannot handle blank lines before leading comments,\n            // we always wrap before and after multi-line comments.\n            if (\n              this._buf.hasContent() &&\n              (comment.type === \"CommentLine\" ||\n                commentStartLine !== commentEndLine)\n            ) {\n              offset = leadingCommentNewline = 1;\n            }\n          } else {\n            offset = commentStartLine - lastLine;\n          }\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n          if (i + 1 === len) {\n            maybeNewline(\n              Math.max(nodeStartLine - lastLine, leadingCommentNewline),\n            );\n            lastLine = nodeStartLine;\n          }\n        } else if (type === COMMENT_TYPE.INNER) {\n          const offset =\n            commentStartLine - (i === 0 ? nodeStartLine : lastLine);\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n          if (i + 1 === len) {\n            maybeNewline(Math.min(1, nodeEndLine - lastLine)); // TODO: Improve here when inner comments processing is stronger\n            lastLine = nodeEndLine;\n          }\n        } else {\n          const offset =\n            commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n        }\n      } else {\n        hasLoc = false;\n        if (shouldPrint !== PRINT_COMMENT_HINT.ALLOW) {\n          continue;\n        }\n\n        if (len === 1) {\n          const singleLine = comment.loc\n            ? comment.loc.start.line === comment.loc.end.line\n            : !HAS_NEWLINE.test(comment.value);\n\n          const shouldSkipNewline =\n            singleLine &&\n            !isStatement(node) &&\n            !isClassBody(parent) &&\n            !isTSInterfaceBody(parent) &&\n            !isTSEnumDeclaration(parent);\n\n          if (type === COMMENT_TYPE.LEADING) {\n            this._printComment(\n              comment,\n              (shouldSkipNewline && node.type !== \"ObjectExpression\") ||\n                (singleLine && isFunction(parent, { body: node }))\n                ? COMMENT_SKIP_NEWLINE.ALL\n                : COMMENT_SKIP_NEWLINE.DEFAULT,\n            );\n          } else if (shouldSkipNewline && type === COMMENT_TYPE.TRAILING) {\n            this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n          } else {\n            this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n          }\n        } else if (\n          type === COMMENT_TYPE.INNER &&\n          !(node.type === \"ObjectExpression\" && node.properties.length > 1) &&\n          node.type !== \"ClassBody\" &&\n          node.type !== \"TSInterfaceBody\"\n        ) {\n          // class X {\n          //   /*:: a: number*/\n          //   /*:: b: ?string*/\n          // }\n\n          this._printComment(\n            comment,\n            i === 0\n              ? COMMENT_SKIP_NEWLINE.LEADING\n              : i === len - 1\n                ? COMMENT_SKIP_NEWLINE.TRAILING\n                : COMMENT_SKIP_NEWLINE.DEFAULT,\n          );\n        } else {\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n        }\n      }\n    }\n\n    if (type === COMMENT_TYPE.TRAILING && hasLoc && lastLine) {\n      this._lastCommentLine = lastLine;\n    }\n  }\n}\n\n// Expose the node type functions and helpers on the prototype for easy usage.\nObject.assign(Printer.prototype, generatorFunctions);\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-ignore(Babel 7 vs Babel 8) Babel 7 has Noop print method\n  Printer.prototype.Noop = function Noop(this: Printer) {};\n}\n\ntype GeneratorFunctions = typeof generatorFunctions;\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface Printer extends GeneratorFunctions {}\nexport default Printer;\n\nfunction commaSeparator(this: Printer, occurrenceCount: number, last: boolean) {\n  this.token(\",\", false, occurrenceCount);\n  if (!last) this.space();\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_buffer","require","n","_t","_tokenMap","generatorFunctions","_deprecated","isExpression","isFunction","isStatement","isClassBody","isTSInterfaceBody","isTSEnumMember","SCIENTIFIC_NOTATION","ZERO_DECIMAL_INTEGER","HAS_NEWLINE","HAS_NEWLINE_OR_BlOCK_COMMENT_END","commentIsNewline","c","type","test","value","needsParens","Printer","constructor","format","map","tokens","originalCode","inForStatementInit","tokenContext","_tokens","_originalCode","_currentNode","_indent","_indentRepeat","_insideAux","_noLineTerminator","_noLineTerminatorAfterNode","_printAuxAfterOnNextUserNode","_printedComments","Set","_endsWithInteger","_endsWithWord","_endsWithDiv","_lastCommentLine","_endsWithInnerRaw","_indentInnerComments","tokenMap","_boundGetRawIdentifier","_getRawIdentifier","bind","_printSemicolonBeforeNextNode","_printSemicolonBeforeNextToken","indent","style","length","_inputMap","_buf","Buffer","enterForStatementInit","enterDelimited","oldInForStatementInit","oldNoLineTerminatorAfterNode","generate","ast","preserveFormat","TokenMap","print","_maybeAddAuxComment","get","compact","concise","dedent","semicolon","force","_appendChar","node","start","end","endMatches","getCurrentLine","indexes","getIndexes","_catchUpTo","loc","_queue","rightBrace","minified","removeLastSemicolon","sourceWithOffset","token","rightParens","space","_space","hasContent","lastCp","getLastChar","word","str","noLineTerminatorAfter","_maybePrintInnerComments","_catchUpToCurrentToken","charCodeAt","_append","number","isNonDecimalLiteral","secondChar","Number","isInteger","maybeNewline","occurrenceCount","lastChar","strFirst","tokenChar","char","String","fromCharCode","newline","i","retainLines","getNewlineCount","j","_newline","endsWith","endsWithCharAndNewline","removeTrailingNewline","exactSource","cb","_catchUp","source","prop","columnOffset","sourceIdentifierName","identifierName","pos","_canMarkIdName","sourcePosition","_sourcePosition","identifierNamePos","findMatching","appendChar","_maybeIndent","append","queue","firstChar","queueIndentation","_getIndent","_shouldIndent","catchUp","line","count","column","index","spacesCount","getCurrentColumn","spaces","slice","replace","repeat","printTerminatorless","trailingCommentsLineOffset","_node$extra","_node$leadingComments","_node$leadingComments2","nodeType","oldConcise","_compact","printMethod","undefined","ReferenceError","JSON","stringify","name","parent","oldInAux","parenthesized","extra","shouldPrintParens","retainFunctionParens","leadingComments","parentType","callee","indentParenthesized","some","oldInForStatementInitWasTrue","isLastChild","_node$trailingComment","trailingComments","_printLeadingComments","_printTrailingComments","enteredPositionlessNode","_printAuxBeforeComment","_printAuxAfterComment","comment","auxiliaryCommentBefore","_printComment","auxiliaryCommentAfter","getPossibleRaw","raw","rawValue","printJoin","nodes","statement","separator","printTrailingSeparator","addNewlines","iterator","_nodes$0$loc","startLine","newlineOpts","nextNodeStartLine","boundSeparator","len","_printNewline","_node$trailingComment2","_nextNode$loc","nextNode","printAndIndentOnComments","printBlock","body","lineOffset","innerComments","_printComments","comments","nextTokenStr","nextTokenOccurrenceCount","_this$tokenMap","printInnerComments","nextToken","hasSpace","printedCommentsCount","size","noIndentInnerCommentsHere","printSequence","printList","items","commaSeparator","shouldPrintTrailingComma","listEnd","listEndIndex","findLastIndex","matchesOriginal","newLine","opts","lastCommentLine","offset","_shouldPrintComment","ignore","has","commentTok","find","add","shouldPrintComment","skipNewLines","noLineTerminator","isBlockComment","printNewLines","lastCharCode","val","adjustMultilineComment","_comment$loc","newlineRegex","RegExp","indentSize","nodeLoc","hasLoc","nodeStartLine","nodeEndLine","lastLine","leadingCommentNewline","shouldPrint","commentStartLine","commentEndLine","Math","max","min","singleLine","shouldSkipNewline","properties","Object","assign","prototype","addDeprecatedGenerators","_default","exports","default","last"],"sources":["../src/printer.ts"],"sourcesContent":["import Buffer, { type Pos } from \"./buffer.ts\";\nimport type { Loc } from \"./buffer.ts\";\nimport * as n from \"./node/index.ts\";\nimport type * as t from \"@babel/types\";\nimport {\n  isExpression,\n  isFunction,\n  isStatement,\n  isClassBody,\n  isTSInterfaceBody,\n  isTSEnumMember,\n} from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\n\nimport { TokenMap } from \"./token-map.ts\";\nimport type { GeneratorOptions } from \"./index.ts\";\nimport * as generatorFunctions from \"./generators/index.ts\";\nimport {\n  addDeprecatedGenerators,\n  type DeprecatedBabel7ASTTypes,\n} from \"./generators/deprecated.ts\";\nimport type SourceMap from \"./source-map.ts\";\nimport type { TraceMap } from \"@jridgewell/trace-mapping\";\nimport type { Token } from \"@babel/parser\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nconst SCIENTIFIC_NOTATION = /e/i;\nconst ZERO_DECIMAL_INTEGER = /\\.0+$/;\nconst HAS_NEWLINE = /[\\n\\r\\u2028\\u2029]/;\nconst HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\\n\\r\\u2028\\u2029]|\\*\\//;\n\nfunction commentIsNewline(c: t.Comment) {\n  return c.type === \"CommentLine\" || HAS_NEWLINE.test(c.value);\n}\n\nconst { needsParens } = n;\n\nconst enum COMMENT_TYPE {\n  LEADING,\n  INNER,\n  TRAILING,\n}\n\nconst enum COMMENT_SKIP_NEWLINE {\n  DEFAULT,\n  ALL,\n  LEADING,\n  TRAILING,\n}\n\nconst enum PRINT_COMMENT_HINT {\n  SKIP,\n  ALLOW,\n  DEFER,\n}\n\nexport type Format = {\n  shouldPrintComment: (comment: string) => boolean;\n  preserveFormat: boolean;\n  retainLines: boolean;\n  retainFunctionParens: boolean;\n  comments: boolean;\n  auxiliaryCommentBefore: string;\n  auxiliaryCommentAfter: string;\n  compact: boolean | \"auto\";\n  minified: boolean;\n  concise: boolean;\n  indent: {\n    adjustMultilineComment: boolean;\n    style: string;\n  };\n  /**\n   * @deprecated Removed in Babel 8, syntax type is always 'hash'\n   */\n  recordAndTupleSyntaxType?: GeneratorOptions[\"recordAndTupleSyntaxType\"];\n  jsescOption: jsescOptions;\n  /**\n   * @deprecated Removed in Babel 8, use `jsescOption` instead\n   */\n  jsonCompatibleStrings?: boolean;\n  /**\n   * For use with the Hack-style pipe operator.\n   * Changes what token is used for pipe bodies’ topic references.\n   */\n  topicToken?: GeneratorOptions[\"topicToken\"];\n  /**\n   * @deprecated Removed in Babel 8\n   */\n  decoratorsBeforeExport?: boolean;\n  /**\n   * The import attributes syntax style:\n   * - \"with\"        : `import { a } from \"b\" with { type: \"json\" };`\n   * - \"assert\"      : `import { a } from \"b\" assert { type: \"json\" };`\n   * - \"with-legacy\" : `import { a } from \"b\" with type: \"json\";`\n   */\n  importAttributesKeyword?: \"with\" | \"assert\" | \"with-legacy\";\n};\n\ninterface AddNewlinesOptions {\n  addNewlines(leading: boolean, node: t.Node): number;\n  nextNodeStartLine: number;\n}\n\ninterface PrintSequenceOptions extends Partial<AddNewlinesOptions> {\n  statement?: boolean;\n  indent?: boolean;\n  trailingCommentsLineOffset?: number;\n}\n\ninterface PrintListOptions {\n  separator?: (this: Printer, occurrenceCount: number, last: boolean) => void;\n  iterator?: (node: t.Node, index: number) => void;\n  statement?: boolean;\n  indent?: boolean;\n  printTrailingSeparator?: boolean;\n}\n\nexport type PrintJoinOptions = PrintListOptions & PrintSequenceOptions;\nclass Printer {\n  constructor(\n    format: Format,\n    map: SourceMap,\n    tokens?: Token[],\n    originalCode?: string,\n  ) {\n    this.format = format;\n\n    this._tokens = tokens;\n    this._originalCode = originalCode;\n\n    this._indentRepeat = format.indent.style.length;\n\n    this._inputMap = map?._inputMap;\n\n    this._buf = new Buffer(map, format.indent.style[0]);\n  }\n  declare _inputMap: TraceMap;\n\n  declare format: Format;\n\n  inForStatementInit: boolean = false;\n  enterForStatementInit() {\n    if (this.inForStatementInit) return () => {};\n    this.inForStatementInit = true;\n    return () => {\n      this.inForStatementInit = false;\n    };\n  }\n\n  enterDelimited() {\n    const oldInForStatementInit = this.inForStatementInit;\n    const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n    if (\n      oldInForStatementInit === false &&\n      oldNoLineTerminatorAfterNode === null\n    ) {\n      return () => {};\n    }\n    this.inForStatementInit = false;\n    this._noLineTerminatorAfterNode = null;\n    return () => {\n      this.inForStatementInit = oldInForStatementInit;\n      this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n    };\n  }\n\n  tokenContext: number = 0;\n\n  _tokens: Token[] = null;\n  _originalCode: string | null = null;\n\n  declare _buf: Buffer;\n  _currentNode: t.Node = null;\n  _indent: number = 0;\n  _indentRepeat: number = 0;\n  _insideAux: boolean = false;\n  _noLineTerminator: boolean = false;\n  _noLineTerminatorAfterNode: t.Node | null = null;\n  _printAuxAfterOnNextUserNode: boolean = false;\n  _printedComments = new Set<t.Comment>();\n  _endsWithInteger = false;\n  _endsWithWord = false;\n  _endsWithDiv = false;\n  _lastCommentLine = 0;\n  _endsWithInnerRaw: boolean = false;\n  _indentInnerComments: boolean = true;\n  tokenMap: TokenMap = null;\n\n  _boundGetRawIdentifier = this._getRawIdentifier.bind(this);\n\n  generate(ast: t.Node) {\n    if (this.format.preserveFormat) {\n      this.tokenMap = new TokenMap(ast, this._tokens, this._originalCode);\n    }\n    this.print(ast);\n    this._maybeAddAuxComment();\n\n    return this._buf.get();\n  }\n\n  /**\n   * Increment indent size.\n   */\n\n  indent(): void {\n    const { format } = this;\n    if (format.preserveFormat || format.compact || format.concise) {\n      return;\n    }\n\n    this._indent++;\n  }\n\n  /**\n   * Decrement indent size.\n   */\n\n  dedent(): void {\n    const { format } = this;\n    if (format.preserveFormat || format.compact || format.concise) {\n      return;\n    }\n\n    this._indent--;\n  }\n\n  /**\n   * If the next token is on the same line, we must first print a semicolon.\n   * This option is only used in `preserveFormat` node, for semicolons that\n   * might have omitted due to them being absent in the original code (thanks\n   * to ASI).\n   *\n   * We need both *NextToken and *NextNode because we only want to insert the\n   * semicolon when the next token starts a new node, and not in cases like\n   * foo} (where } is not starting a new node). So we first set *NextNode, and\n   * then the print() method will move it to *NextToken.\n   */\n  _printSemicolonBeforeNextNode: number = -1;\n  _printSemicolonBeforeNextToken: number = -1;\n\n  /**\n   * Add a semicolon to the buffer.\n   */\n  semicolon(force: boolean = false): void {\n    this._maybeAddAuxComment();\n    if (force) {\n      this._appendChar(charCodes.semicolon);\n      this._noLineTerminator = false;\n      return;\n    }\n    if (this.tokenMap) {\n      const node = this._currentNode;\n      if (node.start != null && node.end != null) {\n        if (!this.tokenMap.endMatches(node, \";\")) {\n          // no semicolon\n          this._printSemicolonBeforeNextNode = this._buf.getCurrentLine();\n          return;\n        }\n        const indexes = this.tokenMap.getIndexes(this._currentNode);\n        this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start);\n      }\n    }\n    this._queue(charCodes.semicolon);\n    this._noLineTerminator = false;\n  }\n\n  /**\n   * Add a right brace to the buffer.\n   */\n\n  rightBrace(node: t.Node): void {\n    if (this.format.minified) {\n      this._buf.removeLastSemicolon();\n    }\n    this.sourceWithOffset(\"end\", node.loc, -1);\n    this.token(\"}\");\n  }\n\n  rightParens(node: t.Node): void {\n    this.sourceWithOffset(\"end\", node.loc, -1);\n    this.token(\")\");\n  }\n\n  /**\n   * Add a space to the buffer unless it is compact.\n   */\n\n  space(force: boolean = false): void {\n    const { format } = this;\n    if (format.compact || format.preserveFormat) return;\n\n    if (force) {\n      this._space();\n    } else if (this._buf.hasContent()) {\n      const lastCp = this.getLastChar();\n      if (lastCp !== charCodes.space && lastCp !== charCodes.lineFeed) {\n        this._space();\n      }\n    }\n  }\n\n  /**\n   * Writes a token that can't be safely parsed without taking whitespace into account.\n   */\n\n  word(str: string, noLineTerminatorAfter: boolean = false): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(str);\n\n    this._maybeAddAuxComment();\n\n    if (this.tokenMap) this._catchUpToCurrentToken(str);\n\n    // prevent concatenating words and creating // comment out of division and regex\n    if (\n      this._endsWithWord ||\n      (this._endsWithDiv && str.charCodeAt(0) === charCodes.slash)\n    ) {\n      this._space();\n    }\n    this._append(str, false);\n\n    this._endsWithWord = true;\n    this._noLineTerminator = noLineTerminatorAfter;\n  }\n\n  /**\n   * Writes a number token so that we can validate if it is an integer.\n   */\n\n  number(str: string, number?: number): void {\n    // const NON_DECIMAL_LITERAL = /^0[box]/;\n    function isNonDecimalLiteral(str: string) {\n      if (str.length > 2 && str.charCodeAt(0) === charCodes.digit0) {\n        const secondChar = str.charCodeAt(1);\n        return (\n          secondChar === charCodes.lowercaseB ||\n          secondChar === charCodes.lowercaseO ||\n          secondChar === charCodes.lowercaseX\n        );\n      }\n      return false;\n    }\n    this.word(str);\n\n    // Integer tokens need special handling because they cannot have '.'s inserted\n    // immediately after them.\n    this._endsWithInteger =\n      Number.isInteger(number) &&\n      !isNonDecimalLiteral(str) &&\n      !SCIENTIFIC_NOTATION.test(str) &&\n      !ZERO_DECIMAL_INTEGER.test(str) &&\n      str.charCodeAt(str.length - 1) !== charCodes.dot;\n  }\n\n  /**\n   * Writes a simple token.\n   *\n   * @param {string} str The string to append.\n   * @param {boolean} [maybeNewline=false] Wether `str` might potentially\n   *    contain a line terminator or not.\n   * @param {number} [occurrenceCount=0] The occurrence count of this token in\n   *    the current node. This is used when printing in `preserveFormat` mode,\n   *    to know which token we should map to (for example, to disambiguate the\n   *    commas in an array literal).\n   */\n  token(str: string, maybeNewline = false, occurrenceCount = 0): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(str, occurrenceCount);\n\n    this._maybeAddAuxComment();\n\n    if (this.tokenMap) this._catchUpToCurrentToken(str, occurrenceCount);\n\n    const lastChar = this.getLastChar();\n    const strFirst = str.charCodeAt(0);\n    if (\n      (lastChar === charCodes.exclamationMark &&\n        // space is mandatory to avoid outputting <!--\n        // http://javascript.spec.whatwg.org/#comment-syntax\n        (str === \"--\" ||\n          // Needs spaces to avoid changing a! == 0 to a!== 0\n          strFirst === charCodes.equalsTo)) ||\n      // Need spaces for operators of the same kind to avoid: `a+++b`\n      (strFirst === charCodes.plusSign && lastChar === charCodes.plusSign) ||\n      (strFirst === charCodes.dash && lastChar === charCodes.dash) ||\n      // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n      (strFirst === charCodes.dot && this._endsWithInteger)\n    ) {\n      this._space();\n    }\n    this._append(str, maybeNewline);\n    this._noLineTerminator = false;\n  }\n\n  tokenChar(char: number): void {\n    this.tokenContext = 0;\n\n    const str = String.fromCharCode(char);\n    this._maybePrintInnerComments(str);\n\n    this._maybeAddAuxComment();\n\n    if (this.tokenMap) this._catchUpToCurrentToken(str);\n\n    const lastChar = this.getLastChar();\n    if (\n      // Need spaces for operators of the same kind to avoid: `a+++b`\n      (char === charCodes.plusSign && lastChar === charCodes.plusSign) ||\n      (char === charCodes.dash && lastChar === charCodes.dash) ||\n      // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n      (char === charCodes.dot && this._endsWithInteger)\n    ) {\n      this._space();\n    }\n    this._appendChar(char);\n    this._noLineTerminator = false;\n  }\n\n  /**\n   * Add a newline (or many newlines), maintaining formatting.\n   * This function checks the number of newlines in the queue and subtracts them.\n   * It currently has some limitations.\n   * @see {Buffer#getNewlineCount}\n   */\n  newline(i: number = 1, force?: boolean): void {\n    if (i <= 0) return;\n\n    if (!force) {\n      if (this.format.retainLines || this.format.compact) return;\n\n      if (this.format.concise) {\n        this.space();\n        return;\n      }\n    }\n\n    if (i > 2) i = 2; // Max two lines\n\n    i -= this._buf.getNewlineCount();\n\n    for (let j = 0; j < i; j++) {\n      this._newline();\n    }\n\n    return;\n  }\n\n  endsWith(char: number): boolean {\n    return this.getLastChar() === char;\n  }\n\n  getLastChar(): number {\n    return this._buf.getLastChar();\n  }\n\n  endsWithCharAndNewline(): number {\n    return this._buf.endsWithCharAndNewline();\n  }\n\n  removeTrailingNewline(): void {\n    this._buf.removeTrailingNewline();\n  }\n\n  exactSource(loc: Loc | undefined, cb: () => void) {\n    if (!loc) {\n      cb();\n      return;\n    }\n\n    this._catchUp(\"start\", loc);\n\n    this._buf.exactSource(loc, cb);\n  }\n\n  source(prop: \"start\" | \"end\", loc: Loc | undefined): void {\n    if (!loc) return;\n\n    this._catchUp(prop, loc);\n\n    this._buf.source(prop, loc);\n  }\n\n  sourceWithOffset(\n    prop: \"start\" | \"end\",\n    loc: Loc | undefined,\n    columnOffset: number,\n  ): void {\n    if (!loc || this.format.preserveFormat) return;\n\n    this._catchUp(prop, loc);\n\n    this._buf.sourceWithOffset(prop, loc, columnOffset);\n  }\n\n  sourceIdentifierName(identifierName: string, pos?: Pos): void {\n    if (!this._buf._canMarkIdName) return;\n\n    const sourcePosition = this._buf._sourcePosition;\n    sourcePosition.identifierNamePos = pos;\n    sourcePosition.identifierName = identifierName;\n  }\n\n  _space(): void {\n    this._queue(charCodes.space);\n  }\n\n  _newline(): void {\n    this._queue(charCodes.lineFeed);\n  }\n\n  _catchUpToCurrentToken(str: string, occurrenceCount: number = 0): void {\n    // Assert: this.tokenMap\n\n    const token = this.tokenMap.findMatching(\n      this._currentNode,\n      str,\n      occurrenceCount,\n    );\n    if (token) this._catchUpTo(token.loc.start);\n\n    if (\n      this._printSemicolonBeforeNextToken !== -1 &&\n      this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()\n    ) {\n      this._buf.appendChar(charCodes.semicolon);\n      this._endsWithWord = false;\n      this._endsWithInteger = false;\n      this._endsWithDiv = false;\n    }\n    this._printSemicolonBeforeNextToken = -1;\n    this._printSemicolonBeforeNextNode = -1;\n  }\n\n  _append(str: string, maybeNewline: boolean): void {\n    this._maybeIndent(str.charCodeAt(0));\n\n    this._buf.append(str, maybeNewline);\n\n    // callers are expected to then set these to `true` when needed\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n    this._endsWithDiv = false;\n  }\n\n  _appendChar(char: number): void {\n    this._maybeIndent(char);\n\n    this._buf.appendChar(char);\n\n    // callers are expected to then set these to `true` when needed\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n    this._endsWithDiv = false;\n  }\n\n  _queue(char: number) {\n    this._maybeIndent(char);\n\n    this._buf.queue(char);\n\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n  }\n\n  _maybeIndent(firstChar: number): void {\n    // we've got a newline before us so prepend on the indentation\n    if (\n      this._indent &&\n      firstChar !== charCodes.lineFeed &&\n      this.endsWith(charCodes.lineFeed)\n    ) {\n      this._buf.queueIndentation(this._getIndent());\n    }\n  }\n\n  _shouldIndent(firstChar: number) {\n    // we've got a newline before us so prepend on the indentation\n    if (\n      this._indent &&\n      firstChar !== charCodes.lineFeed &&\n      this.endsWith(charCodes.lineFeed)\n    ) {\n      return true;\n    }\n  }\n\n  catchUp(line: number) {\n    if (!this.format.retainLines) return;\n\n    // catch up to this nodes newline if we're behind\n    const count = line - this._buf.getCurrentLine();\n\n    for (let i = 0; i < count; i++) {\n      this._newline();\n    }\n  }\n\n  _catchUp(prop: \"start\" | \"end\", loc?: Loc) {\n    const { format } = this;\n    if (!format.preserveFormat) {\n      if (format.retainLines && loc?.[prop]) {\n        this.catchUp(loc[prop].line);\n      }\n      return;\n    }\n\n    // catch up to this nodes newline if we're behind\n    const pos = loc?.[prop];\n    if (pos != null) this._catchUpTo(pos);\n  }\n\n  _catchUpTo({ line, column, index }: Pos) {\n    const count = line - this._buf.getCurrentLine();\n    if (count > 0 && this._noLineTerminator) {\n      // We cannot inject new lines when _noLineTemrinator is set\n      // to `true`, or we would generate invalid code.\n      return;\n    }\n\n    for (let i = 0; i < count; i++) {\n      this._newline();\n    }\n\n    const spacesCount =\n      count > 0 ? column : column - this._buf.getCurrentColumn();\n    if (spacesCount > 0) {\n      const spaces = this._originalCode\n        ? this._originalCode\n            .slice(index - spacesCount, index)\n            // https://tc39.es/ecma262/#sec-white-space\n            .replace(/[^\\t\\v\\f\\uFEFF\\p{Space_Separator}]/gu, \" \")\n        : \" \".repeat(spacesCount);\n      this._append(spaces, false);\n    }\n  }\n\n  /**\n   * Get the current indent.\n   */\n\n  _getIndent(): number {\n    return this._indentRepeat * this._indent;\n  }\n\n  printTerminatorless(node: t.Node) {\n    /**\n     * Set some state that will be modified if a newline has been inserted before any\n     * non-space characters.\n     *\n     * This is to prevent breaking semantics for terminatorless separator nodes. eg:\n     *\n     *   return foo;\n     *\n     * returns `foo`. But if we do:\n     *\n     *   return\n     *   foo;\n     *\n     *  `undefined` will be returned and not `foo` due to the terminator.\n     */\n    this._noLineTerminator = true;\n    this.print(node);\n  }\n\n  print(\n    node: t.Node | null,\n    noLineTerminatorAfter?: boolean,\n    // trailingCommentsLineOffset also used to check if called from printJoin\n    // it will be ignored if `noLineTerminatorAfter||this._noLineTerminator`\n    trailingCommentsLineOffset?: number,\n  ) {\n    if (!node) return;\n\n    this._endsWithInnerRaw = false;\n\n    const nodeType = node.type;\n    const format = this.format;\n\n    const oldConcise = format.concise;\n    if (\n      // @ts-expect-error document _compact AST properties\n      node._compact\n    ) {\n      format.concise = true;\n    }\n\n    const printMethod =\n      this[\n        nodeType as Exclude<\n          t.Node[\"type\"],\n          | DeprecatedBabel7ASTTypes\n          // renamed\n          | t.DeprecatedAliases[\"type\"]\n        >\n      ];\n    if (printMethod === undefined) {\n      throw new ReferenceError(\n        `unknown node of type ${JSON.stringify(\n          nodeType,\n        )} with constructor ${JSON.stringify(node.constructor.name)}`,\n      );\n    }\n\n    const parent = this._currentNode;\n    this._currentNode = node;\n\n    if (this.tokenMap) {\n      this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode;\n    }\n\n    const oldInAux = this._insideAux;\n    this._insideAux = node.loc == null;\n    this._maybeAddAuxComment(this._insideAux && !oldInAux);\n\n    const parenthesized = node.extra?.parenthesized as boolean | undefined;\n    let shouldPrintParens =\n      (parenthesized && format.preserveFormat) ||\n      (parenthesized &&\n        format.retainFunctionParens &&\n        nodeType === \"FunctionExpression\") ||\n      needsParens(\n        node,\n        parent,\n        this.tokenContext,\n        this.inForStatementInit,\n        format.preserveFormat ? this._boundGetRawIdentifier : undefined,\n      );\n\n    if (\n      !shouldPrintParens &&\n      parenthesized &&\n      node.leadingComments?.length &&\n      node.leadingComments[0].type === \"CommentBlock\"\n    ) {\n      const parentType = parent?.type;\n      switch (parentType) {\n        case \"ExpressionStatement\":\n        case \"VariableDeclarator\":\n        case \"AssignmentExpression\":\n        case \"ReturnStatement\":\n          break;\n        case \"CallExpression\":\n        case \"OptionalCallExpression\":\n        case \"NewExpression\":\n          if (parent.callee !== node) break;\n        // falls through\n        default:\n          shouldPrintParens = true;\n      }\n    }\n\n    let indentParenthesized = false;\n    if (\n      !shouldPrintParens &&\n      this._noLineTerminator &&\n      (node.leadingComments?.some(commentIsNewline) ||\n        (this.format.retainLines &&\n          node.loc &&\n          node.loc.start.line > this._buf.getCurrentLine()))\n    ) {\n      shouldPrintParens = true;\n      indentParenthesized = true;\n    }\n\n    let oldNoLineTerminatorAfterNode;\n    let oldInForStatementInitWasTrue;\n    if (!shouldPrintParens) {\n      noLineTerminatorAfter ||=\n        parent &&\n        this._noLineTerminatorAfterNode === parent &&\n        n.isLastChild(parent, node);\n      if (noLineTerminatorAfter) {\n        if (node.trailingComments?.some(commentIsNewline)) {\n          if (isExpression(node)) shouldPrintParens = true;\n        } else {\n          oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n          this._noLineTerminatorAfterNode = node;\n        }\n      }\n    }\n\n    if (shouldPrintParens) {\n      this.token(\"(\");\n      if (indentParenthesized) this.indent();\n      this._endsWithInnerRaw = false;\n      if (this.inForStatementInit) {\n        oldInForStatementInitWasTrue = true;\n        this.inForStatementInit = false;\n      }\n      oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n      this._noLineTerminatorAfterNode = null;\n    }\n\n    this._lastCommentLine = 0;\n\n    this._printLeadingComments(node, parent);\n\n    const loc = nodeType === \"Program\" || nodeType === \"File\" ? null : node.loc;\n\n    this.exactSource(\n      loc,\n      // @ts-expect-error Expected 1 arguments, but got 3.\n      printMethod.bind(this, node, parent),\n    );\n\n    if (shouldPrintParens) {\n      this._printTrailingComments(node, parent);\n      if (indentParenthesized) {\n        this.dedent();\n        this.newline();\n      }\n      this.token(\")\");\n      this._noLineTerminator = noLineTerminatorAfter;\n      if (oldInForStatementInitWasTrue) this.inForStatementInit = true;\n    } else if (noLineTerminatorAfter && !this._noLineTerminator) {\n      this._noLineTerminator = true;\n      this._printTrailingComments(node, parent);\n    } else {\n      this._printTrailingComments(node, parent, trailingCommentsLineOffset);\n    }\n\n    // end\n    this._currentNode = parent;\n    format.concise = oldConcise;\n    this._insideAux = oldInAux;\n\n    if (oldNoLineTerminatorAfterNode !== undefined) {\n      this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n    }\n\n    this._endsWithInnerRaw = false;\n  }\n\n  _maybeAddAuxComment(enteredPositionlessNode?: boolean) {\n    if (enteredPositionlessNode) this._printAuxBeforeComment();\n    if (!this._insideAux) this._printAuxAfterComment();\n  }\n\n  _printAuxBeforeComment() {\n    if (this._printAuxAfterOnNextUserNode) return;\n    this._printAuxAfterOnNextUserNode = true;\n\n    const comment = this.format.auxiliaryCommentBefore;\n    if (comment) {\n      this._printComment(\n        {\n          type: \"CommentBlock\",\n          value: comment,\n        },\n        COMMENT_SKIP_NEWLINE.DEFAULT,\n      );\n    }\n  }\n\n  _printAuxAfterComment() {\n    if (!this._printAuxAfterOnNextUserNode) return;\n    this._printAuxAfterOnNextUserNode = false;\n\n    const comment = this.format.auxiliaryCommentAfter;\n    if (comment) {\n      this._printComment(\n        {\n          type: \"CommentBlock\",\n          value: comment,\n        },\n        COMMENT_SKIP_NEWLINE.DEFAULT,\n      );\n    }\n  }\n\n  getPossibleRaw(\n    node:\n      | t.StringLiteral\n      | t.NumericLiteral\n      | t.BigIntLiteral\n      | t.DirectiveLiteral\n      | t.JSXText,\n  ): string | undefined {\n    const extra = node.extra;\n    if (\n      extra?.raw != null &&\n      extra.rawValue != null &&\n      node.value === extra.rawValue\n    ) {\n      // @ts-expect-error: The extra.raw of these AST node types must be a string\n      return extra.raw;\n    }\n  }\n\n  printJoin(\n    nodes: Array<t.Node> | undefined | null,\n    statement?: boolean,\n    indent?: boolean,\n    separator?: PrintJoinOptions[\"separator\"],\n    printTrailingSeparator?: boolean,\n    addNewlines?: PrintJoinOptions[\"addNewlines\"],\n    iterator?: PrintJoinOptions[\"iterator\"],\n    trailingCommentsLineOffset?: number,\n  ) {\n    if (!nodes?.length) return;\n\n    if (indent == null && this.format.retainLines) {\n      const startLine = nodes[0].loc?.start.line;\n      if (startLine != null && startLine !== this._buf.getCurrentLine()) {\n        indent = true;\n      }\n    }\n\n    if (indent) this.indent();\n\n    const newlineOpts: AddNewlinesOptions = {\n      addNewlines: addNewlines,\n      nextNodeStartLine: 0,\n    };\n\n    const boundSeparator = separator?.bind(this);\n\n    const len = nodes.length;\n    for (let i = 0; i < len; i++) {\n      const node = nodes[i];\n      if (!node) continue;\n\n      if (statement) this._printNewline(i === 0, newlineOpts);\n\n      this.print(node, undefined, trailingCommentsLineOffset || 0);\n\n      iterator?.(node, i);\n\n      if (boundSeparator != null) {\n        if (i < len - 1) boundSeparator(i, false);\n        else if (printTrailingSeparator) boundSeparator(i, true);\n      }\n\n      if (statement) {\n        if (!node.trailingComments?.length) {\n          this._lastCommentLine = 0;\n        }\n\n        if (i + 1 === len) {\n          this.newline(1);\n        } else {\n          const nextNode = nodes[i + 1];\n          newlineOpts.nextNodeStartLine = nextNode.loc?.start.line || 0;\n\n          this._printNewline(true, newlineOpts);\n        }\n      }\n    }\n\n    if (indent) this.dedent();\n  }\n\n  printAndIndentOnComments(node: t.Node) {\n    const indent = node.leadingComments && node.leadingComments.length > 0;\n    if (indent) this.indent();\n    this.print(node);\n    if (indent) this.dedent();\n  }\n\n  printBlock(parent: Extract<t.Node, { body: t.Statement }>) {\n    const node = parent.body;\n\n    if (node.type !== \"EmptyStatement\") {\n      this.space();\n    }\n\n    this.print(node);\n  }\n\n  _printTrailingComments(node: t.Node, parent?: t.Node, lineOffset?: number) {\n    const { innerComments, trailingComments } = node;\n    // We print inner comments here, so that if for some reason they couldn't\n    // be printed in earlier locations they are still printed *somewhere*,\n    // even if at the end of the node.\n    if (innerComments?.length) {\n      this._printComments(\n        COMMENT_TYPE.TRAILING,\n        innerComments,\n        node,\n        parent,\n        lineOffset,\n      );\n    }\n    if (trailingComments?.length) {\n      this._printComments(\n        COMMENT_TYPE.TRAILING,\n        trailingComments,\n        node,\n        parent,\n        lineOffset,\n      );\n    }\n  }\n\n  _printLeadingComments(node: t.Node, parent: t.Node) {\n    const comments = node.leadingComments;\n    if (!comments?.length) return;\n    this._printComments(COMMENT_TYPE.LEADING, comments, node, parent);\n  }\n\n  _maybePrintInnerComments(\n    nextTokenStr: string,\n    nextTokenOccurrenceCount?: number,\n  ) {\n    if (this._endsWithInnerRaw) {\n      this.printInnerComments(\n        this.tokenMap?.findMatching(\n          this._currentNode,\n          nextTokenStr,\n          nextTokenOccurrenceCount,\n        ),\n      );\n    }\n    this._endsWithInnerRaw = true;\n    this._indentInnerComments = true;\n  }\n\n  printInnerComments(nextToken?: Token) {\n    const node = this._currentNode;\n    const comments = node.innerComments;\n    if (!comments?.length) return;\n\n    const hasSpace = this.endsWith(charCodes.space);\n    const indent = this._indentInnerComments;\n    const printedCommentsCount = this._printedComments.size;\n    if (indent) this.indent();\n    this._printComments(\n      COMMENT_TYPE.INNER,\n      comments,\n      node,\n      undefined,\n      undefined,\n      nextToken,\n    );\n    if (hasSpace && printedCommentsCount !== this._printedComments.size) {\n      this.space();\n    }\n    if (indent) this.dedent();\n  }\n\n  noIndentInnerCommentsHere() {\n    this._indentInnerComments = false;\n  }\n\n  printSequence(\n    nodes: t.Node[],\n    indent?: boolean,\n    trailingCommentsLineOffset?: number,\n    addNewlines?: PrintSequenceOptions[\"addNewlines\"],\n  ) {\n    this.printJoin(\n      nodes,\n      true,\n      indent ?? false,\n      undefined,\n      undefined,\n      addNewlines,\n      undefined,\n      trailingCommentsLineOffset,\n    );\n  }\n\n  printList(\n    items: t.Node[],\n    printTrailingSeparator?: boolean,\n    statement?: boolean,\n    indent?: boolean,\n    separator?: PrintListOptions[\"separator\"],\n    iterator?: PrintListOptions[\"iterator\"],\n  ) {\n    this.printJoin(\n      items,\n      statement,\n      indent,\n      separator ?? commaSeparator,\n      printTrailingSeparator,\n      undefined,\n      iterator,\n    );\n  }\n\n  shouldPrintTrailingComma(listEnd: string): boolean | null {\n    if (!this.tokenMap) return null;\n\n    const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token =>\n      this.tokenMap.matchesOriginal(token, listEnd),\n    );\n    if (listEndIndex <= 0) return null;\n    return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], \",\");\n  }\n\n  _printNewline(newLine: boolean, opts: AddNewlinesOptions) {\n    const format = this.format;\n\n    // Fast path since 'this.newline' does nothing when not tracking lines.\n    if (format.retainLines || format.compact) return;\n\n    // Fast path for concise since 'this.newline' just inserts a space when\n    // concise formatting is in use.\n    if (format.concise) {\n      this.space();\n      return;\n    }\n\n    if (!newLine) {\n      return;\n    }\n\n    const startLine = opts.nextNodeStartLine;\n    const lastCommentLine = this._lastCommentLine;\n    if (startLine > 0 && lastCommentLine > 0) {\n      const offset = startLine - lastCommentLine;\n      if (offset >= 0) {\n        this.newline(offset || 1);\n        return;\n      }\n    }\n\n    // don't add newlines at the beginning of the file\n    if (this._buf.hasContent()) {\n      // Here is the logic of the original line wrapping according to the node layout, we are not using it now.\n      // We currently add at most one newline to each node in the list, ignoring `opts.addNewlines`.\n\n      // let lines = 0;\n      // if (!leading) lines++; // always include at least a single line after\n      // if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;\n\n      // const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter;\n      // if (needs(node, parent)) lines++;\n\n      // this.newline(Math.min(2, lines));\n\n      this.newline(1);\n    }\n  }\n\n  // Returns `PRINT_COMMENT_HINT.DEFER` if the comment cannot be printed in this position due to\n  // line terminators, signaling that the print comments loop can stop and\n  // resume printing comments at the next possible position. This happens when\n  // printing inner comments, since if we have an inner comment with a multiline\n  // there is at least one inner position where line terminators are allowed.\n  _shouldPrintComment(\n    comment: t.Comment,\n    nextToken?: Token,\n  ): PRINT_COMMENT_HINT {\n    // Some plugins (such as flow-strip-types) use this to mark comments as removed using the AST-root 'comments' property,\n    // where they can't manually mutate the AST node comment lists.\n    if (comment.ignore) return PRINT_COMMENT_HINT.SKIP;\n\n    if (this._printedComments.has(comment)) return PRINT_COMMENT_HINT.SKIP;\n\n    if (\n      this._noLineTerminator &&\n      HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)\n    ) {\n      return PRINT_COMMENT_HINT.DEFER;\n    }\n\n    if (nextToken && this.tokenMap) {\n      const commentTok = this.tokenMap.find(\n        this._currentNode,\n        token => token.value === comment.value,\n      );\n      if (commentTok && commentTok.start > nextToken.start) {\n        return PRINT_COMMENT_HINT.DEFER;\n      }\n    }\n\n    this._printedComments.add(comment);\n\n    if (!this.format.shouldPrintComment(comment.value)) {\n      return PRINT_COMMENT_HINT.SKIP;\n    }\n\n    return PRINT_COMMENT_HINT.ALLOW;\n  }\n\n  _printComment(comment: t.Comment, skipNewLines: COMMENT_SKIP_NEWLINE) {\n    const noLineTerminator = this._noLineTerminator;\n    const isBlockComment = comment.type === \"CommentBlock\";\n\n    // Add a newline before and after a block comment, unless explicitly\n    // disallowed\n    const printNewLines =\n      isBlockComment &&\n      skipNewLines !== COMMENT_SKIP_NEWLINE.ALL &&\n      !this._noLineTerminator;\n\n    if (\n      printNewLines &&\n      this._buf.hasContent() &&\n      skipNewLines !== COMMENT_SKIP_NEWLINE.LEADING\n    ) {\n      this.newline(1);\n    }\n\n    const lastCharCode = this.getLastChar();\n    if (\n      lastCharCode !== charCodes.leftSquareBracket &&\n      lastCharCode !== charCodes.leftCurlyBrace &&\n      lastCharCode !== charCodes.leftParenthesis\n    ) {\n      this.space();\n    }\n\n    let val;\n    if (isBlockComment) {\n      val = `/*${comment.value}*/`;\n      if (this.format.indent.adjustMultilineComment) {\n        const offset = comment.loc?.start.column;\n        if (offset) {\n          const newlineRegex = new RegExp(\"\\\\n\\\\s{1,\" + offset + \"}\", \"g\");\n          val = val.replace(newlineRegex, \"\\n\");\n        }\n        if (this.format.concise) {\n          val = val.replace(/\\n(?!$)/g, `\\n`);\n        } else {\n          let indentSize = this.format.retainLines\n            ? 0\n            : this._buf.getCurrentColumn();\n\n          if (this._shouldIndent(charCodes.slash) || this.format.retainLines) {\n            indentSize += this._getIndent();\n          }\n\n          val = val.replace(/\\n(?!$)/g, `\\n${\" \".repeat(indentSize)}`);\n        }\n      }\n    } else if (!noLineTerminator) {\n      val = `//${comment.value}`;\n    } else {\n      // It was a single-line comment, so it's guaranteed to not\n      // contain newlines and it can be safely printed as a block\n      // comment.\n      val = `/*${comment.value}*/`;\n    }\n\n    // Avoid converting a / operator into a line comment by appending /* to it\n    if (this._endsWithDiv) this._space();\n\n    if (this.tokenMap) {\n      const { _printSemicolonBeforeNextToken, _printSemicolonBeforeNextNode } =\n        this;\n      this._printSemicolonBeforeNextToken = -1;\n      this._printSemicolonBeforeNextNode = -1;\n      this.source(\"start\", comment.loc);\n      this._append(val, isBlockComment);\n      this._printSemicolonBeforeNextNode = _printSemicolonBeforeNextNode;\n      this._printSemicolonBeforeNextToken = _printSemicolonBeforeNextToken;\n    } else {\n      this.source(\"start\", comment.loc);\n      this._append(val, isBlockComment);\n    }\n\n    if (!isBlockComment && !noLineTerminator) {\n      this.newline(1, true);\n    }\n\n    if (printNewLines && skipNewLines !== COMMENT_SKIP_NEWLINE.TRAILING) {\n      this.newline(1);\n    }\n  }\n\n  _printComments(\n    type: COMMENT_TYPE,\n    comments: readonly t.Comment[],\n    node: t.Node,\n    parent?: t.Node,\n    lineOffset: number = 0,\n    nextToken?: Token,\n  ) {\n    const nodeLoc = node.loc;\n    const len = comments.length;\n    let hasLoc = !!nodeLoc;\n    const nodeStartLine = hasLoc ? nodeLoc.start.line : 0;\n    const nodeEndLine = hasLoc ? nodeLoc.end.line : 0;\n    let lastLine = 0;\n    let leadingCommentNewline = 0;\n\n    const maybeNewline = this._noLineTerminator\n      ? function () {}\n      : this.newline.bind(this);\n\n    for (let i = 0; i < len; i++) {\n      const comment = comments[i];\n\n      const shouldPrint = this._shouldPrintComment(comment, nextToken);\n      if (shouldPrint === PRINT_COMMENT_HINT.DEFER) {\n        hasLoc = false;\n        break;\n      }\n      if (hasLoc && comment.loc && shouldPrint === PRINT_COMMENT_HINT.ALLOW) {\n        const commentStartLine = comment.loc.start.line;\n        const commentEndLine = comment.loc.end.line;\n        if (type === COMMENT_TYPE.LEADING) {\n          let offset = 0;\n          if (i === 0) {\n            // Because currently we cannot handle blank lines before leading comments,\n            // we always wrap before and after multi-line comments.\n            if (\n              this._buf.hasContent() &&\n              (comment.type === \"CommentLine\" ||\n                commentStartLine !== commentEndLine)\n            ) {\n              offset = leadingCommentNewline = 1;\n            }\n          } else {\n            offset = commentStartLine - lastLine;\n          }\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n          if (i + 1 === len) {\n            maybeNewline(\n              Math.max(nodeStartLine - lastLine, leadingCommentNewline),\n            );\n            lastLine = nodeStartLine;\n          }\n        } else if (type === COMMENT_TYPE.INNER) {\n          const offset =\n            commentStartLine - (i === 0 ? nodeStartLine : lastLine);\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n          if (i + 1 === len) {\n            maybeNewline(Math.min(1, nodeEndLine - lastLine)); // TODO: Improve here when inner comments processing is stronger\n            lastLine = nodeEndLine;\n          }\n        } else {\n          const offset =\n            commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n        }\n      } else {\n        hasLoc = false;\n        if (shouldPrint !== PRINT_COMMENT_HINT.ALLOW) {\n          continue;\n        }\n\n        if (len === 1) {\n          const singleLine = comment.loc\n            ? comment.loc.start.line === comment.loc.end.line\n            : !HAS_NEWLINE.test(comment.value);\n\n          const shouldSkipNewline =\n            singleLine &&\n            !isStatement(node) &&\n            !isClassBody(parent) &&\n            !isTSInterfaceBody(parent) &&\n            !isTSEnumMember(node);\n\n          if (type === COMMENT_TYPE.LEADING) {\n            this._printComment(\n              comment,\n              (shouldSkipNewline && node.type !== \"ObjectExpression\") ||\n                (singleLine && isFunction(parent, { body: node }))\n                ? COMMENT_SKIP_NEWLINE.ALL\n                : COMMENT_SKIP_NEWLINE.DEFAULT,\n            );\n          } else if (shouldSkipNewline && type === COMMENT_TYPE.TRAILING) {\n            this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n          } else {\n            this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n          }\n        } else if (\n          type === COMMENT_TYPE.INNER &&\n          !(node.type === \"ObjectExpression\" && node.properties.length > 1) &&\n          node.type !== \"ClassBody\" &&\n          node.type !== \"TSInterfaceBody\"\n        ) {\n          // class X {\n          //   /*:: a: number*/\n          //   /*:: b: ?string*/\n          // }\n\n          this._printComment(\n            comment,\n            i === 0\n              ? COMMENT_SKIP_NEWLINE.LEADING\n              : i === len - 1\n                ? COMMENT_SKIP_NEWLINE.TRAILING\n                : COMMENT_SKIP_NEWLINE.DEFAULT,\n          );\n        } else {\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n        }\n      }\n    }\n\n    if (type === COMMENT_TYPE.TRAILING && hasLoc && lastLine) {\n      this._lastCommentLine = lastLine;\n    }\n  }\n}\n\n// Expose the node type functions and helpers on the prototype for easy usage.\nObject.assign(Printer.prototype, generatorFunctions);\n\nif (!process.env.BABEL_8_BREAKING) {\n  addDeprecatedGenerators(Printer);\n}\n\ntype GeneratorFunctions = typeof generatorFunctions;\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface Printer extends GeneratorFunctions {}\nexport default Printer;\n\nfunction commaSeparator(this: Printer, occurrenceCount: number, last: boolean) {\n  this.token(\",\", false, occurrenceCount);\n  if (!last) this.space();\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,CAAA,GAAAD,OAAA;AAEA,IAAAE,EAAA,GAAAF,OAAA;AAUA,IAAAG,SAAA,GAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAGoC;EAflCM,YAAY;EACZC,UAAU;EACVC,WAAW;EACXC,WAAW;EACXC,iBAAiB;EACjBC;AAAc,IAAAT,EAAA;AAmBhB,MAAMU,mBAAmB,GAAG,IAAI;AAChC,MAAMC,oBAAoB,GAAG,OAAO;AACpC,MAAMC,WAAW,GAAG,oBAAoB;AACxC,MAAMC,gCAAgC,GAAG,yBAAyB;AAElE,SAASC,gBAAgBA,CAACC,CAAY,EAAE;EACtC,OAAOA,CAAC,CAACC,IAAI,KAAK,aAAa,IAAIJ,WAAW,CAACK,IAAI,CAACF,CAAC,CAACG,KAAK,CAAC;AAC9D;AAEA,MAAM;EAAEC;AAAY,CAAC,GAAGpB,CAAC;AAmFzB,MAAMqB,OAAO,CAAC;EACZC,WAAWA,CACTC,MAAc,EACdC,GAAc,EACdC,MAAgB,EAChBC,YAAqB,EACrB;IAAA,KAgBFC,kBAAkB,GAAY,KAAK;IAAA,KA0BnCC,YAAY,GAAW,CAAC;IAAA,KAExBC,OAAO,GAAY,IAAI;IAAA,KACvBC,aAAa,GAAkB,IAAI;IAAA,KAGnCC,YAAY,GAAW,IAAI;IAAA,KAC3BC,OAAO,GAAW,CAAC;IAAA,KACnBC,aAAa,GAAW,CAAC;IAAA,KACzBC,UAAU,GAAY,KAAK;IAAA,KAC3BC,iBAAiB,GAAY,KAAK;IAAA,KAClCC,0BAA0B,GAAkB,IAAI;IAAA,KAChDC,4BAA4B,GAAY,KAAK;IAAA,KAC7CC,gBAAgB,GAAG,IAAIC,GAAG,CAAY,CAAC;IAAA,KACvCC,gBAAgB,GAAG,KAAK;IAAA,KACxBC,aAAa,GAAG,KAAK;IAAA,KACrBC,YAAY,GAAG,KAAK;IAAA,KACpBC,gBAAgB,GAAG,CAAC;IAAA,KACpBC,iBAAiB,GAAY,KAAK;IAAA,KAClCC,oBAAoB,GAAY,IAAI;IAAA,KACpCC,QAAQ,GAAa,IAAI;IAAA,KAEzBC,sBAAsB,GAAG,IAAI,CAACC,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC;IAAA,KAiD1DC,6BAA6B,GAAW,CAAC,CAAC;IAAA,KAC1CC,8BAA8B,GAAW,CAAC,CAAC;IAjHzC,IAAI,CAAC5B,MAAM,GAAGA,MAAM;IAEpB,IAAI,CAACM,OAAO,GAAGJ,MAAM;IACrB,IAAI,CAACK,aAAa,GAAGJ,YAAY;IAEjC,IAAI,CAACO,aAAa,GAAGV,MAAM,CAAC6B,MAAM,CAACC,KAAK,CAACC,MAAM;IAE/C,IAAI,CAACC,SAAS,GAAG/B,GAAG,oBAAHA,GAAG,CAAE+B,SAAS;IAE/B,IAAI,CAACC,IAAI,GAAG,IAAIC,eAAM,CAACjC,GAAG,EAAED,MAAM,CAAC6B,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;EACrD;EAMAK,qBAAqBA,CAAA,EAAG;IACtB,IAAI,IAAI,CAAC/B,kBAAkB,EAAE,OAAO,MAAM,CAAC,CAAC;IAC5C,IAAI,CAACA,kBAAkB,GAAG,IAAI;IAC9B,OAAO,MAAM;MACX,IAAI,CAACA,kBAAkB,GAAG,KAAK;IACjC,CAAC;EACH;EAEAgC,cAAcA,CAAA,EAAG;IACf,MAAMC,qBAAqB,GAAG,IAAI,CAACjC,kBAAkB;IACrD,MAAMkC,4BAA4B,GAAG,IAAI,CAACzB,0BAA0B;IACpE,IACEwB,qBAAqB,KAAK,KAAK,IAC/BC,4BAA4B,KAAK,IAAI,EACrC;MACA,OAAO,MAAM,CAAC,CAAC;IACjB;IACA,IAAI,CAAClC,kBAAkB,GAAG,KAAK;IAC/B,IAAI,CAACS,0BAA0B,GAAG,IAAI;IACtC,OAAO,MAAM;MACX,IAAI,CAACT,kBAAkB,GAAGiC,qBAAqB;MAC/C,IAAI,CAACxB,0BAA0B,GAAGyB,4BAA4B;IAChE,CAAC;EACH;EA0BAC,QAAQA,CAACC,GAAW,EAAE;IACpB,IAAI,IAAI,CAACxC,MAAM,CAACyC,cAAc,EAAE;MAC9B,IAAI,CAAClB,QAAQ,GAAG,IAAImB,kBAAQ,CAACF,GAAG,EAAE,IAAI,CAAClC,OAAO,EAAE,IAAI,CAACC,aAAa,CAAC;IACrE;IACA,IAAI,CAACoC,KAAK,CAACH,GAAG,CAAC;IACf,IAAI,CAACI,mBAAmB,CAAC,CAAC;IAE1B,OAAO,IAAI,CAACX,IAAI,CAACY,GAAG,CAAC,CAAC;EACxB;EAMAhB,MAAMA,CAAA,EAAS;IACb,MAAM;MAAE7B;IAAO,CAAC,GAAG,IAAI;IACvB,IAAIA,MAAM,CAACyC,cAAc,IAAIzC,MAAM,CAAC8C,OAAO,IAAI9C,MAAM,CAAC+C,OAAO,EAAE;MAC7D;IACF;IAEA,IAAI,CAACtC,OAAO,EAAE;EAChB;EAMAuC,MAAMA,CAAA,EAAS;IACb,MAAM;MAAEhD;IAAO,CAAC,GAAG,IAAI;IACvB,IAAIA,MAAM,CAACyC,cAAc,IAAIzC,MAAM,CAAC8C,OAAO,IAAI9C,MAAM,CAAC+C,OAAO,EAAE;MAC7D;IACF;IAEA,IAAI,CAACtC,OAAO,EAAE;EAChB;EAmBAwC,SAASA,CAACC,KAAc,GAAG,KAAK,EAAQ;IACtC,IAAI,CAACN,mBAAmB,CAAC,CAAC;IAC1B,IAAIM,KAAK,EAAE;MACT,IAAI,CAACC,WAAW,GAAoB,CAAC;MACrC,IAAI,CAACvC,iBAAiB,GAAG,KAAK;MAC9B;IACF;IACA,IAAI,IAAI,CAACW,QAAQ,EAAE;MACjB,MAAM6B,IAAI,GAAG,IAAI,CAAC5C,YAAY;MAC9B,IAAI4C,IAAI,CAACC,KAAK,IAAI,IAAI,IAAID,IAAI,CAACE,GAAG,IAAI,IAAI,EAAE;QAC1C,IAAI,CAAC,IAAI,CAAC/B,QAAQ,CAACgC,UAAU,CAACH,IAAI,EAAE,GAAG,CAAC,EAAE;UAExC,IAAI,CAACzB,6BAA6B,GAAG,IAAI,CAACM,IAAI,CAACuB,cAAc,CAAC,CAAC;UAC/D;QACF;QACA,MAAMC,OAAO,GAAG,IAAI,CAAClC,QAAQ,CAACmC,UAAU,CAAC,IAAI,CAAClD,YAAY,CAAC;QAC3D,IAAI,CAACmD,UAAU,CAAC,IAAI,CAACrD,OAAO,CAACmD,OAAO,CAACA,OAAO,CAAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC6B,GAAG,CAACP,KAAK,CAAC;MACtE;IACF;IACA,IAAI,CAACQ,MAAM,GAAoB,CAAC;IAChC,IAAI,CAACjD,iBAAiB,GAAG,KAAK;EAChC;EAMAkD,UAAUA,CAACV,IAAY,EAAQ;IAC7B,IAAI,IAAI,CAACpD,MAAM,CAAC+D,QAAQ,EAAE;MACxB,IAAI,CAAC9B,IAAI,CAAC+B,mBAAmB,CAAC,CAAC;IACjC;IACA,IAAI,CAACC,gBAAgB,CAAC,KAAK,EAAEb,IAAI,CAACQ,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,CAACM,SAAK,IAAI,CAAC;EACjB;EAEAC,WAAWA,CAACf,IAAY,EAAQ;IAC9B,IAAI,CAACa,gBAAgB,CAAC,KAAK,EAAEb,IAAI,CAACQ,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1C,IAAI,CAACM,SAAK,GAAI,CAAC;EACjB;EAMAE,KAAKA,CAAClB,KAAc,GAAG,KAAK,EAAQ;IAClC,MAAM;MAAElD;IAAO,CAAC,GAAG,IAAI;IACvB,IAAIA,MAAM,CAAC8C,OAAO,IAAI9C,MAAM,CAACyC,cAAc,EAAE;IAE7C,IAAIS,KAAK,EAAE;MACT,IAAI,CAACmB,MAAM,CAAC,CAAC;IACf,CAAC,MAAM,IAAI,IAAI,CAACpC,IAAI,CAACqC,UAAU,CAAC,CAAC,EAAE;MACjC,MAAMC,MAAM,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACjC,IAAID,MAAM,OAAoB,IAAIA,MAAM,OAAuB,EAAE;QAC/D,IAAI,CAACF,MAAM,CAAC,CAAC;MACf;IACF;EACF;EAMAI,IAAIA,CAACC,GAAW,EAAEC,qBAA8B,GAAG,KAAK,EAAQ;IAC9D,IAAI,CAACtE,YAAY,GAAG,CAAC;IAErB,IAAI,CAACuE,wBAAwB,CAACF,GAAG,CAAC;IAElC,IAAI,CAAC9B,mBAAmB,CAAC,CAAC;IAE1B,IAAI,IAAI,CAACrB,QAAQ,EAAE,IAAI,CAACsD,sBAAsB,CAACH,GAAG,CAAC;IAGnD,IACE,IAAI,CAACxD,aAAa,IACjB,IAAI,CAACC,YAAY,IAAIuD,GAAG,CAACI,UAAU,CAAC,CAAC,CAAC,OAAqB,EAC5D;MACA,IAAI,CAACT,MAAM,CAAC,CAAC;IACf;IACA,IAAI,CAACU,OAAO,CAACL,GAAG,EAAE,KAAK,CAAC;IAExB,IAAI,CAACxD,aAAa,GAAG,IAAI;IACzB,IAAI,CAACN,iBAAiB,GAAG+D,qBAAqB;EAChD;EAMAK,MAAMA,CAACN,GAAW,EAAEM,MAAe,EAAQ;IAEzC,SAASC,mBAAmBA,CAACP,GAAW,EAAE;MACxC,IAAIA,GAAG,CAAC3C,MAAM,GAAG,CAAC,IAAI2C,GAAG,CAACI,UAAU,CAAC,CAAC,CAAC,OAAqB,EAAE;QAC5D,MAAMI,UAAU,GAAGR,GAAG,CAACI,UAAU,CAAC,CAAC,CAAC;QACpC,OACEI,UAAU,OAAyB,IACnCA,UAAU,QAAyB,IACnCA,UAAU,QAAyB;MAEvC;MACA,OAAO,KAAK;IACd;IACA,IAAI,CAACT,IAAI,CAACC,GAAG,CAAC;IAId,IAAI,CAACzD,gBAAgB,GACnBkE,MAAM,CAACC,SAAS,CAACJ,MAAM,CAAC,IACxB,CAACC,mBAAmB,CAACP,GAAG,CAAC,IACzB,CAACtF,mBAAmB,CAACO,IAAI,CAAC+E,GAAG,CAAC,IAC9B,CAACrF,oBAAoB,CAACM,IAAI,CAAC+E,GAAG,CAAC,IAC/BA,GAAG,CAACI,UAAU,CAACJ,GAAG,CAAC3C,MAAM,GAAG,CAAC,CAAC,OAAkB;EACpD;EAaAmC,KAAKA,CAACQ,GAAW,EAAEW,YAAY,GAAG,KAAK,EAAEC,eAAe,GAAG,CAAC,EAAQ;IAClE,IAAI,CAACjF,YAAY,GAAG,CAAC;IAErB,IAAI,CAACuE,wBAAwB,CAACF,GAAG,EAAEY,eAAe,CAAC;IAEnD,IAAI,CAAC1C,mBAAmB,CAAC,CAAC;IAE1B,IAAI,IAAI,CAACrB,QAAQ,EAAE,IAAI,CAACsD,sBAAsB,CAACH,GAAG,EAAEY,eAAe,CAAC;IAEpE,MAAMC,QAAQ,GAAG,IAAI,CAACf,WAAW,CAAC,CAAC;IACnC,MAAMgB,QAAQ,GAAGd,GAAG,CAACI,UAAU,CAAC,CAAC,CAAC;IAClC,IACGS,QAAQ,OAA8B,KAGpCb,GAAG,KAAK,IAAI,IAEXc,QAAQ,OAAuB,CAAC,IAEnCA,QAAQ,OAAuB,IAAID,QAAQ,OAAwB,IACnEC,QAAQ,OAAmB,IAAID,QAAQ,OAAoB,IAE3DC,QAAQ,OAAkB,IAAI,IAAI,CAACvE,gBAAiB,EACrD;MACA,IAAI,CAACoD,MAAM,CAAC,CAAC;IACf;IACA,IAAI,CAACU,OAAO,CAACL,GAAG,EAAEW,YAAY,CAAC;IAC/B,IAAI,CAACzE,iBAAiB,GAAG,KAAK;EAChC;EAEA6E,SAASA,CAACC,IAAY,EAAQ;IAC5B,IAAI,CAACrF,YAAY,GAAG,CAAC;IAErB,MAAMqE,GAAG,GAAGiB,MAAM,CAACC,YAAY,CAACF,IAAI,CAAC;IACrC,IAAI,CAACd,wBAAwB,CAACF,GAAG,CAAC;IAElC,IAAI,CAAC9B,mBAAmB,CAAC,CAAC;IAE1B,IAAI,IAAI,CAACrB,QAAQ,EAAE,IAAI,CAACsD,sBAAsB,CAACH,GAAG,CAAC;IAEnD,MAAMa,QAAQ,GAAG,IAAI,CAACf,WAAW,CAAC,CAAC;IACnC,IAEGkB,IAAI,OAAuB,IAAIH,QAAQ,OAAuB,IAC9DG,IAAI,OAAmB,IAAIH,QAAQ,OAAoB,IAEvDG,IAAI,OAAkB,IAAI,IAAI,CAACzE,gBAAiB,EACjD;MACA,IAAI,CAACoD,MAAM,CAAC,CAAC;IACf;IACA,IAAI,CAAClB,WAAW,CAACuC,IAAI,CAAC;IACtB,IAAI,CAAC9E,iBAAiB,GAAG,KAAK;EAChC;EAQAiF,OAAOA,CAACC,CAAS,GAAG,CAAC,EAAE5C,KAAe,EAAQ;IAC5C,IAAI4C,CAAC,IAAI,CAAC,EAAE;IAEZ,IAAI,CAAC5C,KAAK,EAAE;MACV,IAAI,IAAI,CAAClD,MAAM,CAAC+F,WAAW,IAAI,IAAI,CAAC/F,MAAM,CAAC8C,OAAO,EAAE;MAEpD,IAAI,IAAI,CAAC9C,MAAM,CAAC+C,OAAO,EAAE;QACvB,IAAI,CAACqB,KAAK,CAAC,CAAC;QACZ;MACF;IACF;IAEA,IAAI0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC;IAEhBA,CAAC,IAAI,IAAI,CAAC7D,IAAI,CAAC+D,eAAe,CAAC,CAAC;IAEhC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,CAAC,EAAEG,CAAC,EAAE,EAAE;MAC1B,IAAI,CAACC,QAAQ,CAAC,CAAC;IACjB;IAEA;EACF;EAEAC,QAAQA,CAACT,IAAY,EAAW;IAC9B,OAAO,IAAI,CAAClB,WAAW,CAAC,CAAC,KAAKkB,IAAI;EACpC;EAEAlB,WAAWA,CAAA,EAAW;IACpB,OAAO,IAAI,CAACvC,IAAI,CAACuC,WAAW,CAAC,CAAC;EAChC;EAEA4B,sBAAsBA,CAAA,EAAW;IAC/B,OAAO,IAAI,CAACnE,IAAI,CAACmE,sBAAsB,CAAC,CAAC;EAC3C;EAEAC,qBAAqBA,CAAA,EAAS;IAC5B,IAAI,CAACpE,IAAI,CAACoE,qBAAqB,CAAC,CAAC;EACnC;EAEAC,WAAWA,CAAC1C,GAAoB,EAAE2C,EAAc,EAAE;IAChD,IAAI,CAAC3C,GAAG,EAAE;MACR2C,EAAE,CAAC,CAAC;MACJ;IACF;IAEA,IAAI,CAACC,QAAQ,CAAC,OAAO,EAAE5C,GAAG,CAAC;IAE3B,IAAI,CAAC3B,IAAI,CAACqE,WAAW,CAAC1C,GAAG,EAAE2C,EAAE,CAAC;EAChC;EAEAE,MAAMA,CAACC,IAAqB,EAAE9C,GAAoB,EAAQ;IACxD,IAAI,CAACA,GAAG,EAAE;IAEV,IAAI,CAAC4C,QAAQ,CAACE,IAAI,EAAE9C,GAAG,CAAC;IAExB,IAAI,CAAC3B,IAAI,CAACwE,MAAM,CAACC,IAAI,EAAE9C,GAAG,CAAC;EAC7B;EAEAK,gBAAgBA,CACdyC,IAAqB,EACrB9C,GAAoB,EACpB+C,YAAoB,EACd;IACN,IAAI,CAAC/C,GAAG,IAAI,IAAI,CAAC5D,MAAM,CAACyC,cAAc,EAAE;IAExC,IAAI,CAAC+D,QAAQ,CAACE,IAAI,EAAE9C,GAAG,CAAC;IAExB,IAAI,CAAC3B,IAAI,CAACgC,gBAAgB,CAACyC,IAAI,EAAE9C,GAAG,EAAE+C,YAAY,CAAC;EACrD;EAEAC,oBAAoBA,CAACC,cAAsB,EAAEC,GAAS,EAAQ;IAC5D,IAAI,CAAC,IAAI,CAAC7E,IAAI,CAAC8E,cAAc,EAAE;IAE/B,MAAMC,cAAc,GAAG,IAAI,CAAC/E,IAAI,CAACgF,eAAe;IAChDD,cAAc,CAACE,iBAAiB,GAAGJ,GAAG;IACtCE,cAAc,CAACH,cAAc,GAAGA,cAAc;EAChD;EAEAxC,MAAMA,CAAA,EAAS;IACb,IAAI,CAACR,MAAM,GAAgB,CAAC;EAC9B;EAEAqC,QAAQA,CAAA,EAAS;IACf,IAAI,CAACrC,MAAM,GAAmB,CAAC;EACjC;EAEAgB,sBAAsBA,CAACH,GAAW,EAAEY,eAAuB,GAAG,CAAC,EAAQ;IAGrE,MAAMpB,KAAK,GAAG,IAAI,CAAC3C,QAAQ,CAAC4F,YAAY,CACtC,IAAI,CAAC3G,YAAY,EACjBkE,GAAG,EACHY,eACF,CAAC;IACD,IAAIpB,KAAK,EAAE,IAAI,CAACP,UAAU,CAACO,KAAK,CAACN,GAAG,CAACP,KAAK,CAAC;IAE3C,IACE,IAAI,CAACzB,8BAA8B,KAAK,CAAC,CAAC,IAC1C,IAAI,CAACA,8BAA8B,KAAK,IAAI,CAACK,IAAI,CAACuB,cAAc,CAAC,CAAC,EAClE;MACA,IAAI,CAACvB,IAAI,CAACmF,UAAU,GAAoB,CAAC;MACzC,IAAI,CAAClG,aAAa,GAAG,KAAK;MAC1B,IAAI,CAACD,gBAAgB,GAAG,KAAK;MAC7B,IAAI,CAACE,YAAY,GAAG,KAAK;IAC3B;IACA,IAAI,CAACS,8BAA8B,GAAG,CAAC,CAAC;IACxC,IAAI,CAACD,6BAA6B,GAAG,CAAC,CAAC;EACzC;EAEAoD,OAAOA,CAACL,GAAW,EAAEW,YAAqB,EAAQ;IAChD,IAAI,CAACgC,YAAY,CAAC3C,GAAG,CAACI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,CAAC7C,IAAI,CAACqF,MAAM,CAAC5C,GAAG,EAAEW,YAAY,CAAC;IAGnC,IAAI,CAACnE,aAAa,GAAG,KAAK;IAC1B,IAAI,CAACD,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACE,YAAY,GAAG,KAAK;EAC3B;EAEAgC,WAAWA,CAACuC,IAAY,EAAQ;IAC9B,IAAI,CAAC2B,YAAY,CAAC3B,IAAI,CAAC;IAEvB,IAAI,CAACzD,IAAI,CAACmF,UAAU,CAAC1B,IAAI,CAAC;IAG1B,IAAI,CAACxE,aAAa,GAAG,KAAK;IAC1B,IAAI,CAACD,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACE,YAAY,GAAG,KAAK;EAC3B;EAEA0C,MAAMA,CAAC6B,IAAY,EAAE;IACnB,IAAI,CAAC2B,YAAY,CAAC3B,IAAI,CAAC;IAEvB,IAAI,CAACzD,IAAI,CAACsF,KAAK,CAAC7B,IAAI,CAAC;IAErB,IAAI,CAACxE,aAAa,GAAG,KAAK;IAC1B,IAAI,CAACD,gBAAgB,GAAG,KAAK;EAC/B;EAEAoG,YAAYA,CAACG,SAAiB,EAAQ;IAEpC,IACE,IAAI,CAAC/G,OAAO,IACZ+G,SAAS,OAAuB,IAChC,IAAI,CAACrB,QAAQ,GAAmB,CAAC,EACjC;MACA,IAAI,CAAClE,IAAI,CAACwF,gBAAgB,CAAC,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC;IAC/C;EACF;EAEAC,aAAaA,CAACH,SAAiB,EAAE;IAE/B,IACE,IAAI,CAAC/G,OAAO,IACZ+G,SAAS,OAAuB,IAChC,IAAI,CAACrB,QAAQ,GAAmB,CAAC,EACjC;MACA,OAAO,IAAI;IACb;EACF;EAEAyB,OAAOA,CAACC,IAAY,EAAE;IACpB,IAAI,CAAC,IAAI,CAAC7H,MAAM,CAAC+F,WAAW,EAAE;IAG9B,MAAM+B,KAAK,GAAGD,IAAI,GAAG,IAAI,CAAC5F,IAAI,CAACuB,cAAc,CAAC,CAAC;IAE/C,KAAK,IAAIsC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgC,KAAK,EAAEhC,CAAC,EAAE,EAAE;MAC9B,IAAI,CAACI,QAAQ,CAAC,CAAC;IACjB;EACF;EAEAM,QAAQA,CAACE,IAAqB,EAAE9C,GAAS,EAAE;IACzC,MAAM;MAAE5D;IAAO,CAAC,GAAG,IAAI;IACvB,IAAI,CAACA,MAAM,CAACyC,cAAc,EAAE;MAC1B,IAAIzC,MAAM,CAAC+F,WAAW,IAAInC,GAAG,YAAHA,GAAG,CAAG8C,IAAI,CAAC,EAAE;QACrC,IAAI,CAACkB,OAAO,CAAChE,GAAG,CAAC8C,IAAI,CAAC,CAACmB,IAAI,CAAC;MAC9B;MACA;IACF;IAGA,MAAMf,GAAG,GAAGlD,GAAG,oBAAHA,GAAG,CAAG8C,IAAI,CAAC;IACvB,IAAII,GAAG,IAAI,IAAI,EAAE,IAAI,CAACnD,UAAU,CAACmD,GAAG,CAAC;EACvC;EAEAnD,UAAUA,CAAC;IAAEkE,IAAI;IAAEE,MAAM;IAAEC;EAAW,CAAC,EAAE;IACvC,MAAMF,KAAK,GAAGD,IAAI,GAAG,IAAI,CAAC5F,IAAI,CAACuB,cAAc,CAAC,CAAC;IAC/C,IAAIsE,KAAK,GAAG,CAAC,IAAI,IAAI,CAAClH,iBAAiB,EAAE;MAGvC;IACF;IAEA,KAAK,IAAIkF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgC,KAAK,EAAEhC,CAAC,EAAE,EAAE;MAC9B,IAAI,CAACI,QAAQ,CAAC,CAAC;IACjB;IAEA,MAAM+B,WAAW,GACfH,KAAK,GAAG,CAAC,GAAGC,MAAM,GAAGA,MAAM,GAAG,IAAI,CAAC9F,IAAI,CAACiG,gBAAgB,CAAC,CAAC;IAC5D,IAAID,WAAW,GAAG,CAAC,EAAE;MACnB,MAAME,MAAM,GAAG,IAAI,CAAC5H,aAAa,GAC7B,IAAI,CAACA,aAAa,CACf6H,KAAK,CAACJ,KAAK,GAAGC,WAAW,EAAED,KAAK,CAAC,CAEjCK,OAAO,CAAC,+DAAsC,EAAE,GAAG,CAAC,GACvD,GAAG,CAACC,MAAM,CAACL,WAAW,CAAC;MAC3B,IAAI,CAAClD,OAAO,CAACoD,MAAM,EAAE,KAAK,CAAC;IAC7B;EACF;EAMAT,UAAUA,CAAA,EAAW;IACnB,OAAO,IAAI,CAAChH,aAAa,GAAG,IAAI,CAACD,OAAO;EAC1C;EAEA8H,mBAAmBA,CAACnF,IAAY,EAAE;IAgBhC,IAAI,CAACxC,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAAC+B,KAAK,CAACS,IAAI,CAAC;EAClB;EAEAT,KAAKA,CACHS,IAAmB,EACnBuB,qBAA+B,EAG/B6D,0BAAmC,EACnC;IAAA,IAAAC,WAAA,EAAAC,qBAAA,EAAAC,sBAAA;IACA,IAAI,CAACvF,IAAI,EAAE;IAEX,IAAI,CAAC/B,iBAAiB,GAAG,KAAK;IAE9B,MAAMuH,QAAQ,GAAGxF,IAAI,CAAC1D,IAAI;IAC1B,MAAMM,MAAM,GAAG,IAAI,CAACA,MAAM;IAE1B,MAAM6I,UAAU,GAAG7I,MAAM,CAAC+C,OAAO;IACjC,IAEEK,IAAI,CAAC0F,QAAQ,EACb;MACA9I,MAAM,CAAC+C,OAAO,GAAG,IAAI;IACvB;IAEA,MAAMgG,WAAW,GACf,IAAI,CACFH,QAAQ,CAMT;IACH,IAAIG,WAAW,KAAKC,SAAS,EAAE;MAC7B,MAAM,IAAIC,cAAc,CACtB,wBAAwBC,IAAI,CAACC,SAAS,CACpCP,QACF,CAAC,qBAAqBM,IAAI,CAACC,SAAS,CAAC/F,IAAI,CAACrD,WAAW,CAACqJ,IAAI,CAAC,EAC7D,CAAC;IACH;IAEA,MAAMC,MAAM,GAAG,IAAI,CAAC7I,YAAY;IAChC,IAAI,CAACA,YAAY,GAAG4C,IAAI;IAExB,IAAI,IAAI,CAAC7B,QAAQ,EAAE;MACjB,IAAI,CAACK,8BAA8B,GAAG,IAAI,CAACD,6BAA6B;IAC1E;IAEA,MAAM2H,QAAQ,GAAG,IAAI,CAAC3I,UAAU;IAChC,IAAI,CAACA,UAAU,GAAGyC,IAAI,CAACQ,GAAG,IAAI,IAAI;IAClC,IAAI,CAAChB,mBAAmB,CAAC,IAAI,CAACjC,UAAU,IAAI,CAAC2I,QAAQ,CAAC;IAEtD,MAAMC,aAAa,IAAAd,WAAA,GAAGrF,IAAI,CAACoG,KAAK,qBAAVf,WAAA,CAAYc,aAAoC;IACtE,IAAIE,iBAAiB,GAClBF,aAAa,IAAIvJ,MAAM,CAACyC,cAAc,IACtC8G,aAAa,IACZvJ,MAAM,CAAC0J,oBAAoB,IAC3Bd,QAAQ,KAAK,oBAAqB,IACpC/I,WAAW,CACTuD,IAAI,EACJiG,MAAM,EACN,IAAI,CAAChJ,YAAY,EACjB,IAAI,CAACD,kBAAkB,EACvBJ,MAAM,CAACyC,cAAc,GAAG,IAAI,CAACjB,sBAAsB,GAAGwH,SACxD,CAAC;IAEH,IACE,CAACS,iBAAiB,IAClBF,aAAa,KAAAb,qBAAA,GACbtF,IAAI,CAACuG,eAAe,aAApBjB,qBAAA,CAAsB3G,MAAM,IAC5BqB,IAAI,CAACuG,eAAe,CAAC,CAAC,CAAC,CAACjK,IAAI,KAAK,cAAc,EAC/C;MACA,MAAMkK,UAAU,GAAGP,MAAM,oBAANA,MAAM,CAAE3J,IAAI;MAC/B,QAAQkK,UAAU;QAChB,KAAK,qBAAqB;QAC1B,KAAK,oBAAoB;QACzB,KAAK,sBAAsB;QAC3B,KAAK,iBAAiB;UACpB;QACF,KAAK,gBAAgB;QACrB,KAAK,wBAAwB;QAC7B,KAAK,eAAe;UAClB,IAAIP,MAAM,CAACQ,MAAM,KAAKzG,IAAI,EAAE;QAE9B;UACEqG,iBAAiB,GAAG,IAAI;MAC5B;IACF;IAEA,IAAIK,mBAAmB,GAAG,KAAK;IAC/B,IACE,CAACL,iBAAiB,IAClB,IAAI,CAAC7I,iBAAiB,KACrB,CAAA+H,sBAAA,GAAAvF,IAAI,CAACuG,eAAe,aAApBhB,sBAAA,CAAsBoB,IAAI,CAACvK,gBAAgB,CAAC,IAC1C,IAAI,CAACQ,MAAM,CAAC+F,WAAW,IACtB3C,IAAI,CAACQ,GAAG,IACRR,IAAI,CAACQ,GAAG,CAACP,KAAK,CAACwE,IAAI,GAAG,IAAI,CAAC5F,IAAI,CAACuB,cAAc,CAAC,CAAE,CAAC,EACtD;MACAiG,iBAAiB,GAAG,IAAI;MACxBK,mBAAmB,GAAG,IAAI;IAC5B;IAEA,IAAIxH,4BAA4B;IAChC,IAAI0H,4BAA4B;IAChC,IAAI,CAACP,iBAAiB,EAAE;MACtB9E,qBAAqB,KAArBA,qBAAqB,GACnB0E,MAAM,IACN,IAAI,CAACxI,0BAA0B,KAAKwI,MAAM,IAC1C5K,CAAC,CAACwL,WAAW,CAACZ,MAAM,EAAEjG,IAAI,CAAC;MAC7B,IAAIuB,qBAAqB,EAAE;QAAA,IAAAuF,qBAAA;QACzB,KAAAA,qBAAA,GAAI9G,IAAI,CAAC+G,gBAAgB,aAArBD,qBAAA,CAAuBH,IAAI,CAACvK,gBAAgB,CAAC,EAAE;UACjD,IAAIV,YAAY,CAACsE,IAAI,CAAC,EAAEqG,iBAAiB,GAAG,IAAI;QAClD,CAAC,MAAM;UACLnH,4BAA4B,GAAG,IAAI,CAACzB,0BAA0B;UAC9D,IAAI,CAACA,0BAA0B,GAAGuC,IAAI;QACxC;MACF;IACF;IAEA,IAAIqG,iBAAiB,EAAE;MACrB,IAAI,CAACvF,SAAK,GAAI,CAAC;MACf,IAAI4F,mBAAmB,EAAE,IAAI,CAACjI,MAAM,CAAC,CAAC;MACtC,IAAI,CAACR,iBAAiB,GAAG,KAAK;MAC9B,IAAI,IAAI,CAACjB,kBAAkB,EAAE;QAC3B4J,4BAA4B,GAAG,IAAI;QACnC,IAAI,CAAC5J,kBAAkB,GAAG,KAAK;MACjC;MACAkC,4BAA4B,GAAG,IAAI,CAACzB,0BAA0B;MAC9D,IAAI,CAACA,0BAA0B,GAAG,IAAI;IACxC;IAEA,IAAI,CAACO,gBAAgB,GAAG,CAAC;IAEzB,IAAI,CAACgJ,qBAAqB,CAAChH,IAAI,EAAEiG,MAAM,CAAC;IAExC,MAAMzF,GAAG,GAAGgF,QAAQ,KAAK,SAAS,IAAIA,QAAQ,KAAK,MAAM,GAAG,IAAI,GAAGxF,IAAI,CAACQ,GAAG;IAE3E,IAAI,CAAC0C,WAAW,CACd1C,GAAG,EAEHmF,WAAW,CAACrH,IAAI,CAAC,IAAI,EAAE0B,IAAI,EAAEiG,MAAM,CACrC,CAAC;IAED,IAAII,iBAAiB,EAAE;MACrB,IAAI,CAACY,sBAAsB,CAACjH,IAAI,EAAEiG,MAAM,CAAC;MACzC,IAAIS,mBAAmB,EAAE;QACvB,IAAI,CAAC9G,MAAM,CAAC,CAAC;QACb,IAAI,CAAC6C,OAAO,CAAC,CAAC;MAChB;MACA,IAAI,CAAC3B,SAAK,GAAI,CAAC;MACf,IAAI,CAACtD,iBAAiB,GAAG+D,qBAAqB;MAC9C,IAAIqF,4BAA4B,EAAE,IAAI,CAAC5J,kBAAkB,GAAG,IAAI;IAClE,CAAC,MAAM,IAAIuE,qBAAqB,IAAI,CAAC,IAAI,CAAC/D,iBAAiB,EAAE;MAC3D,IAAI,CAACA,iBAAiB,GAAG,IAAI;MAC7B,IAAI,CAACyJ,sBAAsB,CAACjH,IAAI,EAAEiG,MAAM,CAAC;IAC3C,CAAC,MAAM;MACL,IAAI,CAACgB,sBAAsB,CAACjH,IAAI,EAAEiG,MAAM,EAAEb,0BAA0B,CAAC;IACvE;IAGA,IAAI,CAAChI,YAAY,GAAG6I,MAAM;IAC1BrJ,MAAM,CAAC+C,OAAO,GAAG8F,UAAU;IAC3B,IAAI,CAAClI,UAAU,GAAG2I,QAAQ;IAE1B,IAAIhH,4BAA4B,KAAK0G,SAAS,EAAE;MAC9C,IAAI,CAACnI,0BAA0B,GAAGyB,4BAA4B;IAChE;IAEA,IAAI,CAACjB,iBAAiB,GAAG,KAAK;EAChC;EAEAuB,mBAAmBA,CAAC0H,uBAAiC,EAAE;IACrD,IAAIA,uBAAuB,EAAE,IAAI,CAACC,sBAAsB,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC5J,UAAU,EAAE,IAAI,CAAC6J,qBAAqB,CAAC,CAAC;EACpD;EAEAD,sBAAsBA,CAAA,EAAG;IACvB,IAAI,IAAI,CAACzJ,4BAA4B,EAAE;IACvC,IAAI,CAACA,4BAA4B,GAAG,IAAI;IAExC,MAAM2J,OAAO,GAAG,IAAI,CAACzK,MAAM,CAAC0K,sBAAsB;IAClD,IAAID,OAAO,EAAE;MACX,IAAI,CAACE,aAAa,CAChB;QACEjL,IAAI,EAAE,cAAc;QACpBE,KAAK,EAAE6K;MACT,CAAC,GAEH,CAAC;IACH;EACF;EAEAD,qBAAqBA,CAAA,EAAG;IACtB,IAAI,CAAC,IAAI,CAAC1J,4BAA4B,EAAE;IACxC,IAAI,CAACA,4BAA4B,GAAG,KAAK;IAEzC,MAAM2J,OAAO,GAAG,IAAI,CAACzK,MAAM,CAAC4K,qBAAqB;IACjD,IAAIH,OAAO,EAAE;MACX,IAAI,CAACE,aAAa,CAChB;QACEjL,IAAI,EAAE,cAAc;QACpBE,KAAK,EAAE6K;MACT,CAAC,GAEH,CAAC;IACH;EACF;EAEAI,cAAcA,CACZzH,IAKa,EACO;IACpB,MAAMoG,KAAK,GAAGpG,IAAI,CAACoG,KAAK;IACxB,IACE,CAAAA,KAAK,oBAALA,KAAK,CAAEsB,GAAG,KAAI,IAAI,IAClBtB,KAAK,CAACuB,QAAQ,IAAI,IAAI,IACtB3H,IAAI,CAACxD,KAAK,KAAK4J,KAAK,CAACuB,QAAQ,EAC7B;MAEA,OAAOvB,KAAK,CAACsB,GAAG;IAClB;EACF;EAEAE,SAASA,CACPC,KAAuC,EACvCC,SAAmB,EACnBrJ,MAAgB,EAChBsJ,SAAyC,EACzCC,sBAAgC,EAChCC,WAA6C,EAC7CC,QAAuC,EACvC9C,0BAAmC,EACnC;IACA,IAAI,EAACyC,KAAK,YAALA,KAAK,CAAElJ,MAAM,GAAE;IAEpB,IAAIF,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC7B,MAAM,CAAC+F,WAAW,EAAE;MAAA,IAAAwF,YAAA;MAC7C,MAAMC,SAAS,IAAAD,YAAA,GAAGN,KAAK,CAAC,CAAC,CAAC,CAACrH,GAAG,qBAAZ2H,YAAA,CAAclI,KAAK,CAACwE,IAAI;MAC1C,IAAI2D,SAAS,IAAI,IAAI,IAAIA,SAAS,KAAK,IAAI,CAACvJ,IAAI,CAACuB,cAAc,CAAC,CAAC,EAAE;QACjE3B,MAAM,GAAG,IAAI;MACf;IACF;IAEA,IAAIA,MAAM,EAAE,IAAI,CAACA,MAAM,CAAC,CAAC;IAEzB,MAAM4J,WAA+B,GAAG;MACtCJ,WAAW,EAAEA,WAAW;MACxBK,iBAAiB,EAAE;IACrB,CAAC;IAED,MAAMC,cAAc,GAAGR,SAAS,oBAATA,SAAS,CAAEzJ,IAAI,CAAC,IAAI,CAAC;IAE5C,MAAMkK,GAAG,GAAGX,KAAK,CAAClJ,MAAM;IACxB,KAAK,IAAI+D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8F,GAAG,EAAE9F,CAAC,EAAE,EAAE;MAC5B,MAAM1C,IAAI,GAAG6H,KAAK,CAACnF,CAAC,CAAC;MACrB,IAAI,CAAC1C,IAAI,EAAE;MAEX,IAAI8H,SAAS,EAAE,IAAI,CAACW,aAAa,CAAC/F,CAAC,KAAK,CAAC,EAAE2F,WAAW,CAAC;MAEvD,IAAI,CAAC9I,KAAK,CAACS,IAAI,EAAE4F,SAAS,EAAER,0BAA0B,IAAI,CAAC,CAAC;MAE5D8C,QAAQ,YAARA,QAAQ,CAAGlI,IAAI,EAAE0C,CAAC,CAAC;MAEnB,IAAI6F,cAAc,IAAI,IAAI,EAAE;QAC1B,IAAI7F,CAAC,GAAG8F,GAAG,GAAG,CAAC,EAAED,cAAc,CAAC7F,CAAC,EAAE,KAAK,CAAC,CAAC,KACrC,IAAIsF,sBAAsB,EAAEO,cAAc,CAAC7F,CAAC,EAAE,IAAI,CAAC;MAC1D;MAEA,IAAIoF,SAAS,EAAE;QAAA,IAAAY,sBAAA;QACb,IAAI,GAAAA,sBAAA,GAAC1I,IAAI,CAAC+G,gBAAgB,aAArB2B,sBAAA,CAAuB/J,MAAM,GAAE;UAClC,IAAI,CAACX,gBAAgB,GAAG,CAAC;QAC3B;QAEA,IAAI0E,CAAC,GAAG,CAAC,KAAK8F,GAAG,EAAE;UACjB,IAAI,CAAC/F,OAAO,CAAC,CAAC,CAAC;QACjB,CAAC,MAAM;UAAA,IAAAkG,aAAA;UACL,MAAMC,QAAQ,GAAGf,KAAK,CAACnF,CAAC,GAAG,CAAC,CAAC;UAC7B2F,WAAW,CAACC,iBAAiB,GAAG,EAAAK,aAAA,GAAAC,QAAQ,CAACpI,GAAG,qBAAZmI,aAAA,CAAc1I,KAAK,CAACwE,IAAI,KAAI,CAAC;UAE7D,IAAI,CAACgE,aAAa,CAAC,IAAI,EAAEJ,WAAW,CAAC;QACvC;MACF;IACF;IAEA,IAAI5J,MAAM,EAAE,IAAI,CAACmB,MAAM,CAAC,CAAC;EAC3B;EAEAiJ,wBAAwBA,CAAC7I,IAAY,EAAE;IACrC,MAAMvB,MAAM,GAAGuB,IAAI,CAACuG,eAAe,IAAIvG,IAAI,CAACuG,eAAe,CAAC5H,MAAM,GAAG,CAAC;IACtE,IAAIF,MAAM,EAAE,IAAI,CAACA,MAAM,CAAC,CAAC;IACzB,IAAI,CAACc,KAAK,CAACS,IAAI,CAAC;IAChB,IAAIvB,MAAM,EAAE,IAAI,CAACmB,MAAM,CAAC,CAAC;EAC3B;EAEAkJ,UAAUA,CAAC7C,MAA8C,EAAE;IACzD,MAAMjG,IAAI,GAAGiG,MAAM,CAAC8C,IAAI;IAExB,IAAI/I,IAAI,CAAC1D,IAAI,KAAK,gBAAgB,EAAE;MAClC,IAAI,CAAC0E,KAAK,CAAC,CAAC;IACd;IAEA,IAAI,CAACzB,KAAK,CAACS,IAAI,CAAC;EAClB;EAEAiH,sBAAsBA,CAACjH,IAAY,EAAEiG,MAAe,EAAE+C,UAAmB,EAAE;IACzE,MAAM;MAAEC,aAAa;MAAElC;IAAiB,CAAC,GAAG/G,IAAI;IAIhD,IAAIiJ,aAAa,YAAbA,aAAa,CAAEtK,MAAM,EAAE;MACzB,IAAI,CAACuK,cAAc,IAEjBD,aAAa,EACbjJ,IAAI,EACJiG,MAAM,EACN+C,UACF,CAAC;IACH;IACA,IAAIjC,gBAAgB,YAAhBA,gBAAgB,CAAEpI,MAAM,EAAE;MAC5B,IAAI,CAACuK,cAAc,IAEjBnC,gBAAgB,EAChB/G,IAAI,EACJiG,MAAM,EACN+C,UACF,CAAC;IACH;EACF;EAEAhC,qBAAqBA,CAAChH,IAAY,EAAEiG,MAAc,EAAE;IAClD,MAAMkD,QAAQ,GAAGnJ,IAAI,CAACuG,eAAe;IACrC,IAAI,EAAC4C,QAAQ,YAARA,QAAQ,CAAExK,MAAM,GAAE;IACvB,IAAI,CAACuK,cAAc,IAAuBC,QAAQ,EAAEnJ,IAAI,EAAEiG,MAAM,CAAC;EACnE;EAEAzE,wBAAwBA,CACtB4H,YAAoB,EACpBC,wBAAiC,EACjC;IACA,IAAI,IAAI,CAACpL,iBAAiB,EAAE;MAAA,IAAAqL,cAAA;MAC1B,IAAI,CAACC,kBAAkB,EAAAD,cAAA,GACrB,IAAI,CAACnL,QAAQ,qBAAbmL,cAAA,CAAevF,YAAY,CACzB,IAAI,CAAC3G,YAAY,EACjBgM,YAAY,EACZC,wBACF,CACF,CAAC;IACH;IACA,IAAI,CAACpL,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACC,oBAAoB,GAAG,IAAI;EAClC;EAEAqL,kBAAkBA,CAACC,SAAiB,EAAE;IACpC,MAAMxJ,IAAI,GAAG,IAAI,CAAC5C,YAAY;IAC9B,MAAM+L,QAAQ,GAAGnJ,IAAI,CAACiJ,aAAa;IACnC,IAAI,EAACE,QAAQ,YAARA,QAAQ,CAAExK,MAAM,GAAE;IAEvB,MAAM8K,QAAQ,GAAG,IAAI,CAAC1G,QAAQ,GAAgB,CAAC;IAC/C,MAAMtE,MAAM,GAAG,IAAI,CAACP,oBAAoB;IACxC,MAAMwL,oBAAoB,GAAG,IAAI,CAAC/L,gBAAgB,CAACgM,IAAI;IACvD,IAAIlL,MAAM,EAAE,IAAI,CAACA,MAAM,CAAC,CAAC;IACzB,IAAI,CAACyK,cAAc,IAEjBC,QAAQ,EACRnJ,IAAI,EACJ4F,SAAS,EACTA,SAAS,EACT4D,SACF,CAAC;IACD,IAAIC,QAAQ,IAAIC,oBAAoB,KAAK,IAAI,CAAC/L,gBAAgB,CAACgM,IAAI,EAAE;MACnE,IAAI,CAAC3I,KAAK,CAAC,CAAC;IACd;IACA,IAAIvC,MAAM,EAAE,IAAI,CAACmB,MAAM,CAAC,CAAC;EAC3B;EAEAgK,yBAAyBA,CAAA,EAAG;IAC1B,IAAI,CAAC1L,oBAAoB,GAAG,KAAK;EACnC;EAEA2L,aAAaA,CACXhC,KAAe,EACfpJ,MAAgB,EAChB2G,0BAAmC,EACnC6C,WAAiD,EACjD;IACA,IAAI,CAACL,SAAS,CACZC,KAAK,EACL,IAAI,EACJpJ,MAAM,WAANA,MAAM,GAAI,KAAK,EACfmH,SAAS,EACTA,SAAS,EACTqC,WAAW,EACXrC,SAAS,EACTR,0BACF,CAAC;EACH;EAEA0E,SAASA,CACPC,KAAe,EACf/B,sBAAgC,EAChCF,SAAmB,EACnBrJ,MAAgB,EAChBsJ,SAAyC,EACzCG,QAAuC,EACvC;IACA,IAAI,CAACN,SAAS,CACZmC,KAAK,EACLjC,SAAS,EACTrJ,MAAM,EACNsJ,SAAS,WAATA,SAAS,GAAIiC,cAAc,EAC3BhC,sBAAsB,EACtBpC,SAAS,EACTsC,QACF,CAAC;EACH;EAEA+B,wBAAwBA,CAACC,OAAe,EAAkB;IACxD,IAAI,CAAC,IAAI,CAAC/L,QAAQ,EAAE,OAAO,IAAI;IAE/B,MAAMgM,YAAY,GAAG,IAAI,CAAChM,QAAQ,CAACiM,aAAa,CAAC,IAAI,CAAChN,YAAY,EAAE0D,KAAK,IACvE,IAAI,CAAC3C,QAAQ,CAACkM,eAAe,CAACvJ,KAAK,EAAEoJ,OAAO,CAC9C,CAAC;IACD,IAAIC,YAAY,IAAI,CAAC,EAAE,OAAO,IAAI;IAClC,OAAO,IAAI,CAAChM,QAAQ,CAACkM,eAAe,CAAC,IAAI,CAACnN,OAAO,CAACiN,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;EAC3E;EAEA1B,aAAaA,CAAC6B,OAAgB,EAAEC,IAAwB,EAAE;IACxD,MAAM3N,MAAM,GAAG,IAAI,CAACA,MAAM;IAG1B,IAAIA,MAAM,CAAC+F,WAAW,IAAI/F,MAAM,CAAC8C,OAAO,EAAE;IAI1C,IAAI9C,MAAM,CAAC+C,OAAO,EAAE;MAClB,IAAI,CAACqB,KAAK,CAAC,CAAC;MACZ;IACF;IAEA,IAAI,CAACsJ,OAAO,EAAE;MACZ;IACF;IAEA,MAAMlC,SAAS,GAAGmC,IAAI,CAACjC,iBAAiB;IACxC,MAAMkC,eAAe,GAAG,IAAI,CAACxM,gBAAgB;IAC7C,IAAIoK,SAAS,GAAG,CAAC,IAAIoC,eAAe,GAAG,CAAC,EAAE;MACxC,MAAMC,MAAM,GAAGrC,SAAS,GAAGoC,eAAe;MAC1C,IAAIC,MAAM,IAAI,CAAC,EAAE;QACf,IAAI,CAAChI,OAAO,CAACgI,MAAM,IAAI,CAAC,CAAC;QACzB;MACF;IACF;IAGA,IAAI,IAAI,CAAC5L,IAAI,CAACqC,UAAU,CAAC,CAAC,EAAE;MAa1B,IAAI,CAACuB,OAAO,CAAC,CAAC,CAAC;IACjB;EACF;EAOAiI,mBAAmBA,CACjBrD,OAAkB,EAClBmC,SAAiB,EACG;IAGpB,IAAInC,OAAO,CAACsD,MAAM,EAAE;IAEpB,IAAI,IAAI,CAAChN,gBAAgB,CAACiN,GAAG,CAACvD,OAAO,CAAC,EAAE;IAExC,IACE,IAAI,CAAC7J,iBAAiB,IACtBrB,gCAAgC,CAACI,IAAI,CAAC8K,OAAO,CAAC7K,KAAK,CAAC,EACpD;MACA;IACF;IAEA,IAAIgN,SAAS,IAAI,IAAI,CAACrL,QAAQ,EAAE;MAC9B,MAAM0M,UAAU,GAAG,IAAI,CAAC1M,QAAQ,CAAC2M,IAAI,CACnC,IAAI,CAAC1N,YAAY,EACjB0D,KAAK,IAAIA,KAAK,CAACtE,KAAK,KAAK6K,OAAO,CAAC7K,KACnC,CAAC;MACD,IAAIqO,UAAU,IAAIA,UAAU,CAAC5K,KAAK,GAAGuJ,SAAS,CAACvJ,KAAK,EAAE;QACpD;MACF;IACF;IAEA,IAAI,CAACtC,gBAAgB,CAACoN,GAAG,CAAC1D,OAAO,CAAC;IAElC,IAAI,CAAC,IAAI,CAACzK,MAAM,CAACoO,kBAAkB,CAAC3D,OAAO,CAAC7K,KAAK,CAAC,EAAE;MAClD;IACF;IAEA;EACF;EAEA+K,aAAaA,CAACF,OAAkB,EAAE4D,YAAkC,EAAE;IACpE,MAAMC,gBAAgB,GAAG,IAAI,CAAC1N,iBAAiB;IAC/C,MAAM2N,cAAc,GAAG9D,OAAO,CAAC/K,IAAI,KAAK,cAAc;IAItD,MAAM8O,aAAa,GACjBD,cAAc,IACdF,YAAY,MAA6B,IACzC,CAAC,IAAI,CAACzN,iBAAiB;IAEzB,IACE4N,aAAa,IACb,IAAI,CAACvM,IAAI,CAACqC,UAAU,CAAC,CAAC,IACtB+J,YAAY,MAAiC,EAC7C;MACA,IAAI,CAACxI,OAAO,CAAC,CAAC,CAAC;IACjB;IAEA,MAAM4I,YAAY,GAAG,IAAI,CAACjK,WAAW,CAAC,CAAC;IACvC,IACEiK,YAAY,OAAgC,IAC5CA,YAAY,QAA6B,IACzCA,YAAY,OAA8B,EAC1C;MACA,IAAI,CAACrK,KAAK,CAAC,CAAC;IACd;IAEA,IAAIsK,GAAG;IACP,IAAIH,cAAc,EAAE;MAClBG,GAAG,GAAG,KAAKjE,OAAO,CAAC7K,KAAK,IAAI;MAC5B,IAAI,IAAI,CAACI,MAAM,CAAC6B,MAAM,CAAC8M,sBAAsB,EAAE;QAAA,IAAAC,YAAA;QAC7C,MAAMf,MAAM,IAAAe,YAAA,GAAGnE,OAAO,CAAC7G,GAAG,qBAAXgL,YAAA,CAAavL,KAAK,CAAC0E,MAAM;QACxC,IAAI8F,MAAM,EAAE;UACV,MAAMgB,YAAY,GAAG,IAAIC,MAAM,CAAC,WAAW,GAAGjB,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC;UAChEa,GAAG,GAAGA,GAAG,CAACrG,OAAO,CAACwG,YAAY,EAAE,IAAI,CAAC;QACvC;QACA,IAAI,IAAI,CAAC7O,MAAM,CAAC+C,OAAO,EAAE;UACvB2L,GAAG,GAAGA,GAAG,CAACrG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;QACrC,CAAC,MAAM;UACL,IAAI0G,UAAU,GAAG,IAAI,CAAC/O,MAAM,CAAC+F,WAAW,GACpC,CAAC,GACD,IAAI,CAAC9D,IAAI,CAACiG,gBAAgB,CAAC,CAAC;UAEhC,IAAI,IAAI,CAACP,aAAa,GAAgB,CAAC,IAAI,IAAI,CAAC3H,MAAM,CAAC+F,WAAW,EAAE;YAClEgJ,UAAU,IAAI,IAAI,CAACrH,UAAU,CAAC,CAAC;UACjC;UAEAgH,GAAG,GAAGA,GAAG,CAACrG,OAAO,CAAC,UAAU,EAAE,KAAK,GAAG,CAACC,MAAM,CAACyG,UAAU,CAAC,EAAE,CAAC;QAC9D;MACF;IACF,CAAC,MAAM,IAAI,CAACT,gBAAgB,EAAE;MAC5BI,GAAG,GAAG,KAAKjE,OAAO,CAAC7K,KAAK,EAAE;IAC5B,CAAC,MAAM;MAIL8O,GAAG,GAAG,KAAKjE,OAAO,CAAC7K,KAAK,IAAI;IAC9B;IAGA,IAAI,IAAI,CAACuB,YAAY,EAAE,IAAI,CAACkD,MAAM,CAAC,CAAC;IAEpC,IAAI,IAAI,CAAC9C,QAAQ,EAAE;MACjB,MAAM;QAAEK,8BAA8B;QAAED;MAA8B,CAAC,GACrE,IAAI;MACN,IAAI,CAACC,8BAA8B,GAAG,CAAC,CAAC;MACxC,IAAI,CAACD,6BAA6B,GAAG,CAAC,CAAC;MACvC,IAAI,CAAC8E,MAAM,CAAC,OAAO,EAAEgE,OAAO,CAAC7G,GAAG,CAAC;MACjC,IAAI,CAACmB,OAAO,CAAC2J,GAAG,EAAEH,cAAc,CAAC;MACjC,IAAI,CAAC5M,6BAA6B,GAAGA,6BAA6B;MAClE,IAAI,CAACC,8BAA8B,GAAGA,8BAA8B;IACtE,CAAC,MAAM;MACL,IAAI,CAAC6E,MAAM,CAAC,OAAO,EAAEgE,OAAO,CAAC7G,GAAG,CAAC;MACjC,IAAI,CAACmB,OAAO,CAAC2J,GAAG,EAAEH,cAAc,CAAC;IACnC;IAEA,IAAI,CAACA,cAAc,IAAI,CAACD,gBAAgB,EAAE;MACxC,IAAI,CAACzI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC;IACvB;IAEA,IAAI2I,aAAa,IAAIH,YAAY,MAAkC,EAAE;MACnE,IAAI,CAACxI,OAAO,CAAC,CAAC,CAAC;IACjB;EACF;EAEAyG,cAAcA,CACZ5M,IAAkB,EAClB6M,QAA8B,EAC9BnJ,IAAY,EACZiG,MAAe,EACf+C,UAAkB,GAAG,CAAC,EACtBQ,SAAiB,EACjB;IACA,MAAMoC,OAAO,GAAG5L,IAAI,CAACQ,GAAG;IACxB,MAAMgI,GAAG,GAAGW,QAAQ,CAACxK,MAAM;IAC3B,IAAIkN,MAAM,GAAG,CAAC,CAACD,OAAO;IACtB,MAAME,aAAa,GAAGD,MAAM,GAAGD,OAAO,CAAC3L,KAAK,CAACwE,IAAI,GAAG,CAAC;IACrD,MAAMsH,WAAW,GAAGF,MAAM,GAAGD,OAAO,CAAC1L,GAAG,CAACuE,IAAI,GAAG,CAAC;IACjD,IAAIuH,QAAQ,GAAG,CAAC;IAChB,IAAIC,qBAAqB,GAAG,CAAC;IAE7B,MAAMhK,YAAY,GAAG,IAAI,CAACzE,iBAAiB,GACvC,YAAY,CAAC,CAAC,GACd,IAAI,CAACiF,OAAO,CAACnE,IAAI,CAAC,IAAI,CAAC;IAE3B,KAAK,IAAIoE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8F,GAAG,EAAE9F,CAAC,EAAE,EAAE;MAC5B,MAAM2E,OAAO,GAAG8B,QAAQ,CAACzG,CAAC,CAAC;MAE3B,MAAMwJ,WAAW,GAAG,IAAI,CAACxB,mBAAmB,CAACrD,OAAO,EAAEmC,SAAS,CAAC;MAChE,IAAI0C,WAAW,MAA6B,EAAE;QAC5CL,MAAM,GAAG,KAAK;QACd;MACF;MACA,IAAIA,MAAM,IAAIxE,OAAO,CAAC7G,GAAG,IAAI0L,WAAW,MAA6B,EAAE;QACrE,MAAMC,gBAAgB,GAAG9E,OAAO,CAAC7G,GAAG,CAACP,KAAK,CAACwE,IAAI;QAC/C,MAAM2H,cAAc,GAAG/E,OAAO,CAAC7G,GAAG,CAACN,GAAG,CAACuE,IAAI;QAC3C,IAAInI,IAAI,MAAyB,EAAE;UACjC,IAAImO,MAAM,GAAG,CAAC;UACd,IAAI/H,CAAC,KAAK,CAAC,EAAE;YAGX,IACE,IAAI,CAAC7D,IAAI,CAACqC,UAAU,CAAC,CAAC,KACrBmG,OAAO,CAAC/K,IAAI,KAAK,aAAa,IAC7B6P,gBAAgB,KAAKC,cAAc,CAAC,EACtC;cACA3B,MAAM,GAAGwB,qBAAqB,GAAG,CAAC;YACpC;UACF,CAAC,MAAM;YACLxB,MAAM,GAAG0B,gBAAgB,GAAGH,QAAQ;UACtC;UACAA,QAAQ,GAAGI,cAAc;UAEzBnK,YAAY,CAACwI,MAAM,CAAC;UACpB,IAAI,CAAClD,aAAa,CAACF,OAAO,GAA0B,CAAC;UAErD,IAAI3E,CAAC,GAAG,CAAC,KAAK8F,GAAG,EAAE;YACjBvG,YAAY,CACVoK,IAAI,CAACC,GAAG,CAACR,aAAa,GAAGE,QAAQ,EAAEC,qBAAqB,CAC1D,CAAC;YACDD,QAAQ,GAAGF,aAAa;UAC1B;QACF,CAAC,MAAM,IAAIxP,IAAI,MAAuB,EAAE;UACtC,MAAMmO,MAAM,GACV0B,gBAAgB,IAAIzJ,CAAC,KAAK,CAAC,GAAGoJ,aAAa,GAAGE,QAAQ,CAAC;UACzDA,QAAQ,GAAGI,cAAc;UAEzBnK,YAAY,CAACwI,MAAM,CAAC;UACpB,IAAI,CAAClD,aAAa,CAACF,OAAO,GAA0B,CAAC;UAErD,IAAI3E,CAAC,GAAG,CAAC,KAAK8F,GAAG,EAAE;YACjBvG,YAAY,CAACoK,IAAI,CAACE,GAAG,CAAC,CAAC,EAAER,WAAW,GAAGC,QAAQ,CAAC,CAAC;YACjDA,QAAQ,GAAGD,WAAW;UACxB;QACF,CAAC,MAAM;UACL,MAAMtB,MAAM,GACV0B,gBAAgB,IAAIzJ,CAAC,KAAK,CAAC,GAAGqJ,WAAW,GAAG/C,UAAU,GAAGgD,QAAQ,CAAC;UACpEA,QAAQ,GAAGI,cAAc;UAEzBnK,YAAY,CAACwI,MAAM,CAAC;UACpB,IAAI,CAAClD,aAAa,CAACF,OAAO,GAA0B,CAAC;QACvD;MACF,CAAC,MAAM;QACLwE,MAAM,GAAG,KAAK;QACd,IAAIK,WAAW,MAA6B,EAAE;UAC5C;QACF;QAEA,IAAI1D,GAAG,KAAK,CAAC,EAAE;UACb,MAAMgE,UAAU,GAAGnF,OAAO,CAAC7G,GAAG,GAC1B6G,OAAO,CAAC7G,GAAG,CAACP,KAAK,CAACwE,IAAI,KAAK4C,OAAO,CAAC7G,GAAG,CAACN,GAAG,CAACuE,IAAI,GAC/C,CAACvI,WAAW,CAACK,IAAI,CAAC8K,OAAO,CAAC7K,KAAK,CAAC;UAEpC,MAAMiQ,iBAAiB,GACrBD,UAAU,IACV,CAAC5Q,WAAW,CAACoE,IAAI,CAAC,IAClB,CAACnE,WAAW,CAACoK,MAAM,CAAC,IACpB,CAACnK,iBAAiB,CAACmK,MAAM,CAAC,IAC1B,CAAClK,cAAc,CAACiE,IAAI,CAAC;UAEvB,IAAI1D,IAAI,MAAyB,EAAE;YACjC,IAAI,CAACiL,aAAa,CAChBF,OAAO,EACNoF,iBAAiB,IAAIzM,IAAI,CAAC1D,IAAI,KAAK,kBAAkB,IACnDkQ,UAAU,IAAI7Q,UAAU,CAACsK,MAAM,EAAE;cAAE8C,IAAI,EAAE/I;YAAK,CAAC,CAAE,QAGtD,CAAC;UACH,CAAC,MAAM,IAAIyM,iBAAiB,IAAInQ,IAAI,MAA0B,EAAE;YAC9D,IAAI,CAACiL,aAAa,CAACF,OAAO,GAA0B,CAAC;UACvD,CAAC,MAAM;YACL,IAAI,CAACE,aAAa,CAACF,OAAO,GAA8B,CAAC;UAC3D;QACF,CAAC,MAAM,IACL/K,IAAI,MAAuB,IAC3B,EAAE0D,IAAI,CAAC1D,IAAI,KAAK,kBAAkB,IAAI0D,IAAI,CAAC0M,UAAU,CAAC/N,MAAM,GAAG,CAAC,CAAC,IACjEqB,IAAI,CAAC1D,IAAI,KAAK,WAAW,IACzB0D,IAAI,CAAC1D,IAAI,KAAK,iBAAiB,EAC/B;UAMA,IAAI,CAACiL,aAAa,CAChBF,OAAO,EACP3E,CAAC,KAAK,CAAC,OAEHA,CAAC,KAAK8F,GAAG,GAAG,CAAC,QAGnB,CAAC;QACH,CAAC,MAAM;UACL,IAAI,CAACjB,aAAa,CAACF,OAAO,GAA8B,CAAC;QAC3D;MACF;IACF;IAEA,IAAI/K,IAAI,MAA0B,IAAIuP,MAAM,IAAIG,QAAQ,EAAE;MACxD,IAAI,CAAChO,gBAAgB,GAAGgO,QAAQ;IAClC;EACF;AACF;AAGAW,MAAM,CAACC,MAAM,CAAClQ,OAAO,CAACmQ,SAAS,EAAErR,kBAAkB,CAAC;AAEjB;EACjC,IAAAsR,mCAAuB,EAACpQ,OAAO,CAAC;AAClC;AAAC,IAAAqQ,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAKcvQ,OAAO;AAEtB,SAASsN,cAAcA,CAAgB9H,eAAuB,EAAEgL,IAAa,EAAE;EAC7E,IAAI,CAACpM,KAAK,CAAC,GAAG,EAAE,KAAK,EAAEoB,eAAe,CAAC;EACvC,IAAI,CAACgL,IAAI,EAAE,IAAI,CAAClM,KAAK,CAAC,CAAC;AACzB","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/generator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/generator/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/generator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,5 @@
 {
   "name": "@babel/generator",
-  "version": "7.26.2",
+  "version": "7.26.5",
   "description": "Turns an AST into code.",
   "author": "The Babel Team (https://babel.dev/team)",
@@ -20,6 +20,6 @@
   ],
   "dependencies": {
-    "@babel/parser": "^7.26.2",
-    "@babel/types": "^7.26.0",
+    "@babel/parser": "^7.26.5",
+    "@babel/types": "^7.26.5",
     "@jridgewell/gen-mapping": "^0.3.5",
     "@jridgewell/trace-mapping": "^0.3.25",
@@ -29,5 +29,5 @@
     "@babel/core": "^7.26.0",
     "@babel/helper-fixtures": "^7.26.0",
-    "@babel/plugin-transform-typescript": "^7.25.9",
+    "@babel/plugin-transform-typescript": "^7.26.5",
     "@jridgewell/sourcemap-codec": "^1.4.15",
     "@types/jsesc": "^2.5.0",
Index: imaps-frontend/node_modules/@babel/helper-annotate-as-pure/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-annotate-as-pure/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-annotate-as-pure/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-annotate-as-pure/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-annotate-as-pure/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-annotate-as-pure/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-annotate-as-pure
+
+> Helper function to annotate paths and nodes with #__PURE__ comment
+
+See our website [@babel/helper-annotate-as-pure](https://babeljs.io/docs/babel-helper-annotate-as-pure) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-annotate-as-pure
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-annotate-as-pure
+```
Index: imaps-frontend/node_modules/@babel/helper-annotate-as-pure/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-annotate-as-pure/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-annotate-as-pure/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = annotateAsPure;
+var _t = require("@babel/types");
+const {
+  addComment
+} = _t;
+const PURE_ANNOTATION = "#__PURE__";
+const isPureAnnotated = ({
+  leadingComments
+}) => !!leadingComments && leadingComments.some(comment => /[@#]__PURE__/.test(comment.value));
+function annotateAsPure(pathOrNode) {
+  const node = pathOrNode["node"] || pathOrNode;
+  if (isPureAnnotated(node)) {
+    return;
+  }
+  addComment(node, "leading", PURE_ANNOTATION);
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-annotate-as-pure/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-annotate-as-pure/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-annotate-as-pure/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_t","require","addComment","PURE_ANNOTATION","isPureAnnotated","leadingComments","some","comment","test","value","annotateAsPure","pathOrNode","node"],"sources":["../src/index.ts"],"sourcesContent":["import { addComment, type Node } from \"@babel/types\";\n\nconst PURE_ANNOTATION = \"#__PURE__\";\n\nconst isPureAnnotated = ({ leadingComments }: Node): boolean =>\n  !!leadingComments &&\n  leadingComments.some(comment => /[@#]__PURE__/.test(comment.value));\n\nexport default function annotateAsPure(\n  pathOrNode: Node | { node: Node },\n): void {\n  const node =\n    // @ts-expect-error Node will not have `node` property\n    (pathOrNode[\"node\"] || pathOrNode) as Node;\n  if (isPureAnnotated(node)) {\n    return;\n  }\n  addComment(node, \"leading\", PURE_ANNOTATION);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAAqD;EAA5CC;AAAU,IAAAF,EAAA;AAEnB,MAAMG,eAAe,GAAG,WAAW;AAEnC,MAAMC,eAAe,GAAGA,CAAC;EAAEC;AAAsB,CAAC,KAChD,CAAC,CAACA,eAAe,IACjBA,eAAe,CAACC,IAAI,CAACC,OAAO,IAAI,cAAc,CAACC,IAAI,CAACD,OAAO,CAACE,KAAK,CAAC,CAAC;AAEtD,SAASC,cAAcA,CACpCC,UAAiC,EAC3B;EACN,MAAMC,IAAI,GAEPD,UAAU,CAAC,MAAM,CAAC,IAAIA,UAAmB;EAC5C,IAAIP,eAAe,CAACQ,IAAI,CAAC,EAAE;IACzB;EACF;EACAV,UAAU,CAACU,IAAI,EAAE,SAAS,EAAET,eAAe,CAAC;AAC9C","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-annotate-as-pure/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-annotate-as-pure/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,27 @@
+{
+  "name": "@babel/helper-annotate-as-pure",
+  "version": "7.25.9",
+  "description": "Helper function to annotate paths and nodes with #__PURE__ comment",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-annotate-as-pure"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-annotate-as-pure",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/types": "^7.25.9"
+  },
+  "devDependencies": {
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-compilation-targets/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-compilation-targets/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-compilation-targets/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,28 +1,35 @@
 {
-  "name": "@babel/helper-compilation-targets",
-  "version": "7.25.9",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "license": "MIT",
-  "description": "Helper functions on Babel compilation targets",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-compilation-targets"
+  "_from": "@babel/helper-compilation-targets@^7.25.9",
+  "_id": "@babel/helper-compilation-targets@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+  "_location": "/@babel/helper-compilation-targets",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helper-compilation-targets@^7.25.9",
+    "name": "@babel/helper-compilation-targets",
+    "escapedName": "@babel%2fhelper-compilation-targets",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
   },
-  "main": "./lib/index.js",
-  "exports": {
-    ".": {
-      "types": "./lib/index.d.ts",
-      "default": "./lib/index.js"
-    },
-    "./package.json": "./package.json"
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
+  "_shasum": "55af025ce365be3cdc0c1c1e56c6af617ce88875",
+  "_spec": "@babel/helper-compilation-targets@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/core",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "publishConfig": {
-    "access": "public"
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
   },
-  "keywords": [
-    "babel",
-    "babel-plugin"
-  ],
+  "bundleDependencies": false,
   "dependencies": {
     "@babel/compat-data": "^7.25.9",
@@ -32,4 +39,6 @@
     "semver": "^6.3.1"
   },
+  "deprecated": false,
+  "description": "Helper functions on Babel compilation targets",
   "devDependencies": {
     "@babel/helper-plugin-test-runner": "^7.25.9",
@@ -40,4 +49,28 @@
     "node": ">=6.9.0"
   },
-  "type": "commonjs"
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "homepage": "https://github.com/babel/babel#readme",
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-compilation-targets",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-compilation-targets"
+  },
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-create-class-features-plugin
+
+> Compile class public and private fields, private methods and decorators to ES6
+
+See our website [@babel/helper-create-class-features-plugin](https://babeljs.io/docs/babel-helper-create-class-features-plugin) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-create-class-features-plugin
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-create-class-features-plugin
+```
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,135 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildDecoratedClass = buildDecoratedClass;
+exports.hasDecorators = hasDecorators;
+exports.hasOwnDecorators = hasOwnDecorators;
+var _core = require("@babel/core");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+function hasOwnDecorators(node) {
+  var _node$decorators;
+  return !!((_node$decorators = node.decorators) != null && _node$decorators.length);
+}
+function hasDecorators(node) {
+  return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);
+}
+function prop(key, value) {
+  if (!value) return null;
+  return _core.types.objectProperty(_core.types.identifier(key), value);
+}
+function method(key, body) {
+  return _core.types.objectMethod("method", _core.types.identifier(key), [], _core.types.blockStatement(body));
+}
+function takeDecorators(node) {
+  let result;
+  if (node.decorators && node.decorators.length > 0) {
+    result = _core.types.arrayExpression(node.decorators.map(decorator => decorator.expression));
+  }
+  node.decorators = undefined;
+  return result;
+}
+function getKey(node) {
+  if (node.computed) {
+    return node.key;
+  } else if (_core.types.isIdentifier(node.key)) {
+    return _core.types.stringLiteral(node.key.name);
+  } else {
+    return _core.types.stringLiteral(String(node.key.value));
+  }
+}
+function extractElementDescriptor(file, classRef, superRef, path) {
+  const isMethod = path.isClassMethod();
+  if (path.isPrivate()) {
+    throw path.buildCodeFrameError(`Private ${isMethod ? "methods" : "fields"} in decorated classes are not supported yet.`);
+  }
+  if (path.node.type === "ClassAccessorProperty") {
+    throw path.buildCodeFrameError(`Accessor properties are not supported in 2018-09 decorator transform, please specify { "version": "2021-12" } instead.`);
+  }
+  if (path.node.type === "StaticBlock") {
+    throw path.buildCodeFrameError(`Static blocks are not supported in 2018-09 decorator transform, please specify { "version": "2021-12" } instead.`);
+  }
+  const {
+    node,
+    scope
+  } = path;
+  if (!path.isTSDeclareMethod()) {
+    new _helperReplaceSupers.default({
+      methodPath: path,
+      objectRef: classRef,
+      superRef,
+      file,
+      refToPreserve: classRef
+    }).replace();
+  }
+  const properties = [prop("kind", _core.types.stringLiteral(_core.types.isClassMethod(node) ? node.kind : "field")), prop("decorators", takeDecorators(node)), prop("static", node.static && _core.types.booleanLiteral(true)), prop("key", getKey(node))].filter(Boolean);
+  if (isMethod) {
+    {
+      var _path$ensureFunctionN;
+      (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+    }
+    path.ensureFunctionName(false);
+    properties.push(prop("value", _core.types.toExpression(path.node)));
+  } else if (_core.types.isClassProperty(node) && node.value) {
+    properties.push(method("value", _core.template.statements.ast`return ${node.value}`));
+  } else {
+    properties.push(prop("value", scope.buildUndefinedNode()));
+  }
+  path.remove();
+  return _core.types.objectExpression(properties);
+}
+function addDecorateHelper(file) {
+  return file.addHelper("decorate");
+}
+function buildDecoratedClass(ref, path, elements, file) {
+  const {
+    node,
+    scope
+  } = path;
+  const initializeId = scope.generateUidIdentifier("initialize");
+  const isDeclaration = node.id && path.isDeclaration();
+  const isStrict = path.isInStrictMode();
+  const {
+    superClass
+  } = node;
+  node.type = "ClassDeclaration";
+  if (!node.id) node.id = _core.types.cloneNode(ref);
+  let superId;
+  if (superClass) {
+    superId = scope.generateUidIdentifierBasedOnNode(node.superClass, "super");
+    node.superClass = superId;
+  }
+  const classDecorators = takeDecorators(node);
+  const definitions = _core.types.arrayExpression(elements.filter(element => !element.node.abstract && element.node.type !== "TSIndexSignature").map(path => extractElementDescriptor(file, node.id, superId, path)));
+  const wrapperCall = _core.template.expression.ast`
+    ${addDecorateHelper(file)}(
+      ${classDecorators || _core.types.nullLiteral()},
+      function (${initializeId}, ${superClass ? _core.types.cloneNode(superId) : null}) {
+        ${node}
+        return { F: ${_core.types.cloneNode(node.id)}, d: ${definitions} };
+      },
+      ${superClass}
+    )
+  `;
+  if (!isStrict) {
+    wrapperCall.arguments[1].body.directives.push(_core.types.directive(_core.types.directiveLiteral("use strict")));
+  }
+  let replacement = wrapperCall;
+  let classPathDesc = "arguments.1.body.body.0";
+  if (isDeclaration) {
+    replacement = _core.template.statement.ast`let ${ref} = ${wrapperCall}`;
+    classPathDesc = "declarations.0.init." + classPathDesc;
+  }
+  return {
+    instanceNodes: [_core.template.statement.ast`
+        ${_core.types.cloneNode(initializeId)}(this)
+      `],
+    wrapClass(path) {
+      path.replaceWith(replacement);
+      return path.get(classPathDesc);
+    }
+  };
+}
+
+//# sourceMappingURL=decorators-2018-09.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators-2018-09.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperReplaceSupers","hasOwnDecorators","node","_node$decorators","decorators","length","hasDecorators","body","some","prop","key","value","t","objectProperty","identifier","method","objectMethod","blockStatement","takeDecorators","result","arrayExpression","map","decorator","expression","undefined","getKey","computed","isIdentifier","stringLiteral","name","String","extractElementDescriptor","file","classRef","superRef","path","isMethod","isClassMethod","isPrivate","buildCodeFrameError","type","scope","isTSDeclareMethod","ReplaceSupers","methodPath","objectRef","refToPreserve","replace","properties","kind","static","booleanLiteral","filter","Boolean","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype","push","toExpression","isClassProperty","template","statements","ast","buildUndefinedNode","remove","objectExpression","addDecorateHelper","addHelper","buildDecoratedClass","ref","elements","initializeId","generateUidIdentifier","isDeclaration","id","isStrict","isInStrictMode","superClass","cloneNode","superId","generateUidIdentifierBasedOnNode","classDecorators","definitions","element","abstract","wrapperCall","nullLiteral","arguments","directives","directive","directiveLiteral","replacement","classPathDesc","statement","instanceNodes","wrapClass","replaceWith","get"],"sources":["../src/decorators-2018-09.ts"],"sourcesContent":["// TODO(Babel 8): Remove this file\n\nimport { types as t, template } from \"@babel/core\";\nimport type { File, NodePath } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\n\ntype Decoratable = Extract<t.Node, { decorators?: t.Decorator[] | null }>;\n\nexport function hasOwnDecorators(node: t.Class | t.ClassBody[\"body\"][number]) {\n  // @ts-expect-error: 'decorators' not in TSIndexSignature\n  return !!node.decorators?.length;\n}\n\nexport function hasDecorators(node: t.Class) {\n  return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);\n}\n\nfunction prop(key: string, value?: t.Expression) {\n  if (!value) return null;\n  return t.objectProperty(t.identifier(key), value);\n}\n\nfunction method(key: string, body: t.Statement[]) {\n  return t.objectMethod(\n    \"method\",\n    t.identifier(key),\n    [],\n    t.blockStatement(body),\n  );\n}\n\nfunction takeDecorators(node: Decoratable) {\n  let result: t.ArrayExpression | undefined;\n  if (node.decorators && node.decorators.length > 0) {\n    result = t.arrayExpression(\n      node.decorators.map(decorator => decorator.expression),\n    );\n  }\n  node.decorators = undefined;\n  return result;\n}\n\ntype AcceptedElement = Exclude<ClassElement, t.TSIndexSignature>;\ntype SupportedElement = Exclude<\n  AcceptedElement,\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.ClassAccessorProperty\n  | t.StaticBlock\n>;\n\nfunction getKey(node: SupportedElement) {\n  if (node.computed) {\n    return node.key;\n  } else if (t.isIdentifier(node.key)) {\n    return t.stringLiteral(node.key.name);\n  } else {\n    return t.stringLiteral(\n      String(\n        // A non-identifier non-computed key\n        (node.key as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n          .value,\n      ),\n    );\n  }\n}\n\nfunction extractElementDescriptor(\n  file: File,\n  classRef: t.Identifier,\n  superRef: t.Identifier,\n  path: NodePath<AcceptedElement>,\n) {\n  const isMethod = path.isClassMethod();\n  if (path.isPrivate()) {\n    throw path.buildCodeFrameError(\n      `Private ${\n        isMethod ? \"methods\" : \"fields\"\n      } in decorated classes are not supported yet.`,\n    );\n  }\n  if (path.node.type === \"ClassAccessorProperty\") {\n    throw path.buildCodeFrameError(\n      `Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n    );\n  }\n  if (path.node.type === \"StaticBlock\") {\n    throw path.buildCodeFrameError(\n      `Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n    );\n  }\n\n  const { node, scope } = path as NodePath<SupportedElement>;\n\n  if (!path.isTSDeclareMethod()) {\n    new ReplaceSupers({\n      methodPath: path as NodePath<\n        Exclude<SupportedElement, t.TSDeclareMethod>\n      >,\n      objectRef: classRef,\n      superRef,\n      file,\n      refToPreserve: classRef,\n    }).replace();\n  }\n\n  const properties: t.ObjectExpression[\"properties\"] = [\n    prop(\"kind\", t.stringLiteral(t.isClassMethod(node) ? node.kind : \"field\")),\n    prop(\"decorators\", takeDecorators(node as Decoratable)),\n    prop(\"static\", node.static && t.booleanLiteral(true)),\n    prop(\"key\", getKey(node)),\n  ].filter(Boolean);\n\n  if (isMethod) {\n    if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n      // polyfill when being run by an older Babel version\n      path.ensureFunctionName ??=\n        // eslint-disable-next-line no-restricted-globals\n        require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n    }\n    // @ts-expect-error path is a ClassMethod, that technically\n    // is not supported as it does not have an .id property\n    // This plugin will however then transform the ClassMethod\n    // to a function expression, so it's fine.\n    path.ensureFunctionName(false);\n\n    properties.push(prop(\"value\", t.toExpression(path.node)));\n  } else if (t.isClassProperty(node) && node.value) {\n    properties.push(\n      method(\"value\", template.statements.ast`return ${node.value}`),\n    );\n  } else {\n    properties.push(prop(\"value\", scope.buildUndefinedNode()));\n  }\n\n  path.remove();\n\n  return t.objectExpression(properties);\n}\n\nfunction addDecorateHelper(file: File) {\n  return file.addHelper(\"decorate\");\n}\n\ntype ClassElement = t.Class[\"body\"][\"body\"][number];\ntype ClassElementPath = NodePath<ClassElement>;\n\nexport function buildDecoratedClass(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  elements: ClassElementPath[],\n  file: File,\n) {\n  const { node, scope } = path;\n  const initializeId = scope.generateUidIdentifier(\"initialize\");\n  const isDeclaration = node.id && path.isDeclaration();\n  const isStrict = path.isInStrictMode();\n  const { superClass } = node;\n\n  node.type = \"ClassDeclaration\";\n  if (!node.id) node.id = t.cloneNode(ref);\n\n  let superId: t.Identifier;\n  if (superClass) {\n    superId = scope.generateUidIdentifierBasedOnNode(node.superClass, \"super\");\n    node.superClass = superId;\n  }\n\n  const classDecorators = takeDecorators(node);\n  const definitions = t.arrayExpression(\n    elements\n      .filter(\n        element =>\n          // @ts-expect-error Ignore TypeScript's abstract methods (see #10514)\n          !element.node.abstract && element.node.type !== \"TSIndexSignature\",\n      )\n      .map(path =>\n        extractElementDescriptor(\n          file,\n          node.id,\n          superId,\n          // @ts-expect-error TS can not exclude TSIndexSignature\n          path,\n        ),\n      ),\n  );\n\n  const wrapperCall = template.expression.ast`\n    ${addDecorateHelper(file)}(\n      ${classDecorators || t.nullLiteral()},\n      function (${initializeId}, ${superClass ? t.cloneNode(superId) : null}) {\n        ${node}\n        return { F: ${t.cloneNode(node.id)}, d: ${definitions} };\n      },\n      ${superClass}\n    )\n  ` as t.CallExpression & { arguments: [unknown, t.FunctionExpression] };\n\n  if (!isStrict) {\n    wrapperCall.arguments[1].body.directives.push(\n      t.directive(t.directiveLiteral(\"use strict\")),\n    );\n  }\n\n  let replacement: t.Node = wrapperCall;\n  let classPathDesc = \"arguments.1.body.body.0\";\n  if (isDeclaration) {\n    replacement = template.statement.ast`let ${ref} = ${wrapperCall}`;\n    classPathDesc = \"declarations.0.init.\" + classPathDesc;\n  }\n\n  return {\n    instanceNodes: [\n      template.statement.ast`\n        ${t.cloneNode(initializeId)}(this)\n      ` as t.ExpressionStatement,\n    ],\n    wrapClass(path: NodePath<t.Class>) {\n      path.replaceWith(replacement);\n      return path.get(classPathDesc) as NodePath;\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1311 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = _default;
+var _core = require("@babel/core");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers");
+var _fields = require("./fields.js");
+var _misc = require("./misc.js");
+function incrementId(id, idx = id.length - 1) {
+  if (idx === -1) {
+    id.unshift(65);
+    return;
+  }
+  const current = id[idx];
+  if (current === 90) {
+    id[idx] = 97;
+  } else if (current === 122) {
+    id[idx] = 65;
+    incrementId(id, idx - 1);
+  } else {
+    id[idx] = current + 1;
+  }
+}
+function createPrivateUidGeneratorForClass(classPath) {
+  const currentPrivateId = [];
+  const privateNames = new Set();
+  classPath.traverse({
+    PrivateName(path) {
+      privateNames.add(path.node.id.name);
+    }
+  });
+  return () => {
+    let reifiedId;
+    do {
+      incrementId(currentPrivateId);
+      reifiedId = String.fromCharCode(...currentPrivateId);
+    } while (privateNames.has(reifiedId));
+    return _core.types.privateName(_core.types.identifier(reifiedId));
+  };
+}
+function createLazyPrivateUidGeneratorForClass(classPath) {
+  let generator;
+  return () => {
+    if (!generator) {
+      generator = createPrivateUidGeneratorForClass(classPath);
+    }
+    return generator();
+  };
+}
+function replaceClassWithVar(path, className) {
+  const id = path.node.id;
+  const scope = path.scope;
+  if (path.type === "ClassDeclaration") {
+    const className = id.name;
+    const varId = scope.generateUidIdentifierBasedOnNode(id);
+    const classId = _core.types.identifier(className);
+    scope.rename(className, varId.name);
+    path.get("id").replaceWith(classId);
+    return {
+      id: _core.types.cloneNode(varId),
+      path
+    };
+  } else {
+    let varId;
+    if (id) {
+      className = id.name;
+      varId = generateLetUidIdentifier(scope.parent, className);
+      scope.rename(className, varId.name);
+    } else {
+      varId = generateLetUidIdentifier(scope.parent, typeof className === "string" ? className : "decorated_class");
+    }
+    const newClassExpr = _core.types.classExpression(typeof className === "string" ? _core.types.identifier(className) : null, path.node.superClass, path.node.body);
+    const [newPath] = path.replaceWith(_core.types.sequenceExpression([newClassExpr, varId]));
+    return {
+      id: _core.types.cloneNode(varId),
+      path: newPath.get("expressions.0")
+    };
+  }
+}
+function generateClassProperty(key, value, isStatic) {
+  if (key.type === "PrivateName") {
+    return _core.types.classPrivateProperty(key, value, undefined, isStatic);
+  } else {
+    return _core.types.classProperty(key, value, undefined, undefined, isStatic);
+  }
+}
+function assignIdForAnonymousClass(path, className) {
+  if (!path.node.id) {
+    path.node.id = typeof className === "string" ? _core.types.identifier(className) : path.scope.generateUidIdentifier("Class");
+  }
+}
+function addProxyAccessorsFor(className, element, getterKey, setterKey, targetKey, isComputed, isStatic, version) {
+  const thisArg = (version === "2023-11" || version === "2023-05") && isStatic ? className : _core.types.thisExpression();
+  const getterBody = _core.types.blockStatement([_core.types.returnStatement(_core.types.memberExpression(_core.types.cloneNode(thisArg), _core.types.cloneNode(targetKey)))]);
+  const setterBody = _core.types.blockStatement([_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.cloneNode(thisArg), _core.types.cloneNode(targetKey)), _core.types.identifier("v")))]);
+  let getter, setter;
+  if (getterKey.type === "PrivateName") {
+    getter = _core.types.classPrivateMethod("get", getterKey, [], getterBody, isStatic);
+    setter = _core.types.classPrivateMethod("set", setterKey, [_core.types.identifier("v")], setterBody, isStatic);
+  } else {
+    getter = _core.types.classMethod("get", getterKey, [], getterBody, isComputed, isStatic);
+    setter = _core.types.classMethod("set", setterKey, [_core.types.identifier("v")], setterBody, isComputed, isStatic);
+  }
+  element.insertAfter(setter);
+  element.insertAfter(getter);
+}
+function extractProxyAccessorsFor(targetKey, version) {
+  if (version !== "2023-11" && version !== "2023-05" && version !== "2023-01") {
+    return [_core.template.expression.ast`
+        function () {
+          return this.${_core.types.cloneNode(targetKey)};
+        }
+      `, _core.template.expression.ast`
+        function (value) {
+          this.${_core.types.cloneNode(targetKey)} = value;
+        }
+      `];
+  }
+  return [_core.template.expression.ast`
+      o => o.${_core.types.cloneNode(targetKey)}
+    `, _core.template.expression.ast`
+      (o, v) => o.${_core.types.cloneNode(targetKey)} = v
+    `];
+}
+function getComputedKeyLastElement(path) {
+  path = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path);
+  if (path.isSequenceExpression()) {
+    const expressions = path.get("expressions");
+    return getComputedKeyLastElement(expressions[expressions.length - 1]);
+  }
+  return path;
+}
+function getComputedKeyMemoiser(path) {
+  const element = getComputedKeyLastElement(path);
+  if (element.isConstantExpression()) {
+    return _core.types.cloneNode(path.node);
+  } else if (element.isIdentifier() && path.scope.hasUid(element.node.name)) {
+    return _core.types.cloneNode(path.node);
+  } else if (element.isAssignmentExpression() && element.get("left").isIdentifier()) {
+    return _core.types.cloneNode(element.node.left);
+  } else {
+    throw new Error(`Internal Error: the computed key ${path.toString()} has not yet been memoised.`);
+  }
+}
+function prependExpressionsToComputedKey(expressions, fieldPath) {
+  const key = fieldPath.get("key");
+  if (key.isSequenceExpression()) {
+    expressions.push(...key.node.expressions);
+  } else {
+    expressions.push(key.node);
+  }
+  key.replaceWith(maybeSequenceExpression(expressions));
+}
+function appendExpressionsToComputedKey(expressions, fieldPath) {
+  const key = fieldPath.get("key");
+  const completion = getComputedKeyLastElement(key);
+  if (completion.isConstantExpression()) {
+    prependExpressionsToComputedKey(expressions, fieldPath);
+  } else {
+    const scopeParent = key.scope.parent;
+    const maybeAssignment = (0, _misc.memoiseComputedKey)(completion.node, scopeParent, scopeParent.generateUid("computedKey"));
+    if (!maybeAssignment) {
+      prependExpressionsToComputedKey(expressions, fieldPath);
+    } else {
+      const expressionSequence = [...expressions, _core.types.cloneNode(maybeAssignment.left)];
+      const completionParent = completion.parentPath;
+      if (completionParent.isSequenceExpression()) {
+        completionParent.pushContainer("expressions", expressionSequence);
+      } else {
+        completion.replaceWith(maybeSequenceExpression([_core.types.cloneNode(maybeAssignment), ...expressionSequence]));
+      }
+    }
+  }
+}
+function prependExpressionsToFieldInitializer(expressions, fieldPath) {
+  const initializer = fieldPath.get("value");
+  if (initializer.node) {
+    expressions.push(initializer.node);
+  } else if (expressions.length > 0) {
+    expressions[expressions.length - 1] = _core.types.unaryExpression("void", expressions[expressions.length - 1]);
+  }
+  initializer.replaceWith(maybeSequenceExpression(expressions));
+}
+function prependExpressionsToStaticBlock(expressions, blockPath) {
+  blockPath.unshiftContainer("body", _core.types.expressionStatement(maybeSequenceExpression(expressions)));
+}
+function prependExpressionsToConstructor(expressions, constructorPath) {
+  constructorPath.node.body.body.unshift(_core.types.expressionStatement(maybeSequenceExpression(expressions)));
+}
+function isProtoInitCallExpression(expression, protoInitCall) {
+  return _core.types.isCallExpression(expression) && _core.types.isIdentifier(expression.callee, {
+    name: protoInitCall.name
+  });
+}
+function optimizeSuperCallAndExpressions(expressions, protoInitLocal) {
+  if (protoInitLocal) {
+    if (expressions.length >= 2 && isProtoInitCallExpression(expressions[1], protoInitLocal)) {
+      const mergedSuperCall = _core.types.callExpression(_core.types.cloneNode(protoInitLocal), [expressions[0]]);
+      expressions.splice(0, 2, mergedSuperCall);
+    }
+    if (expressions.length >= 2 && _core.types.isThisExpression(expressions[expressions.length - 1]) && isProtoInitCallExpression(expressions[expressions.length - 2], protoInitLocal)) {
+      expressions.splice(expressions.length - 1, 1);
+    }
+  }
+  return maybeSequenceExpression(expressions);
+}
+function insertExpressionsAfterSuperCallAndOptimize(expressions, constructorPath, protoInitLocal) {
+  constructorPath.traverse({
+    CallExpression: {
+      exit(path) {
+        if (!path.get("callee").isSuper()) return;
+        const newNodes = [path.node, ...expressions.map(expr => _core.types.cloneNode(expr))];
+        if (path.isCompletionRecord()) {
+          newNodes.push(_core.types.thisExpression());
+        }
+        path.replaceWith(optimizeSuperCallAndExpressions(newNodes, protoInitLocal));
+        path.skip();
+      }
+    },
+    ClassMethod(path) {
+      if (path.node.kind === "constructor") {
+        path.skip();
+      }
+    }
+  });
+}
+function createConstructorFromExpressions(expressions, isDerivedClass) {
+  const body = [_core.types.expressionStatement(maybeSequenceExpression(expressions))];
+  if (isDerivedClass) {
+    body.unshift(_core.types.expressionStatement(_core.types.callExpression(_core.types.super(), [_core.types.spreadElement(_core.types.identifier("args"))])));
+  }
+  return _core.types.classMethod("constructor", _core.types.identifier("constructor"), isDerivedClass ? [_core.types.restElement(_core.types.identifier("args"))] : [], _core.types.blockStatement(body));
+}
+function createStaticBlockFromExpressions(expressions) {
+  return _core.types.staticBlock([_core.types.expressionStatement(maybeSequenceExpression(expressions))]);
+}
+const FIELD = 0;
+const ACCESSOR = 1;
+const METHOD = 2;
+const GETTER = 3;
+const SETTER = 4;
+const STATIC_OLD_VERSION = 5;
+const STATIC = 8;
+const DECORATORS_HAVE_THIS = 16;
+function getElementKind(element) {
+  switch (element.node.type) {
+    case "ClassProperty":
+    case "ClassPrivateProperty":
+      return FIELD;
+    case "ClassAccessorProperty":
+      return ACCESSOR;
+    case "ClassMethod":
+    case "ClassPrivateMethod":
+      if (element.node.kind === "get") {
+        return GETTER;
+      } else if (element.node.kind === "set") {
+        return SETTER;
+      } else {
+        return METHOD;
+      }
+  }
+}
+function toSortedDecoratorInfo(info) {
+  return [...info.filter(el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER), ...info.filter(el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER), ...info.filter(el => el.isStatic && el.kind === FIELD), ...info.filter(el => !el.isStatic && el.kind === FIELD)];
+}
+function generateDecorationList(decorators, decoratorsThis, version) {
+  const decsCount = decorators.length;
+  const haveOneThis = decoratorsThis.some(Boolean);
+  const decs = [];
+  for (let i = 0; i < decsCount; i++) {
+    if ((version === "2023-11" || version === "2023-05") && haveOneThis) {
+      decs.push(decoratorsThis[i] || _core.types.unaryExpression("void", _core.types.numericLiteral(0)));
+    }
+    decs.push(decorators[i].expression);
+  }
+  return {
+    haveThis: haveOneThis,
+    decs
+  };
+}
+function generateDecorationExprs(decorationInfo, version) {
+  return _core.types.arrayExpression(decorationInfo.map(el => {
+    let flag = el.kind;
+    if (el.isStatic) {
+      flag += version === "2023-11" || version === "2023-05" ? STATIC : STATIC_OLD_VERSION;
+    }
+    if (el.decoratorsHaveThis) flag += DECORATORS_HAVE_THIS;
+    return _core.types.arrayExpression([el.decoratorsArray, _core.types.numericLiteral(flag), el.name, ...(el.privateMethods || [])]);
+  }));
+}
+function extractElementLocalAssignments(decorationInfo) {
+  const localIds = [];
+  for (const el of decorationInfo) {
+    const {
+      locals
+    } = el;
+    if (Array.isArray(locals)) {
+      localIds.push(...locals);
+    } else if (locals !== undefined) {
+      localIds.push(locals);
+    }
+  }
+  return localIds;
+}
+function addCallAccessorsFor(version, element, key, getId, setId, isStatic) {
+  element.insertAfter(_core.types.classPrivateMethod("get", _core.types.cloneNode(key), [], _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.cloneNode(getId), version === "2023-11" && isStatic ? [] : [_core.types.thisExpression()]))]), isStatic));
+  element.insertAfter(_core.types.classPrivateMethod("set", _core.types.cloneNode(key), [_core.types.identifier("v")], _core.types.blockStatement([_core.types.expressionStatement(_core.types.callExpression(_core.types.cloneNode(setId), version === "2023-11" && isStatic ? [_core.types.identifier("v")] : [_core.types.thisExpression(), _core.types.identifier("v")]))]), isStatic));
+}
+function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
+  let params;
+  let block;
+  if (element.node.kind === "set") {
+    params = [_core.types.identifier("v")];
+    block = [_core.types.expressionStatement(_core.types.callExpression(methodLocalVar, [_core.types.thisExpression(), _core.types.identifier("v")]))];
+  } else {
+    params = [];
+    block = [_core.types.returnStatement(_core.types.callExpression(methodLocalVar, [_core.types.thisExpression()]))];
+  }
+  element.replaceWith(_core.types.classPrivateMethod(element.node.kind, _core.types.cloneNode(key), params, _core.types.blockStatement(block), isStatic));
+}
+function isClassDecoratableElementPath(path) {
+  const {
+    type
+  } = path;
+  return type !== "TSDeclareMethod" && type !== "TSIndexSignature" && type !== "StaticBlock";
+}
+function staticBlockToIIFE(block) {
+  return _core.types.callExpression(_core.types.arrowFunctionExpression([], _core.types.blockStatement(block.body)), []);
+}
+function staticBlockToFunctionClosure(block) {
+  return _core.types.functionExpression(null, [], _core.types.blockStatement(block.body));
+}
+function fieldInitializerToClosure(value) {
+  return _core.types.functionExpression(null, [], _core.types.blockStatement([_core.types.returnStatement(value)]));
+}
+function maybeSequenceExpression(exprs) {
+  if (exprs.length === 0) return _core.types.unaryExpression("void", _core.types.numericLiteral(0));
+  if (exprs.length === 1) return exprs[0];
+  return _core.types.sequenceExpression(exprs);
+}
+function createFunctionExpressionFromPrivateMethod(node) {
+  const {
+    params,
+    body,
+    generator: isGenerator,
+    async: isAsync
+  } = node;
+  return _core.types.functionExpression(undefined, params, body, isGenerator, isAsync);
+}
+function createSetFunctionNameCall(state, className) {
+  return _core.types.callExpression(state.addHelper("setFunctionName"), [_core.types.thisExpression(), className]);
+}
+function createToPropertyKeyCall(state, propertyKey) {
+  return _core.types.callExpression(state.addHelper("toPropertyKey"), [propertyKey]);
+}
+function createPrivateBrandCheckClosure(brandName) {
+  return _core.types.arrowFunctionExpression([_core.types.identifier("_")], _core.types.binaryExpression("in", _core.types.cloneNode(brandName), _core.types.identifier("_")));
+}
+function usesPrivateField(expression) {
+  try {
+    _core.types.traverseFast(expression, node => {
+      if (_core.types.isPrivateName(node)) {
+        throw null;
+      }
+    });
+    return false;
+  } catch (_unused) {
+    return true;
+  }
+}
+function convertToComputedKey(path) {
+  const {
+    node
+  } = path;
+  node.computed = true;
+  if (_core.types.isIdentifier(node.key)) {
+    node.key = _core.types.stringLiteral(node.key.name);
+  }
+}
+function hasInstancePrivateAccess(path, privateNames) {
+  let containsInstancePrivateAccess = false;
+  if (privateNames.length > 0) {
+    const privateNameVisitor = (0, _fields.privateNameVisitorFactory)({
+      PrivateName(path, state) {
+        if (state.privateNamesMap.has(path.node.id.name)) {
+          containsInstancePrivateAccess = true;
+          path.stop();
+        }
+      }
+    });
+    const privateNamesMap = new Map();
+    for (const name of privateNames) {
+      privateNamesMap.set(name, null);
+    }
+    path.traverse(privateNameVisitor, {
+      privateNamesMap: privateNamesMap
+    });
+  }
+  return containsInstancePrivateAccess;
+}
+function checkPrivateMethodUpdateError(path, decoratedPrivateMethods) {
+  const privateNameVisitor = (0, _fields.privateNameVisitorFactory)({
+    PrivateName(path, state) {
+      if (!state.privateNamesMap.has(path.node.id.name)) return;
+      const parentPath = path.parentPath;
+      const parentParentPath = parentPath.parentPath;
+      if (parentParentPath.node.type === "AssignmentExpression" && parentParentPath.node.left === parentPath.node || parentParentPath.node.type === "UpdateExpression" || parentParentPath.node.type === "RestElement" || parentParentPath.node.type === "ArrayPattern" || parentParentPath.node.type === "ObjectProperty" && parentParentPath.node.value === parentPath.node && parentParentPath.parentPath.type === "ObjectPattern" || parentParentPath.node.type === "ForOfStatement" && parentParentPath.node.left === parentPath.node) {
+        throw path.buildCodeFrameError(`Decorated private methods are read-only, but "#${path.node.id.name}" is updated via this expression.`);
+      }
+    }
+  });
+  const privateNamesMap = new Map();
+  for (const name of decoratedPrivateMethods) {
+    privateNamesMap.set(name, null);
+  }
+  path.traverse(privateNameVisitor, {
+    privateNamesMap: privateNamesMap
+  });
+}
+function transformClass(path, state, constantSuper, ignoreFunctionLength, className, propertyVisitor, version) {
+  var _path$node$id, _classDecorationsId;
+  const body = path.get("body.body");
+  const classDecorators = path.node.decorators;
+  let hasElementDecorators = false;
+  let hasComputedKeysSideEffects = false;
+  let elemDecsUseFnContext = false;
+  const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);
+  const classAssignments = [];
+  const scopeParent = path.scope.parent;
+  const memoiseExpression = (expression, hint, assignments) => {
+    const localEvaluatedId = generateLetUidIdentifier(scopeParent, hint);
+    assignments.push(_core.types.assignmentExpression("=", localEvaluatedId, expression));
+    return _core.types.cloneNode(localEvaluatedId);
+  };
+  let protoInitLocal;
+  let staticInitLocal;
+  const classIdName = (_path$node$id = path.node.id) == null ? void 0 : _path$node$id.name;
+  const setClassName = typeof className === "object" ? className : undefined;
+  const usesFunctionContextOrYieldAwait = decorator => {
+    try {
+      _core.types.traverseFast(decorator, node => {
+        if (_core.types.isThisExpression(node) || _core.types.isSuper(node) || _core.types.isYieldExpression(node) || _core.types.isAwaitExpression(node) || _core.types.isIdentifier(node, {
+          name: "arguments"
+        }) || classIdName && _core.types.isIdentifier(node, {
+          name: classIdName
+        }) || _core.types.isMetaProperty(node) && node.meta.name !== "import") {
+          throw null;
+        }
+      });
+      return false;
+    } catch (_unused2) {
+      return true;
+    }
+  };
+  const instancePrivateNames = [];
+  for (const element of body) {
+    if (!isClassDecoratableElementPath(element)) {
+      continue;
+    }
+    const elementNode = element.node;
+    if (!elementNode.static && _core.types.isPrivateName(elementNode.key)) {
+      instancePrivateNames.push(elementNode.key.id.name);
+    }
+    if (isDecorated(elementNode)) {
+      switch (elementNode.type) {
+        case "ClassProperty":
+          propertyVisitor.ClassProperty(element, state);
+          break;
+        case "ClassPrivateProperty":
+          propertyVisitor.ClassPrivateProperty(element, state);
+          break;
+        case "ClassAccessorProperty":
+          propertyVisitor.ClassAccessorProperty(element, state);
+          if (version === "2023-11") {
+            break;
+          }
+        default:
+          if (elementNode.static) {
+            var _staticInitLocal;
+            (_staticInitLocal = staticInitLocal) != null ? _staticInitLocal : staticInitLocal = generateLetUidIdentifier(scopeParent, "initStatic");
+          } else {
+            var _protoInitLocal;
+            (_protoInitLocal = protoInitLocal) != null ? _protoInitLocal : protoInitLocal = generateLetUidIdentifier(scopeParent, "initProto");
+          }
+          break;
+      }
+      hasElementDecorators = true;
+      elemDecsUseFnContext || (elemDecsUseFnContext = elementNode.decorators.some(usesFunctionContextOrYieldAwait));
+    } else if (elementNode.type === "ClassAccessorProperty") {
+      propertyVisitor.ClassAccessorProperty(element, state);
+      const {
+        key,
+        value,
+        static: isStatic,
+        computed
+      } = elementNode;
+      const newId = generateClassPrivateUid();
+      const newField = generateClassProperty(newId, value, isStatic);
+      const keyPath = element.get("key");
+      const [newPath] = element.replaceWith(newField);
+      let getterKey, setterKey;
+      if (computed && !keyPath.isConstantExpression()) {
+        getterKey = (0, _misc.memoiseComputedKey)(createToPropertyKeyCall(state, key), scopeParent, scopeParent.generateUid("computedKey"));
+        setterKey = _core.types.cloneNode(getterKey.left);
+      } else {
+        getterKey = _core.types.cloneNode(key);
+        setterKey = _core.types.cloneNode(key);
+      }
+      assignIdForAnonymousClass(path, className);
+      addProxyAccessorsFor(path.node.id, newPath, getterKey, setterKey, newId, computed, isStatic, version);
+    }
+    if ("computed" in element.node && element.node.computed) {
+      hasComputedKeysSideEffects || (hasComputedKeysSideEffects = !scopeParent.isStatic(element.node.key));
+    }
+  }
+  if (!classDecorators && !hasElementDecorators) {
+    if (!path.node.id && typeof className === "string") {
+      path.node.id = _core.types.identifier(className);
+    }
+    if (setClassName) {
+      path.node.body.body.unshift(createStaticBlockFromExpressions([createSetFunctionNameCall(state, setClassName)]));
+    }
+    return;
+  }
+  const elementDecoratorInfo = [];
+  let constructorPath;
+  const decoratedPrivateMethods = new Set();
+  let classInitLocal, classIdLocal;
+  let decoratorReceiverId = null;
+  function handleDecorators(decorators) {
+    let hasSideEffects = false;
+    let usesFnContext = false;
+    const decoratorsThis = [];
+    for (const decorator of decorators) {
+      const {
+        expression
+      } = decorator;
+      let object;
+      if ((version === "2023-11" || version === "2023-05") && _core.types.isMemberExpression(expression)) {
+        if (_core.types.isSuper(expression.object)) {
+          object = _core.types.thisExpression();
+        } else if (scopeParent.isStatic(expression.object)) {
+          object = _core.types.cloneNode(expression.object);
+        } else {
+          var _decoratorReceiverId;
+          (_decoratorReceiverId = decoratorReceiverId) != null ? _decoratorReceiverId : decoratorReceiverId = generateLetUidIdentifier(scopeParent, "obj");
+          object = _core.types.assignmentExpression("=", _core.types.cloneNode(decoratorReceiverId), expression.object);
+          expression.object = _core.types.cloneNode(decoratorReceiverId);
+        }
+      }
+      decoratorsThis.push(object);
+      hasSideEffects || (hasSideEffects = !scopeParent.isStatic(expression));
+      usesFnContext || (usesFnContext = usesFunctionContextOrYieldAwait(decorator));
+    }
+    return {
+      hasSideEffects,
+      usesFnContext,
+      decoratorsThis
+    };
+  }
+  const willExtractSomeElemDecs = hasComputedKeysSideEffects || elemDecsUseFnContext || version !== "2023-11";
+  let needsDeclaraionForClassBinding = false;
+  let classDecorationsFlag = 0;
+  let classDecorations = [];
+  let classDecorationsId;
+  let computedKeyAssignments = [];
+  if (classDecorators) {
+    classInitLocal = generateLetUidIdentifier(scopeParent, "initClass");
+    needsDeclaraionForClassBinding = path.isClassDeclaration();
+    ({
+      id: classIdLocal,
+      path
+    } = replaceClassWithVar(path, className));
+    path.node.decorators = null;
+    const classDecsUsePrivateName = classDecorators.some(usesPrivateField);
+    const {
+      hasSideEffects,
+      usesFnContext,
+      decoratorsThis
+    } = handleDecorators(classDecorators);
+    const {
+      haveThis,
+      decs
+    } = generateDecorationList(classDecorators, decoratorsThis, version);
+    classDecorationsFlag = haveThis ? 1 : 0;
+    classDecorations = decs;
+    if (usesFnContext || hasSideEffects && willExtractSomeElemDecs || classDecsUsePrivateName) {
+      classDecorationsId = memoiseExpression(_core.types.arrayExpression(classDecorations), "classDecs", classAssignments);
+    }
+    if (!hasElementDecorators) {
+      for (const element of path.get("body.body")) {
+        const {
+          node
+        } = element;
+        const isComputed = "computed" in node && node.computed;
+        if (isComputed) {
+          if (element.isClassProperty({
+            static: true
+          })) {
+            if (!element.get("key").isConstantExpression()) {
+              const key = node.key;
+              const maybeAssignment = (0, _misc.memoiseComputedKey)(key, scopeParent, scopeParent.generateUid("computedKey"));
+              if (maybeAssignment != null) {
+                node.key = _core.types.cloneNode(maybeAssignment.left);
+                computedKeyAssignments.push(maybeAssignment);
+              }
+            }
+          } else if (computedKeyAssignments.length > 0) {
+            prependExpressionsToComputedKey(computedKeyAssignments, element);
+            computedKeyAssignments = [];
+          }
+        }
+      }
+    }
+  } else {
+    assignIdForAnonymousClass(path, className);
+    classIdLocal = _core.types.cloneNode(path.node.id);
+  }
+  let lastInstancePrivateName;
+  let needsInstancePrivateBrandCheck = false;
+  let fieldInitializerExpressions = [];
+  let staticFieldInitializerExpressions = [];
+  if (hasElementDecorators) {
+    if (protoInitLocal) {
+      const protoInitCall = _core.types.callExpression(_core.types.cloneNode(protoInitLocal), [_core.types.thisExpression()]);
+      fieldInitializerExpressions.push(protoInitCall);
+    }
+    for (const element of body) {
+      if (!isClassDecoratableElementPath(element)) {
+        if (staticFieldInitializerExpressions.length > 0 && element.isStaticBlock()) {
+          prependExpressionsToStaticBlock(staticFieldInitializerExpressions, element);
+          staticFieldInitializerExpressions = [];
+        }
+        continue;
+      }
+      const {
+        node
+      } = element;
+      const decorators = node.decorators;
+      const hasDecorators = !!(decorators != null && decorators.length);
+      const isComputed = "computed" in node && node.computed;
+      let name = "computedKey";
+      if (node.key.type === "PrivateName") {
+        name = node.key.id.name;
+      } else if (!isComputed && node.key.type === "Identifier") {
+        name = node.key.name;
+      }
+      let decoratorsArray;
+      let decoratorsHaveThis;
+      if (hasDecorators) {
+        const {
+          hasSideEffects,
+          usesFnContext,
+          decoratorsThis
+        } = handleDecorators(decorators);
+        const {
+          decs,
+          haveThis
+        } = generateDecorationList(decorators, decoratorsThis, version);
+        decoratorsHaveThis = haveThis;
+        decoratorsArray = decs.length === 1 ? decs[0] : _core.types.arrayExpression(decs);
+        if (usesFnContext || hasSideEffects && willExtractSomeElemDecs) {
+          decoratorsArray = memoiseExpression(decoratorsArray, name + "Decs", computedKeyAssignments);
+        }
+      }
+      if (isComputed) {
+        if (!element.get("key").isConstantExpression()) {
+          const key = node.key;
+          const maybeAssignment = (0, _misc.memoiseComputedKey)(hasDecorators ? createToPropertyKeyCall(state, key) : key, scopeParent, scopeParent.generateUid("computedKey"));
+          if (maybeAssignment != null) {
+            if (classDecorators && element.isClassProperty({
+              static: true
+            })) {
+              node.key = _core.types.cloneNode(maybeAssignment.left);
+              computedKeyAssignments.push(maybeAssignment);
+            } else {
+              node.key = maybeAssignment;
+            }
+          }
+        }
+      }
+      const {
+        key,
+        static: isStatic
+      } = node;
+      const isPrivate = key.type === "PrivateName";
+      const kind = getElementKind(element);
+      if (isPrivate && !isStatic) {
+        if (hasDecorators) {
+          needsInstancePrivateBrandCheck = true;
+        }
+        if (_core.types.isClassPrivateProperty(node) || !lastInstancePrivateName) {
+          lastInstancePrivateName = key;
+        }
+      }
+      if (element.isClassMethod({
+        kind: "constructor"
+      })) {
+        constructorPath = element;
+      }
+      let locals;
+      if (hasDecorators) {
+        let privateMethods;
+        let nameExpr;
+        if (isComputed) {
+          nameExpr = getComputedKeyMemoiser(element.get("key"));
+        } else if (key.type === "PrivateName") {
+          nameExpr = _core.types.stringLiteral(key.id.name);
+        } else if (key.type === "Identifier") {
+          nameExpr = _core.types.stringLiteral(key.name);
+        } else {
+          nameExpr = _core.types.cloneNode(key);
+        }
+        if (kind === ACCESSOR) {
+          const {
+            value
+          } = element.node;
+          const params = version === "2023-11" && isStatic ? [] : [_core.types.thisExpression()];
+          if (value) {
+            params.push(_core.types.cloneNode(value));
+          }
+          const newId = generateClassPrivateUid();
+          const newFieldInitId = generateLetUidIdentifier(scopeParent, `init_${name}`);
+          const newValue = _core.types.callExpression(_core.types.cloneNode(newFieldInitId), params);
+          const newField = generateClassProperty(newId, newValue, isStatic);
+          const [newPath] = element.replaceWith(newField);
+          if (isPrivate) {
+            privateMethods = extractProxyAccessorsFor(newId, version);
+            const getId = generateLetUidIdentifier(scopeParent, `get_${name}`);
+            const setId = generateLetUidIdentifier(scopeParent, `set_${name}`);
+            addCallAccessorsFor(version, newPath, key, getId, setId, isStatic);
+            locals = [newFieldInitId, getId, setId];
+          } else {
+            assignIdForAnonymousClass(path, className);
+            addProxyAccessorsFor(path.node.id, newPath, _core.types.cloneNode(key), _core.types.isAssignmentExpression(key) ? _core.types.cloneNode(key.left) : _core.types.cloneNode(key), newId, isComputed, isStatic, version);
+            locals = [newFieldInitId];
+          }
+        } else if (kind === FIELD) {
+          const initId = generateLetUidIdentifier(scopeParent, `init_${name}`);
+          const valuePath = element.get("value");
+          const args = version === "2023-11" && isStatic ? [] : [_core.types.thisExpression()];
+          if (valuePath.node) args.push(valuePath.node);
+          valuePath.replaceWith(_core.types.callExpression(_core.types.cloneNode(initId), args));
+          locals = [initId];
+          if (isPrivate) {
+            privateMethods = extractProxyAccessorsFor(key, version);
+          }
+        } else if (isPrivate) {
+          const callId = generateLetUidIdentifier(scopeParent, `call_${name}`);
+          locals = [callId];
+          const replaceSupers = new _helperReplaceSupers.default({
+            constantSuper,
+            methodPath: element,
+            objectRef: classIdLocal,
+            superRef: path.node.superClass,
+            file: state.file,
+            refToPreserve: classIdLocal
+          });
+          replaceSupers.replace();
+          privateMethods = [createFunctionExpressionFromPrivateMethod(element.node)];
+          if (kind === GETTER || kind === SETTER) {
+            movePrivateAccessor(element, _core.types.cloneNode(key), _core.types.cloneNode(callId), isStatic);
+          } else {
+            const node = element.node;
+            path.node.body.body.unshift(_core.types.classPrivateProperty(key, _core.types.cloneNode(callId), [], node.static));
+            decoratedPrivateMethods.add(key.id.name);
+            element.remove();
+          }
+        }
+        elementDecoratorInfo.push({
+          kind,
+          decoratorsArray,
+          decoratorsHaveThis,
+          name: nameExpr,
+          isStatic,
+          privateMethods,
+          locals
+        });
+        if (element.node) {
+          element.node.decorators = null;
+        }
+      }
+      if (isComputed && computedKeyAssignments.length > 0) {
+        if (classDecorators && element.isClassProperty({
+          static: true
+        })) {} else {
+          prependExpressionsToComputedKey(computedKeyAssignments, kind === ACCESSOR ? element.getNextSibling() : element);
+          computedKeyAssignments = [];
+        }
+      }
+      if (fieldInitializerExpressions.length > 0 && !isStatic && (kind === FIELD || kind === ACCESSOR)) {
+        prependExpressionsToFieldInitializer(fieldInitializerExpressions, element);
+        fieldInitializerExpressions = [];
+      }
+      if (staticFieldInitializerExpressions.length > 0 && isStatic && (kind === FIELD || kind === ACCESSOR)) {
+        prependExpressionsToFieldInitializer(staticFieldInitializerExpressions, element);
+        staticFieldInitializerExpressions = [];
+      }
+      if (hasDecorators && version === "2023-11") {
+        if (kind === FIELD || kind === ACCESSOR) {
+          const initExtraId = generateLetUidIdentifier(scopeParent, `init_extra_${name}`);
+          locals.push(initExtraId);
+          const initExtraCall = _core.types.callExpression(_core.types.cloneNode(initExtraId), isStatic ? [] : [_core.types.thisExpression()]);
+          if (!isStatic) {
+            fieldInitializerExpressions.push(initExtraCall);
+          } else {
+            staticFieldInitializerExpressions.push(initExtraCall);
+          }
+        }
+      }
+    }
+  }
+  if (computedKeyAssignments.length > 0) {
+    const elements = path.get("body.body");
+    let lastComputedElement;
+    for (let i = elements.length - 1; i >= 0; i--) {
+      const path = elements[i];
+      const node = path.node;
+      if (node.computed) {
+        if (classDecorators && _core.types.isClassProperty(node, {
+          static: true
+        })) {
+          continue;
+        }
+        lastComputedElement = path;
+        break;
+      }
+    }
+    if (lastComputedElement != null) {
+      appendExpressionsToComputedKey(computedKeyAssignments, lastComputedElement);
+      computedKeyAssignments = [];
+    } else {}
+  }
+  if (fieldInitializerExpressions.length > 0) {
+    const isDerivedClass = !!path.node.superClass;
+    if (constructorPath) {
+      if (isDerivedClass) {
+        insertExpressionsAfterSuperCallAndOptimize(fieldInitializerExpressions, constructorPath, protoInitLocal);
+      } else {
+        prependExpressionsToConstructor(fieldInitializerExpressions, constructorPath);
+      }
+    } else {
+      path.node.body.body.unshift(createConstructorFromExpressions(fieldInitializerExpressions, isDerivedClass));
+    }
+    fieldInitializerExpressions = [];
+  }
+  if (staticFieldInitializerExpressions.length > 0) {
+    path.node.body.body.push(createStaticBlockFromExpressions(staticFieldInitializerExpressions));
+    staticFieldInitializerExpressions = [];
+  }
+  const sortedElementDecoratorInfo = toSortedDecoratorInfo(elementDecoratorInfo);
+  const elementDecorations = generateDecorationExprs(version === "2023-11" ? elementDecoratorInfo : sortedElementDecoratorInfo, version);
+  const elementLocals = extractElementLocalAssignments(sortedElementDecoratorInfo);
+  if (protoInitLocal) {
+    elementLocals.push(protoInitLocal);
+  }
+  if (staticInitLocal) {
+    elementLocals.push(staticInitLocal);
+  }
+  const classLocals = [];
+  let classInitInjected = false;
+  const classInitCall = classInitLocal && _core.types.callExpression(_core.types.cloneNode(classInitLocal), []);
+  let originalClassPath = path;
+  const originalClass = path.node;
+  const staticClosures = [];
+  if (classDecorators) {
+    classLocals.push(classIdLocal, classInitLocal);
+    const statics = [];
+    path.get("body.body").forEach(element => {
+      if (element.isStaticBlock()) {
+        if (hasInstancePrivateAccess(element, instancePrivateNames)) {
+          const staticBlockClosureId = memoiseExpression(staticBlockToFunctionClosure(element.node), "staticBlock", staticClosures);
+          staticFieldInitializerExpressions.push(_core.types.callExpression(_core.types.memberExpression(staticBlockClosureId, _core.types.identifier("call")), [_core.types.thisExpression()]));
+        } else {
+          staticFieldInitializerExpressions.push(staticBlockToIIFE(element.node));
+        }
+        element.remove();
+        return;
+      }
+      if ((element.isClassProperty() || element.isClassPrivateProperty()) && element.node.static) {
+        const valuePath = element.get("value");
+        if (hasInstancePrivateAccess(valuePath, instancePrivateNames)) {
+          const fieldValueClosureId = memoiseExpression(fieldInitializerToClosure(valuePath.node), "fieldValue", staticClosures);
+          valuePath.replaceWith(_core.types.callExpression(_core.types.memberExpression(fieldValueClosureId, _core.types.identifier("call")), [_core.types.thisExpression()]));
+        }
+        if (staticFieldInitializerExpressions.length > 0) {
+          prependExpressionsToFieldInitializer(staticFieldInitializerExpressions, element);
+          staticFieldInitializerExpressions = [];
+        }
+        element.node.static = false;
+        statics.push(element.node);
+        element.remove();
+      } else if (element.isClassPrivateMethod({
+        static: true
+      })) {
+        if (hasInstancePrivateAccess(element, instancePrivateNames)) {
+          const replaceSupers = new _helperReplaceSupers.default({
+            constantSuper,
+            methodPath: element,
+            objectRef: classIdLocal,
+            superRef: path.node.superClass,
+            file: state.file,
+            refToPreserve: classIdLocal
+          });
+          replaceSupers.replace();
+          const privateMethodDelegateId = memoiseExpression(createFunctionExpressionFromPrivateMethod(element.node), element.get("key.id").node.name, staticClosures);
+          if (ignoreFunctionLength) {
+            element.node.params = [_core.types.restElement(_core.types.identifier("arg"))];
+            element.node.body = _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.memberExpression(privateMethodDelegateId, _core.types.identifier("apply")), [_core.types.thisExpression(), _core.types.identifier("arg")]))]);
+          } else {
+            element.node.params = element.node.params.map((p, i) => {
+              if (_core.types.isRestElement(p)) {
+                return _core.types.restElement(_core.types.identifier("arg"));
+              } else {
+                return _core.types.identifier("_" + i);
+              }
+            });
+            element.node.body = _core.types.blockStatement([_core.types.returnStatement(_core.types.callExpression(_core.types.memberExpression(privateMethodDelegateId, _core.types.identifier("apply")), [_core.types.thisExpression(), _core.types.identifier("arguments")]))]);
+          }
+        }
+        element.node.static = false;
+        statics.push(element.node);
+        element.remove();
+      }
+    });
+    if (statics.length > 0 || staticFieldInitializerExpressions.length > 0) {
+      const staticsClass = _core.template.expression.ast`
+        class extends ${state.addHelper("identity")} {}
+      `;
+      staticsClass.body.body = [_core.types.classProperty(_core.types.toExpression(originalClass), undefined, undefined, undefined, true, true), ...statics];
+      const constructorBody = [];
+      const newExpr = _core.types.newExpression(staticsClass, []);
+      if (staticFieldInitializerExpressions.length > 0) {
+        constructorBody.push(...staticFieldInitializerExpressions);
+      }
+      if (classInitCall) {
+        classInitInjected = true;
+        constructorBody.push(classInitCall);
+      }
+      if (constructorBody.length > 0) {
+        constructorBody.unshift(_core.types.callExpression(_core.types.super(), [_core.types.cloneNode(classIdLocal)]));
+        staticsClass.body.body.push(createConstructorFromExpressions(constructorBody, false));
+      } else {
+        newExpr.arguments.push(_core.types.cloneNode(classIdLocal));
+      }
+      const [newPath] = path.replaceWith(newExpr);
+      originalClassPath = newPath.get("callee").get("body").get("body.0.key");
+    }
+  }
+  if (!classInitInjected && classInitCall) {
+    path.node.body.body.push(_core.types.staticBlock([_core.types.expressionStatement(classInitCall)]));
+  }
+  let {
+    superClass
+  } = originalClass;
+  if (superClass && (version === "2023-11" || version === "2023-05")) {
+    const id = path.scope.maybeGenerateMemoised(superClass);
+    if (id) {
+      originalClass.superClass = _core.types.assignmentExpression("=", id, superClass);
+      superClass = id;
+    }
+  }
+  const applyDecoratorWrapper = _core.types.staticBlock([]);
+  originalClass.body.body.unshift(applyDecoratorWrapper);
+  const applyDecsBody = applyDecoratorWrapper.body;
+  if (computedKeyAssignments.length > 0) {
+    const elements = originalClassPath.get("body.body");
+    let firstPublicElement;
+    for (const path of elements) {
+      if ((path.isClassProperty() || path.isClassMethod()) && path.node.kind !== "constructor") {
+        firstPublicElement = path;
+        break;
+      }
+    }
+    if (firstPublicElement != null) {
+      convertToComputedKey(firstPublicElement);
+      prependExpressionsToComputedKey(computedKeyAssignments, firstPublicElement);
+    } else {
+      originalClass.body.body.unshift(_core.types.classProperty(_core.types.sequenceExpression([...computedKeyAssignments, _core.types.stringLiteral("_")]), undefined, undefined, undefined, true, true));
+      applyDecsBody.push(_core.types.expressionStatement(_core.types.unaryExpression("delete", _core.types.memberExpression(_core.types.thisExpression(), _core.types.identifier("_")))));
+    }
+    computedKeyAssignments = [];
+  }
+  applyDecsBody.push(_core.types.expressionStatement(createLocalsAssignment(elementLocals, classLocals, elementDecorations, (_classDecorationsId = classDecorationsId) != null ? _classDecorationsId : _core.types.arrayExpression(classDecorations), _core.types.numericLiteral(classDecorationsFlag), needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, setClassName, _core.types.cloneNode(superClass), state, version)));
+  if (staticInitLocal) {
+    applyDecsBody.push(_core.types.expressionStatement(_core.types.callExpression(_core.types.cloneNode(staticInitLocal), [_core.types.thisExpression()])));
+  }
+  if (staticClosures.length > 0) {
+    applyDecsBody.push(...staticClosures.map(expr => _core.types.expressionStatement(expr)));
+  }
+  path.insertBefore(classAssignments.map(expr => _core.types.expressionStatement(expr)));
+  if (needsDeclaraionForClassBinding) {
+    const classBindingInfo = scopeParent.getBinding(classIdLocal.name);
+    if (!classBindingInfo.constantViolations.length) {
+      path.insertBefore(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(classIdLocal))]));
+    } else {
+      const classOuterBindingDelegateLocal = scopeParent.generateUidIdentifier("t" + classIdLocal.name);
+      const classOuterBindingLocal = classIdLocal;
+      path.replaceWithMultiple([_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(classOuterBindingLocal)), _core.types.variableDeclarator(classOuterBindingDelegateLocal)]), _core.types.blockStatement([_core.types.variableDeclaration("let", [_core.types.variableDeclarator(_core.types.cloneNode(classIdLocal))]), path.node, _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(classOuterBindingDelegateLocal), _core.types.cloneNode(classIdLocal)))]), _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(classOuterBindingLocal), _core.types.cloneNode(classOuterBindingDelegateLocal)))]);
+    }
+  }
+  if (decoratedPrivateMethods.size > 0) {
+    checkPrivateMethodUpdateError(path, decoratedPrivateMethods);
+  }
+  path.scope.crawl();
+  return path;
+}
+function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBrandName, setClassName, superClass, state, version) {
+  let lhs, rhs;
+  const args = [setClassName ? createSetFunctionNameCall(state, setClassName) : _core.types.thisExpression(), classDecorations, elementDecorations];
+  {
+    if (version !== "2023-11") {
+      args.splice(1, 2, elementDecorations, classDecorations);
+    }
+    if (version === "2021-12" || version === "2022-03" && !state.availableHelper("applyDecs2203R")) {
+      lhs = _core.types.arrayPattern([...elementLocals, ...classLocals]);
+      rhs = _core.types.callExpression(state.addHelper(version === "2021-12" ? "applyDecs" : "applyDecs2203"), args);
+      return _core.types.assignmentExpression("=", lhs, rhs);
+    } else if (version === "2022-03") {
+      rhs = _core.types.callExpression(state.addHelper("applyDecs2203R"), args);
+    } else if (version === "2023-01") {
+      if (maybePrivateBrandName) {
+        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
+      }
+      rhs = _core.types.callExpression(state.addHelper("applyDecs2301"), args);
+    } else if (version === "2023-05") {
+      if (maybePrivateBrandName || superClass || classDecorationsFlag.value !== 0) {
+        args.push(classDecorationsFlag);
+      }
+      if (maybePrivateBrandName) {
+        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
+      } else if (superClass) {
+        args.push(_core.types.unaryExpression("void", _core.types.numericLiteral(0)));
+      }
+      if (superClass) args.push(superClass);
+      rhs = _core.types.callExpression(state.addHelper("applyDecs2305"), args);
+    }
+  }
+  if (version === "2023-11") {
+    if (maybePrivateBrandName || superClass || classDecorationsFlag.value !== 0) {
+      args.push(classDecorationsFlag);
+    }
+    if (maybePrivateBrandName) {
+      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
+    } else if (superClass) {
+      args.push(_core.types.unaryExpression("void", _core.types.numericLiteral(0)));
+    }
+    if (superClass) args.push(superClass);
+    rhs = _core.types.callExpression(state.addHelper("applyDecs2311"), args);
+  }
+  if (elementLocals.length > 0) {
+    if (classLocals.length > 0) {
+      lhs = _core.types.objectPattern([_core.types.objectProperty(_core.types.identifier("e"), _core.types.arrayPattern(elementLocals)), _core.types.objectProperty(_core.types.identifier("c"), _core.types.arrayPattern(classLocals))]);
+    } else {
+      lhs = _core.types.arrayPattern(elementLocals);
+      rhs = _core.types.memberExpression(rhs, _core.types.identifier("e"), false, false);
+    }
+  } else {
+    lhs = _core.types.arrayPattern(classLocals);
+    rhs = _core.types.memberExpression(rhs, _core.types.identifier("c"), false, false);
+  }
+  return _core.types.assignmentExpression("=", lhs, rhs);
+}
+function isProtoKey(node) {
+  return node.type === "Identifier" ? node.name === "__proto__" : node.value === "__proto__";
+}
+function isDecorated(node) {
+  return node.decorators && node.decorators.length > 0;
+}
+function shouldTransformElement(node) {
+  switch (node.type) {
+    case "ClassAccessorProperty":
+      return true;
+    case "ClassMethod":
+    case "ClassProperty":
+    case "ClassPrivateMethod":
+    case "ClassPrivateProperty":
+      return isDecorated(node);
+    default:
+      return false;
+  }
+}
+function shouldTransformClass(node) {
+  return isDecorated(node) || node.body.body.some(shouldTransformElement);
+}
+function NamedEvaluationVisitoryFactory(isAnonymous, visitor) {
+  function handleComputedProperty(propertyPath, key, state) {
+    switch (key.type) {
+      case "StringLiteral":
+        return _core.types.stringLiteral(key.value);
+      case "NumericLiteral":
+      case "BigIntLiteral":
+        {
+          const keyValue = key.value + "";
+          propertyPath.get("key").replaceWith(_core.types.stringLiteral(keyValue));
+          return _core.types.stringLiteral(keyValue);
+        }
+      default:
+        {
+          const ref = propertyPath.scope.maybeGenerateMemoised(key);
+          propertyPath.get("key").replaceWith(_core.types.assignmentExpression("=", ref, createToPropertyKeyCall(state, key)));
+          return _core.types.cloneNode(ref);
+        }
+    }
+  }
+  return {
+    VariableDeclarator(path, state) {
+      const id = path.node.id;
+      if (id.type === "Identifier") {
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("init"));
+        if (isAnonymous(initializer)) {
+          const name = id.name;
+          visitor(initializer, state, name);
+        }
+      }
+    },
+    AssignmentExpression(path, state) {
+      const id = path.node.left;
+      if (id.type === "Identifier") {
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("right"));
+        if (isAnonymous(initializer)) {
+          switch (path.node.operator) {
+            case "=":
+            case "&&=":
+            case "||=":
+            case "??=":
+              visitor(initializer, state, id.name);
+          }
+        }
+      }
+    },
+    AssignmentPattern(path, state) {
+      const id = path.node.left;
+      if (id.type === "Identifier") {
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("right"));
+        if (isAnonymous(initializer)) {
+          const name = id.name;
+          visitor(initializer, state, name);
+        }
+      }
+    },
+    ObjectExpression(path, state) {
+      for (const propertyPath of path.get("properties")) {
+        if (!propertyPath.isObjectProperty()) continue;
+        const {
+          node
+        } = propertyPath;
+        const id = node.key;
+        const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(propertyPath.get("value"));
+        if (isAnonymous(initializer)) {
+          if (!node.computed) {
+            if (!isProtoKey(id)) {
+              if (id.type === "Identifier") {
+                visitor(initializer, state, id.name);
+              } else {
+                const className = _core.types.stringLiteral(id.value + "");
+                visitor(initializer, state, className);
+              }
+            }
+          } else {
+            const ref = handleComputedProperty(propertyPath, id, state);
+            visitor(initializer, state, ref);
+          }
+        }
+      }
+    },
+    ClassPrivateProperty(path, state) {
+      const {
+        node
+      } = path;
+      const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("value"));
+      if (isAnonymous(initializer)) {
+        const className = _core.types.stringLiteral("#" + node.key.id.name);
+        visitor(initializer, state, className);
+      }
+    },
+    ClassAccessorProperty(path, state) {
+      const {
+        node
+      } = path;
+      const id = node.key;
+      const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("value"));
+      if (isAnonymous(initializer)) {
+        if (!node.computed) {
+          if (id.type === "Identifier") {
+            visitor(initializer, state, id.name);
+          } else if (id.type === "PrivateName") {
+            const className = _core.types.stringLiteral("#" + id.id.name);
+            visitor(initializer, state, className);
+          } else {
+            const className = _core.types.stringLiteral(id.value + "");
+            visitor(initializer, state, className);
+          }
+        } else {
+          const ref = handleComputedProperty(path, id, state);
+          visitor(initializer, state, ref);
+        }
+      }
+    },
+    ClassProperty(path, state) {
+      const {
+        node
+      } = path;
+      const id = node.key;
+      const initializer = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("value"));
+      if (isAnonymous(initializer)) {
+        if (!node.computed) {
+          if (id.type === "Identifier") {
+            visitor(initializer, state, id.name);
+          } else {
+            const className = _core.types.stringLiteral(id.value + "");
+            visitor(initializer, state, className);
+          }
+        } else {
+          const ref = handleComputedProperty(path, id, state);
+          visitor(initializer, state, ref);
+        }
+      }
+    }
+  };
+}
+function isDecoratedAnonymousClassExpression(path) {
+  return path.isClassExpression({
+    id: null
+  }) && shouldTransformClass(path.node);
+}
+function generateLetUidIdentifier(scope, name) {
+  const id = scope.generateUidIdentifier(name);
+  scope.push({
+    id,
+    kind: "let"
+  });
+  return _core.types.cloneNode(id);
+}
+function _default({
+  assertVersion,
+  assumption
+}, {
+  loose
+}, version, inherits) {
+  var _assumption, _assumption2;
+  {
+    if (version === "2023-11" || version === "2023-05" || version === "2023-01") {
+      assertVersion("^7.21.0");
+    } else if (version === "2021-12") {
+      assertVersion("^7.16.0");
+    } else {
+      assertVersion("^7.19.0");
+    }
+  }
+  const VISITED = new WeakSet();
+  const constantSuper = (_assumption = assumption("constantSuper")) != null ? _assumption : loose;
+  const ignoreFunctionLength = (_assumption2 = assumption("ignoreFunctionLength")) != null ? _assumption2 : loose;
+  const namedEvaluationVisitor = NamedEvaluationVisitoryFactory(isDecoratedAnonymousClassExpression, visitClass);
+  function visitClass(path, state, className) {
+    var _className, _node$id;
+    if (VISITED.has(path)) return;
+    const {
+      node
+    } = path;
+    (_className = className) != null ? _className : className = (_node$id = node.id) == null ? void 0 : _node$id.name;
+    const newPath = transformClass(path, state, constantSuper, ignoreFunctionLength, className, namedEvaluationVisitor, version);
+    if (newPath) {
+      VISITED.add(newPath);
+      return;
+    }
+    VISITED.add(path);
+  }
+  return {
+    name: "proposal-decorators",
+    inherits: inherits,
+    visitor: Object.assign({
+      ExportDefaultDeclaration(path, state) {
+        const {
+          declaration
+        } = path.node;
+        if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && isDecorated(declaration)) {
+          const isAnonymous = !declaration.id;
+          {
+            var _path$splitExportDecl;
+            (_path$splitExportDecl = path.splitExportDeclaration) != null ? _path$splitExportDecl : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+          }
+          const updatedVarDeclarationPath = path.splitExportDeclaration();
+          if (isAnonymous) {
+            visitClass(updatedVarDeclarationPath, state, _core.types.stringLiteral("default"));
+          }
+        }
+      },
+      ExportNamedDeclaration(path) {
+        const {
+          declaration
+        } = path.node;
+        if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && isDecorated(declaration)) {
+          {
+            var _path$splitExportDecl2;
+            (_path$splitExportDecl2 = path.splitExportDeclaration) != null ? _path$splitExportDecl2 : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+          }
+          path.splitExportDeclaration();
+        }
+      },
+      Class(path, state) {
+        visitClass(path, state, undefined);
+      }
+    }, namedEvaluationVisitor)
+  };
+}
+
+//# sourceMappingURL=decorators.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperReplaceSupers","_helperSkipTransparentExpressionWrappers","_fields","_misc","incrementId","id","idx","length","unshift","current","createPrivateUidGeneratorForClass","classPath","currentPrivateId","privateNames","Set","traverse","PrivateName","path","add","node","name","reifiedId","String","fromCharCode","has","t","privateName","identifier","createLazyPrivateUidGeneratorForClass","generator","replaceClassWithVar","className","scope","type","varId","generateUidIdentifierBasedOnNode","classId","rename","get","replaceWith","cloneNode","generateLetUidIdentifier","parent","newClassExpr","classExpression","superClass","body","newPath","sequenceExpression","generateClassProperty","key","value","isStatic","classPrivateProperty","undefined","classProperty","assignIdForAnonymousClass","generateUidIdentifier","addProxyAccessorsFor","element","getterKey","setterKey","targetKey","isComputed","version","thisArg","thisExpression","getterBody","blockStatement","returnStatement","memberExpression","setterBody","expressionStatement","assignmentExpression","getter","setter","classPrivateMethod","classMethod","insertAfter","extractProxyAccessorsFor","template","expression","ast","getComputedKeyLastElement","skipTransparentExprWrappers","isSequenceExpression","expressions","getComputedKeyMemoiser","isConstantExpression","isIdentifier","hasUid","isAssignmentExpression","left","Error","toString","prependExpressionsToComputedKey","fieldPath","push","maybeSequenceExpression","appendExpressionsToComputedKey","completion","scopeParent","maybeAssignment","memoiseComputedKey","generateUid","expressionSequence","completionParent","parentPath","pushContainer","prependExpressionsToFieldInitializer","initializer","unaryExpression","prependExpressionsToStaticBlock","blockPath","unshiftContainer","prependExpressionsToConstructor","constructorPath","isProtoInitCallExpression","protoInitCall","isCallExpression","callee","optimizeSuperCallAndExpressions","protoInitLocal","mergedSuperCall","callExpression","splice","isThisExpression","insertExpressionsAfterSuperCallAndOptimize","CallExpression","exit","isSuper","newNodes","map","expr","isCompletionRecord","skip","ClassMethod","kind","createConstructorFromExpressions","isDerivedClass","super","spreadElement","restElement","createStaticBlockFromExpressions","staticBlock","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","toSortedDecoratorInfo","info","filter","el","generateDecorationList","decorators","decoratorsThis","decsCount","haveOneThis","some","Boolean","decs","i","numericLiteral","haveThis","generateDecorationExprs","decorationInfo","arrayExpression","flag","decoratorsHaveThis","decoratorsArray","privateMethods","extractElementLocalAssignments","localIds","locals","Array","isArray","addCallAccessorsFor","getId","setId","movePrivateAccessor","methodLocalVar","params","block","isClassDecoratableElementPath","staticBlockToIIFE","arrowFunctionExpression","staticBlockToFunctionClosure","functionExpression","fieldInitializerToClosure","exprs","createFunctionExpressionFromPrivateMethod","isGenerator","async","isAsync","createSetFunctionNameCall","state","addHelper","createToPropertyKeyCall","propertyKey","createPrivateBrandCheckClosure","brandName","binaryExpression","usesPrivateField","traverseFast","isPrivateName","_unused","convertToComputedKey","computed","stringLiteral","hasInstancePrivateAccess","containsInstancePrivateAccess","privateNameVisitor","privateNameVisitorFactory","privateNamesMap","stop","Map","set","checkPrivateMethodUpdateError","decoratedPrivateMethods","parentParentPath","buildCodeFrameError","transformClass","constantSuper","ignoreFunctionLength","propertyVisitor","_path$node$id","_classDecorationsId","classDecorators","hasElementDecorators","hasComputedKeysSideEffects","elemDecsUseFnContext","generateClassPrivateUid","classAssignments","memoiseExpression","hint","assignments","localEvaluatedId","staticInitLocal","classIdName","setClassName","usesFunctionContextOrYieldAwait","decorator","isYieldExpression","isAwaitExpression","isMetaProperty","meta","_unused2","instancePrivateNames","elementNode","static","isDecorated","ClassProperty","ClassPrivateProperty","ClassAccessorProperty","_staticInitLocal","_protoInitLocal","newId","newField","keyPath","elementDecoratorInfo","classInitLocal","classIdLocal","decoratorReceiverId","handleDecorators","hasSideEffects","usesFnContext","object","isMemberExpression","_decoratorReceiverId","willExtractSomeElemDecs","needsDeclaraionForClassBinding","classDecorationsFlag","classDecorations","classDecorationsId","computedKeyAssignments","isClassDeclaration","classDecsUsePrivateName","isClassProperty","lastInstancePrivateName","needsInstancePrivateBrandCheck","fieldInitializerExpressions","staticFieldInitializerExpressions","isStaticBlock","hasDecorators","isPrivate","isClassPrivateProperty","isClassMethod","nameExpr","newFieldInitId","newValue","initId","valuePath","args","callId","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","file","refToPreserve","replace","remove","getNextSibling","initExtraId","initExtraCall","elements","lastComputedElement","sortedElementDecoratorInfo","elementDecorations","elementLocals","classLocals","classInitInjected","classInitCall","originalClassPath","originalClass","staticClosures","statics","forEach","staticBlockClosureId","fieldValueClosureId","isClassPrivateMethod","privateMethodDelegateId","p","isRestElement","staticsClass","toExpression","constructorBody","newExpr","newExpression","arguments","maybeGenerateMemoised","applyDecoratorWrapper","applyDecsBody","firstPublicElement","createLocalsAssignment","insertBefore","classBindingInfo","getBinding","constantViolations","variableDeclaration","variableDeclarator","classOuterBindingDelegateLocal","classOuterBindingLocal","replaceWithMultiple","size","crawl","maybePrivateBrandName","lhs","rhs","availableHelper","arrayPattern","objectPattern","objectProperty","isProtoKey","shouldTransformElement","shouldTransformClass","NamedEvaluationVisitoryFactory","isAnonymous","visitor","handleComputedProperty","propertyPath","keyValue","ref","VariableDeclarator","AssignmentExpression","operator","AssignmentPattern","ObjectExpression","isObjectProperty","isDecoratedAnonymousClassExpression","isClassExpression","_default","assertVersion","assumption","loose","inherits","_assumption","_assumption2","VISITED","WeakSet","namedEvaluationVisitor","visitClass","_className","_node$id","Object","assign","ExportDefaultDeclaration","declaration","_path$splitExportDecl","splitExportDeclaration","NodePath","prototype","updatedVarDeclarationPath","ExportNamedDeclaration","_path$splitExportDecl2","Class"],"sources":["../src/decorators.ts"],"sourcesContent":["import type { NodePath, Scope, Visitor } from \"@babel/core\";\nimport { types as t, template } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport {\n  privateNameVisitorFactory,\n  type PrivateNameVisitorState,\n} from \"./fields.ts\";\nimport { memoiseComputedKey } from \"./misc.ts\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\ninterface Options {\n  /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n  loose?: boolean;\n}\n\ntype ClassDecoratableElement =\n  | t.ClassMethod\n  | t.ClassPrivateMethod\n  | t.ClassProperty\n  | t.ClassPrivateProperty\n  | t.ClassAccessorProperty;\n\ntype ClassElement =\n  | ClassDecoratableElement\n  | t.TSDeclareMethod\n  | t.TSIndexSignature\n  | t.StaticBlock;\n\ntype ClassElementCanHaveComputedKeys =\n  | t.ClassMethod\n  | t.ClassProperty\n  | t.ClassAccessorProperty;\n\n// TODO(Babel 8): Only keep 2023-11\nexport type DecoratorVersionKind =\n  | \"2023-11\"\n  | \"2023-05\"\n  | \"2023-01\"\n  | \"2022-03\"\n  | \"2021-12\";\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n  // If index is -1, id needs an additional character, unshift A\n  if (idx === -1) {\n    id.unshift(charCodes.uppercaseA);\n    return;\n  }\n\n  const current = id[idx];\n\n  if (current === charCodes.uppercaseZ) {\n    // if current is Z, skip to a\n    id[idx] = charCodes.lowercaseA;\n  } else if (current === charCodes.lowercaseZ) {\n    // if current is z, reset to A and carry the 1\n    id[idx] = charCodes.uppercaseA;\n    incrementId(id, idx - 1);\n  } else {\n    // else, increment by one\n    id[idx] = current + 1;\n  }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n  classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n  const currentPrivateId: number[] = [];\n  const privateNames = new Set<string>();\n\n  classPath.traverse({\n    PrivateName(path) {\n      privateNames.add(path.node.id.name);\n    },\n  });\n\n  return (): t.PrivateName => {\n    let reifiedId;\n    do {\n      incrementId(currentPrivateId);\n      reifiedId = String.fromCharCode(...currentPrivateId);\n    } while (privateNames.has(reifiedId));\n\n    return t.privateName(t.identifier(reifiedId));\n  };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n  classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n  let generator: () => t.PrivateName;\n\n  return (): t.PrivateName => {\n    if (!generator) {\n      generator = createPrivateUidGeneratorForClass(classPath);\n    }\n\n    return generator();\n  };\n}\n\n/**\n * Takes a class definition and the desired class name if anonymous and\n * replaces it with an equivalent class declaration (path) which is then\n * assigned to a local variable (id). This allows us to reassign the local variable with the\n * decorated version of the class. The class definition retains its original\n * name so that `toString` is not affected, other references to the class\n * are renamed instead.\n */\nfunction replaceClassWithVar(\n  path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n): {\n  id: t.Identifier;\n  path: NodePath<t.ClassDeclaration | t.ClassExpression>;\n} {\n  const id = path.node.id;\n  const scope = path.scope;\n  if (path.type === \"ClassDeclaration\") {\n    const className = id.name;\n    const varId = scope.generateUidIdentifierBasedOnNode(id);\n    const classId = t.identifier(className);\n\n    scope.rename(className, varId.name);\n\n    path.get(\"id\").replaceWith(classId);\n\n    return { id: t.cloneNode(varId), path };\n  } else {\n    let varId: t.Identifier;\n\n    if (id) {\n      className = id.name;\n      varId = generateLetUidIdentifier(scope.parent, className);\n      scope.rename(className, varId.name);\n    } else {\n      varId = generateLetUidIdentifier(\n        scope.parent,\n        typeof className === \"string\" ? className : \"decorated_class\",\n      );\n    }\n\n    const newClassExpr = t.classExpression(\n      typeof className === \"string\" ? t.identifier(className) : null,\n      path.node.superClass,\n      path.node.body,\n    );\n\n    const [newPath] = path.replaceWith(\n      t.sequenceExpression([newClassExpr, varId]),\n    );\n\n    return {\n      id: t.cloneNode(varId),\n      path: newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n    };\n  }\n}\n\nfunction generateClassProperty(\n  key: t.PrivateName | t.Identifier,\n  value: t.Expression | undefined,\n  isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n  if (key.type === \"PrivateName\") {\n    return t.classPrivateProperty(key, value, undefined, isStatic);\n  } else {\n    return t.classProperty(key, value, undefined, undefined, isStatic);\n  }\n}\n\nfunction assignIdForAnonymousClass(\n  path: NodePath<t.Class>,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n) {\n  if (!path.node.id) {\n    path.node.id =\n      typeof className === \"string\"\n        ? t.identifier(className)\n        : path.scope.generateUidIdentifier(\"Class\");\n  }\n}\n\nfunction addProxyAccessorsFor(\n  className: t.Identifier,\n  element: NodePath<ClassDecoratableElement>,\n  getterKey: t.PrivateName | t.Expression,\n  setterKey: t.PrivateName | t.Expression,\n  targetKey: t.PrivateName,\n  isComputed: boolean,\n  isStatic: boolean,\n  version: DecoratorVersionKind,\n): void {\n  const thisArg =\n    (version === \"2023-11\" ||\n      (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n    isStatic\n      ? className\n      : t.thisExpression();\n\n  const getterBody = t.blockStatement([\n    t.returnStatement(\n      t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n    ),\n  ]);\n\n  const setterBody = t.blockStatement([\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n        t.identifier(\"v\"),\n      ),\n    ),\n  ]);\n\n  let getter: t.ClassMethod | t.ClassPrivateMethod,\n    setter: t.ClassMethod | t.ClassPrivateMethod;\n\n  if (getterKey.type === \"PrivateName\") {\n    getter = t.classPrivateMethod(\"get\", getterKey, [], getterBody, isStatic);\n    setter = t.classPrivateMethod(\n      \"set\",\n      setterKey as t.PrivateName,\n      [t.identifier(\"v\")],\n      setterBody,\n      isStatic,\n    );\n  } else {\n    getter = t.classMethod(\n      \"get\",\n      getterKey,\n      [],\n      getterBody,\n      isComputed,\n      isStatic,\n    );\n    setter = t.classMethod(\n      \"set\",\n      setterKey as t.Expression,\n      [t.identifier(\"v\")],\n      setterBody,\n      isComputed,\n      isStatic,\n    );\n  }\n\n  element.insertAfter(setter);\n  element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n  targetKey: t.PrivateName,\n  version: DecoratorVersionKind,\n): (t.FunctionExpression | t.ArrowFunctionExpression)[] {\n  if (version !== \"2023-11\" && version !== \"2023-05\" && version !== \"2023-01\") {\n    return [\n      template.expression.ast`\n        function () {\n          return this.${t.cloneNode(targetKey)};\n        }\n      ` as t.FunctionExpression,\n      template.expression.ast`\n        function (value) {\n          this.${t.cloneNode(targetKey)} = value;\n        }\n      ` as t.FunctionExpression,\n    ];\n  }\n  return [\n    template.expression.ast`\n      o => o.${t.cloneNode(targetKey)}\n    ` as t.ArrowFunctionExpression,\n    template.expression.ast`\n      (o, v) => o.${t.cloneNode(targetKey)} = v\n    ` as t.ArrowFunctionExpression,\n  ];\n}\n\n/**\n * Get the last element for the given computed key path.\n *\n * This function unwraps transparent wrappers and gets the last item when\n * the key is a SequenceExpression.\n *\n * @param {NodePath<t.Expression>} path The key of a computed class element\n * @returns {NodePath<t.Expression>} The simple completion result\n */\nfunction getComputedKeyLastElement(\n  path: NodePath<t.Expression>,\n): NodePath<t.Expression> {\n  path = skipTransparentExprWrappers(path);\n  if (path.isSequenceExpression()) {\n    const expressions = path.get(\"expressions\");\n    return getComputedKeyLastElement(expressions[expressions.length - 1]);\n  }\n  return path;\n}\n\n/**\n * Get a memoiser of the computed key path.\n *\n * This function does not mutate AST. If the computed key is not a constant\n * expression, this function must be called after the key has been memoised.\n *\n * @param {NodePath<t.Expression>} path The key of a computed class element.\n * @returns {t.Expression} A clone of key if key is a constant expression,\n * otherwise a memoiser identifier.\n */\nfunction getComputedKeyMemoiser(path: NodePath<t.Expression>): t.Expression {\n  const element = getComputedKeyLastElement(path);\n  if (element.isConstantExpression()) {\n    return t.cloneNode(path.node);\n  } else if (element.isIdentifier() && path.scope.hasUid(element.node.name)) {\n    return t.cloneNode(path.node);\n  } else if (\n    element.isAssignmentExpression() &&\n    element.get(\"left\").isIdentifier()\n  ) {\n    return t.cloneNode(element.node.left as t.Identifier);\n  } else {\n    throw new Error(\n      `Internal Error: the computed key ${path.toString()} has not yet been memoised.`,\n    );\n  }\n}\n\n/**\n * Prepend expressions to the computed key of the given field path.\n *\n * If the computed key is a sequence expression, this function will unwrap\n * the sequence expression for optimal output size.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction prependExpressionsToComputedKey(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n  >,\n) {\n  const key = fieldPath.get(\"key\") as NodePath<t.Expression>;\n  if (key.isSequenceExpression()) {\n    expressions.push(...key.node.expressions);\n  } else {\n    expressions.push(key.node);\n  }\n  key.replaceWith(maybeSequenceExpression(expressions));\n}\n\n/**\n * Append expressions to the computed key of the given field path.\n *\n * If the computed key is a constant expression or uid reference, it\n * will prepend expressions before the comptued key. Otherwise it will\n * memoise the computed key to preserve its completion result.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction appendExpressionsToComputedKey(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n  >,\n) {\n  const key = fieldPath.get(\"key\") as NodePath<t.Expression>;\n  const completion = getComputedKeyLastElement(key);\n  if (completion.isConstantExpression()) {\n    prependExpressionsToComputedKey(expressions, fieldPath);\n  } else {\n    const scopeParent = key.scope.parent;\n    const maybeAssignment = memoiseComputedKey(\n      completion.node,\n      scopeParent,\n      scopeParent.generateUid(\"computedKey\"),\n    );\n    if (!maybeAssignment) {\n      // If the memoiseComputedKey returns undefined, the key is already a uid reference,\n      // treat it as a constant expression and prepend expressions before it\n      prependExpressionsToComputedKey(expressions, fieldPath);\n    } else {\n      const expressionSequence = [\n        ...expressions,\n        // preserve the completion result\n        t.cloneNode(maybeAssignment.left),\n      ];\n      const completionParent = completion.parentPath;\n      if (completionParent.isSequenceExpression()) {\n        completionParent.pushContainer(\"expressions\", expressionSequence);\n      } else {\n        completion.replaceWith(\n          maybeSequenceExpression([\n            t.cloneNode(maybeAssignment),\n            ...expressionSequence,\n          ]),\n        );\n      }\n    }\n  }\n}\n\n/**\n * Prepend expressions to the field initializer. If the initializer is not defined,\n * this function will wrap the last expression within a `void` unary expression.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction prependExpressionsToFieldInitializer(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n  >,\n) {\n  const initializer = fieldPath.get(\"value\");\n  if (initializer.node) {\n    expressions.push(initializer.node);\n  } else if (expressions.length > 0) {\n    expressions[expressions.length - 1] = t.unaryExpression(\n      \"void\",\n      expressions[expressions.length - 1],\n    );\n  }\n  initializer.replaceWith(maybeSequenceExpression(expressions));\n}\n\nfunction prependExpressionsToStaticBlock(\n  expressions: t.Expression[],\n  blockPath: NodePath<t.StaticBlock>,\n) {\n  blockPath.unshiftContainer(\n    \"body\",\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  );\n}\n\nfunction prependExpressionsToConstructor(\n  expressions: t.Expression[],\n  constructorPath: NodePath<t.ClassMethod>,\n) {\n  constructorPath.node.body.body.unshift(\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  );\n}\n\nfunction isProtoInitCallExpression(\n  expression: t.Expression,\n  protoInitCall: t.Identifier,\n) {\n  return (\n    t.isCallExpression(expression) &&\n    t.isIdentifier(expression.callee, { name: protoInitCall.name })\n  );\n}\n\n/**\n * Optimize super call and its following expressions\n *\n * @param {t.Expression[]} expressions Mutated by this function. The first element must by a super call\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns optimized expression\n */\nfunction optimizeSuperCallAndExpressions(\n  expressions: t.Expression[],\n  protoInitLocal: t.Identifier,\n) {\n  if (protoInitLocal) {\n    if (\n      expressions.length >= 2 &&\n      isProtoInitCallExpression(expressions[1], protoInitLocal)\n    ) {\n      // Merge `super(), protoInit(this)` into `protoInit(super())`\n      const mergedSuperCall = t.callExpression(t.cloneNode(protoInitLocal), [\n        expressions[0],\n      ]);\n      expressions.splice(0, 2, mergedSuperCall);\n    }\n    // Merge `protoInit(super()), this` into `protoInit(super())`\n    if (\n      expressions.length >= 2 &&\n      t.isThisExpression(expressions[expressions.length - 1]) &&\n      isProtoInitCallExpression(\n        expressions[expressions.length - 2],\n        protoInitLocal,\n      )\n    ) {\n      expressions.splice(expressions.length - 1, 1);\n    }\n  }\n  return maybeSequenceExpression(expressions);\n}\n\n/**\n * Insert expressions immediately after super() and optimize the output if possible.\n * This function will preserve the completion result using the trailing this expression.\n *\n * @param {t.Expression[]} expressions\n * @param {NodePath<t.ClassMethod>} constructorPath\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns\n */\nfunction insertExpressionsAfterSuperCallAndOptimize(\n  expressions: t.Expression[],\n  constructorPath: NodePath<t.ClassMethod>,\n  protoInitLocal: t.Identifier,\n) {\n  constructorPath.traverse({\n    CallExpression: {\n      exit(path) {\n        if (!path.get(\"callee\").isSuper()) return;\n        const newNodes = [\n          path.node,\n          ...expressions.map(expr => t.cloneNode(expr)),\n        ];\n        // preserve completion result if super() is in an RHS or a return statement\n        if (path.isCompletionRecord()) {\n          newNodes.push(t.thisExpression());\n        }\n        path.replaceWith(\n          optimizeSuperCallAndExpressions(newNodes, protoInitLocal),\n        );\n\n        path.skip();\n      },\n    },\n    ClassMethod(path) {\n      if (path.node.kind === \"constructor\") {\n        path.skip();\n      }\n    },\n  });\n}\n\n/**\n * Build a class constructor node from the given expressions. If the class is\n * derived, the constructor will call super() first to ensure that `this`\n * in the expressions work as expected.\n *\n * @param {t.Expression[]} expressions\n * @param {boolean} isDerivedClass\n * @returns The class constructor node\n */\nfunction createConstructorFromExpressions(\n  expressions: t.Expression[],\n  isDerivedClass: boolean,\n) {\n  const body: t.Statement[] = [\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  ];\n  if (isDerivedClass) {\n    body.unshift(\n      t.expressionStatement(\n        t.callExpression(t.super(), [t.spreadElement(t.identifier(\"args\"))]),\n      ),\n    );\n  }\n  return t.classMethod(\n    \"constructor\",\n    t.identifier(\"constructor\"),\n    isDerivedClass ? [t.restElement(t.identifier(\"args\"))] : [],\n    t.blockStatement(body),\n  );\n}\n\nfunction createStaticBlockFromExpressions(expressions: t.Expression[]) {\n  return t.staticBlock([\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  ]);\n}\n\n// 3 bits reserved to this (0-7)\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC_OLD_VERSION = 5; // Before 2023-05\nconst STATIC = 8; // 1 << 3\nconst DECORATORS_HAVE_THIS = 16; // 1 << 4\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n  switch (element.node.type) {\n    case \"ClassProperty\":\n    case \"ClassPrivateProperty\":\n      return FIELD;\n    case \"ClassAccessorProperty\":\n      return ACCESSOR;\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      if (element.node.kind === \"get\") {\n        return GETTER;\n      } else if (element.node.kind === \"set\") {\n        return SETTER;\n      } else {\n        return METHOD;\n      }\n  }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n  // An array of applied decorators or a memoised identifier\n  decoratorsArray: t.Identifier | t.ArrayExpression | t.Expression;\n  decoratorsHaveThis: boolean;\n\n  // The kind of the decorated value, matches the kind value passed to applyDecs\n  kind: number;\n\n  // whether or not the field is static\n  isStatic: boolean;\n\n  // The name of the decorator\n  name: t.StringLiteral | t.Expression;\n\n  privateMethods:\n    | (t.FunctionExpression | t.ArrowFunctionExpression)[]\n    | undefined;\n\n  // The names of local variables that will be used/returned from the decoration\n  locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n/**\n * Sort decoration info in the application order:\n * - static non-fields\n * - instance non-fields\n * - static fields\n * - instance fields\n *\n * @param {DecoratorInfo[]} info\n * @returns {DecoratorInfo[]} Sorted decoration info\n */\nfunction toSortedDecoratorInfo(info: DecoratorInfo[]): DecoratorInfo[] {\n  return [\n    ...info.filter(\n      el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n    ),\n    ...info.filter(\n      el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n    ),\n    ...info.filter(el => el.isStatic && el.kind === FIELD),\n    ...info.filter(el => !el.isStatic && el.kind === FIELD),\n  ];\n}\n\ntype GenerateDecorationListResult = {\n  // The zipped decorators array that will be passed to generateDecorationExprs\n  decs: t.Expression[];\n  // Whether there are non-empty decorator this values\n  haveThis: boolean;\n};\n/**\n * Zip decorators and decorator this values into an array\n *\n * @param {t.Decorator[]} decorators\n * @param {((t.Expression | undefined)[])} decoratorsThis decorator this values\n * @param {DecoratorVersionKind} version\n * @returns {GenerateDecorationListResult}\n */\nfunction generateDecorationList(\n  decorators: t.Decorator[],\n  decoratorsThis: (t.Expression | undefined)[],\n  version: DecoratorVersionKind,\n): GenerateDecorationListResult {\n  const decsCount = decorators.length;\n  const haveOneThis = decoratorsThis.some(Boolean);\n  const decs: t.Expression[] = [];\n  for (let i = 0; i < decsCount; i++) {\n    if (\n      (version === \"2023-11\" ||\n        (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n      haveOneThis\n    ) {\n      decs.push(\n        decoratorsThis[i] || t.unaryExpression(\"void\", t.numericLiteral(0)),\n      );\n    }\n    decs.push(decorators[i].expression);\n  }\n\n  return { haveThis: haveOneThis, decs };\n}\n\nfunction generateDecorationExprs(\n  decorationInfo: DecoratorInfo[],\n  version: DecoratorVersionKind,\n): t.ArrayExpression {\n  return t.arrayExpression(\n    decorationInfo.map(el => {\n      let flag = el.kind;\n      if (el.isStatic) {\n        flag +=\n          version === \"2023-11\" ||\n          (!process.env.BABEL_8_BREAKING && version === \"2023-05\")\n            ? STATIC\n            : STATIC_OLD_VERSION;\n      }\n      if (el.decoratorsHaveThis) flag += DECORATORS_HAVE_THIS;\n\n      return t.arrayExpression([\n        el.decoratorsArray,\n        t.numericLiteral(flag),\n        el.name,\n        ...(el.privateMethods || []),\n      ]);\n    }),\n  );\n}\n\nfunction extractElementLocalAssignments(decorationInfo: DecoratorInfo[]) {\n  const localIds: t.Identifier[] = [];\n\n  for (const el of decorationInfo) {\n    const { locals } = el;\n\n    if (Array.isArray(locals)) {\n      localIds.push(...locals);\n    } else if (locals !== undefined) {\n      localIds.push(locals);\n    }\n  }\n\n  return localIds;\n}\n\nfunction addCallAccessorsFor(\n  version: DecoratorVersionKind,\n  element: NodePath,\n  key: t.PrivateName,\n  getId: t.Identifier,\n  setId: t.Identifier,\n  isStatic: boolean,\n) {\n  element.insertAfter(\n    t.classPrivateMethod(\n      \"get\",\n      t.cloneNode(key),\n      [],\n      t.blockStatement([\n        t.returnStatement(\n          t.callExpression(\n            t.cloneNode(getId),\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()],\n          ),\n        ),\n      ]),\n      isStatic,\n    ),\n  );\n\n  element.insertAfter(\n    t.classPrivateMethod(\n      \"set\",\n      t.cloneNode(key),\n      [t.identifier(\"v\")],\n      t.blockStatement([\n        t.expressionStatement(\n          t.callExpression(\n            t.cloneNode(setId),\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? [t.identifier(\"v\")]\n              : [t.thisExpression(), t.identifier(\"v\")],\n          ),\n        ),\n      ]),\n      isStatic,\n    ),\n  );\n}\n\nfunction movePrivateAccessor(\n  element: NodePath<t.ClassPrivateMethod>,\n  key: t.PrivateName,\n  methodLocalVar: t.Identifier,\n  isStatic: boolean,\n) {\n  let params: (t.Identifier | t.RestElement)[];\n  let block: t.Statement[];\n\n  if (element.node.kind === \"set\") {\n    params = [t.identifier(\"v\")];\n    block = [\n      t.expressionStatement(\n        t.callExpression(methodLocalVar, [\n          t.thisExpression(),\n          t.identifier(\"v\"),\n        ]),\n      ),\n    ];\n  } else {\n    params = [];\n    block = [\n      t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n    ];\n  }\n\n  element.replaceWith(\n    t.classPrivateMethod(\n      element.node.kind,\n      t.cloneNode(key),\n      params,\n      t.blockStatement(block),\n      isStatic,\n    ),\n  );\n}\n\nfunction isClassDecoratableElementPath(\n  path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n  const { type } = path;\n\n  return (\n    type !== \"TSDeclareMethod\" &&\n    type !== \"TSIndexSignature\" &&\n    type !== \"StaticBlock\"\n  );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n  return t.callExpression(\n    t.arrowFunctionExpression([], t.blockStatement(block.body)),\n    [],\n  );\n}\n\nfunction staticBlockToFunctionClosure(block: t.StaticBlock) {\n  return t.functionExpression(null, [], t.blockStatement(block.body));\n}\n\nfunction fieldInitializerToClosure(value: t.Expression) {\n  return t.functionExpression(\n    null,\n    [],\n    t.blockStatement([t.returnStatement(value)]),\n  );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n  if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n  if (exprs.length === 1) return exprs[0];\n  return t.sequenceExpression(exprs);\n}\n\n/**\n * Create FunctionExpression from a ClassPrivateMethod.\n * The returned FunctionExpression node takes ownership of the private method's body and params.\n *\n * @param {t.ClassPrivateMethod} node\n * @returns\n */\nfunction createFunctionExpressionFromPrivateMethod(node: t.ClassPrivateMethod) {\n  const { params, body, generator: isGenerator, async: isAsync } = node;\n  return t.functionExpression(\n    undefined,\n    // @ts-expect-error todo: Improve typings: TSParameterProperty is only allowed in constructor\n    params,\n    body,\n    isGenerator,\n    isAsync,\n  );\n}\n\nfunction createSetFunctionNameCall(\n  state: PluginPass,\n  className: t.Identifier | t.StringLiteral,\n) {\n  return t.callExpression(state.addHelper(\"setFunctionName\"), [\n    t.thisExpression(),\n    className,\n  ]);\n}\n\nfunction createToPropertyKeyCall(state: PluginPass, propertyKey: t.Expression) {\n  return t.callExpression(state.addHelper(\"toPropertyKey\"), [propertyKey]);\n}\n\nfunction createPrivateBrandCheckClosure(brandName: t.PrivateName) {\n  return t.arrowFunctionExpression(\n    [t.identifier(\"_\")],\n    t.binaryExpression(\"in\", t.cloneNode(brandName), t.identifier(\"_\")),\n  );\n}\n\nfunction usesPrivateField(expression: t.Node) {\n  try {\n    t.traverseFast(expression, node => {\n      if (t.isPrivateName(node)) {\n        // TODO: Add early return support to t.traverseFast\n        // eslint-disable-next-line @typescript-eslint/only-throw-error\n        throw null;\n      }\n    });\n    return false;\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Convert a non-computed class element to its equivalent computed form.\n *\n * This function is to provide a decorator evaluation storage from non-computed\n * class elements.\n *\n * @param {(NodePath<t.ClassProperty | t.ClassMethod>)} path A non-computed class property or method\n */\nfunction convertToComputedKey(path: NodePath<t.ClassProperty | t.ClassMethod>) {\n  const { node } = path;\n  node.computed = true;\n  if (t.isIdentifier(node.key)) {\n    node.key = t.stringLiteral(node.key.name);\n  }\n}\n\nfunction hasInstancePrivateAccess(path: NodePath, privateNames: string[]) {\n  let containsInstancePrivateAccess = false;\n  if (privateNames.length > 0) {\n    const privateNameVisitor = privateNameVisitorFactory<\n      PrivateNameVisitorState<null>,\n      null\n    >({\n      PrivateName(path, state) {\n        if (state.privateNamesMap.has(path.node.id.name)) {\n          containsInstancePrivateAccess = true;\n          path.stop();\n        }\n      },\n    });\n    const privateNamesMap = new Map<string, null>();\n    for (const name of privateNames) {\n      privateNamesMap.set(name, null);\n    }\n    path.traverse(privateNameVisitor, {\n      privateNamesMap: privateNamesMap,\n    });\n  }\n  return containsInstancePrivateAccess;\n}\n\nfunction checkPrivateMethodUpdateError(\n  path: NodePath<t.Class>,\n  decoratedPrivateMethods: Set<string>,\n) {\n  const privateNameVisitor = privateNameVisitorFactory<\n    PrivateNameVisitorState<null>,\n    null\n  >({\n    PrivateName(path, state) {\n      if (!state.privateNamesMap.has(path.node.id.name)) return;\n\n      const parentPath = path.parentPath;\n      const parentParentPath = parentPath.parentPath;\n\n      if (\n        // this.bar().#x = 123;\n        (parentParentPath.node.type === \"AssignmentExpression\" &&\n          parentParentPath.node.left === parentPath.node) ||\n        // this.#x++;\n        parentParentPath.node.type === \"UpdateExpression\" ||\n        // ([...this.#x] = foo);\n        parentParentPath.node.type === \"RestElement\" ||\n        // ([this.#x] = foo);\n        parentParentPath.node.type === \"ArrayPattern\" ||\n        // ({ a: this.#x } = bar);\n        (parentParentPath.node.type === \"ObjectProperty\" &&\n          parentParentPath.node.value === parentPath.node &&\n          parentParentPath.parentPath.type === \"ObjectPattern\") ||\n        // for (this.#x of []);\n        (parentParentPath.node.type === \"ForOfStatement\" &&\n          parentParentPath.node.left === parentPath.node)\n      ) {\n        throw path.buildCodeFrameError(\n          `Decorated private methods are read-only, but \"#${path.node.id.name}\" is updated via this expression.`,\n        );\n      }\n    },\n  });\n  const privateNamesMap = new Map<string, null>();\n  for (const name of decoratedPrivateMethods) {\n    privateNamesMap.set(name, null);\n  }\n  path.traverse(privateNameVisitor, {\n    privateNamesMap: privateNamesMap,\n  });\n}\n\n/**\n * Apply decorator and accessor transform\n * @param path The class path.\n * @param state The plugin pass.\n * @param constantSuper The constantSuper compiler assumption.\n * @param ignoreFunctionLength The ignoreFunctionLength compiler assumption.\n * @param className The class name.\n * - If className is a `string`, it will be a valid identifier name that can safely serve as a class id\n * - If className is an Identifier, it is the reference to the name derived from NamedEvaluation\n * - If className is a StringLiteral, it is derived from NamedEvaluation on literal computed keys\n * @param propertyVisitor The visitor that should be applied on property prior to the transform.\n * @param version The decorator version.\n * @returns The transformed class path or undefined if there are no decorators.\n */\nfunction transformClass(\n  path: NodePath<t.Class>,\n  state: PluginPass,\n  constantSuper: boolean,\n  ignoreFunctionLength: boolean,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n  propertyVisitor: Visitor<PluginPass>,\n  version: DecoratorVersionKind,\n): NodePath | undefined {\n  const body = path.get(\"body.body\");\n\n  const classDecorators = path.node.decorators;\n  let hasElementDecorators = false;\n  let hasComputedKeysSideEffects = false;\n  let elemDecsUseFnContext = false;\n\n  const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n  const classAssignments: t.AssignmentExpression[] = [];\n  const scopeParent: Scope = path.scope.parent;\n  const memoiseExpression = (\n    expression: t.Expression,\n    hint: string,\n    assignments: t.AssignmentExpression[],\n  ) => {\n    const localEvaluatedId = generateLetUidIdentifier(scopeParent, hint);\n    assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n    return t.cloneNode(localEvaluatedId);\n  };\n\n  let protoInitLocal: t.Identifier;\n  let staticInitLocal: t.Identifier;\n  const classIdName = path.node.id?.name;\n  // Whether to generate a setFunctionName call to preserve the class name\n  const setClassName = typeof className === \"object\" ? className : undefined;\n  // Check if the decorator does not reference function-specific\n  // context or the given identifier name or contains yield or await expression.\n  // `true` means \"maybe\" and `false` means \"no\".\n  const usesFunctionContextOrYieldAwait = (decorator: t.Decorator) => {\n    try {\n      t.traverseFast(decorator, node => {\n        if (\n          t.isThisExpression(node) ||\n          t.isSuper(node) ||\n          t.isYieldExpression(node) ||\n          t.isAwaitExpression(node) ||\n          t.isIdentifier(node, { name: \"arguments\" }) ||\n          (classIdName && t.isIdentifier(node, { name: classIdName })) ||\n          (t.isMetaProperty(node) && node.meta.name !== \"import\")\n        ) {\n          // TODO: Add early return support to t.traverseFast\n          // eslint-disable-next-line @typescript-eslint/only-throw-error\n          throw null;\n        }\n      });\n      return false;\n    } catch {\n      return true;\n    }\n  };\n\n  const instancePrivateNames: string[] = [];\n  // Iterate over the class to see if we need to decorate it, and also to\n  // transform simple auto accessors which are not decorated, and handle inferred\n  // class name when the initializer of the class field is a class expression\n  for (const element of body) {\n    if (!isClassDecoratableElementPath(element)) {\n      continue;\n    }\n\n    const elementNode = element.node;\n\n    if (!elementNode.static && t.isPrivateName(elementNode.key)) {\n      instancePrivateNames.push(elementNode.key.id.name);\n    }\n\n    if (isDecorated(elementNode)) {\n      switch (elementNode.type) {\n        case \"ClassProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassProperty should be callable. Improve typings.\n          propertyVisitor.ClassProperty(\n            element as NodePath<t.ClassProperty>,\n            state,\n          );\n          break;\n        case \"ClassPrivateProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassPrivateProperty should be callable. Improve typings.\n          propertyVisitor.ClassPrivateProperty(\n            element as NodePath<t.ClassPrivateProperty>,\n            state,\n          );\n          break;\n        case \"ClassAccessorProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n          propertyVisitor.ClassAccessorProperty(\n            element as NodePath<t.ClassAccessorProperty>,\n            state,\n          );\n          if (version === \"2023-11\") {\n            break;\n          }\n        /* fallthrough */\n        default:\n          if (elementNode.static) {\n            staticInitLocal ??= generateLetUidIdentifier(\n              scopeParent,\n              \"initStatic\",\n            );\n          } else {\n            protoInitLocal ??= generateLetUidIdentifier(\n              scopeParent,\n              \"initProto\",\n            );\n          }\n          break;\n      }\n      hasElementDecorators = true;\n      elemDecsUseFnContext ||= elementNode.decorators.some(\n        usesFunctionContextOrYieldAwait,\n      );\n    } else if (elementNode.type === \"ClassAccessorProperty\") {\n      // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n      propertyVisitor.ClassAccessorProperty(\n        element as NodePath<t.ClassAccessorProperty>,\n        state,\n      );\n      const { key, value, static: isStatic, computed } = elementNode;\n\n      const newId = generateClassPrivateUid();\n      const newField = generateClassProperty(newId, value, isStatic);\n      const keyPath = element.get(\"key\");\n      const [newPath] = element.replaceWith(newField);\n\n      let getterKey, setterKey;\n      if (computed && !keyPath.isConstantExpression()) {\n        getterKey = memoiseComputedKey(\n          createToPropertyKeyCall(state, key as t.Expression),\n          scopeParent,\n          scopeParent.generateUid(\"computedKey\"),\n        )!;\n        setterKey = t.cloneNode(getterKey.left as t.Identifier);\n      } else {\n        getterKey = t.cloneNode(key);\n        setterKey = t.cloneNode(key);\n      }\n\n      assignIdForAnonymousClass(path, className);\n\n      addProxyAccessorsFor(\n        path.node.id,\n        newPath,\n        getterKey,\n        setterKey,\n        newId,\n        computed,\n        isStatic,\n        version,\n      );\n    }\n\n    if (\"computed\" in element.node && element.node.computed) {\n      hasComputedKeysSideEffects ||= !scopeParent.isStatic(element.node.key);\n    }\n  }\n\n  if (!classDecorators && !hasElementDecorators) {\n    if (!path.node.id && typeof className === \"string\") {\n      path.node.id = t.identifier(className);\n    }\n    if (setClassName) {\n      path.node.body.body.unshift(\n        createStaticBlockFromExpressions([\n          createSetFunctionNameCall(state, setClassName),\n        ]),\n      );\n    }\n    // If nothing is decorated and no assignments inserted, return\n    return;\n  }\n\n  const elementDecoratorInfo: DecoratorInfo[] = [];\n\n  let constructorPath: NodePath<t.ClassMethod> | undefined;\n  const decoratedPrivateMethods = new Set<string>();\n\n  let classInitLocal: t.Identifier, classIdLocal: t.Identifier;\n  let decoratorReceiverId: t.Identifier | null = null;\n\n  // Memoise the this value `a.b` of decorator member expressions `@a.b.dec`,\n  type HandleDecoratorsResult = {\n    // whether the whole decorator list requires memoisation\n    hasSideEffects: boolean;\n    usesFnContext: boolean;\n    // the this value of each decorator if applicable\n    decoratorsThis: (t.Expression | undefined)[];\n  };\n  function handleDecorators(decorators: t.Decorator[]): HandleDecoratorsResult {\n    let hasSideEffects = false;\n    let usesFnContext = false;\n    const decoratorsThis: (t.Expression | null)[] = [];\n    for (const decorator of decorators) {\n      const { expression } = decorator;\n      let object;\n      if (\n        (version === \"2023-11\" ||\n          (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n        t.isMemberExpression(expression)\n      ) {\n        if (t.isSuper(expression.object)) {\n          object = t.thisExpression();\n        } else if (scopeParent.isStatic(expression.object)) {\n          object = t.cloneNode(expression.object);\n        } else {\n          decoratorReceiverId ??= generateLetUidIdentifier(scopeParent, \"obj\");\n          object = t.assignmentExpression(\n            \"=\",\n            t.cloneNode(decoratorReceiverId),\n            expression.object,\n          );\n          expression.object = t.cloneNode(decoratorReceiverId);\n        }\n      }\n      decoratorsThis.push(object);\n      hasSideEffects ||= !scopeParent.isStatic(expression);\n      usesFnContext ||= usesFunctionContextOrYieldAwait(decorator);\n    }\n    return { hasSideEffects, usesFnContext, decoratorsThis };\n  }\n\n  const willExtractSomeElemDecs =\n    hasComputedKeysSideEffects ||\n    (process.env.BABEL_8_BREAKING\n      ? elemDecsUseFnContext\n      : elemDecsUseFnContext || version !== \"2023-11\");\n\n  let needsDeclaraionForClassBinding = false;\n  let classDecorationsFlag = 0;\n  let classDecorations: t.Expression[] = [];\n  let classDecorationsId: t.Identifier;\n  let computedKeyAssignments: t.AssignmentExpression[] = [];\n  if (classDecorators) {\n    classInitLocal = generateLetUidIdentifier(scopeParent, \"initClass\");\n    needsDeclaraionForClassBinding = path.isClassDeclaration();\n    ({ id: classIdLocal, path } = replaceClassWithVar(path, className));\n\n    path.node.decorators = null;\n\n    const classDecsUsePrivateName = classDecorators.some(usesPrivateField);\n    const { hasSideEffects, usesFnContext, decoratorsThis } =\n      handleDecorators(classDecorators);\n\n    const { haveThis, decs } = generateDecorationList(\n      classDecorators,\n      decoratorsThis,\n      version,\n    );\n    classDecorationsFlag = haveThis ? 1 : 0;\n    classDecorations = decs;\n\n    if (\n      usesFnContext ||\n      (hasSideEffects && willExtractSomeElemDecs) ||\n      classDecsUsePrivateName\n    ) {\n      classDecorationsId = memoiseExpression(\n        t.arrayExpression(classDecorations),\n        \"classDecs\",\n        classAssignments,\n      );\n    }\n\n    if (!hasElementDecorators) {\n      // Sync body paths as non-decorated computed accessors have been transpiled\n      // to getter-setter pairs.\n      for (const element of path.get(\"body.body\")) {\n        const { node } = element;\n        const isComputed = \"computed\" in node && node.computed;\n        if (isComputed) {\n          if (element.isClassProperty({ static: true })) {\n            if (!element.get(\"key\").isConstantExpression()) {\n              const key = (node as t.ClassProperty).key;\n              const maybeAssignment = memoiseComputedKey(\n                key,\n                scopeParent,\n                scopeParent.generateUid(\"computedKey\"),\n              );\n              if (maybeAssignment != null) {\n                // If it is a static computed field within a decorated class, we move the computed key\n                // into `computedKeyAssignments` which will be then moved into the non-static class,\n                // to ensure that the evaluation order and private environment are correct\n                node.key = t.cloneNode(maybeAssignment.left);\n                computedKeyAssignments.push(maybeAssignment);\n              }\n            }\n          } else if (computedKeyAssignments.length > 0) {\n            prependExpressionsToComputedKey(\n              computedKeyAssignments,\n              element as NodePath<ClassElementCanHaveComputedKeys>,\n            );\n            computedKeyAssignments = [];\n          }\n        }\n      }\n    }\n  } else {\n    assignIdForAnonymousClass(path, className);\n    classIdLocal = t.cloneNode(path.node.id);\n  }\n\n  let lastInstancePrivateName: t.PrivateName;\n  let needsInstancePrivateBrandCheck = false;\n\n  let fieldInitializerExpressions = [];\n  let staticFieldInitializerExpressions: t.Expression[] = [];\n\n  if (hasElementDecorators) {\n    if (protoInitLocal) {\n      const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n        t.thisExpression(),\n      ]);\n      fieldInitializerExpressions.push(protoInitCall);\n    }\n    for (const element of body) {\n      if (!isClassDecoratableElementPath(element)) {\n        if (\n          staticFieldInitializerExpressions.length > 0 &&\n          element.isStaticBlock()\n        ) {\n          prependExpressionsToStaticBlock(\n            staticFieldInitializerExpressions,\n            element,\n          );\n          staticFieldInitializerExpressions = [];\n        }\n        continue;\n      }\n\n      const { node } = element;\n      const decorators = node.decorators;\n\n      const hasDecorators = !!decorators?.length;\n\n      const isComputed = \"computed\" in node && node.computed;\n\n      let name = \"computedKey\";\n\n      if (node.key.type === \"PrivateName\") {\n        name = node.key.id.name;\n      } else if (!isComputed && node.key.type === \"Identifier\") {\n        name = node.key.name;\n      }\n      let decoratorsArray: t.Identifier | t.ArrayExpression | t.Expression;\n      let decoratorsHaveThis;\n\n      if (hasDecorators) {\n        const { hasSideEffects, usesFnContext, decoratorsThis } =\n          handleDecorators(decorators);\n        const { decs, haveThis } = generateDecorationList(\n          decorators,\n          decoratorsThis,\n          version,\n        );\n        decoratorsHaveThis = haveThis;\n        decoratorsArray = decs.length === 1 ? decs[0] : t.arrayExpression(decs);\n        if (usesFnContext || (hasSideEffects && willExtractSomeElemDecs)) {\n          decoratorsArray = memoiseExpression(\n            decoratorsArray,\n            name + \"Decs\",\n            computedKeyAssignments,\n          );\n        }\n      }\n\n      if (isComputed) {\n        if (!element.get(\"key\").isConstantExpression()) {\n          const key = node.key as t.Expression;\n          const maybeAssignment = memoiseComputedKey(\n            hasDecorators ? createToPropertyKeyCall(state, key) : key,\n            scopeParent,\n            scopeParent.generateUid(\"computedKey\"),\n          );\n          if (maybeAssignment != null) {\n            // If it is a static computed field within a decorated class, we move the computed key\n            // into `computedKeyAssignments` which will be then moved into the non-static class,\n            // to ensure that the evaluation order and private environment are correct\n            if (classDecorators && element.isClassProperty({ static: true })) {\n              node.key = t.cloneNode(maybeAssignment.left);\n              computedKeyAssignments.push(maybeAssignment);\n            } else {\n              node.key = maybeAssignment;\n            }\n          }\n        }\n      }\n\n      const { key, static: isStatic } = node;\n\n      const isPrivate = key.type === \"PrivateName\";\n\n      const kind = getElementKind(element);\n\n      if (isPrivate && !isStatic) {\n        if (hasDecorators) {\n          needsInstancePrivateBrandCheck = true;\n        }\n        if (t.isClassPrivateProperty(node) || !lastInstancePrivateName) {\n          lastInstancePrivateName = key;\n        }\n      }\n\n      if (element.isClassMethod({ kind: \"constructor\" })) {\n        constructorPath = element;\n      }\n\n      let locals: t.Identifier[];\n      if (hasDecorators) {\n        let privateMethods: Array<\n          t.FunctionExpression | t.ArrowFunctionExpression\n        >;\n\n        let nameExpr: t.Expression;\n\n        if (isComputed) {\n          nameExpr = getComputedKeyMemoiser(\n            element.get(\"key\") as NodePath<t.Expression>,\n          );\n        } else if (key.type === \"PrivateName\") {\n          nameExpr = t.stringLiteral(key.id.name);\n        } else if (key.type === \"Identifier\") {\n          nameExpr = t.stringLiteral(key.name);\n        } else {\n          nameExpr = t.cloneNode(key as t.Expression);\n        }\n\n        if (kind === ACCESSOR) {\n          const { value } = element.node as t.ClassAccessorProperty;\n\n          const params: t.Expression[] =\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()];\n\n          if (value) {\n            params.push(t.cloneNode(value));\n          }\n\n          const newId = generateClassPrivateUid();\n          const newFieldInitId = generateLetUidIdentifier(\n            scopeParent,\n            `init_${name}`,\n          );\n          const newValue = t.callExpression(\n            t.cloneNode(newFieldInitId),\n            params,\n          );\n\n          const newField = generateClassProperty(newId, newValue, isStatic);\n          const [newPath] = element.replaceWith(newField);\n\n          if (isPrivate) {\n            privateMethods = extractProxyAccessorsFor(newId, version);\n\n            const getId = generateLetUidIdentifier(scopeParent, `get_${name}`);\n            const setId = generateLetUidIdentifier(scopeParent, `set_${name}`);\n\n            addCallAccessorsFor(version, newPath, key, getId, setId, isStatic);\n\n            locals = [newFieldInitId, getId, setId];\n          } else {\n            assignIdForAnonymousClass(path, className);\n            addProxyAccessorsFor(\n              path.node.id,\n              newPath,\n              t.cloneNode(key),\n              t.isAssignmentExpression(key)\n                ? t.cloneNode(key.left as t.Identifier)\n                : t.cloneNode(key),\n              newId,\n              isComputed,\n              isStatic,\n              version,\n            );\n            locals = [newFieldInitId];\n          }\n        } else if (kind === FIELD) {\n          const initId = generateLetUidIdentifier(scopeParent, `init_${name}`);\n          const valuePath = (\n            element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n          ).get(\"value\");\n\n          const args: t.Expression[] =\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()];\n          if (valuePath.node) args.push(valuePath.node);\n\n          valuePath.replaceWith(t.callExpression(t.cloneNode(initId), args));\n\n          locals = [initId];\n\n          if (isPrivate) {\n            privateMethods = extractProxyAccessorsFor(key, version);\n          }\n        } else if (isPrivate) {\n          const callId = generateLetUidIdentifier(scopeParent, `call_${name}`);\n          locals = [callId];\n\n          const replaceSupers = new ReplaceSupers({\n            constantSuper,\n            methodPath: element as NodePath<t.ClassPrivateMethod>,\n            objectRef: classIdLocal,\n            superRef: path.node.superClass,\n            file: state.file,\n            refToPreserve: classIdLocal,\n          });\n\n          replaceSupers.replace();\n\n          privateMethods = [\n            createFunctionExpressionFromPrivateMethod(\n              element.node as t.ClassPrivateMethod,\n            ),\n          ];\n\n          if (kind === GETTER || kind === SETTER) {\n            movePrivateAccessor(\n              element as NodePath<t.ClassPrivateMethod>,\n              t.cloneNode(key),\n              t.cloneNode(callId),\n              isStatic,\n            );\n          } else {\n            const node = element.node as t.ClassPrivateMethod;\n\n            // Unshift\n            path.node.body.body.unshift(\n              t.classPrivateProperty(key, t.cloneNode(callId), [], node.static),\n            );\n\n            decoratedPrivateMethods.add(key.id.name);\n\n            element.remove();\n          }\n        }\n\n        elementDecoratorInfo.push({\n          kind,\n          decoratorsArray,\n          decoratorsHaveThis,\n          name: nameExpr,\n          isStatic,\n          privateMethods,\n          locals,\n        });\n\n        if (element.node) {\n          element.node.decorators = null;\n        }\n      }\n\n      if (isComputed && computedKeyAssignments.length > 0) {\n        if (classDecorators && element.isClassProperty({ static: true })) {\n          // If the class is decorated, we don't insert computedKeyAssignments here\n          // because any non-static computed elements defined after it will be moved\n          // into the non-static class, so they will be evaluated before the key of\n          // this field. At this momemnt, its key must be either a constant expression\n          // or a uid reference which has been assigned _within_ the non-static class.\n        } else {\n          prependExpressionsToComputedKey(\n            computedKeyAssignments,\n            (kind === ACCESSOR\n              ? element.getNextSibling() // the transpiled getter of the accessor property\n              : element) as NodePath<ClassElementCanHaveComputedKeys>,\n          );\n          computedKeyAssignments = [];\n        }\n      }\n\n      if (\n        fieldInitializerExpressions.length > 0 &&\n        !isStatic &&\n        (kind === FIELD || kind === ACCESSOR)\n      ) {\n        prependExpressionsToFieldInitializer(\n          fieldInitializerExpressions,\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n        );\n        fieldInitializerExpressions = [];\n      }\n\n      if (\n        staticFieldInitializerExpressions.length > 0 &&\n        isStatic &&\n        (kind === FIELD || kind === ACCESSOR)\n      ) {\n        prependExpressionsToFieldInitializer(\n          staticFieldInitializerExpressions,\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n        );\n        staticFieldInitializerExpressions = [];\n      }\n\n      if (hasDecorators && version === \"2023-11\") {\n        if (kind === FIELD || kind === ACCESSOR) {\n          const initExtraId = generateLetUidIdentifier(\n            scopeParent,\n            `init_extra_${name}`,\n          );\n          locals.push(initExtraId);\n          const initExtraCall = t.callExpression(\n            t.cloneNode(initExtraId),\n            isStatic ? [] : [t.thisExpression()],\n          );\n          if (!isStatic) {\n            fieldInitializerExpressions.push(initExtraCall);\n          } else {\n            staticFieldInitializerExpressions.push(initExtraCall);\n          }\n        }\n      }\n    }\n  }\n\n  if (computedKeyAssignments.length > 0) {\n    const elements = path.get(\"body.body\");\n    let lastComputedElement: NodePath<ClassElementCanHaveComputedKeys>;\n    for (let i = elements.length - 1; i >= 0; i--) {\n      const path = elements[i];\n      const node = path.node as ClassElementCanHaveComputedKeys;\n      if (node.computed) {\n        if (classDecorators && t.isClassProperty(node, { static: true })) {\n          continue;\n        }\n        lastComputedElement = path as NodePath<ClassElementCanHaveComputedKeys>;\n        break;\n      }\n    }\n    if (lastComputedElement != null) {\n      appendExpressionsToComputedKey(\n        computedKeyAssignments,\n        lastComputedElement,\n      );\n      computedKeyAssignments = [];\n    } else {\n      // If there is no computed key, we will try to convert the first non-computed\n      // class element into a computed key and insert assignments there. This will\n      // be done after we handle the class elements split when the class is decorated.\n    }\n  }\n\n  if (fieldInitializerExpressions.length > 0) {\n    const isDerivedClass = !!path.node.superClass;\n    if (constructorPath) {\n      if (isDerivedClass) {\n        insertExpressionsAfterSuperCallAndOptimize(\n          fieldInitializerExpressions,\n          constructorPath,\n          protoInitLocal,\n        );\n      } else {\n        prependExpressionsToConstructor(\n          fieldInitializerExpressions,\n          constructorPath,\n        );\n      }\n    } else {\n      path.node.body.body.unshift(\n        createConstructorFromExpressions(\n          fieldInitializerExpressions,\n          isDerivedClass,\n        ),\n      );\n    }\n    fieldInitializerExpressions = [];\n  }\n\n  if (staticFieldInitializerExpressions.length > 0) {\n    path.node.body.body.push(\n      createStaticBlockFromExpressions(staticFieldInitializerExpressions),\n    );\n    staticFieldInitializerExpressions = [];\n  }\n\n  const sortedElementDecoratorInfo =\n    toSortedDecoratorInfo(elementDecoratorInfo);\n\n  const elementDecorations = generateDecorationExprs(\n    process.env.BABEL_8_BREAKING || version === \"2023-11\"\n      ? elementDecoratorInfo\n      : sortedElementDecoratorInfo,\n    version,\n  );\n\n  const elementLocals: t.Identifier[] = extractElementLocalAssignments(\n    sortedElementDecoratorInfo,\n  );\n\n  if (protoInitLocal) {\n    elementLocals.push(protoInitLocal);\n  }\n\n  if (staticInitLocal) {\n    elementLocals.push(staticInitLocal);\n  }\n\n  const classLocals: t.Identifier[] = [];\n  let classInitInjected = false;\n  const classInitCall =\n    classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n  let originalClassPath = path;\n  const originalClass = path.node;\n\n  const staticClosures: t.AssignmentExpression[] = [];\n  if (classDecorators) {\n    classLocals.push(classIdLocal, classInitLocal);\n    const statics: (\n      | t.ClassProperty\n      | t.ClassPrivateProperty\n      | t.ClassPrivateMethod\n    )[] = [];\n    path.get(\"body.body\").forEach(element => {\n      // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n      // them as IIFEs in the next property.\n      if (element.isStaticBlock()) {\n        if (hasInstancePrivateAccess(element, instancePrivateNames)) {\n          const staticBlockClosureId = memoiseExpression(\n            staticBlockToFunctionClosure(element.node),\n            \"staticBlock\",\n            staticClosures,\n          );\n          staticFieldInitializerExpressions.push(\n            t.callExpression(\n              t.memberExpression(staticBlockClosureId, t.identifier(\"call\")),\n              [t.thisExpression()],\n            ),\n          );\n        } else {\n          staticFieldInitializerExpressions.push(\n            staticBlockToIIFE(element.node),\n          );\n        }\n        element.remove();\n        return;\n      }\n\n      if (\n        (element.isClassProperty() || element.isClassPrivateProperty()) &&\n        element.node.static\n      ) {\n        const valuePath = (\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n        ).get(\"value\");\n        if (hasInstancePrivateAccess(valuePath, instancePrivateNames)) {\n          const fieldValueClosureId = memoiseExpression(\n            fieldInitializerToClosure(valuePath.node),\n            \"fieldValue\",\n            staticClosures,\n          );\n          valuePath.replaceWith(\n            t.callExpression(\n              t.memberExpression(fieldValueClosureId, t.identifier(\"call\")),\n              [t.thisExpression()],\n            ),\n          );\n        }\n        if (staticFieldInitializerExpressions.length > 0) {\n          prependExpressionsToFieldInitializer(\n            staticFieldInitializerExpressions,\n            element,\n          );\n          staticFieldInitializerExpressions = [];\n        }\n        element.node.static = false;\n        statics.push(element.node);\n        element.remove();\n      } else if (element.isClassPrivateMethod({ static: true })) {\n        // At this moment the element must not have decorators, so any private name\n        // within the element must come from either params or body\n        if (hasInstancePrivateAccess(element, instancePrivateNames)) {\n          const replaceSupers = new ReplaceSupers({\n            constantSuper,\n            methodPath: element,\n            objectRef: classIdLocal,\n            superRef: path.node.superClass,\n            file: state.file,\n            refToPreserve: classIdLocal,\n          });\n\n          replaceSupers.replace();\n\n          const privateMethodDelegateId = memoiseExpression(\n            createFunctionExpressionFromPrivateMethod(element.node),\n            element.get(\"key.id\").node.name,\n            staticClosures,\n          );\n\n          if (ignoreFunctionLength) {\n            element.node.params = [t.restElement(t.identifier(\"arg\"))];\n            element.node.body = t.blockStatement([\n              t.returnStatement(\n                t.callExpression(\n                  t.memberExpression(\n                    privateMethodDelegateId,\n                    t.identifier(\"apply\"),\n                  ),\n                  [t.thisExpression(), t.identifier(\"arg\")],\n                ),\n              ),\n            ]);\n          } else {\n            element.node.params = element.node.params.map((p, i) => {\n              if (t.isRestElement(p)) {\n                return t.restElement(t.identifier(\"arg\"));\n              } else {\n                return t.identifier(\"_\" + i);\n              }\n            });\n            element.node.body = t.blockStatement([\n              t.returnStatement(\n                t.callExpression(\n                  t.memberExpression(\n                    privateMethodDelegateId,\n                    t.identifier(\"apply\"),\n                  ),\n                  [t.thisExpression(), t.identifier(\"arguments\")],\n                ),\n              ),\n            ]);\n          }\n        }\n        element.node.static = false;\n        statics.push(element.node);\n        element.remove();\n      }\n    });\n\n    if (statics.length > 0 || staticFieldInitializerExpressions.length > 0) {\n      const staticsClass = template.expression.ast`\n        class extends ${state.addHelper(\"identity\")} {}\n      ` as t.ClassExpression;\n      staticsClass.body.body = [\n        // Insert the original class to a computed key of the wrapper so that\n        // 1) they share the same function context with the wrapper class\n        // 2) the memoisation of static computed field is evaluated before they\n        //    are referenced in the wrapper class keys\n        // Note that any static elements of the wrapper class can not be accessed\n        // in the user land, so we don't have to remove the temporary class field.\n        t.classProperty(\n          t.toExpression(originalClass),\n          undefined,\n          undefined,\n          undefined,\n          /* computed */ true,\n          /* static */ true,\n        ),\n        ...statics,\n      ];\n\n      const constructorBody: t.Expression[] = [];\n\n      const newExpr = t.newExpression(staticsClass, []);\n\n      if (staticFieldInitializerExpressions.length > 0) {\n        constructorBody.push(...staticFieldInitializerExpressions);\n      }\n      if (classInitCall) {\n        classInitInjected = true;\n        constructorBody.push(classInitCall);\n      }\n      if (constructorBody.length > 0) {\n        constructorBody.unshift(\n          t.callExpression(t.super(), [t.cloneNode(classIdLocal)]),\n        );\n\n        // set isDerivedClass to false as we have already prepended super call\n        staticsClass.body.body.push(\n          createConstructorFromExpressions(\n            constructorBody,\n            /* isDerivedClass */ false,\n          ),\n        );\n      } else {\n        newExpr.arguments.push(t.cloneNode(classIdLocal));\n      }\n\n      const [newPath] = path.replaceWith(newExpr);\n\n      // update originalClassPath according to the new AST\n      originalClassPath = (\n        newPath.get(\"callee\").get(\"body\") as NodePath<t.Class>\n      ).get(\"body.0.key\");\n    }\n  }\n  if (!classInitInjected && classInitCall) {\n    path.node.body.body.push(\n      t.staticBlock([t.expressionStatement(classInitCall)]),\n    );\n  }\n\n  let { superClass } = originalClass;\n  if (\n    superClass &&\n    (process.env.BABEL_8_BREAKING ||\n      version === \"2023-11\" ||\n      version === \"2023-05\")\n  ) {\n    const id = path.scope.maybeGenerateMemoised(superClass);\n    if (id) {\n      originalClass.superClass = t.assignmentExpression(\"=\", id, superClass);\n      superClass = id;\n    }\n  }\n\n  const applyDecoratorWrapper = t.staticBlock([]);\n  originalClass.body.body.unshift(applyDecoratorWrapper);\n  const applyDecsBody = applyDecoratorWrapper.body;\n  if (computedKeyAssignments.length > 0) {\n    const elements = originalClassPath.get(\"body.body\");\n    let firstPublicElement: NodePath<t.ClassProperty | t.ClassMethod>;\n    for (const path of elements) {\n      if (\n        (path.isClassProperty() || path.isClassMethod()) &&\n        (path.node as t.ClassMethod).kind !== \"constructor\"\n      ) {\n        firstPublicElement = path;\n        break;\n      }\n    }\n    if (firstPublicElement != null) {\n      // Convert its key to a computed one to host the decorator evaluations.\n      convertToComputedKey(firstPublicElement);\n      prependExpressionsToComputedKey(\n        computedKeyAssignments,\n        firstPublicElement,\n      );\n    } else {\n      // When there is no public class elements, we inject a temporary computed\n      // field whose key will host the decorator evaluations. The field will be\n      // deleted immediately after it is defiend.\n      originalClass.body.body.unshift(\n        t.classProperty(\n          t.sequenceExpression([\n            ...computedKeyAssignments,\n            t.stringLiteral(\"_\"),\n          ]),\n          undefined,\n          undefined,\n          undefined,\n          /* computed */ true,\n          /* static */ true,\n        ),\n      );\n      applyDecsBody.push(\n        t.expressionStatement(\n          t.unaryExpression(\n            \"delete\",\n            t.memberExpression(t.thisExpression(), t.identifier(\"_\")),\n          ),\n        ),\n      );\n    }\n    computedKeyAssignments = [];\n  }\n\n  applyDecsBody.push(\n    t.expressionStatement(\n      createLocalsAssignment(\n        elementLocals,\n        classLocals,\n        elementDecorations,\n        classDecorationsId ?? t.arrayExpression(classDecorations),\n        t.numericLiteral(classDecorationsFlag),\n        needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n        setClassName,\n        t.cloneNode(superClass),\n        state,\n        version,\n      ),\n    ),\n  );\n  if (staticInitLocal) {\n    applyDecsBody.push(\n      t.expressionStatement(\n        t.callExpression(t.cloneNode(staticInitLocal), [t.thisExpression()]),\n      ),\n    );\n  }\n  if (staticClosures.length > 0) {\n    applyDecsBody.push(\n      ...staticClosures.map(expr => t.expressionStatement(expr)),\n    );\n  }\n\n  // When path is a ClassExpression, path.insertBefore will convert `path`\n  // into a SequenceExpression\n  path.insertBefore(classAssignments.map(expr => t.expressionStatement(expr)));\n\n  if (needsDeclaraionForClassBinding) {\n    const classBindingInfo = scopeParent.getBinding(classIdLocal.name);\n    if (!classBindingInfo.constantViolations.length) {\n      // optimization: reuse the inner class binding if the outer class binding is not mutated\n      path.insertBefore(\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(t.cloneNode(classIdLocal)),\n        ]),\n      );\n    } else {\n      const classOuterBindingDelegateLocal = scopeParent.generateUidIdentifier(\n        \"t\" + classIdLocal.name,\n      );\n      const classOuterBindingLocal = classIdLocal;\n      path.replaceWithMultiple([\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(t.cloneNode(classOuterBindingLocal)),\n          t.variableDeclarator(classOuterBindingDelegateLocal),\n        ]),\n        t.blockStatement([\n          t.variableDeclaration(\"let\", [\n            t.variableDeclarator(t.cloneNode(classIdLocal)),\n          ]),\n          // needsDeclaraionForClassBinding is true ↔ node is a class declaration\n          path.node as t.ClassDeclaration,\n          t.expressionStatement(\n            t.assignmentExpression(\n              \"=\",\n              t.cloneNode(classOuterBindingDelegateLocal),\n              t.cloneNode(classIdLocal),\n            ),\n          ),\n        ]),\n        t.expressionStatement(\n          t.assignmentExpression(\n            \"=\",\n            t.cloneNode(classOuterBindingLocal),\n            t.cloneNode(classOuterBindingDelegateLocal),\n          ),\n        ),\n      ]);\n    }\n  }\n\n  if (decoratedPrivateMethods.size > 0) {\n    checkPrivateMethodUpdateError(path, decoratedPrivateMethods);\n  }\n\n  // Recrawl the scope to make sure new identifiers are properly synced\n  path.scope.crawl();\n\n  return path;\n}\n\nfunction createLocalsAssignment(\n  elementLocals: t.Identifier[],\n  classLocals: t.Identifier[],\n  elementDecorations: t.ArrayExpression | t.Identifier,\n  classDecorations: t.ArrayExpression | t.Identifier,\n  classDecorationsFlag: t.NumericLiteral,\n  maybePrivateBrandName: t.PrivateName | null,\n  setClassName: t.Identifier | t.StringLiteral | undefined,\n  superClass: null | t.Expression,\n  state: PluginPass,\n  version: DecoratorVersionKind,\n) {\n  let lhs, rhs;\n  const args: t.Expression[] = [\n    setClassName\n      ? createSetFunctionNameCall(state, setClassName)\n      : t.thisExpression(),\n    classDecorations,\n    elementDecorations,\n  ];\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (version !== \"2023-11\") {\n      args.splice(1, 2, elementDecorations, classDecorations);\n    }\n    if (\n      version === \"2021-12\" ||\n      (version === \"2022-03\" && !state.availableHelper(\"applyDecs2203R\"))\n    ) {\n      lhs = t.arrayPattern([...elementLocals, ...classLocals]);\n      rhs = t.callExpression(\n        state.addHelper(version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\"),\n        args,\n      );\n      return t.assignmentExpression(\"=\", lhs, rhs);\n    } else if (version === \"2022-03\") {\n      rhs = t.callExpression(state.addHelper(\"applyDecs2203R\"), args);\n    } else if (version === \"2023-01\") {\n      if (maybePrivateBrandName) {\n        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n      }\n      rhs = t.callExpression(state.addHelper(\"applyDecs2301\"), args);\n    } else if (version === \"2023-05\") {\n      if (\n        maybePrivateBrandName ||\n        superClass ||\n        classDecorationsFlag.value !== 0\n      ) {\n        args.push(classDecorationsFlag);\n      }\n      if (maybePrivateBrandName) {\n        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n      } else if (superClass) {\n        args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n      }\n      if (superClass) args.push(superClass);\n      rhs = t.callExpression(state.addHelper(\"applyDecs2305\"), args);\n    }\n  }\n  if (process.env.BABEL_8_BREAKING || version === \"2023-11\") {\n    if (\n      maybePrivateBrandName ||\n      superClass ||\n      classDecorationsFlag.value !== 0\n    ) {\n      args.push(classDecorationsFlag);\n    }\n    if (maybePrivateBrandName) {\n      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n    } else if (superClass) {\n      args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n    }\n    if (superClass) args.push(superClass);\n    rhs = t.callExpression(state.addHelper(\"applyDecs2311\"), args);\n  }\n\n  // optimize `{ c: [classLocals] } = applyDecsHelper(...)` to\n  // `[classLocals] = applyDecsHelper(...).c`\n  if (elementLocals.length > 0) {\n    if (classLocals.length > 0) {\n      lhs = t.objectPattern([\n        t.objectProperty(t.identifier(\"e\"), t.arrayPattern(elementLocals)),\n        t.objectProperty(t.identifier(\"c\"), t.arrayPattern(classLocals)),\n      ]);\n    } else {\n      lhs = t.arrayPattern(elementLocals);\n      // @ts-ignore(Babel 7 vs Babel 8) optional removed in Babel 8\n      rhs = t.memberExpression(rhs, t.identifier(\"e\"), false, false);\n    }\n  } else {\n    // invariant: classLocals.length > 0\n    lhs = t.arrayPattern(classLocals);\n    // @ts-ignore(Babel 7 vs Babel 8) optional removed in Babel 8\n    rhs = t.memberExpression(rhs, t.identifier(\"c\"), false, false);\n  }\n\n  return t.assignmentExpression(\"=\", lhs, rhs);\n}\n\nfunction isProtoKey(\n  node: t.Identifier | t.StringLiteral | t.BigIntLiteral | t.NumericLiteral,\n) {\n  return node.type === \"Identifier\"\n    ? node.name === \"__proto__\"\n    : node.value === \"__proto__\";\n}\n\nfunction isDecorated(node: t.Class | ClassDecoratableElement) {\n  return node.decorators && node.decorators.length > 0;\n}\n\nfunction shouldTransformElement(node: ClassElement) {\n  switch (node.type) {\n    case \"ClassAccessorProperty\":\n      return true;\n    case \"ClassMethod\":\n    case \"ClassProperty\":\n    case \"ClassPrivateMethod\":\n    case \"ClassPrivateProperty\":\n      return isDecorated(node);\n    default:\n      return false;\n  }\n}\n\nfunction shouldTransformClass(node: t.Class) {\n  return isDecorated(node) || node.body.body.some(shouldTransformElement);\n}\n\n// Todo: unify name references logic with helper-function-name\nfunction NamedEvaluationVisitoryFactory(\n  isAnonymous: (path: NodePath) => boolean,\n  visitor: (\n    path: NodePath,\n    state: PluginPass,\n    name:\n      | string\n      | t.Identifier\n      | t.StringLiteral\n      | t.NumericLiteral\n      | t.BigIntLiteral,\n  ) => void,\n) {\n  function handleComputedProperty(\n    propertyPath: NodePath<\n      t.ObjectProperty | t.ClassProperty | t.ClassAccessorProperty\n    >,\n    key: t.Expression,\n    state: PluginPass,\n  ): t.StringLiteral | t.Identifier {\n    switch (key.type) {\n      case \"StringLiteral\":\n        return t.stringLiteral(key.value);\n      case \"NumericLiteral\":\n      case \"BigIntLiteral\": {\n        const keyValue = key.value + \"\";\n        propertyPath.get(\"key\").replaceWith(t.stringLiteral(keyValue));\n        return t.stringLiteral(keyValue);\n      }\n      default: {\n        const ref = propertyPath.scope.maybeGenerateMemoised(key);\n        propertyPath\n          .get(\"key\")\n          .replaceWith(\n            t.assignmentExpression(\n              \"=\",\n              ref,\n              createToPropertyKeyCall(state, key),\n            ),\n          );\n        return t.cloneNode(ref);\n      }\n    }\n  }\n  return {\n    VariableDeclarator(path, state) {\n      const id = path.node.id;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"init\"));\n        if (isAnonymous(initializer)) {\n          const name = id.name;\n          visitor(initializer, state, name);\n        }\n      }\n    },\n    AssignmentExpression(path, state) {\n      const id = path.node.left;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n        if (isAnonymous(initializer)) {\n          switch (path.node.operator) {\n            case \"=\":\n            case \"&&=\":\n            case \"||=\":\n            case \"??=\":\n              visitor(initializer, state, id.name);\n          }\n        }\n      }\n    },\n    AssignmentPattern(path, state) {\n      const id = path.node.left;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n        if (isAnonymous(initializer)) {\n          const name = id.name;\n          visitor(initializer, state, name);\n        }\n      }\n    },\n    // We listen on ObjectExpression so that we don't have to visit\n    // the object properties under object patterns\n    ObjectExpression(path, state) {\n      for (const propertyPath of path.get(\"properties\")) {\n        if (!propertyPath.isObjectProperty()) continue;\n        const { node } = propertyPath;\n        const id = node.key;\n        const initializer = skipTransparentExprWrappers(\n          propertyPath.get(\"value\") as NodePath<t.Expression>,\n        );\n        if (isAnonymous(initializer)) {\n          if (!node.computed) {\n            // 13.2.5.5 RS: PropertyDefinitionEvaluation\n            if (!isProtoKey(id as t.StringLiteral | t.Identifier)) {\n              if (id.type === \"Identifier\") {\n                visitor(initializer, state, id.name);\n              } else {\n                const className = t.stringLiteral(\n                  (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                    .value + \"\",\n                );\n                visitor(initializer, state, className);\n              }\n            }\n          } else {\n            const ref = handleComputedProperty(\n              propertyPath,\n              // The key of a computed object property must not be a private name\n              id as t.Expression,\n              state,\n            );\n            visitor(initializer, state, ref);\n          }\n        }\n      }\n    },\n    ClassPrivateProperty(path, state) {\n      const { node } = path;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (isAnonymous(initializer)) {\n        const className = t.stringLiteral(\"#\" + node.key.id.name);\n        visitor(initializer, state, className);\n      }\n    },\n    ClassAccessorProperty(path, state) {\n      const { node } = path;\n      const id = node.key;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (isAnonymous(initializer)) {\n        if (!node.computed) {\n          if (id.type === \"Identifier\") {\n            visitor(initializer, state, id.name);\n          } else if (id.type === \"PrivateName\") {\n            const className = t.stringLiteral(\"#\" + id.id.name);\n            visitor(initializer, state, className);\n          } else {\n            const className = t.stringLiteral(\n              (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                .value + \"\",\n            );\n            visitor(initializer, state, className);\n          }\n        } else {\n          const ref = handleComputedProperty(\n            path,\n            // The key of a computed accessor property must not be a private name\n            id as t.Expression,\n            state,\n          );\n          visitor(initializer, state, ref);\n        }\n      }\n    },\n    ClassProperty(path, state) {\n      const { node } = path;\n      const id = node.key;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (isAnonymous(initializer)) {\n        if (!node.computed) {\n          if (id.type === \"Identifier\") {\n            visitor(initializer, state, id.name);\n          } else {\n            const className = t.stringLiteral(\n              (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                .value + \"\",\n            );\n            visitor(initializer, state, className);\n          }\n        } else {\n          const ref = handleComputedProperty(path, id, state);\n          visitor(initializer, state, ref);\n        }\n      }\n    },\n  } satisfies Visitor<PluginPass>;\n}\n\nfunction isDecoratedAnonymousClassExpression(path: NodePath) {\n  return (\n    path.isClassExpression({ id: null }) && shouldTransformClass(path.node)\n  );\n}\n\nfunction generateLetUidIdentifier(scope: Scope, name: string) {\n  const id = scope.generateUidIdentifier(name);\n  scope.push({ id, kind: \"let\" });\n  return t.cloneNode(id);\n}\n\nexport default function (\n  { assertVersion, assumption }: PluginAPI,\n  { loose }: Options,\n  version: DecoratorVersionKind,\n  inherits: PluginObject[\"inherits\"],\n): PluginObject {\n  if (process.env.BABEL_8_BREAKING) {\n    assertVersion(REQUIRED_VERSION(\"^7.21.0\"));\n  } else {\n    if (\n      version === \"2023-11\" ||\n      version === \"2023-05\" ||\n      version === \"2023-01\"\n    ) {\n      assertVersion(REQUIRED_VERSION(\"^7.21.0\"));\n    } else if (version === \"2021-12\") {\n      assertVersion(REQUIRED_VERSION(\"^7.16.0\"));\n    } else {\n      assertVersion(REQUIRED_VERSION(\"^7.19.0\"));\n    }\n  }\n\n  const VISITED = new WeakSet<NodePath>();\n  const constantSuper = assumption(\"constantSuper\") ?? loose;\n  const ignoreFunctionLength = assumption(\"ignoreFunctionLength\") ?? loose;\n\n  const namedEvaluationVisitor: Visitor<PluginPass> =\n    NamedEvaluationVisitoryFactory(\n      isDecoratedAnonymousClassExpression,\n      visitClass,\n    );\n\n  function visitClass(\n    path: NodePath<t.Class>,\n    state: PluginPass,\n    className: string | t.Identifier | t.StringLiteral | undefined,\n  ) {\n    if (VISITED.has(path)) return;\n    const { node } = path;\n    className ??= node.id?.name;\n    const newPath = transformClass(\n      path,\n      state,\n      constantSuper,\n      ignoreFunctionLength,\n      className,\n      namedEvaluationVisitor,\n      version,\n    );\n    if (newPath) {\n      VISITED.add(newPath);\n      return;\n    }\n    VISITED.add(path);\n  }\n\n  return {\n    name: \"proposal-decorators\",\n    inherits: inherits,\n\n    visitor: {\n      ExportDefaultDeclaration(path, state) {\n        const { declaration } = path.node;\n        if (\n          declaration?.type === \"ClassDeclaration\" &&\n          // When compiling class decorators we need to replace the class\n          // binding, so we must split it in two separate declarations.\n          isDecorated(declaration)\n        ) {\n          const isAnonymous = !declaration.id;\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.splitExportDeclaration ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n          }\n          const updatedVarDeclarationPath =\n            path.splitExportDeclaration() as NodePath<t.ClassDeclaration>;\n          if (isAnonymous) {\n            visitClass(\n              updatedVarDeclarationPath,\n              state,\n              t.stringLiteral(\"default\"),\n            );\n          }\n        }\n      },\n      ExportNamedDeclaration(path) {\n        const { declaration } = path.node;\n        if (\n          declaration?.type === \"ClassDeclaration\" &&\n          // When compiling class decorators we need to replace the class\n          // binding, so we must split it in two separate declarations.\n          isDecorated(declaration)\n        ) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.splitExportDeclaration ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n          }\n          path.splitExportDeclaration();\n        }\n      },\n\n      Class(path, state) {\n        visitClass(path, state, undefined);\n      },\n\n      ...namedEvaluationVisitor,\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,147 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.FEATURES = void 0;
+exports.enableFeature = enableFeature;
+exports.isLoose = isLoose;
+exports.shouldTransform = shouldTransform;
+var _decorators = require("./decorators-2018-09.js");
+const FEATURES = exports.FEATURES = Object.freeze({
+  fields: 1 << 1,
+  privateMethods: 1 << 2,
+  decorators: 1 << 3,
+  privateIn: 1 << 4,
+  staticBlocks: 1 << 5
+});
+const featuresSameLoose = new Map([[FEATURES.fields, "@babel/plugin-transform-class-properties"], [FEATURES.privateMethods, "@babel/plugin-transform-private-methods"], [FEATURES.privateIn, "@babel/plugin-transform-private-property-in-object"]]);
+const featuresKey = "@babel/plugin-class-features/featuresKey";
+const looseKey = "@babel/plugin-class-features/looseKey";
+{
+  var looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
+}
+{
+  var canIgnoreLoose = function (file, feature) {
+    return !!(file.get(looseLowPriorityKey) & feature);
+  };
+}
+function enableFeature(file, feature, loose) {
+  if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {
+    file.set(featuresKey, file.get(featuresKey) | feature);
+    if (loose === "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error") {
+      setLoose(file, feature, true);
+      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
+    } else if (loose === "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error") {
+      setLoose(file, feature, false);
+      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
+    } else {
+      setLoose(file, feature, loose);
+    }
+  }
+  let resolvedLoose;
+  for (const [mask, name] of featuresSameLoose) {
+    if (!hasFeature(file, mask)) continue;
+    {
+      if (canIgnoreLoose(file, mask)) continue;
+    }
+    const loose = isLoose(file, mask);
+    if (resolvedLoose === !loose) {
+      throw new Error("'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, " + "@babel/plugin-transform-private-methods and " + "@babel/plugin-transform-private-property-in-object (when they are enabled)." + "\n\n" + getBabelShowConfigForHint(file));
+    } else {
+      resolvedLoose = loose;
+      {
+        var higherPriorityPluginName = name;
+      }
+    }
+  }
+  if (resolvedLoose !== undefined) {
+    for (const [mask, name] of featuresSameLoose) {
+      if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {
+        setLoose(file, mask, resolvedLoose);
+        console.warn(`Though the "loose" option was set to "${!resolvedLoose}" in your @babel/preset-env ` + `config, it will not be used for ${name} since the "loose" mode option was set to ` + `"${resolvedLoose}" for ${higherPriorityPluginName}.\nThe "loose" option must be the ` + `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` + `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` + `silence this warning by explicitly adding\n` + `\t["${name}", { "loose": ${resolvedLoose} }]\n` + `to the "plugins" section of your Babel config.` + "\n\n" + getBabelShowConfigForHint(file));
+      }
+    }
+  }
+}
+function getBabelShowConfigForHint(file) {
+  let {
+    filename
+  } = file.opts;
+  if (!filename || filename === "unknown") {
+    filename = "[name of the input file]";
+  }
+  return `\
+If you already set the same 'loose' mode for these plugins in your config, it's possible that they \
+are enabled multiple times with different options.
+You can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \
+configuration:
+\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${filename} <your build command>
+See https://babeljs.io/docs/configuration#print-effective-configs for more info.`;
+}
+function hasFeature(file, feature) {
+  return !!(file.get(featuresKey) & feature);
+}
+function isLoose(file, feature) {
+  return !!(file.get(looseKey) & feature);
+}
+function setLoose(file, feature, loose) {
+  if (loose) file.set(looseKey, file.get(looseKey) | feature);else file.set(looseKey, file.get(looseKey) & ~feature);
+  {
+    file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
+  }
+}
+function shouldTransform(path, file) {
+  let decoratorPath = null;
+  let publicFieldPath = null;
+  let privateFieldPath = null;
+  let privateMethodPath = null;
+  let staticBlockPath = null;
+  if ((0, _decorators.hasOwnDecorators)(path.node)) {
+    decoratorPath = path.get("decorators.0");
+  }
+  for (const el of path.get("body.body")) {
+    if (!decoratorPath && (0, _decorators.hasOwnDecorators)(el.node)) {
+      decoratorPath = el.get("decorators.0");
+    }
+    if (!publicFieldPath && el.isClassProperty()) {
+      publicFieldPath = el;
+    }
+    if (!privateFieldPath && el.isClassPrivateProperty()) {
+      privateFieldPath = el;
+    }
+    if (!privateMethodPath && el.isClassPrivateMethod != null && el.isClassPrivateMethod()) {
+      privateMethodPath = el;
+    }
+    if (!staticBlockPath && el.isStaticBlock != null && el.isStaticBlock()) {
+      staticBlockPath = el;
+    }
+  }
+  if (decoratorPath && privateFieldPath) {
+    throw privateFieldPath.buildCodeFrameError("Private fields in decorated classes are not supported yet.");
+  }
+  if (decoratorPath && privateMethodPath) {
+    throw privateMethodPath.buildCodeFrameError("Private methods in decorated classes are not supported yet.");
+  }
+  if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {
+    throw path.buildCodeFrameError("Decorators are not enabled." + "\nIf you are using " + '["@babel/plugin-proposal-decorators", { "version": "legacy" }], ' + 'make sure it comes *before* "@babel/plugin-transform-class-properties" ' + "and enable loose mode, like so:\n" + '\t["@babel/plugin-proposal-decorators", { "version": "legacy" }]\n' + '\t["@babel/plugin-transform-class-properties", { "loose": true }]');
+  }
+  if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {
+    throw privateMethodPath.buildCodeFrameError("Class private methods are not enabled. " + "Please add `@babel/plugin-transform-private-methods` to your configuration.");
+  }
+  if ((publicFieldPath || privateFieldPath) && !hasFeature(file, FEATURES.fields) && !hasFeature(file, FEATURES.privateMethods)) {
+    throw path.buildCodeFrameError("Class fields are not enabled. " + "Please add `@babel/plugin-transform-class-properties` to your configuration.");
+  }
+  if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {
+    throw path.buildCodeFrameError("Static class blocks are not enabled. " + "Please add `@babel/plugin-transform-class-static-block` to your configuration.");
+  }
+  if (decoratorPath || privateMethodPath || staticBlockPath) {
+    return true;
+  }
+  if ((publicFieldPath || privateFieldPath) && hasFeature(file, FEATURES.fields)) {
+    return true;
+  }
+  return false;
+}
+
+//# sourceMappingURL=features.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/features.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_decorators","require","FEATURES","exports","Object","freeze","fields","privateMethods","decorators","privateIn","staticBlocks","featuresSameLoose","Map","featuresKey","looseKey","looseLowPriorityKey","canIgnoreLoose","file","feature","get","enableFeature","loose","hasFeature","set","setLoose","resolvedLoose","mask","name","isLoose","Error","getBabelShowConfigForHint","higherPriorityPluginName","undefined","console","warn","filename","opts","shouldTransform","path","decoratorPath","publicFieldPath","privateFieldPath","privateMethodPath","staticBlockPath","hasOwnDecorators","node","el","isClassProperty","isClassPrivateProperty","isClassPrivateMethod","isStaticBlock","buildCodeFrameError"],"sources":["../src/features.ts"],"sourcesContent":["import type { File, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/core\";\nimport { hasOwnDecorators } from \"./decorators-2018-09.ts\";\n\nexport const FEATURES = Object.freeze({\n  //classes: 1 << 0,\n  fields: 1 << 1,\n  privateMethods: 1 << 2,\n  decorators: 1 << 3,\n  privateIn: 1 << 4,\n  staticBlocks: 1 << 5,\n});\n\nconst featuresSameLoose = new Map([\n  [FEATURES.fields, \"@babel/plugin-transform-class-properties\"],\n  [FEATURES.privateMethods, \"@babel/plugin-transform-private-methods\"],\n  [FEATURES.privateIn, \"@babel/plugin-transform-private-property-in-object\"],\n]);\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n//  - node_modules/\n//    - @babel/plugin-class-features\n//    - @babel/plugin-proposal-decorators\n//      - node_modules\n//        - @babel-plugin-class-features\nconst featuresKey = \"@babel/plugin-class-features/featuresKey\";\nconst looseKey = \"@babel/plugin-class-features/looseKey\";\n\nif (!process.env.BABEL_8_BREAKING) {\n  // See https://github.com/babel/babel/issues/11622.\n  // Since preset-env sets loose for the fields and private methods plugins, it can\n  // cause conflicts with the loose mode set by an explicit plugin in the config.\n  // To solve this problem, we ignore preset-env's loose mode if another plugin\n  // explicitly sets it\n  // The code to handle this logic doesn't check that \"low priority loose\" is always\n  // the same. However, it is only set by the preset and not directly by users:\n  // unless someone _wants_ to break it, it shouldn't be a problem.\n  // eslint-disable-next-line no-var\n  var looseLowPriorityKey =\n    \"@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var canIgnoreLoose = function (file: File, feature: number) {\n    return !!(file.get(looseLowPriorityKey) & feature);\n  };\n}\n\nexport function enableFeature(file: File, feature: number, loose: boolean) {\n  // We can't blindly enable the feature because, if it was already set,\n  // \"loose\" can't be changed, so that\n  //   @babel/plugin-class-properties { loose: true }\n  //   @babel/plugin-class-properties { loose: false }\n  // is transformed in loose mode.\n  // We only enabled the feature if it was previously disabled.\n  if (process.env.BABEL_8_BREAKING) {\n    if (!hasFeature(file, feature)) {\n      file.set(featuresKey, file.get(featuresKey) | feature);\n      setLoose(file, feature, loose);\n    }\n  } else if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {\n    file.set(featuresKey, file.get(featuresKey) | feature);\n    if (\n      // @ts-expect-error comparing loose with internal private magic string\n      loose ===\n      \"#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error\"\n    ) {\n      setLoose(file, feature, true);\n      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n    } else if (\n      // @ts-expect-error comparing loose with internal private magic string\n      loose ===\n      \"#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error\"\n    ) {\n      setLoose(file, feature, false);\n      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n    } else {\n      setLoose(file, feature, loose);\n    }\n  }\n\n  let resolvedLoose: boolean | undefined;\n  for (const [mask, name] of featuresSameLoose) {\n    if (!hasFeature(file, mask)) continue;\n    if (!process.env.BABEL_8_BREAKING) {\n      if (canIgnoreLoose(file, mask)) continue;\n    }\n\n    const loose = isLoose(file, mask);\n\n    if (resolvedLoose === !loose) {\n      throw new Error(\n        \"'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, \" +\n          \"@babel/plugin-transform-private-methods and \" +\n          \"@babel/plugin-transform-private-property-in-object (when they are enabled).\" +\n          \"\\n\\n\" +\n          getBabelShowConfigForHint(file),\n      );\n    } else {\n      resolvedLoose = loose;\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // eslint-disable-next-line no-var\n        var higherPriorityPluginName = name;\n      }\n    }\n  }\n\n  if (!process.env.BABEL_8_BREAKING && resolvedLoose !== undefined) {\n    for (const [mask, name] of featuresSameLoose) {\n      if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {\n        setLoose(file, mask, resolvedLoose);\n        console.warn(\n          `Though the \"loose\" option was set to \"${!resolvedLoose}\" in your @babel/preset-env ` +\n            `config, it will not be used for ${name} since the \"loose\" mode option was set to ` +\n            `\"${resolvedLoose}\" for ${higherPriorityPluginName}.\\nThe \"loose\" option must be the ` +\n            `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` +\n            `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` +\n            `silence this warning by explicitly adding\\n` +\n            `\\t[\"${name}\", { \"loose\": ${resolvedLoose} }]\\n` +\n            `to the \"plugins\" section of your Babel config.` +\n            \"\\n\\n\" +\n            getBabelShowConfigForHint(file),\n        );\n      }\n    }\n  }\n}\n\nfunction getBabelShowConfigForHint(file: File) {\n  let { filename } = file.opts;\n  if (!filename || filename === \"unknown\") {\n    filename = \"[name of the input file]\";\n  }\n  return `\\\nIf you already set the same 'loose' mode for these plugins in your config, it's possible that they \\\nare enabled multiple times with different options.\nYou can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \\\nconfiguration:\n\\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${filename} <your build command>\nSee https://babeljs.io/docs/configuration#print-effective-configs for more info.`;\n}\n\nfunction hasFeature(file: File, feature: number) {\n  return !!(file.get(featuresKey) & feature);\n}\n\nexport function isLoose(file: File, feature: number) {\n  return !!(file.get(looseKey) & feature);\n}\n\nfunction setLoose(file: File, feature: number, loose: boolean) {\n  if (loose) file.set(looseKey, file.get(looseKey) | feature);\n  else file.set(looseKey, file.get(looseKey) & ~feature);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);\n  }\n}\n\nexport function shouldTransform(path: NodePath<t.Class>, file: File): boolean {\n  let decoratorPath: NodePath<t.Decorator> | null = null;\n  let publicFieldPath: NodePath<t.ClassProperty> | null = null;\n  let privateFieldPath: NodePath<t.ClassPrivateProperty> | null = null;\n  let privateMethodPath: NodePath<t.ClassPrivateMethod> | null = null;\n  let staticBlockPath: NodePath<t.StaticBlock> | null = null;\n\n  if (hasOwnDecorators(path.node)) {\n    decoratorPath = path.get(\"decorators.0\");\n  }\n  for (const el of path.get(\"body.body\")) {\n    if (!decoratorPath && hasOwnDecorators(el.node)) {\n      decoratorPath = el.get(\"decorators.0\");\n    }\n    if (!publicFieldPath && el.isClassProperty()) {\n      publicFieldPath = el;\n    }\n    if (!privateFieldPath && el.isClassPrivateProperty()) {\n      privateFieldPath = el;\n    }\n    // NOTE: path.isClassPrivateMethod() it isn't supported in <7.2.0\n    if (!privateMethodPath && el.isClassPrivateMethod?.()) {\n      privateMethodPath = el;\n    }\n    if (!staticBlockPath && el.isStaticBlock?.()) {\n      staticBlockPath = el;\n    }\n  }\n\n  if (decoratorPath && privateFieldPath) {\n    throw privateFieldPath.buildCodeFrameError(\n      \"Private fields in decorated classes are not supported yet.\",\n    );\n  }\n  if (decoratorPath && privateMethodPath) {\n    throw privateMethodPath.buildCodeFrameError(\n      \"Private methods in decorated classes are not supported yet.\",\n    );\n  }\n\n  if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {\n    throw path.buildCodeFrameError(\n      \"Decorators are not enabled.\" +\n        \"\\nIf you are using \" +\n        '[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }], ' +\n        'make sure it comes *before* \"@babel/plugin-transform-class-properties\" ' +\n        \"and enable loose mode, like so:\\n\" +\n        '\\t[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }]\\n' +\n        '\\t[\"@babel/plugin-transform-class-properties\", { \"loose\": true }]',\n    );\n  }\n\n  if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {\n    throw privateMethodPath.buildCodeFrameError(\n      \"Class private methods are not enabled. \" +\n        \"Please add `@babel/plugin-transform-private-methods` to your configuration.\",\n    );\n  }\n\n  if (\n    (publicFieldPath || privateFieldPath) &&\n    !hasFeature(file, FEATURES.fields) &&\n    // We want to allow enabling the private-methods plugin even without enabling\n    // the class-properties plugin. Class fields will still be compiled in classes\n    // that contain private methods.\n    // This is already allowed with the other various class features plugins, but\n    // it's because they can fallback to a transform separated from this helper.\n    !hasFeature(file, FEATURES.privateMethods)\n  ) {\n    throw path.buildCodeFrameError(\n      \"Class fields are not enabled. \" +\n        \"Please add `@babel/plugin-transform-class-properties` to your configuration.\",\n    );\n  }\n\n  if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {\n    throw path.buildCodeFrameError(\n      \"Static class blocks are not enabled. \" +\n        \"Please add `@babel/plugin-transform-class-static-block` to your configuration.\",\n    );\n  }\n\n  if (decoratorPath || privateMethodPath || staticBlockPath) {\n    // If one of those feature is used we know that its transform is\n    // enabled, otherwise the previous checks throw.\n    return true;\n  }\n  if (\n    (publicFieldPath || privateFieldPath) &&\n    hasFeature(file, FEATURES.fields)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1055 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildCheckInRHS = buildCheckInRHS;
+exports.buildFieldsInitNodes = buildFieldsInitNodes;
+exports.buildPrivateNamesMap = buildPrivateNamesMap;
+exports.buildPrivateNamesNodes = buildPrivateNamesNodes;
+exports.privateNameVisitorFactory = privateNameVisitorFactory;
+exports.transformPrivateNamesUsage = transformPrivateNamesUsage;
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+var _helperMemberExpressionToFunctions = require("@babel/helper-member-expression-to-functions");
+var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers");
+var ts = require("./typescript.js");
+{
+  var newHelpers = file => {
+    ;
+    return file.availableHelper("classPrivateFieldGet2");
+  };
+}
+function buildPrivateNamesMap(className, privateFieldsAsSymbolsOrProperties, props, file) {
+  const privateNamesMap = new Map();
+  let classBrandId;
+  for (const prop of props) {
+    if (prop.isPrivate()) {
+      const {
+        name
+      } = prop.node.key.id;
+      let update = privateNamesMap.get(name);
+      if (!update) {
+        const isMethod = !prop.isProperty();
+        const isStatic = prop.node.static;
+        let initAdded = false;
+        let id;
+        if (!privateFieldsAsSymbolsOrProperties && newHelpers(file) && isMethod && !isStatic) {
+          var _classBrandId;
+          initAdded = !!classBrandId;
+          (_classBrandId = classBrandId) != null ? _classBrandId : classBrandId = prop.scope.generateUidIdentifier(`${className}_brand`);
+          id = classBrandId;
+        } else {
+          id = prop.scope.generateUidIdentifier(name);
+        }
+        update = {
+          id,
+          static: isStatic,
+          method: isMethod,
+          initAdded
+        };
+        privateNamesMap.set(name, update);
+      }
+      if (prop.isClassPrivateMethod()) {
+        if (prop.node.kind === "get") {
+          const {
+            body
+          } = prop.node.body;
+          let $;
+          if (body.length === 1 && _core.types.isReturnStatement($ = body[0]) && _core.types.isCallExpression($ = $.argument) && $.arguments.length === 1 && _core.types.isThisExpression($.arguments[0]) && _core.types.isIdentifier($ = $.callee)) {
+            update.getId = _core.types.cloneNode($);
+            update.getterDeclared = true;
+          } else {
+            update.getId = prop.scope.generateUidIdentifier(`get_${name}`);
+          }
+        } else if (prop.node.kind === "set") {
+          const {
+            params
+          } = prop.node;
+          const {
+            body
+          } = prop.node.body;
+          let $;
+          if (body.length === 1 && _core.types.isExpressionStatement($ = body[0]) && _core.types.isCallExpression($ = $.expression) && $.arguments.length === 2 && _core.types.isThisExpression($.arguments[0]) && _core.types.isIdentifier($.arguments[1], {
+            name: params[0].name
+          }) && _core.types.isIdentifier($ = $.callee)) {
+            update.setId = _core.types.cloneNode($);
+            update.setterDeclared = true;
+          } else {
+            update.setId = prop.scope.generateUidIdentifier(`set_${name}`);
+          }
+        } else if (prop.node.kind === "method") {
+          update.methodId = prop.scope.generateUidIdentifier(name);
+        }
+      }
+      privateNamesMap.set(name, update);
+    }
+  }
+  return privateNamesMap;
+}
+function buildPrivateNamesNodes(privateNamesMap, privateFieldsAsProperties, privateFieldsAsSymbols, state) {
+  const initNodes = [];
+  const injectedIds = new Set();
+  for (const [name, value] of privateNamesMap) {
+    const {
+      static: isStatic,
+      method: isMethod,
+      getId,
+      setId
+    } = value;
+    const isGetterOrSetter = getId || setId;
+    const id = _core.types.cloneNode(value.id);
+    let init;
+    if (privateFieldsAsProperties) {
+      init = _core.types.callExpression(state.addHelper("classPrivateFieldLooseKey"), [_core.types.stringLiteral(name)]);
+    } else if (privateFieldsAsSymbols) {
+      init = _core.types.callExpression(_core.types.identifier("Symbol"), [_core.types.stringLiteral(name)]);
+    } else if (!isStatic) {
+      if (injectedIds.has(id.name)) continue;
+      injectedIds.add(id.name);
+      init = _core.types.newExpression(_core.types.identifier(isMethod && (!isGetterOrSetter || newHelpers(state)) ? "WeakSet" : "WeakMap"), []);
+    }
+    if (init) {
+      if (!privateFieldsAsSymbols) {
+        (0, _helperAnnotateAsPure.default)(init);
+      }
+      initNodes.push(_core.template.statement.ast`var ${id} = ${init}`);
+    }
+  }
+  return initNodes;
+}
+function privateNameVisitorFactory(visitor) {
+  const nestedVisitor = _traverse.visitors.environmentVisitor(Object.assign({}, visitor));
+  const privateNameVisitor = Object.assign({}, visitor, {
+    Class(path) {
+      const {
+        privateNamesMap
+      } = this;
+      const body = path.get("body.body");
+      const visiblePrivateNames = new Map(privateNamesMap);
+      const redeclared = [];
+      for (const prop of body) {
+        if (!prop.isPrivate()) continue;
+        const {
+          name
+        } = prop.node.key.id;
+        visiblePrivateNames.delete(name);
+        redeclared.push(name);
+      }
+      if (!redeclared.length) {
+        return;
+      }
+      path.get("body").traverse(nestedVisitor, Object.assign({}, this, {
+        redeclared
+      }));
+      path.traverse(privateNameVisitor, Object.assign({}, this, {
+        privateNamesMap: visiblePrivateNames
+      }));
+      path.skipKey("body");
+    }
+  });
+  return privateNameVisitor;
+}
+const privateNameVisitor = privateNameVisitorFactory({
+  PrivateName(path, {
+    noDocumentAll
+  }) {
+    const {
+      privateNamesMap,
+      redeclared
+    } = this;
+    const {
+      node,
+      parentPath
+    } = path;
+    if (!parentPath.isMemberExpression({
+      property: node
+    }) && !parentPath.isOptionalMemberExpression({
+      property: node
+    })) {
+      return;
+    }
+    const {
+      name
+    } = node.id;
+    if (!privateNamesMap.has(name)) return;
+    if (redeclared != null && redeclared.includes(name)) return;
+    this.handle(parentPath, noDocumentAll);
+  }
+});
+function unshadow(name, scope, innerBinding) {
+  while ((_scope = scope) != null && _scope.hasBinding(name) && !scope.bindingIdentifierEquals(name, innerBinding)) {
+    var _scope;
+    scope.rename(name);
+    scope = scope.parent;
+  }
+}
+function buildCheckInRHS(rhs, file, inRHSIsObject) {
+  if (inRHSIsObject || !(file.availableHelper != null && file.availableHelper("checkInRHS"))) return rhs;
+  return _core.types.callExpression(file.addHelper("checkInRHS"), [rhs]);
+}
+const privateInVisitor = privateNameVisitorFactory({
+  BinaryExpression(path, {
+    file
+  }) {
+    const {
+      operator,
+      left,
+      right
+    } = path.node;
+    if (operator !== "in") return;
+    if (!_core.types.isPrivateName(left)) return;
+    const {
+      privateFieldsAsProperties,
+      privateNamesMap,
+      redeclared
+    } = this;
+    const {
+      name
+    } = left.id;
+    if (!privateNamesMap.has(name)) return;
+    if (redeclared != null && redeclared.includes(name)) return;
+    unshadow(this.classRef.name, path.scope, this.innerBinding);
+    if (privateFieldsAsProperties) {
+      const {
+        id
+      } = privateNamesMap.get(name);
+      path.replaceWith(_core.template.expression.ast`
+        Object.prototype.hasOwnProperty.call(${buildCheckInRHS(right, file)}, ${_core.types.cloneNode(id)})
+      `);
+      return;
+    }
+    const {
+      id,
+      static: isStatic
+    } = privateNamesMap.get(name);
+    if (isStatic) {
+      path.replaceWith(_core.template.expression.ast`${buildCheckInRHS(right, file)} === ${_core.types.cloneNode(this.classRef)}`);
+      return;
+    }
+    path.replaceWith(_core.template.expression.ast`${_core.types.cloneNode(id)}.has(${buildCheckInRHS(right, file)})`);
+  }
+});
+function readOnlyError(file, name) {
+  return _core.types.callExpression(file.addHelper("readOnlyError"), [_core.types.stringLiteral(`#${name}`)]);
+}
+function writeOnlyError(file, name) {
+  if (!file.availableHelper("writeOnlyError")) {
+    console.warn(`@babel/helpers is outdated, update it to silence this warning.`);
+    return _core.types.buildUndefinedNode();
+  }
+  return _core.types.callExpression(file.addHelper("writeOnlyError"), [_core.types.stringLiteral(`#${name}`)]);
+}
+function buildStaticPrivateFieldAccess(expr, noUninitializedPrivateFieldAccess) {
+  if (noUninitializedPrivateFieldAccess) return expr;
+  return _core.types.memberExpression(expr, _core.types.identifier("_"));
+}
+function autoInherits(fn) {
+  return function (member) {
+    return _core.types.inherits(fn.apply(this, arguments), member.node);
+  };
+}
+const privateNameHandlerSpec = {
+  memoise(member, count) {
+    const {
+      scope
+    } = member;
+    const {
+      object
+    } = member.node;
+    const memo = scope.maybeGenerateMemoised(object);
+    if (!memo) {
+      return;
+    }
+    this.memoiser.set(object, memo, count);
+  },
+  receiver(member) {
+    const {
+      object
+    } = member.node;
+    if (this.memoiser.has(object)) {
+      return _core.types.cloneNode(this.memoiser.get(object));
+    }
+    return _core.types.cloneNode(object);
+  },
+  get: autoInherits(function (member) {
+    const {
+      classRef,
+      privateNamesMap,
+      file,
+      innerBinding,
+      noUninitializedPrivateFieldAccess
+    } = this;
+    const privateName = member.node.property;
+    const {
+      name
+    } = privateName.id;
+    const {
+      id,
+      static: isStatic,
+      method: isMethod,
+      methodId,
+      getId,
+      setId
+    } = privateNamesMap.get(name);
+    const isGetterOrSetter = getId || setId;
+    const cloneId = id => _core.types.inherits(_core.types.cloneNode(id), privateName);
+    if (isStatic) {
+      unshadow(classRef.name, member.scope, innerBinding);
+      if (!newHelpers(file)) {
+        const helperName = isMethod && !isGetterOrSetter ? "classStaticPrivateMethodGet" : "classStaticPrivateFieldSpecGet";
+        return _core.types.callExpression(file.addHelper(helperName), [this.receiver(member), _core.types.cloneNode(classRef), cloneId(id)]);
+      }
+      const receiver = this.receiver(member);
+      const skipCheck = _core.types.isIdentifier(receiver) && receiver.name === classRef.name;
+      if (!isMethod) {
+        if (skipCheck) {
+          return buildStaticPrivateFieldAccess(cloneId(id), noUninitializedPrivateFieldAccess);
+        }
+        return buildStaticPrivateFieldAccess(_core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver, cloneId(id)]), noUninitializedPrivateFieldAccess);
+      }
+      if (getId) {
+        if (skipCheck) {
+          return _core.types.callExpression(cloneId(getId), [receiver]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateGetter"), [_core.types.cloneNode(classRef), receiver, cloneId(getId)]);
+      }
+      if (setId) {
+        const err = _core.types.buildUndefinedNode();
+        if (skipCheck) return err;
+        return _core.types.sequenceExpression([_core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver]), err]);
+      }
+      if (skipCheck) return cloneId(id);
+      return _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver, cloneId(id)]);
+    }
+    if (isMethod) {
+      if (isGetterOrSetter) {
+        if (!getId) {
+          return _core.types.sequenceExpression([this.receiver(member), writeOnlyError(file, name)]);
+        }
+        if (!newHelpers(file)) {
+          return _core.types.callExpression(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneId(id)]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateGetter"), [_core.types.cloneNode(id), this.receiver(member), cloneId(getId)]);
+      }
+      if (!newHelpers(file)) {
+        return _core.types.callExpression(file.addHelper("classPrivateMethodGet"), [this.receiver(member), _core.types.cloneNode(id), cloneId(methodId)]);
+      }
+      return _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(id), this.receiver(member), cloneId(methodId)]);
+    }
+    if (newHelpers(file)) {
+      return _core.types.callExpression(file.addHelper("classPrivateFieldGet2"), [cloneId(id), this.receiver(member)]);
+    }
+    return _core.types.callExpression(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneId(id)]);
+  }),
+  boundGet(member) {
+    this.memoise(member, 1);
+    return _core.types.callExpression(_core.types.memberExpression(this.get(member), _core.types.identifier("bind")), [this.receiver(member)]);
+  },
+  set: autoInherits(function (member, value) {
+    const {
+      classRef,
+      privateNamesMap,
+      file,
+      noUninitializedPrivateFieldAccess
+    } = this;
+    const privateName = member.node.property;
+    const {
+      name
+    } = privateName.id;
+    const {
+      id,
+      static: isStatic,
+      method: isMethod,
+      setId,
+      getId
+    } = privateNamesMap.get(name);
+    const isGetterOrSetter = getId || setId;
+    const cloneId = id => _core.types.inherits(_core.types.cloneNode(id), privateName);
+    if (isStatic) {
+      if (!newHelpers(file)) {
+        const helperName = isMethod && !isGetterOrSetter ? "classStaticPrivateMethodSet" : "classStaticPrivateFieldSpecSet";
+        return _core.types.callExpression(file.addHelper(helperName), [this.receiver(member), _core.types.cloneNode(classRef), cloneId(id), value]);
+      }
+      const receiver = this.receiver(member);
+      const skipCheck = _core.types.isIdentifier(receiver) && receiver.name === classRef.name;
+      if (isMethod && !setId) {
+        const err = readOnlyError(file, name);
+        if (skipCheck) return _core.types.sequenceExpression([value, err]);
+        return _core.types.sequenceExpression([value, _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver]), readOnlyError(file, name)]);
+      }
+      if (setId) {
+        if (skipCheck) {
+          return _core.types.callExpression(_core.types.cloneNode(setId), [receiver, value]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateSetter"), [_core.types.cloneNode(classRef), cloneId(setId), receiver, value]);
+      }
+      return _core.types.assignmentExpression("=", buildStaticPrivateFieldAccess(cloneId(id), noUninitializedPrivateFieldAccess), skipCheck ? value : _core.types.callExpression(file.addHelper("assertClassBrand"), [_core.types.cloneNode(classRef), receiver, value]));
+    }
+    if (isMethod) {
+      if (setId) {
+        if (!newHelpers(file)) {
+          return _core.types.callExpression(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneId(id), value]);
+        }
+        return _core.types.callExpression(file.addHelper("classPrivateSetter"), [_core.types.cloneNode(id), cloneId(setId), this.receiver(member), value]);
+      }
+      return _core.types.sequenceExpression([this.receiver(member), value, readOnlyError(file, name)]);
+    }
+    if (newHelpers(file)) {
+      return _core.types.callExpression(file.addHelper("classPrivateFieldSet2"), [cloneId(id), this.receiver(member), value]);
+    }
+    return _core.types.callExpression(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneId(id), value]);
+  }),
+  destructureSet(member) {
+    const {
+      classRef,
+      privateNamesMap,
+      file,
+      noUninitializedPrivateFieldAccess
+    } = this;
+    const privateName = member.node.property;
+    const {
+      name
+    } = privateName.id;
+    const {
+      id,
+      static: isStatic,
+      method: isMethod,
+      setId
+    } = privateNamesMap.get(name);
+    const cloneId = id => _core.types.inherits(_core.types.cloneNode(id), privateName);
+    if (!newHelpers(file)) {
+      if (isStatic) {
+        try {
+          var helper = file.addHelper("classStaticPrivateFieldDestructureSet");
+        } catch (_unused) {
+          throw new Error("Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \n" + "please update @babel/helpers to the latest version.");
+        }
+        return _core.types.memberExpression(_core.types.callExpression(helper, [this.receiver(member), _core.types.cloneNode(classRef), cloneId(id)]), _core.types.identifier("value"));
+      }
+      return _core.types.memberExpression(_core.types.callExpression(file.addHelper("classPrivateFieldDestructureSet"), [this.receiver(member), cloneId(id)]), _core.types.identifier("value"));
+    }
+    if (isMethod && !setId) {
+      return _core.types.memberExpression(_core.types.sequenceExpression([member.node.object, readOnlyError(file, name)]), _core.types.identifier("_"));
+    }
+    if (isStatic && !isMethod) {
+      const getCall = this.get(member);
+      if (!noUninitializedPrivateFieldAccess || !_core.types.isCallExpression(getCall)) {
+        return getCall;
+      }
+      const ref = getCall.arguments.pop();
+      getCall.arguments.push(_core.template.expression.ast`(_) => ${ref} = _`);
+      return _core.types.memberExpression(_core.types.callExpression(file.addHelper("toSetter"), [getCall]), _core.types.identifier("_"));
+    }
+    const setCall = this.set(member, _core.types.identifier("_"));
+    if (!_core.types.isCallExpression(setCall) || !_core.types.isIdentifier(setCall.arguments[setCall.arguments.length - 1], {
+      name: "_"
+    })) {
+      throw member.buildCodeFrameError("Internal Babel error while compiling this code. This is a Babel bug. " + "Please report it at https://github.com/babel/babel/issues.");
+    }
+    let args;
+    if (_core.types.isMemberExpression(setCall.callee, {
+      computed: false
+    }) && _core.types.isIdentifier(setCall.callee.property) && setCall.callee.property.name === "call") {
+      args = [setCall.callee.object, _core.types.arrayExpression(setCall.arguments.slice(1, -1)), setCall.arguments[0]];
+    } else {
+      args = [setCall.callee, _core.types.arrayExpression(setCall.arguments.slice(0, -1))];
+    }
+    return _core.types.memberExpression(_core.types.callExpression(file.addHelper("toSetter"), args), _core.types.identifier("_"));
+  },
+  call(member, args) {
+    this.memoise(member, 1);
+    return (0, _helperOptimiseCallExpression.default)(this.get(member), this.receiver(member), args, false);
+  },
+  optionalCall(member, args) {
+    this.memoise(member, 1);
+    return (0, _helperOptimiseCallExpression.default)(this.get(member), this.receiver(member), args, true);
+  },
+  delete() {
+    throw new Error("Internal Babel error: deleting private elements is a parsing error.");
+  }
+};
+const privateNameHandlerLoose = {
+  get(member) {
+    const {
+      privateNamesMap,
+      file
+    } = this;
+    const {
+      object
+    } = member.node;
+    const {
+      name
+    } = member.node.property.id;
+    return _core.template.expression`BASE(REF, PROP)[PROP]`({
+      BASE: file.addHelper("classPrivateFieldLooseBase"),
+      REF: _core.types.cloneNode(object),
+      PROP: _core.types.cloneNode(privateNamesMap.get(name).id)
+    });
+  },
+  set() {
+    throw new Error("private name handler with loose = true don't need set()");
+  },
+  boundGet(member) {
+    return _core.types.callExpression(_core.types.memberExpression(this.get(member), _core.types.identifier("bind")), [_core.types.cloneNode(member.node.object)]);
+  },
+  simpleSet(member) {
+    return this.get(member);
+  },
+  destructureSet(member) {
+    return this.get(member);
+  },
+  call(member, args) {
+    return _core.types.callExpression(this.get(member), args);
+  },
+  optionalCall(member, args) {
+    return _core.types.optionalCallExpression(this.get(member), args, true);
+  },
+  delete() {
+    throw new Error("Internal Babel error: deleting private elements is a parsing error.");
+  }
+};
+function transformPrivateNamesUsage(ref, path, privateNamesMap, {
+  privateFieldsAsProperties,
+  noUninitializedPrivateFieldAccess,
+  noDocumentAll,
+  innerBinding
+}, state) {
+  if (!privateNamesMap.size) return;
+  const body = path.get("body");
+  const handler = privateFieldsAsProperties ? privateNameHandlerLoose : privateNameHandlerSpec;
+  (0, _helperMemberExpressionToFunctions.default)(body, privateNameVisitor, Object.assign({
+    privateNamesMap,
+    classRef: ref,
+    file: state
+  }, handler, {
+    noDocumentAll,
+    noUninitializedPrivateFieldAccess,
+    innerBinding
+  }));
+  body.traverse(privateInVisitor, {
+    privateNamesMap,
+    classRef: ref,
+    file: state,
+    privateFieldsAsProperties,
+    innerBinding
+  });
+}
+function buildPrivateFieldInitLoose(ref, prop, privateNamesMap) {
+  const {
+    id
+  } = privateNamesMap.get(prop.node.key.id.name);
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.template.statement.ast`
+      Object.defineProperty(${ref}, ${_core.types.cloneNode(id)}, {
+        // configurable is false by default
+        // enumerable is false by default
+        writable: true,
+        value: ${value}
+      });
+    `, prop);
+}
+function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap, state) {
+  const {
+    id
+  } = privateNamesMap.get(prop.node.key.id.name);
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  {
+    if (!state.availableHelper("classPrivateFieldInitSpec")) {
+      return inheritPropComments(_core.template.statement.ast`${_core.types.cloneNode(id)}.set(${ref}, {
+          // configurable is always false for private elements
+          // enumerable is always false for private elements
+          writable: true,
+          value: ${value},
+        })`, prop);
+    }
+  }
+  const helper = state.addHelper("classPrivateFieldInitSpec");
+  return inheritLoc(inheritPropComments(_core.types.expressionStatement(_core.types.callExpression(helper, [_core.types.thisExpression(), inheritLoc(_core.types.cloneNode(id), prop.node.key), newHelpers(state) ? value : _core.template.expression.ast`{ writable: true, value: ${value} }`])), prop), prop.node);
+}
+function buildPrivateStaticFieldInitSpec(prop, privateNamesMap, noUninitializedPrivateFieldAccess) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const value = noUninitializedPrivateFieldAccess ? prop.node.value : _core.template.expression.ast`{
+        _: ${prop.node.value || _core.types.buildUndefinedNode()}
+      }`;
+  return inheritPropComments(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.cloneNode(privateName.id), value)]), prop);
+}
+{
+  var buildPrivateStaticFieldInitSpecOld = function (prop, privateNamesMap) {
+    const privateName = privateNamesMap.get(prop.node.key.id.name);
+    const {
+      id,
+      getId,
+      setId,
+      initAdded
+    } = privateName;
+    const isGetterOrSetter = getId || setId;
+    if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;
+    if (isGetterOrSetter) {
+      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+        initAdded: true
+      }));
+      return inheritPropComments(_core.template.statement.ast`
+          var ${_core.types.cloneNode(id)} = {
+            // configurable is false by default
+            // enumerable is false by default
+            // writable is false by default
+            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+          }
+        `, prop);
+    }
+    const value = prop.node.value || prop.scope.buildUndefinedNode();
+    return inheritPropComments(_core.template.statement.ast`
+        var ${_core.types.cloneNode(id)} = {
+          // configurable is false by default
+          // enumerable is false by default
+          writable: true,
+          value: ${value}
+        };
+      `, prop);
+  };
+}
+function buildPrivateMethodInitLoose(ref, prop, privateNamesMap) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    methodId,
+    id,
+    getId,
+    setId,
+    initAdded
+  } = privateName;
+  if (initAdded) return;
+  if (methodId) {
+    return inheritPropComments(_core.template.statement.ast`
+        Object.defineProperty(${ref}, ${id}, {
+          // configurable is false by default
+          // enumerable is false by default
+          // writable is false by default
+          value: ${methodId.name}
+        });
+      `, prop);
+  }
+  const isGetterOrSetter = getId || setId;
+  if (isGetterOrSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return inheritPropComments(_core.template.statement.ast`
+        Object.defineProperty(${ref}, ${id}, {
+          // configurable is false by default
+          // enumerable is false by default
+          // writable is false by default
+          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+        });
+      `, prop);
+  }
+}
+function buildPrivateInstanceMethodInitSpec(ref, prop, privateNamesMap, state) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  if (privateName.initAdded) return;
+  if (!newHelpers(state)) {
+    const isGetterOrSetter = privateName.getId || privateName.setId;
+    if (isGetterOrSetter) {
+      return buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state);
+    }
+  }
+  return buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state);
+}
+function buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    getId,
+    setId
+  } = privateName;
+  privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+    initAdded: true
+  }));
+  {
+    if (!state.availableHelper("classPrivateFieldInitSpec")) {
+      return inheritPropComments(_core.template.statement.ast`
+          ${id}.set(${ref}, {
+            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+          });
+        `, prop);
+    }
+  }
+  const helper = state.addHelper("classPrivateFieldInitSpec");
+  return inheritLoc(inheritPropComments(_core.template.statement.ast`${helper}(
+      ${_core.types.thisExpression()},
+      ${_core.types.cloneNode(id)},
+      {
+        get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+        set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+      },
+    )`, prop), prop.node);
+}
+function buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id
+  } = privateName;
+  {
+    if (!state.availableHelper("classPrivateMethodInitSpec")) {
+      return inheritPropComments(_core.template.statement.ast`${id}.add(${ref})`, prop);
+    }
+  }
+  const helper = state.addHelper("classPrivateMethodInitSpec");
+  return inheritPropComments(_core.template.statement.ast`${helper}(
+      ${_core.types.thisExpression()},
+      ${_core.types.cloneNode(id)}
+    )`, prop);
+}
+function buildPublicFieldInitLoose(ref, prop) {
+  const {
+    key,
+    computed
+  } = prop.node;
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(ref, key, computed || _core.types.isLiteral(key)), value)), prop);
+}
+function buildPublicFieldInitSpec(ref, prop, state) {
+  const {
+    key,
+    computed
+  } = prop.node;
+  const value = prop.node.value || prop.scope.buildUndefinedNode();
+  return inheritPropComments(_core.types.expressionStatement(_core.types.callExpression(state.addHelper("defineProperty"), [ref, computed || _core.types.isLiteral(key) ? key : _core.types.stringLiteral(key.name), value])), prop);
+}
+function buildPrivateStaticMethodInitLoose(ref, prop, state, privateNamesMap) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    methodId,
+    getId,
+    setId,
+    initAdded
+  } = privateName;
+  if (initAdded) return;
+  const isGetterOrSetter = getId || setId;
+  if (isGetterOrSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return inheritPropComments(_core.template.statement.ast`
+        Object.defineProperty(${ref}, ${id}, {
+          // configurable is false by default
+          // enumerable is false by default
+          // writable is false by default
+          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},
+          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}
+        })
+      `, prop);
+  }
+  return inheritPropComments(_core.template.statement.ast`
+      Object.defineProperty(${ref}, ${id}, {
+        // configurable is false by default
+        // enumerable is false by default
+        // writable is false by default
+        value: ${methodId.name}
+      });
+    `, prop);
+}
+function buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties = false) {
+  const privateName = privateNamesMap.get(prop.node.key.id.name);
+  const {
+    id,
+    methodId,
+    getId,
+    setId,
+    getterDeclared,
+    setterDeclared,
+    static: isStatic
+  } = privateName;
+  const {
+    params,
+    body,
+    generator,
+    async
+  } = prop.node;
+  const isGetter = getId && params.length === 0;
+  const isSetter = setId && params.length > 0;
+  if (isGetter && getterDeclared || isSetter && setterDeclared) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      initAdded: true
+    }));
+    return null;
+  }
+  if (newHelpers(file) && (isGetter || isSetter) && !privateFieldsAsSymbolsOrProperties) {
+    const scope = prop.get("body").scope;
+    const thisArg = scope.generateUidIdentifier("this");
+    const state = {
+      thisRef: thisArg,
+      argumentsPath: []
+    };
+    prop.traverse(thisContextVisitor, state);
+    if (state.argumentsPath.length) {
+      const argumentsId = scope.generateUidIdentifier("arguments");
+      scope.push({
+        id: argumentsId,
+        init: _core.template.expression.ast`[].slice.call(arguments, 1)`
+      });
+      for (const path of state.argumentsPath) {
+        path.replaceWith(_core.types.cloneNode(argumentsId));
+      }
+    }
+    params.unshift(_core.types.cloneNode(thisArg));
+  }
+  let declId = methodId;
+  if (isGetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      getterDeclared: true,
+      initAdded: true
+    }));
+    declId = getId;
+  } else if (isSetter) {
+    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
+      setterDeclared: true,
+      initAdded: true
+    }));
+    declId = setId;
+  } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {
+    declId = id;
+  }
+  return inheritPropComments(_core.types.functionDeclaration(_core.types.cloneNode(declId), params, body, generator, async), prop);
+}
+const thisContextVisitor = _traverse.visitors.environmentVisitor({
+  Identifier(path, state) {
+    if (state.argumentsPath && path.node.name === "arguments") {
+      state.argumentsPath.push(path);
+    }
+  },
+  UnaryExpression(path) {
+    const {
+      node
+    } = path;
+    if (node.operator === "delete") {
+      const argument = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes)(node.argument);
+      if (_core.types.isThisExpression(argument)) {
+        path.replaceWith(_core.types.booleanLiteral(true));
+      }
+    }
+  },
+  ThisExpression(path, state) {
+    state.needsClassRef = true;
+    path.replaceWith(_core.types.cloneNode(state.thisRef));
+  },
+  MetaProperty(path) {
+    const {
+      node,
+      scope
+    } = path;
+    if (node.meta.name === "new" && node.property.name === "target") {
+      path.replaceWith(scope.buildUndefinedNode());
+    }
+  }
+});
+const innerReferencesVisitor = {
+  ReferencedIdentifier(path, state) {
+    if (path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)) {
+      state.needsClassRef = true;
+      path.node.name = state.thisRef.name;
+    }
+  }
+};
+function replaceThisContext(path, ref, innerBindingRef) {
+  var _state$thisRef;
+  const state = {
+    thisRef: ref,
+    needsClassRef: false,
+    innerBinding: innerBindingRef
+  };
+  if (!path.isMethod()) {
+    path.traverse(thisContextVisitor, state);
+  }
+  if (innerBindingRef != null && (_state$thisRef = state.thisRef) != null && _state$thisRef.name && state.thisRef.name !== innerBindingRef.name) {
+    path.traverse(innerReferencesVisitor, state);
+  }
+  return state.needsClassRef;
+}
+function isNameOrLength({
+  key,
+  computed
+}) {
+  if (key.type === "Identifier") {
+    return !computed && (key.name === "name" || key.name === "length");
+  }
+  if (key.type === "StringLiteral") {
+    return key.value === "name" || key.value === "length";
+  }
+  return false;
+}
+function inheritPropComments(node, prop) {
+  _core.types.inheritLeadingComments(node, prop.node);
+  _core.types.inheritInnerComments(node, prop.node);
+  return node;
+}
+function inheritLoc(node, original) {
+  node.start = original.start;
+  node.end = original.end;
+  node.loc = original.loc;
+  return node;
+}
+function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPublicClassFields, privateFieldsAsSymbolsOrProperties, noUninitializedPrivateFieldAccess, constantSuper, innerBindingRef) {
+  var _ref, _ref2;
+  let classRefFlags = 0;
+  let injectSuperRef;
+  const staticNodes = [];
+  const instanceNodes = [];
+  let lastInstanceNodeReturnsThis = false;
+  const pureStaticNodes = [];
+  let classBindingNode = null;
+  const getSuperRef = _core.types.isIdentifier(superRef) ? () => superRef : () => {
+    var _injectSuperRef;
+    (_injectSuperRef = injectSuperRef) != null ? _injectSuperRef : injectSuperRef = props[0].scope.generateUidIdentifierBasedOnNode(superRef);
+    return injectSuperRef;
+  };
+  const classRefForInnerBinding = (_ref = ref) != null ? _ref : props[0].scope.generateUidIdentifier((innerBindingRef == null ? void 0 : innerBindingRef.name) || "Class");
+  (_ref2 = ref) != null ? _ref2 : ref = _core.types.cloneNode(innerBindingRef);
+  for (const prop of props) {
+    if (prop.isClassProperty()) {
+      ts.assertFieldTransformed(prop);
+    }
+    const isStatic = !(_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node)) && prop.node.static;
+    const isInstance = !isStatic;
+    const isPrivate = prop.isPrivate();
+    const isPublic = !isPrivate;
+    const isField = prop.isProperty();
+    const isMethod = !isField;
+    const isStaticBlock = prop.isStaticBlock == null ? void 0 : prop.isStaticBlock();
+    if (isStatic) classRefFlags |= 1;
+    if (isStatic || isMethod && isPrivate || isStaticBlock) {
+      new _helperReplaceSupers.default({
+        methodPath: prop,
+        constantSuper,
+        file: file,
+        refToPreserve: innerBindingRef,
+        getSuperRef,
+        getObjectRef() {
+          classRefFlags |= 2;
+          if (isStatic || isStaticBlock) {
+            return classRefForInnerBinding;
+          } else {
+            return _core.types.memberExpression(classRefForInnerBinding, _core.types.identifier("prototype"));
+          }
+        }
+      }).replace();
+      const replaced = replaceThisContext(prop, classRefForInnerBinding, innerBindingRef);
+      if (replaced) {
+        classRefFlags |= 2;
+      }
+    }
+    lastInstanceNodeReturnsThis = false;
+    switch (true) {
+      case isStaticBlock:
+        {
+          const blockBody = prop.node.body;
+          if (blockBody.length === 1 && _core.types.isExpressionStatement(blockBody[0])) {
+            staticNodes.push(inheritPropComments(blockBody[0], prop));
+          } else {
+            staticNodes.push(_core.types.inheritsComments(_core.template.statement.ast`(() => { ${blockBody} })()`, prop.node));
+          }
+          break;
+        }
+      case isStatic && isPrivate && isField && privateFieldsAsSymbolsOrProperties:
+        staticNodes.push(buildPrivateFieldInitLoose(_core.types.cloneNode(ref), prop, privateNamesMap));
+        break;
+      case isStatic && isPrivate && isField && !privateFieldsAsSymbolsOrProperties:
+        if (!newHelpers(file)) {
+          staticNodes.push(buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap));
+        } else {
+          staticNodes.push(buildPrivateStaticFieldInitSpec(prop, privateNamesMap, noUninitializedPrivateFieldAccess));
+        }
+        break;
+      case isStatic && isPublic && isField && setPublicClassFields:
+        if (!isNameOrLength(prop.node)) {
+          staticNodes.push(buildPublicFieldInitLoose(_core.types.cloneNode(ref), prop));
+          break;
+        }
+      case isStatic && isPublic && isField && !setPublicClassFields:
+        staticNodes.push(buildPublicFieldInitSpec(_core.types.cloneNode(ref), prop, file));
+        break;
+      case isInstance && isPrivate && isField && privateFieldsAsSymbolsOrProperties:
+        instanceNodes.push(buildPrivateFieldInitLoose(_core.types.thisExpression(), prop, privateNamesMap));
+        break;
+      case isInstance && isPrivate && isField && !privateFieldsAsSymbolsOrProperties:
+        instanceNodes.push(buildPrivateInstanceFieldInitSpec(_core.types.thisExpression(), prop, privateNamesMap, file));
+        break;
+      case isInstance && isPrivate && isMethod && privateFieldsAsSymbolsOrProperties:
+        instanceNodes.unshift(buildPrivateMethodInitLoose(_core.types.thisExpression(), prop, privateNamesMap));
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isInstance && isPrivate && isMethod && !privateFieldsAsSymbolsOrProperties:
+        instanceNodes.unshift(buildPrivateInstanceMethodInitSpec(_core.types.thisExpression(), prop, privateNamesMap, file));
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isStatic && isPrivate && isMethod && !privateFieldsAsSymbolsOrProperties:
+        if (!newHelpers(file)) {
+          staticNodes.unshift(buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap));
+        }
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isStatic && isPrivate && isMethod && privateFieldsAsSymbolsOrProperties:
+        staticNodes.unshift(buildPrivateStaticMethodInitLoose(_core.types.cloneNode(ref), prop, file, privateNamesMap));
+        pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
+        break;
+      case isInstance && isPublic && isField && setPublicClassFields:
+        instanceNodes.push(buildPublicFieldInitLoose(_core.types.thisExpression(), prop));
+        break;
+      case isInstance && isPublic && isField && !setPublicClassFields:
+        lastInstanceNodeReturnsThis = true;
+        instanceNodes.push(buildPublicFieldInitSpec(_core.types.thisExpression(), prop, file));
+        break;
+      default:
+        throw new Error("Unreachable.");
+    }
+  }
+  if (classRefFlags & 2 && innerBindingRef != null) {
+    classBindingNode = _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(classRefForInnerBinding), _core.types.cloneNode(innerBindingRef)));
+  }
+  return {
+    staticNodes: staticNodes.filter(Boolean),
+    instanceNodes: instanceNodes.filter(Boolean),
+    lastInstanceNodeReturnsThis,
+    pureStaticNodes: pureStaticNodes.filter(Boolean),
+    classBindingNode,
+    wrapClass(path) {
+      for (const prop of props) {
+        prop.node.leadingComments = null;
+        prop.remove();
+      }
+      if (injectSuperRef) {
+        path.scope.push({
+          id: _core.types.cloneNode(injectSuperRef)
+        });
+        path.set("superClass", _core.types.assignmentExpression("=", injectSuperRef, path.node.superClass));
+      }
+      if (classRefFlags !== 0) {
+        if (path.isClassExpression()) {
+          path.scope.push({
+            id: ref
+          });
+          path.replaceWith(_core.types.assignmentExpression("=", _core.types.cloneNode(ref), path.node));
+        } else {
+          if (innerBindingRef == null) {
+            path.node.id = ref;
+          }
+          if (classBindingNode != null) {
+            path.scope.push({
+              id: classRefForInnerBinding
+            });
+          }
+        }
+      }
+      return path;
+    }
+  };
+}
+
+//# sourceMappingURL=fields.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_traverse","_helperReplaceSupers","_helperMemberExpressionToFunctions","_helperOptimiseCallExpression","_helperAnnotateAsPure","_helperSkipTransparentExpressionWrappers","ts","newHelpers","file","availableHelper","buildPrivateNamesMap","className","privateFieldsAsSymbolsOrProperties","props","privateNamesMap","Map","classBrandId","prop","isPrivate","name","node","key","id","update","get","isMethod","isProperty","isStatic","static","initAdded","_classBrandId","scope","generateUidIdentifier","method","set","isClassPrivateMethod","kind","body","$","length","t","isReturnStatement","isCallExpression","argument","arguments","isThisExpression","isIdentifier","callee","getId","cloneNode","getterDeclared","params","isExpressionStatement","expression","setId","setterDeclared","methodId","buildPrivateNamesNodes","privateFieldsAsProperties","privateFieldsAsSymbols","state","initNodes","injectedIds","Set","value","isGetterOrSetter","init","callExpression","addHelper","stringLiteral","identifier","has","add","newExpression","annotateAsPure","push","template","statement","ast","privateNameVisitorFactory","visitor","nestedVisitor","visitors","environmentVisitor","Object","assign","privateNameVisitor","Class","path","visiblePrivateNames","redeclared","delete","traverse","skipKey","PrivateName","noDocumentAll","parentPath","isMemberExpression","property","isOptionalMemberExpression","includes","handle","unshadow","innerBinding","_scope","hasBinding","bindingIdentifierEquals","rename","parent","buildCheckInRHS","rhs","inRHSIsObject","privateInVisitor","BinaryExpression","operator","left","right","isPrivateName","classRef","replaceWith","readOnlyError","writeOnlyError","console","warn","buildUndefinedNode","buildStaticPrivateFieldAccess","expr","noUninitializedPrivateFieldAccess","memberExpression","autoInherits","fn","member","inherits","apply","privateNameHandlerSpec","memoise","count","object","memo","maybeGenerateMemoised","memoiser","receiver","privateName","cloneId","helperName","skipCheck","err","sequenceExpression","boundGet","assignmentExpression","destructureSet","helper","_unused","Error","getCall","ref","pop","setCall","buildCodeFrameError","args","computed","arrayExpression","slice","call","optimiseCall","optionalCall","privateNameHandlerLoose","BASE","REF","PROP","simpleSet","optionalCallExpression","transformPrivateNamesUsage","size","handler","memberExpressionToFunctions","buildPrivateFieldInitLoose","inheritPropComments","buildPrivateInstanceFieldInitSpec","inheritLoc","expressionStatement","thisExpression","buildPrivateStaticFieldInitSpec","variableDeclaration","variableDeclarator","buildPrivateStaticFieldInitSpecOld","buildPrivateMethodInitLoose","buildPrivateInstanceMethodInitSpec","buildPrivateAccessorInitialization","buildPrivateInstanceMethodInitialization","buildPublicFieldInitLoose","isLiteral","buildPublicFieldInitSpec","buildPrivateStaticMethodInitLoose","buildPrivateMethodDeclaration","generator","async","isGetter","isSetter","thisArg","thisRef","argumentsPath","thisContextVisitor","argumentsId","unshift","declId","functionDeclaration","Identifier","UnaryExpression","skipTransparentExprWrapperNodes","booleanLiteral","ThisExpression","needsClassRef","MetaProperty","meta","innerReferencesVisitor","ReferencedIdentifier","replaceThisContext","innerBindingRef","_state$thisRef","isNameOrLength","type","inheritLeadingComments","inheritInnerComments","original","start","end","loc","buildFieldsInitNodes","superRef","setPublicClassFields","constantSuper","_ref","_ref2","classRefFlags","injectSuperRef","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","getSuperRef","_injectSuperRef","generateUidIdentifierBasedOnNode","classRefForInnerBinding","isClassProperty","assertFieldTransformed","isStaticBlock","isInstance","isPublic","isField","ReplaceSupers","methodPath","refToPreserve","getObjectRef","replace","replaced","blockBody","inheritsComments","filter","Boolean","wrapClass","leadingComments","remove","superClass","isClassExpression"],"sources":["../src/fields.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { File, NodePath, Visitor, Scope } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type {\n  Handler,\n  HandlerState,\n} from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nimport * as ts from \"./typescript.ts\";\n\ninterface PrivateNameMetadata {\n  id: t.Identifier;\n  static: boolean;\n  method: boolean;\n  getId?: t.Identifier;\n  setId?: t.Identifier;\n  methodId?: t.Identifier;\n  initAdded?: boolean;\n  getterDeclared?: boolean;\n  setterDeclared?: boolean;\n}\n\ntype PrivateNamesMapGeneric<V> = Map<string, V>;\n\ntype PrivateNamesMap = PrivateNamesMapGeneric<PrivateNameMetadata>;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var newHelpers = (file: File) => {\n    if (!process.env.IS_PUBLISH) {\n      const { comments } = file.ast;\n      // This is needed for the test in\n      // babel-plugin-transform-class-properties/test/fixtures/regression/old-helpers\n      if (comments?.some(c => c.value.includes(\"@force-old-private-helpers\"))) {\n        return false;\n      }\n    }\n    return file.availableHelper(\"classPrivateFieldGet2\");\n  };\n}\n\nexport function buildPrivateNamesMap(\n  className: string,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  props: PropPath[],\n  file: File,\n) {\n  const privateNamesMap: PrivateNamesMap = new Map();\n  let classBrandId: t.Identifier;\n  for (const prop of props) {\n    if (prop.isPrivate()) {\n      const { name } = prop.node.key.id;\n      let update: PrivateNameMetadata = privateNamesMap.get(name);\n      if (!update) {\n        const isMethod = !prop.isProperty();\n        const isStatic = prop.node.static;\n        let initAdded = false;\n        let id: t.Identifier;\n        if (\n          !privateFieldsAsSymbolsOrProperties &&\n          (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n          isMethod &&\n          !isStatic\n        ) {\n          initAdded = !!classBrandId;\n          classBrandId ??= prop.scope.generateUidIdentifier(\n            `${className}_brand`,\n          );\n          id = classBrandId;\n        } else {\n          id = prop.scope.generateUidIdentifier(name);\n        }\n        update = { id, static: isStatic, method: isMethod, initAdded };\n        privateNamesMap.set(name, update);\n      }\n      if (prop.isClassPrivateMethod()) {\n        if (prop.node.kind === \"get\") {\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   get #foo() { return _some_fn(this); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isReturnStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.argument)) &&\n            $.arguments.length === 1 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.getId = t.cloneNode($);\n            update.getterDeclared = true;\n          } else {\n            update.getId = prop.scope.generateUidIdentifier(`get_${name}`);\n          }\n        } else if (prop.node.kind === \"set\") {\n          const { params } = prop.node;\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   set #foo(val) { _some_fn(this, val); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isExpressionStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.expression)) &&\n            $.arguments.length === 2 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier($.arguments[1], {\n              name: (params[0] as t.Identifier).name,\n            }) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.setId = t.cloneNode($);\n            update.setterDeclared = true;\n          } else {\n            update.setId = prop.scope.generateUidIdentifier(`set_${name}`);\n          }\n        } else if (prop.node.kind === \"method\") {\n          update.methodId = prop.scope.generateUidIdentifier(name);\n        }\n      }\n      privateNamesMap.set(name, update);\n    }\n  }\n  return privateNamesMap;\n}\n\nexport function buildPrivateNamesNodes(\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsProperties: boolean,\n  privateFieldsAsSymbols: boolean,\n  state: File,\n) {\n  const initNodes: t.Statement[] = [];\n\n  const injectedIds = new Set<string>();\n\n  for (const [name, value] of privateNamesMap) {\n    // - When the privateFieldsAsProperties assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   secret non-enumerable property. Hence, we also need to generate that\n    //   key (using the classPrivateFieldLooseKey helper).\n    // - When the privateFieldsAsSymbols assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   unique Symbol to define a non-enumerable property.\n    // - In spec mode, only instance fields need a \"private name\" initializer\n    //   because static fields are directly assigned to a variable in the\n    //   buildPrivateStaticFieldInitSpec function.\n    const { static: isStatic, method: isMethod, getId, setId } = value;\n    const isGetterOrSetter = getId || setId;\n    const id = t.cloneNode(value.id);\n\n    let init: t.Expression;\n\n    if (privateFieldsAsProperties) {\n      init = t.callExpression(state.addHelper(\"classPrivateFieldLooseKey\"), [\n        t.stringLiteral(name),\n      ]);\n    } else if (privateFieldsAsSymbols) {\n      init = t.callExpression(t.identifier(\"Symbol\"), [t.stringLiteral(name)]);\n    } else if (!isStatic) {\n      if (injectedIds.has(id.name)) continue;\n      injectedIds.add(id.name);\n\n      init = t.newExpression(\n        t.identifier(\n          isMethod &&\n            (process.env.BABEL_8_BREAKING ||\n              !isGetterOrSetter ||\n              newHelpers(state))\n            ? \"WeakSet\"\n            : \"WeakMap\",\n        ),\n        [],\n      );\n    }\n\n    if (init) {\n      if (!privateFieldsAsSymbols) {\n        annotateAsPure(init);\n      }\n      initNodes.push(template.statement.ast`var ${id} = ${init}`);\n    }\n  }\n\n  return initNodes;\n}\n\nexport interface PrivateNameVisitorState<V> {\n  privateNamesMap: PrivateNamesMapGeneric<V>;\n  redeclared?: string[];\n}\n\n// Traverses the class scope, handling private name references. If an inner\n// class redeclares the same private name, it will hand off traversal to the\n// restricted visitor (which doesn't traverse the inner class's inner scope).\nexport function privateNameVisitorFactory<S, V>(\n  visitor: Visitor<PrivateNameVisitorState<V & PrivateNameMetadata> & S>,\n) {\n  // Traverses the outer portion of a class, without touching the class's inner\n  // scope, for private names.\n  const nestedVisitor = visitors.environmentVisitor({ ...visitor });\n\n  const privateNameVisitor: Visitor<\n    PrivateNameVisitorState<V & PrivateNameMetadata> & S\n  > = {\n    ...visitor,\n\n    Class(path) {\n      const { privateNamesMap } = this;\n      const body = path.get(\"body.body\");\n\n      const visiblePrivateNames = new Map(privateNamesMap);\n      const redeclared = [];\n      for (const prop of body) {\n        if (!prop.isPrivate()) continue;\n        const { name } = prop.node.key.id;\n        visiblePrivateNames.delete(name);\n        redeclared.push(name);\n      }\n\n      // If the class doesn't redeclare any private fields, we can continue with\n      // our overall traversal.\n      if (!redeclared.length) {\n        return;\n      }\n\n      // This class redeclares some private field. We need to process the outer\n      // environment with access to all the outer privates, then we can process\n      // the inner environment with only the still-visible outer privates.\n      path.get(\"body\").traverse(nestedVisitor, {\n        ...this,\n        redeclared,\n      });\n      path.traverse(privateNameVisitor, {\n        ...this,\n        privateNamesMap: visiblePrivateNames,\n      });\n\n      // We'll eventually hit this class node again with the overall Class\n      // Features visitor, which'll process the redeclared privates.\n      path.skipKey(\"body\");\n    },\n  };\n\n  return privateNameVisitor;\n}\n\ninterface PrivateNameState {\n  privateNamesMap: PrivateNamesMap;\n  classRef: t.Identifier;\n  file: File;\n  noDocumentAll: boolean;\n  noUninitializedPrivateFieldAccess: boolean;\n  innerBinding?: t.Identifier;\n}\n\nconst privateNameVisitor = privateNameVisitorFactory<\n  HandlerState<PrivateNameState> & PrivateNameState,\n  PrivateNameMetadata\n>({\n  PrivateName(path, { noDocumentAll }) {\n    const { privateNamesMap, redeclared } = this;\n    const { node, parentPath } = path;\n\n    if (\n      !parentPath.isMemberExpression({ property: node }) &&\n      !parentPath.isOptionalMemberExpression({ property: node })\n    ) {\n      return;\n    }\n    const { name } = node.id;\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared?.includes(name)) return;\n\n    this.handle(parentPath, noDocumentAll);\n  },\n});\n\n// rename all bindings that shadows innerBinding\nfunction unshadow(\n  name: string,\n  scope: Scope,\n  innerBinding: t.Identifier | undefined,\n) {\n  // in some cases, scope.getBinding(name) === undefined\n  // so we check hasBinding to avoid keeping looping\n  // see: https://github.com/babel/babel/pull/13656#discussion_r686030715\n  while (\n    scope?.hasBinding(name) &&\n    !scope.bindingIdentifierEquals(name, innerBinding)\n  ) {\n    scope.rename(name);\n    scope = scope.parent;\n  }\n}\n\nexport function buildCheckInRHS(\n  rhs: t.Expression,\n  file: File,\n  inRHSIsObject?: boolean,\n) {\n  if (inRHSIsObject || !file.availableHelper?.(\"checkInRHS\")) return rhs;\n  return t.callExpression(file.addHelper(\"checkInRHS\"), [rhs]);\n}\n\nconst privateInVisitor = privateNameVisitorFactory<\n  {\n    classRef: t.Identifier;\n    file: File;\n    innerBinding?: t.Identifier;\n    privateFieldsAsProperties: boolean;\n  },\n  PrivateNameMetadata\n>({\n  BinaryExpression(path, { file }) {\n    const { operator, left, right } = path.node;\n    if (operator !== \"in\") return;\n    if (!t.isPrivateName(left)) return;\n\n    const { privateFieldsAsProperties, privateNamesMap, redeclared } = this;\n\n    const { name } = left.id;\n\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared?.includes(name)) return;\n\n    // if there are any local variable shadowing classRef, unshadow it\n    // see #12960\n    unshadow(this.classRef.name, path.scope, this.innerBinding);\n\n    if (privateFieldsAsProperties) {\n      const { id } = privateNamesMap.get(name);\n      path.replaceWith(template.expression.ast`\n        Object.prototype.hasOwnProperty.call(${buildCheckInRHS(\n          right,\n          file,\n        )}, ${t.cloneNode(id)})\n      `);\n      return;\n    }\n\n    const { id, static: isStatic } = privateNamesMap.get(name);\n\n    if (isStatic) {\n      path.replaceWith(\n        template.expression.ast`${buildCheckInRHS(\n          right,\n          file,\n        )} === ${t.cloneNode(this.classRef)}`,\n      );\n      return;\n    }\n\n    path.replaceWith(\n      template.expression.ast`${t.cloneNode(id)}.has(${buildCheckInRHS(\n        right,\n        file,\n      )})`,\n    );\n  },\n});\n\ninterface Receiver {\n  receiver(\n    this: HandlerState<PrivateNameState> & PrivateNameState,\n    member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  ): t.Expression;\n}\n\nfunction readOnlyError(file: File, name: string) {\n  return t.callExpression(file.addHelper(\"readOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction writeOnlyError(file: File, name: string) {\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !file.availableHelper(\"writeOnlyError\")\n  ) {\n    console.warn(\n      `@babel/helpers is outdated, update it to silence this warning.`,\n    );\n    return t.buildUndefinedNode();\n  }\n  return t.callExpression(file.addHelper(\"writeOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction buildStaticPrivateFieldAccess<N extends t.Expression>(\n  expr: N,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  if (noUninitializedPrivateFieldAccess) return expr;\n  return t.memberExpression(expr, t.identifier(\"_\"));\n}\n\nfunction autoInherits<\n  Member extends { node: t.Node },\n  Result extends t.Node,\n  Fn extends (member: Member, ...args: unknown[]) => Result,\n>(fn: Fn): Fn {\n  return function (this: ThisParameterType<Fn>, member) {\n    return t.inherits(fn.apply(this, arguments as any), member.node);\n  } as Fn;\n}\n\nconst privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =\n  {\n    memoise(member, count) {\n      const { scope } = member;\n      const { object } = member.node as { object: t.Expression };\n\n      const memo = scope.maybeGenerateMemoised(object);\n      if (!memo) {\n        return;\n      }\n\n      this.memoiser.set(object, memo, count);\n    },\n\n    receiver(member) {\n      const { object } = member.node as { object: t.Expression };\n\n      if (this.memoiser.has(object)) {\n        return t.cloneNode(this.memoiser.get(object));\n      }\n\n      return t.cloneNode(object);\n    },\n\n    get: autoInherits(function (member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        innerBinding,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        methodId,\n        getId,\n        setId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (isStatic) {\n        // if there are any local variable shadowing classRef, unshadow it\n        // see #12960\n        unshadow(classRef.name, member.scope, innerBinding);\n\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          // NOTE: This package has a peerDependency on @babel/core@^7.0.0, but these\n          // helpers have been introduced in @babel/helpers@7.1.0.\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodGet\"\n              : \"classStaticPrivateFieldSpecGet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            cloneId(id),\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (!isMethod) {\n          if (skipCheck) {\n            return buildStaticPrivateFieldAccess(\n              cloneId(id),\n              noUninitializedPrivateFieldAccess,\n            );\n          }\n\n          return buildStaticPrivateFieldAccess(\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n              cloneId(id),\n            ]),\n            noUninitializedPrivateFieldAccess,\n          );\n        }\n\n        if (getId) {\n          if (skipCheck) {\n            return t.callExpression(cloneId(getId), [receiver]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(classRef),\n            receiver,\n            cloneId(getId),\n          ]);\n        }\n\n        if (setId) {\n          const err = t.buildUndefinedNode(); // TODO: writeOnlyError(file, name)\n          if (skipCheck) return err;\n          return t.sequenceExpression([\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            err,\n          ]);\n        }\n\n        if (skipCheck) return cloneId(id);\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(classRef),\n          receiver,\n          cloneId(id),\n        ]);\n      }\n\n      if (isMethod) {\n        if (isGetterOrSetter) {\n          if (!getId) {\n            return t.sequenceExpression([\n              this.receiver(member),\n              writeOnlyError(file, name),\n            ]);\n          }\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n              this.receiver(member),\n              cloneId(id),\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(id),\n            this.receiver(member),\n            cloneId(getId),\n          ]);\n        }\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          return t.callExpression(file.addHelper(\"classPrivateMethodGet\"), [\n            this.receiver(member),\n            t.cloneNode(id),\n            cloneId(methodId),\n          ]);\n        }\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(id),\n          this.receiver(member),\n          cloneId(methodId),\n        ]);\n      }\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldGet2\"), [\n          cloneId(id),\n          this.receiver(member),\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n        this.receiver(member),\n        cloneId(id),\n      ]);\n    }),\n\n    boundGet(member) {\n      this.memoise(member, 1);\n\n      return t.callExpression(\n        t.memberExpression(this.get(member), t.identifier(\"bind\")),\n        [this.receiver(member)],\n      );\n    },\n\n    set: autoInherits(function (member, value) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n        getId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (isStatic) {\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodSet\"\n              : \"classStaticPrivateFieldSpecSet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            cloneId(id),\n            value,\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (isMethod && !setId) {\n          const err = readOnlyError(file, name);\n          if (skipCheck) return t.sequenceExpression([value, err]);\n          return t.sequenceExpression([\n            value,\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            readOnlyError(file, name),\n          ]);\n        }\n\n        if (setId) {\n          if (skipCheck) {\n            return t.callExpression(t.cloneNode(setId), [receiver, value]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(classRef),\n            cloneId(setId),\n            receiver,\n            value,\n          ]);\n        }\n        return t.assignmentExpression(\n          \"=\",\n          buildStaticPrivateFieldAccess(\n            cloneId(id),\n            noUninitializedPrivateFieldAccess,\n          ),\n          skipCheck\n            ? value\n            : t.callExpression(file.addHelper(\"assertClassBrand\"), [\n                t.cloneNode(classRef),\n                receiver,\n                value,\n              ]),\n        );\n      }\n      if (isMethod) {\n        if (setId) {\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n              this.receiver(member),\n              cloneId(id),\n              value,\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(id),\n            cloneId(setId),\n            this.receiver(member),\n            value,\n          ]);\n        }\n        return t.sequenceExpression([\n          this.receiver(member),\n          value,\n          readOnlyError(file, name),\n        ]);\n      }\n\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldSet2\"), [\n          cloneId(id),\n          this.receiver(member),\n          value,\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n        this.receiver(member),\n        cloneId(id),\n        value,\n      ]);\n    }),\n\n    destructureSet(member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n      } = privateNamesMap.get(name);\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n        if (isStatic) {\n          try {\n            // classStaticPrivateFieldDestructureSet was introduced in 7.13.10\n            // eslint-disable-next-line no-var\n            var helper = file.addHelper(\n              \"classStaticPrivateFieldDestructureSet\",\n            );\n          } catch {\n            throw new Error(\n              \"Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \\n\" +\n                \"please update @babel/helpers to the latest version.\",\n            );\n          }\n          return t.memberExpression(\n            t.callExpression(helper, [\n              this.receiver(member),\n              t.cloneNode(classRef),\n              cloneId(id),\n            ]),\n            t.identifier(\"value\"),\n          );\n        }\n\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"classPrivateFieldDestructureSet\"), [\n            this.receiver(member),\n            cloneId(id),\n          ]),\n          t.identifier(\"value\"),\n        );\n      }\n\n      if (isMethod && !setId) {\n        return t.memberExpression(\n          t.sequenceExpression([\n            // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n            member.node.object,\n            readOnlyError(file, name),\n          ]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      if (isStatic && !isMethod) {\n        const getCall = this.get(member);\n        if (\n          !noUninitializedPrivateFieldAccess ||\n          !t.isCallExpression(getCall)\n        ) {\n          return getCall;\n        }\n        const ref = getCall.arguments.pop();\n        getCall.arguments.push(template.expression.ast`(_) => ${ref} = _`);\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"toSetter\"), [getCall]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      const setCall = this.set(member, t.identifier(\"_\"));\n      if (\n        !t.isCallExpression(setCall) ||\n        !t.isIdentifier(setCall.arguments[setCall.arguments.length - 1], {\n          name: \"_\",\n        })\n      ) {\n        throw member.buildCodeFrameError(\n          \"Internal Babel error while compiling this code. This is a Babel bug. \" +\n            \"Please report it at https://github.com/babel/babel/issues.\",\n        );\n      }\n\n      // someHelper(foo, bar, _) -> someHelper, [foo, bar]\n      // aFn.call(foo, bar, _) -> aFn, [bar], foo\n      let args: t.Expression[];\n      if (\n        t.isMemberExpression(setCall.callee, { computed: false }) &&\n        t.isIdentifier(setCall.callee.property) &&\n        setCall.callee.property.name === \"call\"\n      ) {\n        args = [\n          // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n          setCall.callee.object,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(1, -1),\n          ),\n          setCall.arguments[0] as t.Expression,\n        ];\n      } else {\n        args = [\n          setCall.callee as t.Expression,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(0, -1),\n          ),\n        ];\n      }\n\n      return t.memberExpression(\n        t.callExpression(file.addHelper(\"toSetter\"), args),\n        t.identifier(\"_\"),\n      );\n    },\n\n    call(member, args: (t.Expression | t.SpreadElement)[]) {\n      // The first access (the get) should do the memo assignment.\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, false);\n    },\n\n    optionalCall(member, args: (t.Expression | t.SpreadElement)[]) {\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, true);\n    },\n\n    delete() {\n      throw new Error(\n        \"Internal Babel error: deleting private elements is a parsing error.\",\n      );\n    },\n  };\n\nconst privateNameHandlerLoose: Handler<PrivateNameState> = {\n  get(member) {\n    const { privateNamesMap, file } = this;\n    const { object } = member.node;\n    const { name } = (member.node.property as t.PrivateName).id;\n\n    return template.expression`BASE(REF, PROP)[PROP]`({\n      BASE: file.addHelper(\"classPrivateFieldLooseBase\"),\n      REF: t.cloneNode(object),\n      PROP: t.cloneNode(privateNamesMap.get(name).id),\n    });\n  },\n\n  set() {\n    // noop\n    throw new Error(\"private name handler with loose = true don't need set()\");\n  },\n\n  boundGet(member) {\n    return t.callExpression(\n      t.memberExpression(this.get(member), t.identifier(\"bind\")),\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n      [t.cloneNode(member.node.object as t.Expression)],\n    );\n  },\n\n  simpleSet(member) {\n    return this.get(member);\n  },\n\n  destructureSet(member) {\n    return this.get(member);\n  },\n\n  call(member, args) {\n    return t.callExpression(this.get(member), args);\n  },\n\n  optionalCall(member, args) {\n    return t.optionalCallExpression(this.get(member), args, true);\n  },\n\n  delete() {\n    throw new Error(\n      \"Internal Babel error: deleting private elements is a parsing error.\",\n    );\n  },\n};\n\nexport function transformPrivateNamesUsage(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  privateNamesMap: PrivateNamesMap,\n  {\n    privateFieldsAsProperties,\n    noUninitializedPrivateFieldAccess,\n    noDocumentAll,\n    innerBinding,\n  }: {\n    privateFieldsAsProperties: boolean;\n    noUninitializedPrivateFieldAccess: boolean;\n    noDocumentAll: boolean;\n    innerBinding: t.Identifier;\n  },\n  state: File,\n) {\n  if (!privateNamesMap.size) return;\n\n  const body = path.get(\"body\");\n  const handler = privateFieldsAsProperties\n    ? privateNameHandlerLoose\n    : privateNameHandlerSpec;\n\n  memberExpressionToFunctions<PrivateNameState>(body, privateNameVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    ...handler,\n    noDocumentAll,\n    noUninitializedPrivateFieldAccess,\n    innerBinding,\n  });\n  body.traverse(privateInVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    privateFieldsAsProperties,\n    innerBinding,\n  });\n}\n\nfunction buildPrivateFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${t.cloneNode(id)}, {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ${value}\n      });\n    ` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPrivateInstanceFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${t.cloneNode(id)}.set(${ref}, {\n          // configurable is always false for private elements\n          // enumerable is always false for private elements\n          writable: true,\n          value: ${value},\n        })` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritLoc(\n    inheritPropComments(\n      t.expressionStatement(\n        t.callExpression(helper, [\n          t.thisExpression(),\n          inheritLoc(t.cloneNode(id), prop.node.key),\n          process.env.BABEL_8_BREAKING || newHelpers(state)\n            ? value\n            : template.expression.ast`{ writable: true, value: ${value} }`,\n        ]),\n      ),\n      prop,\n    ),\n    prop.node,\n  );\n}\n\nfunction buildPrivateStaticFieldInitSpec(\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  const value = noUninitializedPrivateFieldAccess\n    ? prop.node.value\n    : template.expression.ast`{\n        _: ${prop.node.value || t.buildUndefinedNode()}\n      }`;\n\n  return inheritPropComments(\n    t.variableDeclaration(\"var\", [\n      t.variableDeclarator(t.cloneNode(privateName.id), value),\n    ]),\n    prop,\n  );\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var buildPrivateStaticFieldInitSpecOld = function (\n    prop: NodePath<t.ClassPrivateProperty>,\n    privateNamesMap: PrivateNamesMap,\n  ) {\n    const privateName = privateNamesMap.get(prop.node.key.id.name);\n    const { id, getId, setId, initAdded } = privateName;\n    const isGetterOrSetter = getId || setId;\n\n    if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;\n\n    if (isGetterOrSetter) {\n      privateNamesMap.set(prop.node.key.id.name, {\n        ...privateName,\n        initAdded: true,\n      });\n\n      return inheritPropComments(\n        template.statement.ast`\n          var ${t.cloneNode(id)} = {\n            // configurable is false by default\n            // enumerable is false by default\n            // writable is false by default\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          }\n        `,\n        prop,\n      );\n    }\n\n    const value = prop.node.value || prop.scope.buildUndefinedNode();\n    return inheritPropComments(\n      template.statement.ast`\n        var ${t.cloneNode(id)} = {\n          // configurable is false by default\n          // enumerable is false by default\n          writable: true,\n          value: ${value}\n        };\n      `,\n      prop,\n    );\n  };\n}\n\nfunction buildPrivateMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { methodId, id, getId, setId, initAdded } = privateName;\n  if (initAdded) return;\n\n  if (methodId) {\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          value: ${methodId.name}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n}\n\nfunction buildPrivateInstanceMethodInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  if (privateName.initAdded) return;\n\n  if (!process.env.BABEL_8_BREAKING && !newHelpers(state)) {\n    const isGetterOrSetter = privateName.getId || privateName.setId;\n    if (isGetterOrSetter) {\n      return buildPrivateAccessorInitialization(\n        ref,\n        prop,\n        privateNamesMap,\n        state,\n      );\n    }\n  }\n\n  return buildPrivateInstanceMethodInitialization(\n    ref,\n    prop,\n    privateNamesMap,\n    state,\n  );\n}\n\nfunction buildPrivateAccessorInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, getId, setId } = privateName;\n\n  privateNamesMap.set(prop.node.key.id.name, {\n    ...privateName,\n    initAdded: true,\n  });\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`\n          ${id}.set(${ref}, {\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          });\n        ` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritLoc(\n    inheritPropComments(\n      template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)},\n      {\n        get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n        set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n      },\n    )` as t.ExpressionStatement,\n      prop,\n    ),\n    prop.node,\n  );\n}\n\nfunction buildPrivateInstanceMethodInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id } = privateName;\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateMethodInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${id}.add(${ref})` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateMethodInitSpec\");\n  return inheritPropComments(\n    template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)}\n    )` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(ref, key, computed || t.isLiteral(key)),\n        value,\n      ),\n    ),\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n  state: File,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.callExpression(state.addHelper(\"defineProperty\"), [\n        ref,\n        computed || t.isLiteral(key)\n          ? key\n          : t.stringLiteral((key as t.Identifier).name),\n        value,\n      ]),\n    ),\n    prop,\n  );\n}\n\nfunction buildPrivateStaticMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  state: File,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, methodId, getId, setId, initAdded } = privateName;\n\n  if (initAdded) return;\n\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        })\n      `,\n      prop,\n    );\n  }\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${id}, {\n        // configurable is false by default\n        // enumerable is false by default\n        // writable is false by default\n        value: ${methodId.name}\n      });\n    `,\n    prop,\n  );\n}\n\nfunction buildPrivateMethodDeclaration(\n  file: File,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsSymbolsOrProperties = false,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const {\n    id,\n    methodId,\n    getId,\n    setId,\n    getterDeclared,\n    setterDeclared,\n    static: isStatic,\n  } = privateName;\n  const { params, body, generator, async } = prop.node;\n  const isGetter = getId && params.length === 0;\n  const isSetter = setId && params.length > 0;\n\n  if ((isGetter && getterDeclared) || (isSetter && setterDeclared)) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n    return null;\n  }\n\n  if (\n    (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n    (isGetter || isSetter) &&\n    !privateFieldsAsSymbolsOrProperties\n  ) {\n    const scope = prop.get(\"body\").scope;\n    const thisArg = scope.generateUidIdentifier(\"this\");\n    const state: ReplaceThisState = {\n      thisRef: thisArg,\n      argumentsPath: [],\n    };\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    prop.traverse(thisContextVisitor, state);\n    if (state.argumentsPath.length) {\n      const argumentsId = scope.generateUidIdentifier(\"arguments\");\n      scope.push({\n        id: argumentsId,\n        init: template.expression.ast`[].slice.call(arguments, 1)`,\n      });\n      for (const path of state.argumentsPath) {\n        path.replaceWith(t.cloneNode(argumentsId));\n      }\n    }\n\n    params.unshift(t.cloneNode(thisArg));\n  }\n\n  let declId = methodId;\n\n  if (isGetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      getterDeclared: true,\n      initAdded: true,\n    });\n    declId = getId;\n  } else if (isSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      setterDeclared: true,\n      initAdded: true,\n    });\n    declId = setId;\n  } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {\n    declId = id;\n  }\n\n  return inheritPropComments(\n    t.functionDeclaration(\n      t.cloneNode(declId),\n      // @ts-expect-error params for ClassMethod has TSParameterProperty\n      params,\n      body,\n      generator,\n      async,\n    ),\n    prop,\n  );\n}\n\ntype ReplaceThisState = {\n  thisRef: t.Identifier;\n  needsClassRef?: boolean;\n  innerBinding?: t.Identifier | null;\n  argumentsPath?: NodePath<t.Identifier>[];\n};\n\ntype ReplaceInnerBindingReferenceState = ReplaceThisState;\n\nconst thisContextVisitor = visitors.environmentVisitor<ReplaceThisState>({\n  Identifier(path, state) {\n    if (state.argumentsPath && path.node.name === \"arguments\") {\n      state.argumentsPath.push(path);\n    }\n  },\n  UnaryExpression(path) {\n    // Replace `delete this` with `true`\n    const { node } = path;\n    if (node.operator === \"delete\") {\n      const argument = skipTransparentExprWrapperNodes(node.argument);\n      if (t.isThisExpression(argument)) {\n        path.replaceWith(t.booleanLiteral(true));\n      }\n    }\n  },\n  ThisExpression(path, state) {\n    state.needsClassRef = true;\n    path.replaceWith(t.cloneNode(state.thisRef));\n  },\n  MetaProperty(path) {\n    const { node, scope } = path;\n    // if there are `new.target` in static field\n    // we should replace it with `undefined`\n    if (node.meta.name === \"new\" && node.property.name === \"target\") {\n      path.replaceWith(scope.buildUndefinedNode());\n    }\n  },\n});\n\nconst innerReferencesVisitor: Visitor<ReplaceInnerBindingReferenceState> = {\n  ReferencedIdentifier(path, state) {\n    if (\n      path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)\n    ) {\n      state.needsClassRef = true;\n      path.node.name = state.thisRef.name;\n    }\n  },\n};\n\nfunction replaceThisContext(\n  path: PropPath,\n  ref: t.Identifier,\n  innerBindingRef: t.Identifier | null,\n) {\n  const state: ReplaceThisState = {\n    thisRef: ref,\n    needsClassRef: false,\n    innerBinding: innerBindingRef,\n  };\n  if (!path.isMethod()) {\n    // replace `this` in property initializers and static blocks\n    path.traverse(thisContextVisitor, state);\n  }\n\n  // todo: use innerBinding.referencePaths to avoid full traversal\n  if (\n    innerBindingRef != null &&\n    state.thisRef?.name &&\n    state.thisRef.name !== innerBindingRef.name\n  ) {\n    path.traverse(innerReferencesVisitor, state);\n  }\n\n  return state.needsClassRef;\n}\n\nexport type PropNode =\n  | t.ClassProperty\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.StaticBlock;\nexport type PropPath = NodePath<PropNode>;\n\nfunction isNameOrLength({ key, computed }: t.ClassProperty) {\n  if (key.type === \"Identifier\") {\n    return !computed && (key.name === \"name\" || key.name === \"length\");\n  }\n  if (key.type === \"StringLiteral\") {\n    return key.value === \"name\" || key.value === \"length\";\n  }\n  return false;\n}\n\n/**\n * Inherit comments from class members. This is a reduced version of\n * t.inheritsComments: the trailing comments are not inherited because\n * for most class members except the last one, their trailing comments are\n * the next sibling's leading comments.\n *\n * @template T transformed class member type\n * @param {T} node transformed class member\n * @param {PropPath} prop class member\n * @returns transformed class member type with comments inherited\n */\nfunction inheritPropComments<T extends t.Node>(node: T, prop: PropPath) {\n  t.inheritLeadingComments(node, prop.node);\n  t.inheritInnerComments(node, prop.node);\n  return node;\n}\n\nfunction inheritLoc<T extends t.Node>(node: T, original: t.Node) {\n  node.start = original.start;\n  node.end = original.end;\n  node.loc = original.loc;\n  return node;\n}\n\n/**\n * ClassRefFlag records the requirement of the class binding reference.\n *\n * @enum {number}\n */\nconst enum ClassRefFlag {\n  None,\n  /**\n   * When this flag is enabled, the binding reference can be the class id,\n   * if exists, or the uid identifier generated for class expression. The\n   * reference is safe to be consumed by [[Define]].\n   */\n  ForDefine = 1 << 0,\n  /**\n   * When this flag is enabled, the reference must be a uid, because the outer\n   * class binding can be mutated by user codes.\n   * E.g.\n   * class C { static p = C }; const oldC = C; C = null; oldC.p;\n   * we must memoize class `C` before defining the property `p`.\n   */\n  ForInnerBinding = 1 << 1,\n}\n\nexport function buildFieldsInitNodes(\n  ref: t.Identifier | null,\n  superRef: t.Expression | undefined,\n  props: PropPath[],\n  privateNamesMap: PrivateNamesMap,\n  file: File,\n  setPublicClassFields: boolean,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  noUninitializedPrivateFieldAccess: boolean,\n  constantSuper: boolean,\n  innerBindingRef: t.Identifier | null,\n) {\n  let classRefFlags = ClassRefFlag.None;\n  let injectSuperRef: t.Identifier;\n  const staticNodes: t.Statement[] = [];\n  const instanceNodes: t.ExpressionStatement[] = [];\n  let lastInstanceNodeReturnsThis = false;\n  // These nodes are pure and can be moved to the closest statement position\n  const pureStaticNodes: t.FunctionDeclaration[] = [];\n  let classBindingNode: t.ExpressionStatement | null = null;\n\n  const getSuperRef = t.isIdentifier(superRef)\n    ? () => superRef\n    : () => {\n        injectSuperRef ??=\n          props[0].scope.generateUidIdentifierBasedOnNode(superRef);\n        return injectSuperRef;\n      };\n\n  const classRefForInnerBinding =\n    ref ??\n    props[0].scope.generateUidIdentifier(innerBindingRef?.name || \"Class\");\n  ref ??= t.cloneNode(innerBindingRef);\n\n  for (const prop of props) {\n    if (prop.isClassProperty()) {\n      ts.assertFieldTransformed(prop);\n    }\n\n    // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n    const isStatic = !t.isStaticBlock?.(prop.node) && prop.node.static;\n    const isInstance = !isStatic;\n    const isPrivate = prop.isPrivate();\n    const isPublic = !isPrivate;\n    const isField = prop.isProperty();\n    const isMethod = !isField;\n    const isStaticBlock = prop.isStaticBlock?.();\n\n    if (isStatic) classRefFlags |= ClassRefFlag.ForDefine;\n\n    if (isStatic || (isMethod && isPrivate) || isStaticBlock) {\n      new ReplaceSupers({\n        methodPath: prop,\n        constantSuper,\n        file: file,\n        refToPreserve: innerBindingRef,\n        getSuperRef,\n        getObjectRef() {\n          classRefFlags |= ClassRefFlag.ForInnerBinding;\n          if (isStatic || isStaticBlock) {\n            return classRefForInnerBinding;\n          } else {\n            return t.memberExpression(\n              classRefForInnerBinding,\n              t.identifier(\"prototype\"),\n            );\n          }\n        },\n      }).replace();\n\n      const replaced = replaceThisContext(\n        prop,\n        classRefForInnerBinding,\n        innerBindingRef,\n      );\n      if (replaced) {\n        classRefFlags |= ClassRefFlag.ForInnerBinding;\n      }\n    }\n\n    lastInstanceNodeReturnsThis = false;\n\n    // TODO(ts): there are so many `ts-expect-error` inside cases since\n    // ts can not infer type from pre-computed values (or a case test)\n    // even change `isStaticBlock` to `t.isStaticBlock(prop)` will not make prop\n    // a `NodePath<t.StaticBlock>`\n    // this maybe a bug for ts\n    switch (true) {\n      case isStaticBlock: {\n        const blockBody = prop.node.body;\n        // We special-case the single expression case to avoid the iife, since\n        // it's common.\n        if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n          staticNodes.push(inheritPropComments(blockBody[0], prop));\n        } else {\n          staticNodes.push(\n            t.inheritsComments(\n              template.statement.ast`(() => { ${blockBody} })()`,\n              prop.node,\n            ),\n          );\n        }\n        break;\n      }\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.push(\n          buildPrivateFieldInitLoose(t.cloneNode(ref), prop, privateNamesMap),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        } else {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpec(\n              prop,\n              privateNamesMap,\n              noUninitializedPrivateFieldAccess,\n            ),\n          );\n        }\n        break;\n      case isStatic && isPublic && isField && setPublicClassFields:\n        // Functions always have non-writable .name and .length properties,\n        // so we must always use [[Define]] for them.\n        // It might still be possible to a computed static fields whose resulting\n        // key is \"name\" or \"length\", but the assumption is telling us that it's\n        // not going to happen.\n        if (!isNameOrLength(prop.node)) {\n          staticNodes.push(buildPublicFieldInitLoose(t.cloneNode(ref), prop));\n          break;\n        }\n      // falls through\n      case isStatic && isPublic && isField && !setPublicClassFields:\n        staticNodes.push(\n          buildPublicFieldInitSpec(t.cloneNode(ref), prop, file),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateFieldInitLoose(t.thisExpression(), prop, privateNamesMap),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateInstanceFieldInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateMethodInitLoose(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateInstanceMethodInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.unshift(\n            // @ts-expect-error checked in switch\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        }\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.unshift(\n          buildPrivateStaticMethodInitLoose(\n            t.cloneNode(ref),\n            prop,\n            file,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance && isPublic && isField && setPublicClassFields:\n        instanceNodes.push(buildPublicFieldInitLoose(t.thisExpression(), prop));\n        break;\n      case isInstance && isPublic && isField && !setPublicClassFields:\n        lastInstanceNodeReturnsThis = true;\n        instanceNodes.push(\n          buildPublicFieldInitSpec(t.thisExpression(), prop, file),\n        );\n        break;\n      default:\n        throw new Error(\"Unreachable.\");\n    }\n  }\n\n  if (classRefFlags & ClassRefFlag.ForInnerBinding && innerBindingRef != null) {\n    classBindingNode = t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.cloneNode(classRefForInnerBinding),\n        t.cloneNode(innerBindingRef),\n      ),\n    );\n  }\n\n  return {\n    staticNodes: staticNodes.filter(Boolean),\n    instanceNodes: instanceNodes.filter(Boolean),\n    lastInstanceNodeReturnsThis,\n    pureStaticNodes: pureStaticNodes.filter(Boolean),\n    classBindingNode,\n    wrapClass(path: NodePath<t.Class>) {\n      for (const prop of props) {\n        // Delete leading comments so that they don't get attached as\n        // trailing comments of the previous sibling.\n        // When transforming props, we explicitly attach their leading\n        // comments to the transformed node with `inheritPropComments`\n        // above.\n        prop.node.leadingComments = null;\n        prop.remove();\n      }\n\n      if (injectSuperRef) {\n        path.scope.push({ id: t.cloneNode(injectSuperRef) });\n        path.set(\n          \"superClass\",\n          t.assignmentExpression(\"=\", injectSuperRef, path.node.superClass),\n        );\n      }\n\n      if (classRefFlags !== ClassRefFlag.None) {\n        if (path.isClassExpression()) {\n          path.scope.push({ id: ref });\n          path.replaceWith(\n            t.assignmentExpression(\"=\", t.cloneNode(ref), path.node),\n          );\n        } else {\n          if (innerBindingRef == null) {\n            // export anonymous class declaration\n            path.node.id = ref;\n          }\n          if (classBindingNode != null) {\n            path.scope.push({ id: classRefForInnerBinding });\n          }\n        }\n      }\n\n      return path;\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,251 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "FEATURES", {
+  enumerable: true,
+  get: function () {
+    return _features.FEATURES;
+  }
+});
+Object.defineProperty(exports, "buildCheckInRHS", {
+  enumerable: true,
+  get: function () {
+    return _fields.buildCheckInRHS;
+  }
+});
+exports.createClassFeaturePlugin = createClassFeaturePlugin;
+Object.defineProperty(exports, "enableFeature", {
+  enumerable: true,
+  get: function () {
+    return _features.enableFeature;
+  }
+});
+Object.defineProperty(exports, "injectInitialization", {
+  enumerable: true,
+  get: function () {
+    return _misc.injectInitialization;
+  }
+});
+var _core = require("@babel/core");
+var _decorators = require("./decorators.js");
+var _semver = require("semver");
+var _fields = require("./fields.js");
+var _decorators2 = require("./decorators-2018-09.js");
+var _misc = require("./misc.js");
+var _features = require("./features.js");
+var _typescript = require("./typescript.js");
+const versionKey = "@babel/plugin-class-features/version";
+function createClassFeaturePlugin({
+  name,
+  feature,
+  loose,
+  manipulateOptions,
+  api,
+  inherits,
+  decoratorVersion
+}) {
+  var _api$assumption;
+  if (feature & _features.FEATURES.decorators) {
+    {
+      if (decoratorVersion === "2023-11" || decoratorVersion === "2023-05" || decoratorVersion === "2023-01" || decoratorVersion === "2022-03" || decoratorVersion === "2021-12") {
+        return (0, _decorators.default)(api, {
+          loose
+        }, decoratorVersion, inherits);
+      }
+    }
+  }
+  {
+    var _api;
+    (_api = api) != null ? _api : api = {
+      assumption: () => void 0
+    };
+  }
+  const setPublicClassFields = api.assumption("setPublicClassFields");
+  const privateFieldsAsSymbols = api.assumption("privateFieldsAsSymbols");
+  const privateFieldsAsProperties = api.assumption("privateFieldsAsProperties");
+  const noUninitializedPrivateFieldAccess = (_api$assumption = api.assumption("noUninitializedPrivateFieldAccess")) != null ? _api$assumption : false;
+  const constantSuper = api.assumption("constantSuper");
+  const noDocumentAll = api.assumption("noDocumentAll");
+  if (privateFieldsAsProperties && privateFieldsAsSymbols) {
+    throw new Error(`Cannot enable both the "privateFieldsAsProperties" and ` + `"privateFieldsAsSymbols" assumptions as the same time.`);
+  }
+  const privateFieldsAsSymbolsOrProperties = privateFieldsAsProperties || privateFieldsAsSymbols;
+  if (loose === true) {
+    const explicit = [];
+    if (setPublicClassFields !== undefined) {
+      explicit.push(`"setPublicClassFields"`);
+    }
+    if (privateFieldsAsProperties !== undefined) {
+      explicit.push(`"privateFieldsAsProperties"`);
+    }
+    if (privateFieldsAsSymbols !== undefined) {
+      explicit.push(`"privateFieldsAsSymbols"`);
+    }
+    if (explicit.length !== 0) {
+      console.warn(`[${name}]: You are using the "loose: true" option and you are` + ` explicitly setting a value for the ${explicit.join(" and ")}` + ` assumption${explicit.length > 1 ? "s" : ""}. The "loose" option` + ` can cause incompatibilities with the other class features` + ` plugins, so it's recommended that you replace it with the` + ` following top-level option:\n` + `\t"assumptions": {\n` + `\t\t"setPublicClassFields": true,\n` + `\t\t"privateFieldsAsSymbols": true\n` + `\t}`);
+    }
+  }
+  return {
+    name,
+    manipulateOptions,
+    inherits,
+    pre(file) {
+      (0, _features.enableFeature)(file, feature, loose);
+      {
+        if (typeof file.get(versionKey) === "number") {
+          file.set(versionKey, "7.25.9");
+          return;
+        }
+      }
+      if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.25.9")) {
+        file.set(versionKey, "7.25.9");
+      }
+    },
+    visitor: {
+      Class(path, {
+        file
+      }) {
+        var _ref;
+        if (file.get(versionKey) !== "7.25.9") return;
+        if (!(0, _features.shouldTransform)(path, file)) return;
+        const pathIsClassDeclaration = path.isClassDeclaration();
+        if (pathIsClassDeclaration) (0, _typescript.assertFieldTransformed)(path);
+        const loose = (0, _features.isLoose)(file, feature);
+        let constructor;
+        const isDecorated = (0, _decorators2.hasDecorators)(path.node);
+        const props = [];
+        const elements = [];
+        const computedPaths = [];
+        const privateNames = new Set();
+        const body = path.get("body");
+        for (const path of body.get("body")) {
+          if ((path.isClassProperty() || path.isClassMethod()) && path.node.computed) {
+            computedPaths.push(path);
+          }
+          if (path.isPrivate()) {
+            const {
+              name
+            } = path.node.key.id;
+            const getName = `get ${name}`;
+            const setName = `set ${name}`;
+            if (path.isClassPrivateMethod()) {
+              if (path.node.kind === "get") {
+                if (privateNames.has(getName) || privateNames.has(name) && !privateNames.has(setName)) {
+                  throw path.buildCodeFrameError("Duplicate private field");
+                }
+                privateNames.add(getName).add(name);
+              } else if (path.node.kind === "set") {
+                if (privateNames.has(setName) || privateNames.has(name) && !privateNames.has(getName)) {
+                  throw path.buildCodeFrameError("Duplicate private field");
+                }
+                privateNames.add(setName).add(name);
+              }
+            } else {
+              if (privateNames.has(name) && !privateNames.has(getName) && !privateNames.has(setName) || privateNames.has(name) && (privateNames.has(getName) || privateNames.has(setName))) {
+                throw path.buildCodeFrameError("Duplicate private field");
+              }
+              privateNames.add(name);
+            }
+          }
+          if (path.isClassMethod({
+            kind: "constructor"
+          })) {
+            constructor = path;
+          } else {
+            elements.push(path);
+            if (path.isProperty() || path.isPrivate() || path.isStaticBlock != null && path.isStaticBlock()) {
+              props.push(path);
+            }
+          }
+        }
+        {
+          if (!props.length && !isDecorated) return;
+        }
+        const innerBinding = path.node.id;
+        let ref;
+        if (!innerBinding || !pathIsClassDeclaration) {
+          {
+            var _path$ensureFunctionN;
+            (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+          }
+          path.ensureFunctionName(false);
+          ref = path.scope.generateUidIdentifier((innerBinding == null ? void 0 : innerBinding.name) || "Class");
+        }
+        const classRefForDefine = (_ref = ref) != null ? _ref : _core.types.cloneNode(innerBinding);
+        const privateNamesMap = (0, _fields.buildPrivateNamesMap)(classRefForDefine.name, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, props, file);
+        const privateNamesNodes = (0, _fields.buildPrivateNamesNodes)(privateNamesMap, privateFieldsAsProperties != null ? privateFieldsAsProperties : loose, privateFieldsAsSymbols != null ? privateFieldsAsSymbols : false, file);
+        (0, _fields.transformPrivateNamesUsage)(classRefForDefine, path, privateNamesMap, {
+          privateFieldsAsProperties: privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose,
+          noUninitializedPrivateFieldAccess,
+          noDocumentAll,
+          innerBinding
+        }, file);
+        let keysNodes, staticNodes, instanceNodes, lastInstanceNodeReturnsThis, pureStaticNodes, classBindingNode, wrapClass;
+        {
+          if (isDecorated) {
+            staticNodes = pureStaticNodes = keysNodes = [];
+            ({
+              instanceNodes,
+              wrapClass
+            } = (0, _decorators2.buildDecoratedClass)(classRefForDefine, path, elements, file));
+          } else {
+            keysNodes = (0, _misc.extractComputedKeys)(path, computedPaths, file);
+            ({
+              staticNodes,
+              pureStaticNodes,
+              instanceNodes,
+              lastInstanceNodeReturnsThis,
+              classBindingNode,
+              wrapClass
+            } = (0, _fields.buildFieldsInitNodes)(ref, path.node.superClass, props, privateNamesMap, file, setPublicClassFields != null ? setPublicClassFields : loose, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, noUninitializedPrivateFieldAccess, constantSuper != null ? constantSuper : loose, innerBinding));
+          }
+        }
+        if (instanceNodes.length > 0) {
+          (0, _misc.injectInitialization)(path, constructor, instanceNodes, (referenceVisitor, state) => {
+            {
+              if (isDecorated) return;
+            }
+            for (const prop of props) {
+              if (_core.types.isStaticBlock != null && _core.types.isStaticBlock(prop.node) || prop.node.static) continue;
+              prop.traverse(referenceVisitor, state);
+            }
+          }, lastInstanceNodeReturnsThis);
+        }
+        const wrappedPath = wrapClass(path);
+        wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);
+        if (staticNodes.length > 0) {
+          wrappedPath.insertAfter(staticNodes);
+        }
+        if (pureStaticNodes.length > 0) {
+          wrappedPath.find(parent => parent.isStatement() || parent.isDeclaration()).insertAfter(pureStaticNodes);
+        }
+        if (classBindingNode != null && pathIsClassDeclaration) {
+          wrappedPath.insertAfter(classBindingNode);
+        }
+      },
+      ExportDefaultDeclaration(path, {
+        file
+      }) {
+        {
+          if (file.get(versionKey) !== "7.25.9") return;
+          const decl = path.get("declaration");
+          if (decl.isClassDeclaration() && (0, _decorators2.hasDecorators)(decl.node)) {
+            if (decl.node.id) {
+              {
+                var _path$splitExportDecl;
+                (_path$splitExportDecl = path.splitExportDeclaration) != null ? _path$splitExportDecl : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+              }
+              path.splitExportDeclaration();
+            } else {
+              decl.node.type = "ClassExpression";
+            }
+          }
+        }
+      }
+    }
+  };
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_decorators","_semver","_fields","_decorators2","_misc","_features","_typescript","versionKey","createClassFeaturePlugin","name","feature","loose","manipulateOptions","api","inherits","decoratorVersion","_api$assumption","FEATURES","decorators","createDecoratorTransform","_api","assumption","setPublicClassFields","privateFieldsAsSymbols","privateFieldsAsProperties","noUninitializedPrivateFieldAccess","constantSuper","noDocumentAll","Error","privateFieldsAsSymbolsOrProperties","explicit","undefined","push","length","console","warn","join","pre","file","enableFeature","get","set","semver","lt","visitor","Class","path","_ref","shouldTransform","pathIsClassDeclaration","isClassDeclaration","assertFieldTransformed","isLoose","constructor","isDecorated","hasDecorators","node","props","elements","computedPaths","privateNames","Set","body","isClassProperty","isClassMethod","computed","isPrivate","key","id","getName","setName","isClassPrivateMethod","kind","has","buildCodeFrameError","add","isProperty","isStaticBlock","innerBinding","ref","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype","scope","generateUidIdentifier","classRefForDefine","t","cloneNode","privateNamesMap","buildPrivateNamesMap","privateNamesNodes","buildPrivateNamesNodes","transformPrivateNamesUsage","keysNodes","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","wrapClass","buildDecoratedClass","extractComputedKeys","buildFieldsInitNodes","superClass","injectInitialization","referenceVisitor","state","prop","static","traverse","wrappedPath","insertBefore","insertAfter","find","parent","isStatement","isDeclaration","ExportDefaultDeclaration","decl","_path$splitExportDecl","splitExportDeclaration","type"],"sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginAPI, PluginObject, NodePath } from \"@babel/core\";\nimport createDecoratorTransform from \"./decorators.ts\";\nimport type { DecoratorVersionKind } from \"./decorators.ts\";\n\nimport semver from \"semver\";\n\nimport {\n  buildPrivateNamesNodes,\n  buildPrivateNamesMap,\n  transformPrivateNamesUsage,\n  buildFieldsInitNodes,\n  buildCheckInRHS,\n} from \"./fields.ts\";\nimport type { PropPath } from \"./fields.ts\";\nimport { buildDecoratedClass, hasDecorators } from \"./decorators-2018-09.ts\";\nimport { injectInitialization, extractComputedKeys } from \"./misc.ts\";\nimport {\n  enableFeature,\n  FEATURES,\n  isLoose,\n  shouldTransform,\n} from \"./features.ts\";\nimport { assertFieldTransformed } from \"./typescript.ts\";\n\nexport { FEATURES, enableFeature, injectInitialization, buildCheckInRHS };\n\nconst versionKey = \"@babel/plugin-class-features/version\";\n\ninterface Options {\n  name: string;\n  feature: number;\n  loose?: boolean;\n  inherits?: PluginObject[\"inherits\"];\n  manipulateOptions?: PluginObject[\"manipulateOptions\"];\n  api?: PluginAPI;\n  decoratorVersion?: DecoratorVersionKind | \"2018-09\";\n}\n\nexport function createClassFeaturePlugin({\n  name,\n  feature,\n  loose,\n  manipulateOptions,\n  api,\n  inherits,\n  decoratorVersion,\n}: Options): PluginObject {\n  if (feature & FEATURES.decorators) {\n    if (process.env.BABEL_8_BREAKING) {\n      return createDecoratorTransform(api, { loose }, \"2023-11\", inherits);\n    } else {\n      if (\n        decoratorVersion === \"2023-11\" ||\n        decoratorVersion === \"2023-05\" ||\n        decoratorVersion === \"2023-01\" ||\n        decoratorVersion === \"2022-03\" ||\n        decoratorVersion === \"2021-12\"\n      ) {\n        return createDecoratorTransform(\n          api,\n          { loose },\n          decoratorVersion,\n          inherits,\n        );\n      }\n    }\n  }\n  if (!process.env.BABEL_8_BREAKING) {\n    api ??= { assumption: () => void 0 as any } as any;\n  }\n  const setPublicClassFields = api.assumption(\"setPublicClassFields\");\n  const privateFieldsAsSymbols = api.assumption(\"privateFieldsAsSymbols\");\n  const privateFieldsAsProperties = api.assumption(\"privateFieldsAsProperties\");\n  const noUninitializedPrivateFieldAccess =\n    api.assumption(\"noUninitializedPrivateFieldAccess\") ?? false;\n  const constantSuper = api.assumption(\"constantSuper\");\n  const noDocumentAll = api.assumption(\"noDocumentAll\");\n\n  if (privateFieldsAsProperties && privateFieldsAsSymbols) {\n    throw new Error(\n      `Cannot enable both the \"privateFieldsAsProperties\" and ` +\n        `\"privateFieldsAsSymbols\" assumptions as the same time.`,\n    );\n  }\n  const privateFieldsAsSymbolsOrProperties =\n    privateFieldsAsProperties || privateFieldsAsSymbols;\n\n  if (loose === true) {\n    type AssumptionName = Parameters<PluginAPI[\"assumption\"]>[0];\n    const explicit: `\"${AssumptionName}\"`[] = [];\n\n    if (setPublicClassFields !== undefined) {\n      explicit.push(`\"setPublicClassFields\"`);\n    }\n    if (privateFieldsAsProperties !== undefined) {\n      explicit.push(`\"privateFieldsAsProperties\"`);\n    }\n    if (privateFieldsAsSymbols !== undefined) {\n      explicit.push(`\"privateFieldsAsSymbols\"`);\n    }\n    if (explicit.length !== 0) {\n      console.warn(\n        `[${name}]: You are using the \"loose: true\" option and you are` +\n          ` explicitly setting a value for the ${explicit.join(\" and \")}` +\n          ` assumption${explicit.length > 1 ? \"s\" : \"\"}. The \"loose\" option` +\n          ` can cause incompatibilities with the other class features` +\n          ` plugins, so it's recommended that you replace it with the` +\n          ` following top-level option:\\n` +\n          `\\t\"assumptions\": {\\n` +\n          `\\t\\t\"setPublicClassFields\": true,\\n` +\n          `\\t\\t\"privateFieldsAsSymbols\": true\\n` +\n          `\\t}`,\n      );\n    }\n  }\n\n  return {\n    name,\n    manipulateOptions,\n    inherits,\n\n    pre(file) {\n      enableFeature(file, feature, loose);\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // Until 7.21.4, we used to encode the version as a number.\n        // If file.get(versionKey) is a number, it has thus been\n        // set by an older version of this plugin.\n        if (typeof file.get(versionKey) === \"number\") {\n          file.set(versionKey, PACKAGE_JSON.version);\n          return;\n        }\n      }\n      if (\n        !file.get(versionKey) ||\n        semver.lt(file.get(versionKey), PACKAGE_JSON.version)\n      ) {\n        file.set(versionKey, PACKAGE_JSON.version);\n      }\n    },\n\n    visitor: {\n      Class(path, { file }) {\n        if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n        if (!shouldTransform(path, file)) return;\n\n        const pathIsClassDeclaration = path.isClassDeclaration();\n\n        if (pathIsClassDeclaration) assertFieldTransformed(path);\n\n        const loose = isLoose(file, feature);\n\n        let constructor: NodePath<t.ClassMethod>;\n        const isDecorated = hasDecorators(path.node);\n        const props: PropPath[] = [];\n        const elements = [];\n        const computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[] = [];\n        const privateNames = new Set<string>();\n        const body = path.get(\"body\");\n\n        for (const path of body.get(\"body\")) {\n          if (\n            // check path.node.computed is enough, but ts will complain\n            (path.isClassProperty() || path.isClassMethod()) &&\n            path.node.computed\n          ) {\n            computedPaths.push(path);\n          }\n\n          if (path.isPrivate()) {\n            const { name } = path.node.key.id;\n            const getName = `get ${name}`;\n            const setName = `set ${name}`;\n\n            if (path.isClassPrivateMethod()) {\n              if (path.node.kind === \"get\") {\n                if (\n                  privateNames.has(getName) ||\n                  (privateNames.has(name) && !privateNames.has(setName))\n                ) {\n                  throw path.buildCodeFrameError(\"Duplicate private field\");\n                }\n                privateNames.add(getName).add(name);\n              } else if (path.node.kind === \"set\") {\n                if (\n                  privateNames.has(setName) ||\n                  (privateNames.has(name) && !privateNames.has(getName))\n                ) {\n                  throw path.buildCodeFrameError(\"Duplicate private field\");\n                }\n                privateNames.add(setName).add(name);\n              }\n            } else {\n              if (\n                (privateNames.has(name) &&\n                  !privateNames.has(getName) &&\n                  !privateNames.has(setName)) ||\n                (privateNames.has(name) &&\n                  (privateNames.has(getName) || privateNames.has(setName)))\n              ) {\n                throw path.buildCodeFrameError(\"Duplicate private field\");\n              }\n\n              privateNames.add(name);\n            }\n          }\n\n          if (path.isClassMethod({ kind: \"constructor\" })) {\n            constructor = path;\n          } else {\n            elements.push(path);\n            if (\n              path.isProperty() ||\n              path.isPrivate() ||\n              path.isStaticBlock?.()\n            ) {\n              props.push(path as PropPath);\n            }\n          }\n        }\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (!props.length) return;\n        } else {\n          if (!props.length && !isDecorated) return;\n        }\n\n        const innerBinding = path.node.id;\n        let ref: t.Identifier | null;\n        if (!innerBinding || !pathIsClassDeclaration) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.ensureFunctionName ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n          }\n          (path as NodePath<t.ClassExpression>).ensureFunctionName(false);\n          ref = path.scope.generateUidIdentifier(innerBinding?.name || \"Class\");\n        }\n        const classRefForDefine = ref ?? t.cloneNode(innerBinding);\n\n        const privateNamesMap = buildPrivateNamesMap(\n          classRefForDefine.name,\n          privateFieldsAsSymbolsOrProperties ?? loose,\n          props,\n          file,\n        );\n        const privateNamesNodes = buildPrivateNamesNodes(\n          privateNamesMap,\n          privateFieldsAsProperties ?? loose,\n          privateFieldsAsSymbols ?? false,\n          file,\n        );\n\n        transformPrivateNamesUsage(\n          classRefForDefine,\n          path,\n          privateNamesMap,\n          {\n            privateFieldsAsProperties:\n              privateFieldsAsSymbolsOrProperties ?? loose,\n            noUninitializedPrivateFieldAccess,\n            noDocumentAll,\n            innerBinding,\n          },\n          file,\n        );\n\n        let keysNodes: t.Statement[],\n          staticNodes: t.Statement[],\n          instanceNodes: t.ExpressionStatement[],\n          lastInstanceNodeReturnsThis: boolean,\n          pureStaticNodes: t.FunctionDeclaration[],\n          classBindingNode: t.Statement | null,\n          wrapClass: (path: NodePath<t.Class>) => NodePath;\n\n        if (!process.env.BABEL_8_BREAKING) {\n          if (isDecorated) {\n            staticNodes = pureStaticNodes = keysNodes = [];\n            ({ instanceNodes, wrapClass } = buildDecoratedClass(\n              classRefForDefine,\n              path,\n              elements,\n              file,\n            ));\n          } else {\n            keysNodes = extractComputedKeys(path, computedPaths, file);\n            ({\n              staticNodes,\n              pureStaticNodes,\n              instanceNodes,\n              lastInstanceNodeReturnsThis,\n              classBindingNode,\n              wrapClass,\n            } = buildFieldsInitNodes(\n              ref,\n              path.node.superClass,\n              props,\n              privateNamesMap,\n              file,\n              setPublicClassFields ?? loose,\n              privateFieldsAsSymbolsOrProperties ?? loose,\n              noUninitializedPrivateFieldAccess,\n              constantSuper ?? loose,\n              innerBinding,\n            ));\n          }\n        } else {\n          keysNodes = extractComputedKeys(path, computedPaths, file);\n          ({\n            staticNodes,\n            pureStaticNodes,\n            instanceNodes,\n            lastInstanceNodeReturnsThis,\n            classBindingNode,\n            wrapClass,\n          } = buildFieldsInitNodes(\n            ref,\n            path.node.superClass,\n            props,\n            privateNamesMap,\n            file,\n            setPublicClassFields ?? loose,\n            privateFieldsAsSymbolsOrProperties ?? loose,\n            noUninitializedPrivateFieldAccess,\n            constantSuper ?? loose,\n            innerBinding,\n          ));\n        }\n\n        if (instanceNodes.length > 0) {\n          injectInitialization(\n            path,\n            constructor,\n            instanceNodes,\n            (referenceVisitor, state) => {\n              if (!process.env.BABEL_8_BREAKING) {\n                if (isDecorated) return;\n              }\n              for (const prop of props) {\n                // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n                if (t.isStaticBlock?.(prop.node) || prop.node.static) continue;\n                prop.traverse(referenceVisitor, state);\n              }\n            },\n            lastInstanceNodeReturnsThis,\n          );\n        }\n\n        // rename to make ts happy\n        const wrappedPath = wrapClass(path);\n        wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);\n        if (staticNodes.length > 0) {\n          wrappedPath.insertAfter(staticNodes);\n        }\n        if (pureStaticNodes.length > 0) {\n          wrappedPath\n            .find(parent => parent.isStatement() || parent.isDeclaration())\n            .insertAfter(pureStaticNodes);\n        }\n        if (classBindingNode != null && pathIsClassDeclaration) {\n          wrappedPath.insertAfter(classBindingNode);\n        }\n      },\n\n      ExportDefaultDeclaration(path, { file }) {\n        if (!process.env.BABEL_8_BREAKING) {\n          if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n          const decl = path.get(\"declaration\");\n\n          if (decl.isClassDeclaration() && hasDecorators(decl.node)) {\n            if (decl.node.id) {\n              // export default class Foo {}\n              //   -->\n              // class Foo {} export { Foo as default }\n              if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n                // polyfill when being run by an older Babel version\n                path.splitExportDeclaration ??=\n                  // eslint-disable-next-line no-restricted-globals\n                  require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n              }\n              path.splitExportDeclaration();\n            } else {\n              // @ts-expect-error Anonymous class declarations can be\n              // transformed as if they were expressions\n              decl.node.type = \"ClassExpression\";\n            }\n          }\n        }\n      },\n    },\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,133 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.extractComputedKeys = extractComputedKeys;
+exports.injectInitialization = injectInitialization;
+exports.memoiseComputedKey = memoiseComputedKey;
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+const findBareSupers = _traverse.visitors.environmentVisitor({
+  Super(path) {
+    const {
+      node,
+      parentPath
+    } = path;
+    if (parentPath.isCallExpression({
+      callee: node
+    })) {
+      this.push(parentPath);
+    }
+  }
+});
+const referenceVisitor = {
+  "TSTypeAnnotation|TypeAnnotation"(path) {
+    path.skip();
+  },
+  ReferencedIdentifier(path, {
+    scope
+  }) {
+    if (scope.hasOwnBinding(path.node.name)) {
+      scope.rename(path.node.name);
+      path.skip();
+    }
+  }
+};
+function handleClassTDZ(path, state) {
+  if (state.classBinding && state.classBinding === path.scope.getBinding(path.node.name)) {
+    const classNameTDZError = state.file.addHelper("classNameTDZError");
+    const throwNode = _core.types.callExpression(classNameTDZError, [_core.types.stringLiteral(path.node.name)]);
+    path.replaceWith(_core.types.sequenceExpression([throwNode, path.node]));
+    path.skip();
+  }
+}
+const classFieldDefinitionEvaluationTDZVisitor = {
+  ReferencedIdentifier: handleClassTDZ
+};
+function injectInitialization(path, constructor, nodes, renamer, lastReturnsThis) {
+  if (!nodes.length) return;
+  const isDerived = !!path.node.superClass;
+  if (!constructor) {
+    const newConstructor = _core.types.classMethod("constructor", _core.types.identifier("constructor"), [], _core.types.blockStatement([]));
+    if (isDerived) {
+      newConstructor.params = [_core.types.restElement(_core.types.identifier("args"))];
+      newConstructor.body.body.push(_core.template.statement.ast`super(...args)`);
+    }
+    [constructor] = path.get("body").unshiftContainer("body", newConstructor);
+  }
+  if (renamer) {
+    renamer(referenceVisitor, {
+      scope: constructor.scope
+    });
+  }
+  if (isDerived) {
+    const bareSupers = [];
+    constructor.traverse(findBareSupers, bareSupers);
+    let isFirst = true;
+    for (const bareSuper of bareSupers) {
+      if (isFirst) {
+        isFirst = false;
+      } else {
+        nodes = nodes.map(n => _core.types.cloneNode(n));
+      }
+      if (!bareSuper.parentPath.isExpressionStatement()) {
+        const allNodes = [bareSuper.node, ...nodes.map(n => _core.types.toExpression(n))];
+        if (!lastReturnsThis) allNodes.push(_core.types.thisExpression());
+        bareSuper.replaceWith(_core.types.sequenceExpression(allNodes));
+      } else {
+        bareSuper.insertAfter(nodes);
+      }
+    }
+  } else {
+    constructor.get("body").unshiftContainer("body", nodes);
+  }
+}
+function memoiseComputedKey(keyNode, scope, hint) {
+  const isUidReference = _core.types.isIdentifier(keyNode) && scope.hasUid(keyNode.name);
+  if (isUidReference) {
+    return;
+  }
+  const isMemoiseAssignment = _core.types.isAssignmentExpression(keyNode, {
+    operator: "="
+  }) && _core.types.isIdentifier(keyNode.left) && scope.hasUid(keyNode.left.name);
+  if (isMemoiseAssignment) {
+    return _core.types.cloneNode(keyNode);
+  } else {
+    const ident = _core.types.identifier(hint);
+    scope.push({
+      id: ident,
+      kind: "let"
+    });
+    return _core.types.assignmentExpression("=", _core.types.cloneNode(ident), keyNode);
+  }
+}
+function extractComputedKeys(path, computedPaths, file) {
+  const {
+    scope
+  } = path;
+  const declarations = [];
+  const state = {
+    classBinding: path.node.id && scope.getBinding(path.node.id.name),
+    file
+  };
+  for (const computedPath of computedPaths) {
+    const computedKey = computedPath.get("key");
+    if (computedKey.isReferencedIdentifier()) {
+      handleClassTDZ(computedKey, state);
+    } else {
+      computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);
+    }
+    const computedNode = computedPath.node;
+    if (!computedKey.isConstantExpression()) {
+      const assignment = memoiseComputedKey(computedKey.node, scope, scope.generateUidBasedOnNode(computedKey.node));
+      if (assignment) {
+        declarations.push(_core.types.expressionStatement(assignment));
+        computedNode.key = _core.types.cloneNode(assignment.left);
+      }
+    }
+  }
+  return declarations;
+}
+
+//# sourceMappingURL=misc.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_traverse","findBareSupers","visitors","environmentVisitor","Super","path","node","parentPath","isCallExpression","callee","push","referenceVisitor","TSTypeAnnotation|TypeAnnotation","skip","ReferencedIdentifier","scope","hasOwnBinding","name","rename","handleClassTDZ","state","classBinding","getBinding","classNameTDZError","file","addHelper","throwNode","t","callExpression","stringLiteral","replaceWith","sequenceExpression","classFieldDefinitionEvaluationTDZVisitor","injectInitialization","constructor","nodes","renamer","lastReturnsThis","length","isDerived","superClass","newConstructor","classMethod","identifier","blockStatement","params","restElement","body","template","statement","ast","get","unshiftContainer","bareSupers","traverse","isFirst","bareSuper","map","n","cloneNode","isExpressionStatement","allNodes","toExpression","thisExpression","insertAfter","memoiseComputedKey","keyNode","hint","isUidReference","isIdentifier","hasUid","isMemoiseAssignment","isAssignmentExpression","operator","left","ident","id","kind","assignmentExpression","extractComputedKeys","computedPaths","declarations","computedPath","computedKey","isReferencedIdentifier","computedNode","isConstantExpression","assignment","generateUidBasedOnNode","expressionStatement","key"],"sources":["../src/misc.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { File, NodePath, Scope, Visitor } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\n\nconst findBareSupers = visitors.environmentVisitor<\n  NodePath<t.CallExpression>[]\n>({\n  Super(path) {\n    const { node, parentPath } = path;\n    if (parentPath.isCallExpression({ callee: node })) {\n      this.push(parentPath);\n    }\n  },\n});\n\nconst referenceVisitor: Visitor<{ scope: Scope }> = {\n  \"TSTypeAnnotation|TypeAnnotation\"(\n    path: NodePath<t.TSTypeAnnotation | t.TypeAnnotation>,\n  ) {\n    path.skip();\n  },\n\n  ReferencedIdentifier(path: NodePath<t.Identifier>, { scope }) {\n    if (scope.hasOwnBinding(path.node.name)) {\n      scope.rename(path.node.name);\n      path.skip();\n    }\n  },\n};\n\ntype HandleClassTDZState = {\n  classBinding: Scope.Binding;\n  file: File;\n};\n\nfunction handleClassTDZ(\n  path: NodePath<t.Identifier>,\n  state: HandleClassTDZState,\n) {\n  if (\n    state.classBinding &&\n    state.classBinding === path.scope.getBinding(path.node.name)\n  ) {\n    const classNameTDZError = state.file.addHelper(\"classNameTDZError\");\n    const throwNode = t.callExpression(classNameTDZError, [\n      t.stringLiteral(path.node.name),\n    ]);\n\n    path.replaceWith(t.sequenceExpression([throwNode, path.node]));\n    path.skip();\n  }\n}\n\nconst classFieldDefinitionEvaluationTDZVisitor: Visitor<HandleClassTDZState> = {\n  ReferencedIdentifier: handleClassTDZ,\n};\n\ninterface RenamerState {\n  scope: Scope;\n}\n\nexport function injectInitialization(\n  path: NodePath<t.Class>,\n  constructor: NodePath<t.ClassMethod> | undefined,\n  nodes: t.ExpressionStatement[],\n  renamer?: (visitor: Visitor<RenamerState>, state: RenamerState) => void,\n  lastReturnsThis?: boolean,\n) {\n  if (!nodes.length) return;\n\n  const isDerived = !!path.node.superClass;\n\n  if (!constructor) {\n    const newConstructor = t.classMethod(\n      \"constructor\",\n      t.identifier(\"constructor\"),\n      [],\n      t.blockStatement([]),\n    );\n\n    if (isDerived) {\n      newConstructor.params = [t.restElement(t.identifier(\"args\"))];\n      newConstructor.body.body.push(template.statement.ast`super(...args)`);\n    }\n\n    [constructor] = path\n      .get(\"body\")\n      .unshiftContainer(\"body\", newConstructor) as NodePath<t.ClassMethod>[];\n  }\n\n  if (renamer) {\n    renamer(referenceVisitor, { scope: constructor.scope });\n  }\n\n  if (isDerived) {\n    const bareSupers: NodePath<t.CallExpression>[] = [];\n    constructor.traverse(findBareSupers, bareSupers);\n    let isFirst = true;\n    for (const bareSuper of bareSupers) {\n      if (isFirst) {\n        isFirst = false;\n      } else {\n        nodes = nodes.map(n => t.cloneNode(n));\n      }\n      if (!bareSuper.parentPath.isExpressionStatement()) {\n        const allNodes: t.Expression[] = [\n          bareSuper.node,\n          ...nodes.map(n => t.toExpression(n)),\n        ];\n        if (!lastReturnsThis) allNodes.push(t.thisExpression());\n        bareSuper.replaceWith(t.sequenceExpression(allNodes));\n      } else {\n        bareSuper.insertAfter(nodes);\n      }\n    }\n  } else {\n    constructor.get(\"body\").unshiftContainer(\"body\", nodes);\n  }\n}\n\ntype ComputedKeyAssignmentExpression = t.AssignmentExpression & {\n  left: t.Identifier;\n};\n\n/**\n * Try to memoise a computed key.\n * It returns undefined when the computed key is an uid reference, otherwise\n * an assignment expression `memoiserId = computed key`\n * @export\n * @param {t.Expression} keyNode Computed key\n * @param {Scope} scope The scope where memoiser id should be registered\n * @param {string} hint The memoiser id hint\n * @returns {(ComputedKeyAssignmentExpression | undefined)}\n */\nexport function memoiseComputedKey(\n  keyNode: t.Expression,\n  scope: Scope,\n  hint: string,\n): ComputedKeyAssignmentExpression | undefined {\n  const isUidReference = t.isIdentifier(keyNode) && scope.hasUid(keyNode.name);\n  if (isUidReference) {\n    return;\n  }\n  const isMemoiseAssignment =\n    t.isAssignmentExpression(keyNode, { operator: \"=\" }) &&\n    t.isIdentifier(keyNode.left) &&\n    scope.hasUid(keyNode.left.name);\n  if (isMemoiseAssignment) {\n    return t.cloneNode(keyNode as ComputedKeyAssignmentExpression);\n  } else {\n    const ident = t.identifier(hint);\n    // Declaring in the same block scope\n    // Ref: https://github.com/babel/babel/pull/10029/files#diff-fbbdd83e7a9c998721c1484529c2ce92\n    scope.push({\n      id: ident,\n      kind: \"let\",\n    });\n    return t.assignmentExpression(\n      \"=\",\n      t.cloneNode(ident),\n      keyNode,\n    ) as ComputedKeyAssignmentExpression;\n  }\n}\n\nexport function extractComputedKeys(\n  path: NodePath<t.Class>,\n  computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[],\n  file: File,\n) {\n  const { scope } = path;\n  const declarations: t.ExpressionStatement[] = [];\n  const state = {\n    classBinding: path.node.id && scope.getBinding(path.node.id.name),\n    file,\n  };\n  for (const computedPath of computedPaths) {\n    const computedKey = computedPath.get(\"key\");\n    if (computedKey.isReferencedIdentifier()) {\n      handleClassTDZ(computedKey, state);\n    } else {\n      computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);\n    }\n\n    const computedNode = computedPath.node;\n    // Make sure computed property names are only evaluated once (upon class definition)\n    // and in the right order in combination with static properties\n    if (!computedKey.isConstantExpression()) {\n      const assignment = memoiseComputedKey(\n        computedKey.node,\n        scope,\n        scope.generateUidBasedOnNode(computedKey.node),\n      );\n      if (assignment) {\n        declarations.push(t.expressionStatement(assignment));\n        computedNode.key = t.cloneNode(assignment.left);\n      }\n    }\n  }\n\n  return declarations;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.assertFieldTransformed = assertFieldTransformed;
+function assertFieldTransformed(path) {
+  if (path.node.declare || false) {
+    throw path.buildCodeFrameError(`TypeScript 'declare' fields must first be transformed by ` + `@babel/plugin-transform-typescript.\n` + `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` + `that it runs before any plugin related to additional class features:\n` + ` - @babel/plugin-transform-class-properties\n` + ` - @babel/plugin-transform-private-methods\n` + ` - @babel/plugin-proposal-decorators`);
+  }
+}
+
+//# sourceMappingURL=typescript.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["assertFieldTransformed","path","node","declare","buildCodeFrameError"],"sources":["../src/typescript.ts"],"sourcesContent":["import type { NodePath, types as t } from \"@babel/core\";\n\nexport function assertFieldTransformed(\n  path: NodePath<t.ClassProperty | t.ClassDeclaration>,\n) {\n  if (\n    path.node.declare ||\n    (process.env.BABEL_8_BREAKING\n      ? path.isClassProperty({ definite: true })\n      : false)\n  ) {\n    throw path.buildCodeFrameError(\n      `TypeScript 'declare' fields must first be transformed by ` +\n        `@babel/plugin-transform-typescript.\\n` +\n        `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` +\n        `that it runs before any plugin related to additional class features:\\n` +\n        ` - @babel/plugin-transform-class-properties\\n` +\n        ` - @babel/plugin-transform-private-methods\\n` +\n        ` - @babel/plugin-proposal-decorators`,\n    );\n  }\n}\n"],"mappings":";;;;;;AAEO,SAASA,sBAAsBA,CACpCC,IAAoD,EACpD;EACA,IACEA,IAAI,CAACC,IAAI,CAACC,OAAO,IAGb,KAAM,EACV;IACA,MAAMF,IAAI,CAACG,mBAAmB,CAC5B,2DAA2D,GACzD,uCAAuC,GACvC,qFAAqF,GACrF,wEAAwE,GACxE,+CAA+C,GAC/C,8CAA8C,GAC9C,sCACJ,CAAC;EACH;AACF","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-class-features-plugin/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,43 @@
+{
+  "name": "@babel/helper-create-class-features-plugin",
+  "version": "7.25.9",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "license": "MIT",
+  "description": "Compile class public and private fields, private methods and decorators to ES6",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-create-class-features-plugin"
+  },
+  "main": "./lib/index.js",
+  "publishConfig": {
+    "access": "public"
+  },
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "@babel/helper-member-expression-to-functions": "^7.25.9",
+    "@babel/helper-optimise-call-expression": "^7.25.9",
+    "@babel/helper-replace-supers": "^7.25.9",
+    "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+    "@babel/traverse": "^7.25.9",
+    "semver": "^6.3.1"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/preset-env": "^7.25.9",
+    "@types/charcodes": "^0.2.0",
+    "charcodes": "^0.2.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-create-regexp-features-plugin
+
+> Compile ESNext Regular Expressions to ES5
+
+See our website [@babel/helper-create-regexp-features-plugin](https://babeljs.io/docs/babel-helper-create-regexp-features-plugin) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-create-regexp-features-plugin
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-create-regexp-features-plugin
+```
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.FEATURES = void 0;
+exports.enableFeature = enableFeature;
+exports.featuresKey = void 0;
+exports.hasFeature = hasFeature;
+exports.runtimeKey = void 0;
+const FEATURES = exports.FEATURES = Object.freeze({
+  unicodeFlag: 1 << 0,
+  dotAllFlag: 1 << 1,
+  unicodePropertyEscape: 1 << 2,
+  namedCaptureGroups: 1 << 3,
+  unicodeSetsFlag_syntax: 1 << 4,
+  unicodeSetsFlag: 1 << 5,
+  duplicateNamedCaptureGroups: 1 << 6,
+  modifiers: 1 << 7
+});
+const featuresKey = exports.featuresKey = "@babel/plugin-regexp-features/featuresKey";
+const runtimeKey = exports.runtimeKey = "@babel/plugin-regexp-features/runtimeKey";
+function enableFeature(features, feature) {
+  return features | feature;
+}
+function hasFeature(features, feature) {
+  return !!(features & feature);
+}
+
+//# sourceMappingURL=features.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["FEATURES","exports","Object","freeze","unicodeFlag","dotAllFlag","unicodePropertyEscape","namedCaptureGroups","unicodeSetsFlag_syntax","unicodeSetsFlag","duplicateNamedCaptureGroups","modifiers","featuresKey","runtimeKey","enableFeature","features","feature","hasFeature"],"sources":["../src/features.ts"],"sourcesContent":["export const FEATURES = Object.freeze({\n  unicodeFlag: 1 << 0,\n  dotAllFlag: 1 << 1,\n  unicodePropertyEscape: 1 << 2,\n  namedCaptureGroups: 1 << 3,\n  // Not used, for backward compatibility with syntax-unicode-sets-regex\n  unicodeSetsFlag_syntax: 1 << 4,\n  unicodeSetsFlag: 1 << 5,\n  duplicateNamedCaptureGroups: 1 << 6,\n  modifiers: 1 << 7,\n});\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n//  - node_modules/\n//    - @babel/plugin-regexp-features\n//    - @babel/plugin-transform-unicode-property-regex\n//      - node_modules\n//        - @babel-plugin-regexp-features\nexport const featuresKey = \"@babel/plugin-regexp-features/featuresKey\";\nexport const runtimeKey = \"@babel/plugin-regexp-features/runtimeKey\";\n\ntype FeatureType = (typeof FEATURES)[keyof typeof FEATURES];\n\nexport function enableFeature(features: number, feature: FeatureType): number {\n  return features | feature;\n}\n\nexport function hasFeature(features: number, feature: FeatureType) {\n  return !!(features & feature);\n}\n"],"mappings":";;;;;;;;;;AAAO,MAAMA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAGE,MAAM,CAACC,MAAM,CAAC;EACpCC,WAAW,EAAE,CAAC,IAAI,CAAC;EACnBC,UAAU,EAAE,CAAC,IAAI,CAAC;EAClBC,qBAAqB,EAAE,CAAC,IAAI,CAAC;EAC7BC,kBAAkB,EAAE,CAAC,IAAI,CAAC;EAE1BC,sBAAsB,EAAE,CAAC,IAAI,CAAC;EAC9BC,eAAe,EAAE,CAAC,IAAI,CAAC;EACvBC,2BAA2B,EAAE,CAAC,IAAI,CAAC;EACnCC,SAAS,EAAE,CAAC,IAAI;AAClB,CAAC,CAAC;AASK,MAAMC,WAAW,GAAAX,OAAA,CAAAW,WAAA,GAAG,2CAA2C;AAC/D,MAAMC,UAAU,GAAAZ,OAAA,CAAAY,UAAA,GAAG,0CAA0C;AAI7D,SAASC,aAAaA,CAACC,QAAgB,EAAEC,OAAoB,EAAU;EAC5E,OAAOD,QAAQ,GAAGC,OAAO;AAC3B;AAEO,SAASC,UAAUA,CAACF,QAAgB,EAAEC,OAAoB,EAAE;EACjE,OAAO,CAAC,EAAED,QAAQ,GAAGC,OAAO,CAAC;AAC/B","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,116 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.createRegExpFeaturePlugin = createRegExpFeaturePlugin;
+var _regexpuCore = require("regexpu-core");
+var _core = require("@babel/core");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _semver = require("semver");
+var _features = require("./features.js");
+var _util = require("./util.js");
+const versionKey = "@babel/plugin-regexp-features/version";
+function createRegExpFeaturePlugin({
+  name,
+  feature,
+  options = {},
+  manipulateOptions = () => {}
+}) {
+  return {
+    name,
+    manipulateOptions,
+    pre() {
+      var _file$get;
+      const {
+        file
+      } = this;
+      const features = (_file$get = file.get(_features.featuresKey)) != null ? _file$get : 0;
+      let newFeatures = (0, _features.enableFeature)(features, _features.FEATURES[feature]);
+      const {
+        useUnicodeFlag,
+        runtime
+      } = options;
+      if (useUnicodeFlag === false) {
+        newFeatures = (0, _features.enableFeature)(newFeatures, _features.FEATURES.unicodeFlag);
+      }
+      if (newFeatures !== features) {
+        file.set(_features.featuresKey, newFeatures);
+      }
+      if (runtime !== undefined) {
+        if (file.has(_features.runtimeKey) && file.get(_features.runtimeKey) !== runtime && (0, _features.hasFeature)(newFeatures, _features.FEATURES.duplicateNamedCaptureGroups)) {
+          throw new Error(`The 'runtime' option must be the same for ` + `'@babel/plugin-transform-named-capturing-groups-regex' and ` + `'@babel/plugin-transform-duplicate-named-capturing-groups-regex'.`);
+        }
+        if (feature === "namedCaptureGroups") {
+          if (!runtime || !file.has(_features.runtimeKey)) file.set(_features.runtimeKey, runtime);
+        } else {
+          file.set(_features.runtimeKey, runtime);
+        }
+      }
+      {
+        if (typeof file.get(versionKey) === "number") {
+          file.set(versionKey, "7.26.3");
+          return;
+        }
+      }
+      if (!file.get(versionKey) || _semver.lt(file.get(versionKey), "7.26.3")) {
+        file.set(versionKey, "7.26.3");
+      }
+    },
+    visitor: {
+      RegExpLiteral(path) {
+        var _file$get2, _newFlags;
+        const {
+          node
+        } = path;
+        const {
+          file
+        } = this;
+        const features = file.get(_features.featuresKey);
+        const runtime = (_file$get2 = file.get(_features.runtimeKey)) != null ? _file$get2 : true;
+        const regexpuOptions = (0, _util.generateRegexpuOptions)(node.pattern, features);
+        if ((0, _util.canSkipRegexpu)(node, regexpuOptions)) {
+          return;
+        }
+        const namedCaptureGroups = {
+          __proto__: null
+        };
+        if (regexpuOptions.namedGroups === "transform") {
+          regexpuOptions.onNamedGroup = (name, index) => {
+            const prev = namedCaptureGroups[name];
+            if (typeof prev === "number") {
+              namedCaptureGroups[name] = [prev, index];
+            } else if (Array.isArray(prev)) {
+              prev.push(index);
+            } else {
+              namedCaptureGroups[name] = index;
+            }
+          };
+        }
+        let newFlags;
+        if (regexpuOptions.modifiers === "transform") {
+          regexpuOptions.onNewFlags = flags => {
+            newFlags = flags;
+          };
+        }
+        node.pattern = _regexpuCore(node.pattern, node.flags, regexpuOptions);
+        if (regexpuOptions.namedGroups === "transform" && Object.keys(namedCaptureGroups).length > 0 && runtime && !isRegExpTest(path)) {
+          const call = _core.types.callExpression(this.addHelper("wrapRegExp"), [node, _core.types.valueToNode(namedCaptureGroups)]);
+          (0, _helperAnnotateAsPure.default)(call);
+          path.replaceWith(call);
+        }
+        node.flags = (0, _util.transformFlags)(regexpuOptions, (_newFlags = newFlags) != null ? _newFlags : node.flags);
+      }
+    }
+  };
+}
+function isRegExpTest(path) {
+  return path.parentPath.isMemberExpression({
+    object: path.node,
+    computed: false
+  }) && path.parentPath.get("property").isIdentifier({
+    name: "test"
+  });
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_regexpuCore","require","_core","_helperAnnotateAsPure","_semver","_features","_util","versionKey","createRegExpFeaturePlugin","name","feature","options","manipulateOptions","pre","_file$get","file","features","get","featuresKey","newFeatures","enableFeature","FEATURES","useUnicodeFlag","runtime","unicodeFlag","set","undefined","has","runtimeKey","hasFeature","duplicateNamedCaptureGroups","Error","semver","lt","visitor","RegExpLiteral","path","_file$get2","_newFlags","node","regexpuOptions","generateRegexpuOptions","pattern","canSkipRegexpu","namedCaptureGroups","__proto__","namedGroups","onNamedGroup","index","prev","Array","isArray","push","newFlags","modifiers","onNewFlags","flags","rewritePattern","Object","keys","length","isRegExpTest","call","t","callExpression","addHelper","valueToNode","annotateAsPure","replaceWith","transformFlags","parentPath","isMemberExpression","object","computed","isIdentifier"],"sources":["../src/index.ts"],"sourcesContent":["import rewritePattern from \"regexpu-core\";\nimport { types as t, type PluginObject, type NodePath } from \"@babel/core\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\n\nimport semver from \"semver\";\n\nimport {\n  featuresKey,\n  FEATURES,\n  enableFeature,\n  runtimeKey,\n  hasFeature,\n} from \"./features.ts\";\nimport {\n  generateRegexpuOptions,\n  canSkipRegexpu,\n  transformFlags,\n} from \"./util.ts\";\n\nconst versionKey = \"@babel/plugin-regexp-features/version\";\n\nexport interface Options {\n  name: string;\n  feature: keyof typeof FEATURES;\n  options?: {\n    useUnicodeFlag?: boolean;\n    runtime?: boolean;\n  };\n  manipulateOptions?: PluginObject[\"manipulateOptions\"];\n}\n\nexport function createRegExpFeaturePlugin({\n  name,\n  feature,\n  options = {},\n  manipulateOptions = () => {},\n}: Options): PluginObject {\n  return {\n    name,\n\n    manipulateOptions,\n\n    pre() {\n      const { file } = this;\n      const features = file.get(featuresKey) ?? 0;\n      let newFeatures = enableFeature(features, FEATURES[feature]);\n\n      const { useUnicodeFlag, runtime } = options;\n      if (useUnicodeFlag === false) {\n        newFeatures = enableFeature(newFeatures, FEATURES.unicodeFlag);\n      }\n      if (newFeatures !== features) {\n        file.set(featuresKey, newFeatures);\n      }\n\n      if (runtime !== undefined) {\n        if (\n          file.has(runtimeKey) &&\n          file.get(runtimeKey) !== runtime &&\n          (process.env.BABEL_8_BREAKING ||\n            // This check. Is necessary because in Babel 7 we allow multiple\n            // copies of transform-named-capturing-groups-regex with\n            // conflicting 'runtime' options.\n            hasFeature(newFeatures, FEATURES.duplicateNamedCaptureGroups))\n        ) {\n          throw new Error(\n            `The 'runtime' option must be the same for ` +\n              `'@babel/plugin-transform-named-capturing-groups-regex' and ` +\n              `'@babel/plugin-transform-duplicate-named-capturing-groups-regex'.`,\n          );\n        }\n\n        if (process.env.BABEL_8_BREAKING) {\n          file.set(runtimeKey, runtime);\n        } else if (\n          // This check. Is necessary because in Babel 7 we allow multiple\n          // copies of transform-named-capturing-groups-regex with\n          // conflicting 'runtime' options.\n          feature === \"namedCaptureGroups\"\n        ) {\n          if (!runtime || !file.has(runtimeKey)) file.set(runtimeKey, runtime);\n        } else {\n          file.set(runtimeKey, runtime);\n        }\n      }\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // Until 7.21.4, we used to encode the version as a number.\n        // If file.get(versionKey) is a number, it has thus been\n        // set by an older version of this plugin.\n        if (typeof file.get(versionKey) === \"number\") {\n          file.set(versionKey, PACKAGE_JSON.version);\n          return;\n        }\n      }\n      if (\n        !file.get(versionKey) ||\n        semver.lt(file.get(versionKey), PACKAGE_JSON.version)\n      ) {\n        file.set(versionKey, PACKAGE_JSON.version);\n      }\n    },\n\n    visitor: {\n      RegExpLiteral(path) {\n        const { node } = path;\n        const { file } = this;\n        const features = file.get(featuresKey);\n        const runtime = file.get(runtimeKey) ?? true;\n\n        const regexpuOptions = generateRegexpuOptions(node.pattern, features);\n        if (canSkipRegexpu(node, regexpuOptions)) {\n          return;\n        }\n\n        const namedCaptureGroups: Record<string, number | number[]> = {\n          __proto__: null,\n        };\n        if (regexpuOptions.namedGroups === \"transform\") {\n          regexpuOptions.onNamedGroup = (name, index) => {\n            const prev = namedCaptureGroups[name];\n            if (typeof prev === \"number\") {\n              namedCaptureGroups[name] = [prev, index];\n            } else if (Array.isArray(prev)) {\n              prev.push(index);\n            } else {\n              namedCaptureGroups[name] = index;\n            }\n          };\n        }\n\n        let newFlags;\n        if (regexpuOptions.modifiers === \"transform\") {\n          regexpuOptions.onNewFlags = flags => {\n            newFlags = flags;\n          };\n        }\n\n        node.pattern = rewritePattern(node.pattern, node.flags, regexpuOptions);\n\n        if (\n          regexpuOptions.namedGroups === \"transform\" &&\n          Object.keys(namedCaptureGroups).length > 0 &&\n          runtime &&\n          !isRegExpTest(path)\n        ) {\n          const call = t.callExpression(this.addHelper(\"wrapRegExp\"), [\n            node,\n            t.valueToNode(namedCaptureGroups),\n          ]);\n          annotateAsPure(call);\n\n          path.replaceWith(call);\n        }\n\n        node.flags = transformFlags(regexpuOptions, newFlags ?? node.flags);\n      },\n    },\n  };\n}\n\nfunction isRegExpTest(path: NodePath<t.RegExpLiteral>) {\n  return (\n    path.parentPath.isMemberExpression({\n      object: path.node,\n      computed: false,\n    }) && path.parentPath.get(\"property\").isIdentifier({ name: \"test\" })\n  );\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,71 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.canSkipRegexpu = canSkipRegexpu;
+exports.generateRegexpuOptions = generateRegexpuOptions;
+exports.transformFlags = transformFlags;
+var _features = require("./features.js");
+function generateRegexpuOptions(pattern, toTransform) {
+  const feat = name => {
+    return (0, _features.hasFeature)(toTransform, _features.FEATURES[name]) ? "transform" : false;
+  };
+  const featDuplicateNamedGroups = () => {
+    if (!feat("duplicateNamedCaptureGroups")) return false;
+    const regex = /\(\?<([^>]+)>/g;
+    const seen = new Set();
+    for (let match; match = regex.exec(pattern); seen.add(match[1])) {
+      if (seen.has(match[1])) return "transform";
+    }
+    return false;
+  };
+  return {
+    unicodeFlag: feat("unicodeFlag"),
+    unicodeSetsFlag: feat("unicodeSetsFlag"),
+    dotAllFlag: feat("dotAllFlag"),
+    unicodePropertyEscapes: feat("unicodePropertyEscape"),
+    namedGroups: feat("namedCaptureGroups") || featDuplicateNamedGroups(),
+    onNamedGroup: () => {},
+    modifiers: feat("modifiers")
+  };
+}
+function canSkipRegexpu(node, options) {
+  const {
+    flags,
+    pattern
+  } = node;
+  if (flags.includes("v")) {
+    if (options.unicodeSetsFlag === "transform") return false;
+  }
+  if (flags.includes("u")) {
+    if (options.unicodeFlag === "transform") return false;
+    if (options.unicodePropertyEscapes === "transform" && /\\p\{/i.test(pattern)) {
+      return false;
+    }
+  }
+  if (flags.includes("s")) {
+    if (options.dotAllFlag === "transform") return false;
+  }
+  if (options.namedGroups === "transform" && /\(\?<(?![=!])/.test(pattern)) {
+    return false;
+  }
+  if (options.modifiers === "transform" && /\(\?[\w-]+:/.test(pattern)) {
+    return false;
+  }
+  return true;
+}
+function transformFlags(regexpuOptions, flags) {
+  if (regexpuOptions.unicodeSetsFlag === "transform") {
+    flags = flags.replace("v", "u");
+  }
+  if (regexpuOptions.unicodeFlag === "transform") {
+    flags = flags.replace("u", "");
+  }
+  if (regexpuOptions.dotAllFlag === "transform") {
+    flags = flags.replace("s", "");
+  }
+  return flags;
+}
+
+//# sourceMappingURL=util.js.map
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_features","require","generateRegexpuOptions","pattern","toTransform","feat","name","hasFeature","FEATURES","featDuplicateNamedGroups","regex","seen","Set","match","exec","add","has","unicodeFlag","unicodeSetsFlag","dotAllFlag","unicodePropertyEscapes","namedGroups","onNamedGroup","modifiers","canSkipRegexpu","node","options","flags","includes","test","transformFlags","regexpuOptions","replace"],"sources":["../src/util.ts"],"sourcesContent":["import type { types as t } from \"@babel/core\";\nimport { FEATURES, hasFeature } from \"./features.ts\";\n\nimport type { RegexpuOptions } from \"regexpu-core\";\n\nexport function generateRegexpuOptions(\n  pattern: string,\n  toTransform: number,\n): RegexpuOptions {\n  const feat = (name: keyof typeof FEATURES) => {\n    return hasFeature(toTransform, FEATURES[name]) ? \"transform\" : false;\n  };\n\n  const featDuplicateNamedGroups = (): \"transform\" | false => {\n    if (!feat(\"duplicateNamedCaptureGroups\")) return false;\n\n    // This can return false positive, for example for /\\(?<a>\\)/.\n    // However, it's such a rare occurrence that it's ok to compile\n    // the regexp even if we only need to compile regexps with\n    // duplicate named capturing groups.\n    const regex = /\\(\\?<([^>]+)>/g;\n    const seen = new Set();\n    for (let match; (match = regex.exec(pattern)); seen.add(match[1])) {\n      if (seen.has(match[1])) return \"transform\";\n    }\n    return false;\n  };\n\n  return {\n    unicodeFlag: feat(\"unicodeFlag\"),\n    unicodeSetsFlag: feat(\"unicodeSetsFlag\"),\n    dotAllFlag: feat(\"dotAllFlag\"),\n    unicodePropertyEscapes: feat(\"unicodePropertyEscape\"),\n    namedGroups: feat(\"namedCaptureGroups\") || featDuplicateNamedGroups(),\n    onNamedGroup: () => {},\n    modifiers: feat(\"modifiers\"),\n  };\n}\n\nexport function canSkipRegexpu(\n  node: t.RegExpLiteral,\n  options: RegexpuOptions,\n): boolean {\n  const { flags, pattern } = node;\n\n  if (flags.includes(\"v\")) {\n    if (options.unicodeSetsFlag === \"transform\") return false;\n  }\n\n  if (flags.includes(\"u\")) {\n    if (options.unicodeFlag === \"transform\") return false;\n    if (\n      options.unicodePropertyEscapes === \"transform\" &&\n      /\\\\p\\{/i.test(pattern)\n    ) {\n      return false;\n    }\n  }\n\n  if (flags.includes(\"s\")) {\n    if (options.dotAllFlag === \"transform\") return false;\n  }\n\n  if (options.namedGroups === \"transform\" && /\\(\\?<(?![=!])/.test(pattern)) {\n    return false;\n  }\n\n  if (options.modifiers === \"transform\" && /\\(\\?[\\w-]+:/.test(pattern)) {\n    return false;\n  }\n\n  return true;\n}\n\nexport function transformFlags(regexpuOptions: RegexpuOptions, flags: string) {\n  if (regexpuOptions.unicodeSetsFlag === \"transform\") {\n    flags = flags.replace(\"v\", \"u\");\n  }\n  if (regexpuOptions.unicodeFlag === \"transform\") {\n    flags = flags.replace(\"u\", \"\");\n  }\n  if (regexpuOptions.dotAllFlag === \"transform\") {\n    flags = flags.replace(\"s\", \"\");\n  }\n  return flags;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-create-regexp-features-plugin/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/helper-create-regexp-features-plugin",
+  "version": "7.26.3",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "license": "MIT",
+  "description": "Compile ESNext Regular Expressions to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-create-regexp-features-plugin"
+  },
+  "main": "./lib/index.js",
+  "publishConfig": {
+    "access": "public"
+  },
+  "keywords": [
+    "babel",
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "regexpu-core": "^6.2.0",
+    "semver": "^6.3.1"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Nicolò Ribaudo and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,15 @@
+# @babel/helper-define-polyfill-provider
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-define-polyfill-provider
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-define-polyfill-provider --dev
+```
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,810 @@
+import { declare } from '@babel/helper-plugin-utils';
+import _getTargets, { prettifyTargets, getInclusionReasons, isRequired } from '@babel/helper-compilation-targets';
+import * as _babel from '@babel/core';
+
+const {
+  types: t$1,
+  template: template
+} = _babel.default || _babel;
+function intersection(a, b) {
+  const result = new Set();
+  a.forEach(v => b.has(v) && result.add(v));
+  return result;
+}
+function has$1(object, key) {
+  return Object.prototype.hasOwnProperty.call(object, key);
+}
+function getType(target) {
+  return Object.prototype.toString.call(target).slice(8, -1);
+}
+function resolveId(path) {
+  if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, /* noGlobals */true)) {
+    return path.node.name;
+  }
+  if (path.isPure()) {
+    const {
+      deopt
+    } = path.evaluate();
+    if (deopt && deopt.isIdentifier()) {
+      return deopt.node.name;
+    }
+  }
+}
+function resolveKey(path, computed = false) {
+  const {
+    scope
+  } = path;
+  if (path.isStringLiteral()) return path.node.value;
+  const isIdentifier = path.isIdentifier();
+  if (isIdentifier && !(computed || path.parent.computed)) {
+    return path.node.name;
+  }
+  if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
+    name: "Symbol"
+  }) && !scope.hasBinding("Symbol", /* noGlobals */true)) {
+    const sym = resolveKey(path.get("property"), path.node.computed);
+    if (sym) return "Symbol." + sym;
+  }
+  if (isIdentifier ? scope.hasBinding(path.node.name, /* noGlobals */true) : path.isPure()) {
+    const {
+      value
+    } = path.evaluate();
+    if (typeof value === "string") return value;
+  }
+}
+function resolveSource(obj) {
+  if (obj.isMemberExpression() && obj.get("property").isIdentifier({
+    name: "prototype"
+  })) {
+    const id = resolveId(obj.get("object"));
+    if (id) {
+      return {
+        id,
+        placement: "prototype"
+      };
+    }
+    return {
+      id: null,
+      placement: null
+    };
+  }
+  const id = resolveId(obj);
+  if (id) {
+    return {
+      id,
+      placement: "static"
+    };
+  }
+  if (obj.isRegExpLiteral()) {
+    return {
+      id: "RegExp",
+      placement: "prototype"
+    };
+  } else if (obj.isFunction()) {
+    return {
+      id: "Function",
+      placement: "prototype"
+    };
+  } else if (obj.isPure()) {
+    const {
+      value
+    } = obj.evaluate();
+    if (value !== undefined) {
+      return {
+        id: getType(value),
+        placement: "prototype"
+      };
+    }
+  }
+  return {
+    id: null,
+    placement: null
+  };
+}
+function getImportSource({
+  node
+}) {
+  if (node.specifiers.length === 0) return node.source.value;
+}
+function getRequireSource({
+  node
+}) {
+  if (!t$1.isExpressionStatement(node)) return;
+  const {
+    expression
+  } = node;
+  if (t$1.isCallExpression(expression) && t$1.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t$1.isStringLiteral(expression.arguments[0])) {
+    return expression.arguments[0].value;
+  }
+}
+function hoist(node) {
+  // @ts-expect-error
+  node._blockHoist = 3;
+  return node;
+}
+function createUtilsGetter(cache) {
+  return path => {
+    const prog = path.findParent(p => p.isProgram());
+    return {
+      injectGlobalImport(url, moduleName) {
+        cache.storeAnonymous(prog, url, moduleName, (isScript, source) => {
+          return isScript ? template.statement.ast`require(${source})` : t$1.importDeclaration([], source);
+        });
+      },
+      injectNamedImport(url, name, hint = name, moduleName) {
+        return cache.storeNamed(prog, url, name, moduleName, (isScript, source, name) => {
+          const id = prog.scope.generateUidIdentifier(hint);
+          return {
+            node: isScript ? hoist(template.statement.ast`
+                  var ${id} = require(${source}).${name}
+                `) : t$1.importDeclaration([t$1.importSpecifier(id, name)], source),
+            name: id.name
+          };
+        });
+      },
+      injectDefaultImport(url, hint = url, moduleName) {
+        return cache.storeNamed(prog, url, "default", moduleName, (isScript, source) => {
+          const id = prog.scope.generateUidIdentifier(hint);
+          return {
+            node: isScript ? hoist(template.statement.ast`var ${id} = require(${source})`) : t$1.importDeclaration([t$1.importDefaultSpecifier(id)], source),
+            name: id.name
+          };
+        });
+      }
+    };
+  };
+}
+
+const {
+  types: t
+} = _babel.default || _babel;
+class ImportsCachedInjector {
+  constructor(resolver, getPreferredIndex) {
+    this._imports = new WeakMap();
+    this._anonymousImports = new WeakMap();
+    this._lastImports = new WeakMap();
+    this._resolver = resolver;
+    this._getPreferredIndex = getPreferredIndex;
+  }
+  storeAnonymous(programPath, url, moduleName, getVal) {
+    const key = this._normalizeKey(programPath, url);
+    const imports = this._ensure(this._anonymousImports, programPath, Set);
+    if (imports.has(key)) return;
+    const node = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)));
+    imports.add(key);
+    this._injectImport(programPath, node, moduleName);
+  }
+  storeNamed(programPath, url, name, moduleName, getVal) {
+    const key = this._normalizeKey(programPath, url, name);
+    const imports = this._ensure(this._imports, programPath, Map);
+    if (!imports.has(key)) {
+      const {
+        node,
+        name: id
+      } = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)), t.identifier(name));
+      imports.set(key, id);
+      this._injectImport(programPath, node, moduleName);
+    }
+    return t.identifier(imports.get(key));
+  }
+  _injectImport(programPath, node, moduleName) {
+    var _this$_lastImports$ge;
+    const newIndex = this._getPreferredIndex(moduleName);
+    const lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
+    const isPathStillValid = path => path.node &&
+    // Sometimes the AST is modified and the "last import"
+    // we have has been replaced
+    path.parent === programPath.node && path.container === programPath.node.body;
+    let last;
+    if (newIndex === Infinity) {
+      // Fast path: we can always just insert at the end if newIndex is `Infinity`
+      if (lastImports.length > 0) {
+        last = lastImports[lastImports.length - 1].path;
+        if (!isPathStillValid(last)) last = undefined;
+      }
+    } else {
+      for (const [i, data] of lastImports.entries()) {
+        const {
+          path,
+          index
+        } = data;
+        if (isPathStillValid(path)) {
+          if (newIndex < index) {
+            const [newPath] = path.insertBefore(node);
+            lastImports.splice(i, 0, {
+              path: newPath,
+              index: newIndex
+            });
+            return;
+          }
+          last = path;
+        }
+      }
+    }
+    if (last) {
+      const [newPath] = last.insertAfter(node);
+      lastImports.push({
+        path: newPath,
+        index: newIndex
+      });
+    } else {
+      const [newPath] = programPath.unshiftContainer("body", node);
+      this._lastImports.set(programPath, [{
+        path: newPath,
+        index: newIndex
+      }]);
+    }
+  }
+  _ensure(map, programPath, Collection) {
+    let collection = map.get(programPath);
+    if (!collection) {
+      collection = new Collection();
+      map.set(programPath, collection);
+    }
+    return collection;
+  }
+  _normalizeKey(programPath, url, name = "") {
+    const {
+      sourceType
+    } = programPath.node;
+
+    // If we rely on the imported binding (the "name" parameter), we also need to cache
+    // based on the sourceType. This is because the module transforms change the names
+    // of the import variables.
+    return `${name && sourceType}::${url}::${name}`;
+  }
+}
+
+const presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
+function stringifyTargetsMultiline(targets) {
+  return JSON.stringify(prettifyTargets(targets), null, 2);
+}
+
+function patternToRegExp(pattern) {
+  if (pattern instanceof RegExp) return pattern;
+  try {
+    return new RegExp(`^${pattern}$`);
+  } catch {
+    return null;
+  }
+}
+function buildUnusedError(label, unused) {
+  if (!unused.length) return "";
+  return `  - The following "${label}" patterns didn't match any polyfill:\n` + unused.map(original => `    ${String(original)}\n`).join("");
+}
+function buldDuplicatesError(duplicates) {
+  if (!duplicates.size) return "";
+  return `  - The following polyfills were matched both by "include" and "exclude" patterns:\n` + Array.from(duplicates, name => `    ${name}\n`).join("");
+}
+function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
+  let current;
+  const filter = pattern => {
+    const regexp = patternToRegExp(pattern);
+    if (!regexp) return false;
+    let matched = false;
+    for (const polyfill of polyfills.keys()) {
+      if (regexp.test(polyfill)) {
+        matched = true;
+        current.add(polyfill);
+      }
+    }
+    return !matched;
+  };
+
+  // prettier-ignore
+  const include = current = new Set();
+  const unusedInclude = Array.from(includePatterns).filter(filter);
+
+  // prettier-ignore
+  const exclude = current = new Set();
+  const unusedExclude = Array.from(excludePatterns).filter(filter);
+  const duplicates = intersection(include, exclude);
+  if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
+    throw new Error(`Error while validating the "${provider}" provider options:\n` + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
+  }
+  return {
+    include,
+    exclude
+  };
+}
+function applyMissingDependenciesDefaults(options, babelApi) {
+  const {
+    missingDependencies = {}
+  } = options;
+  if (missingDependencies === false) return false;
+  const caller = babelApi.caller(caller => caller == null ? void 0 : caller.name);
+  const {
+    log = "deferred",
+    inject = caller === "rollup-plugin-babel" ? "throw" : "import",
+    all = false
+  } = missingDependencies;
+  return {
+    log,
+    inject,
+    all
+  };
+}
+
+function isRemoved(path) {
+  if (path.removed) return true;
+  if (!path.parentPath) return false;
+  if (path.listKey) {
+    var _path$parentPath$node;
+    if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
+  } else {
+    if (path.parentPath.node[path.key] !== path.node) return true;
+  }
+  return isRemoved(path.parentPath);
+}
+var usage = (callProvider => {
+  function property(object, key, placement, path) {
+    return callProvider({
+      kind: "property",
+      object,
+      key,
+      placement
+    }, path);
+  }
+  function handleReferencedIdentifier(path) {
+    const {
+      node: {
+        name
+      },
+      scope
+    } = path;
+    if (scope.getBindingIdentifier(name)) return;
+    callProvider({
+      kind: "global",
+      name
+    }, path);
+  }
+  function analyzeMemberExpression(path) {
+    const key = resolveKey(path.get("property"), path.node.computed);
+    return {
+      key,
+      handleAsMemberExpression: !!key && key !== "prototype"
+    };
+  }
+  return {
+    // Symbol(), new Promise
+    ReferencedIdentifier(path) {
+      const {
+        parentPath
+      } = path;
+      if (parentPath.isMemberExpression({
+        object: path.node
+      }) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
+        return;
+      }
+      handleReferencedIdentifier(path);
+    },
+    "MemberExpression|OptionalMemberExpression"(path) {
+      const {
+        key,
+        handleAsMemberExpression
+      } = analyzeMemberExpression(path);
+      if (!handleAsMemberExpression) return;
+      const object = path.get("object");
+      let objectIsGlobalIdentifier = object.isIdentifier();
+      if (objectIsGlobalIdentifier) {
+        const binding = object.scope.getBinding(object.node.name);
+        if (binding) {
+          if (binding.path.isImportNamespaceSpecifier()) return;
+          objectIsGlobalIdentifier = false;
+        }
+      }
+      const source = resolveSource(object);
+      let skipObject = property(source.id, key, source.placement, path);
+      skipObject || (skipObject = !objectIsGlobalIdentifier || path.shouldSkip || object.shouldSkip || isRemoved(object));
+      if (!skipObject) handleReferencedIdentifier(object);
+    },
+    ObjectPattern(path) {
+      const {
+        parentPath,
+        parent
+      } = path;
+      let obj;
+
+      // const { keys, values } = Object
+      if (parentPath.isVariableDeclarator()) {
+        obj = parentPath.get("init");
+        // ({ keys, values } = Object)
+      } else if (parentPath.isAssignmentExpression()) {
+        obj = parentPath.get("right");
+        // !function ({ keys, values }) {...} (Object)
+        // resolution does not work after properties transform :-(
+      } else if (parentPath.isFunction()) {
+        const grand = parentPath.parentPath;
+        if (grand.isCallExpression() || grand.isNewExpression()) {
+          if (grand.node.callee === parent) {
+            obj = grand.get("arguments")[path.key];
+          }
+        }
+      }
+      let id = null;
+      let placement = null;
+      if (obj) ({
+        id,
+        placement
+      } = resolveSource(obj));
+      for (const prop of path.get("properties")) {
+        if (prop.isObjectProperty()) {
+          const key = resolveKey(prop.get("key"));
+          if (key) property(id, key, placement, prop);
+        }
+      }
+    },
+    BinaryExpression(path) {
+      if (path.node.operator !== "in") return;
+      const source = resolveSource(path.get("right"));
+      const key = resolveKey(path.get("left"), true);
+      if (!key) return;
+      callProvider({
+        kind: "in",
+        object: source.id,
+        key,
+        placement: source.placement
+      }, path);
+    }
+  };
+});
+
+var entry = (callProvider => ({
+  ImportDeclaration(path) {
+    const source = getImportSource(path);
+    if (!source) return;
+    callProvider({
+      kind: "import",
+      source
+    }, path);
+  },
+  Program(path) {
+    path.get("body").forEach(bodyPath => {
+      const source = getRequireSource(bodyPath);
+      if (!source) return;
+      callProvider({
+        kind: "import",
+        source
+      }, bodyPath);
+    });
+  }
+}));
+
+function resolve(dirname, moduleName, absoluteImports) {
+  if (absoluteImports === false) return moduleName;
+  throw new Error(`"absoluteImports" is not supported in bundles prepared for the browser.`);
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function has(basedir, name) {
+  return true;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function logMissing(missingDeps) {}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function laterLogMissing(missingDeps) {}
+
+const PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
+function createMetaResolver(polyfills) {
+  const {
+    static: staticP,
+    instance: instanceP,
+    global: globalP
+  } = polyfills;
+  return meta => {
+    if (meta.kind === "global" && globalP && has$1(globalP, meta.name)) {
+      return {
+        kind: "global",
+        desc: globalP[meta.name],
+        name: meta.name
+      };
+    }
+    if (meta.kind === "property" || meta.kind === "in") {
+      const {
+        placement,
+        object,
+        key
+      } = meta;
+      if (object && placement === "static") {
+        if (globalP && PossibleGlobalObjects.has(object) && has$1(globalP, key)) {
+          return {
+            kind: "global",
+            desc: globalP[key],
+            name: key
+          };
+        }
+        if (staticP && has$1(staticP, object) && has$1(staticP[object], key)) {
+          return {
+            kind: "static",
+            desc: staticP[object][key],
+            name: `${object}$${key}`
+          };
+        }
+      }
+      if (instanceP && has$1(instanceP, key)) {
+        return {
+          kind: "instance",
+          desc: instanceP[key],
+          name: `${key}`
+        };
+      }
+    }
+  };
+}
+
+const getTargets = _getTargets.default || _getTargets;
+function resolveOptions(options, babelApi) {
+  const {
+    method,
+    targets: targetsOption,
+    ignoreBrowserslistConfig,
+    configPath,
+    debug,
+    shouldInjectPolyfill,
+    absoluteImports,
+    ...providerOptions
+  } = options;
+  if (isEmpty(options)) {
+    throw new Error(`\
+This plugin requires options, for example:
+    {
+      "plugins": [
+        ["<plugin name>", { method: "usage-pure" }]
+      ]
+    }
+
+See more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md`);
+  }
+  let methodName;
+  if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
+    throw new Error(".method must be a string");
+  } else {
+    throw new Error(`.method must be one of "entry-global", "usage-global"` + ` or "usage-pure" (received ${JSON.stringify(method)})`);
+  }
+  if (typeof shouldInjectPolyfill === "function") {
+    if (options.include || options.exclude) {
+      throw new Error(`.include and .exclude are not supported when using the` + ` .shouldInjectPolyfill function.`);
+    }
+  } else if (shouldInjectPolyfill != null) {
+    throw new Error(`.shouldInjectPolyfill must be a function, or undefined` + ` (received ${JSON.stringify(shouldInjectPolyfill)})`);
+  }
+  if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
+    throw new Error(`.absoluteImports must be a boolean, a string, or undefined` + ` (received ${JSON.stringify(absoluteImports)})`);
+  }
+  let targets;
+  if (
+  // If any browserslist-related option is specified, fallback to the old
+  // behavior of not using the targets specified in the top-level options.
+  targetsOption || configPath || ignoreBrowserslistConfig) {
+    const targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
+      browsers: targetsOption
+    } : targetsOption;
+    targets = getTargets(targetsObj, {
+      ignoreBrowserslistConfig,
+      configPath
+    });
+  } else {
+    targets = babelApi.targets();
+  }
+  return {
+    method,
+    methodName,
+    targets,
+    absoluteImports: absoluteImports != null ? absoluteImports : false,
+    shouldInjectPolyfill,
+    debug: !!debug,
+    providerOptions: providerOptions
+  };
+}
+function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
+  const {
+    method,
+    methodName,
+    targets,
+    debug,
+    shouldInjectPolyfill,
+    providerOptions,
+    absoluteImports
+  } = resolveOptions(options, babelApi);
+
+  // eslint-disable-next-line prefer-const
+  let include, exclude;
+  let polyfillsSupport;
+  let polyfillsNames;
+  let filterPolyfills;
+  const getUtils = createUtilsGetter(new ImportsCachedInjector(moduleName => resolve(dirname, moduleName, absoluteImports), name => {
+    var _polyfillsNames$get, _polyfillsNames;
+    return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
+  }));
+  const depsCache = new Map();
+  const api = {
+    babel: babelApi,
+    getUtils,
+    method: options.method,
+    targets,
+    createMetaResolver,
+    shouldInjectPolyfill(name) {
+      if (polyfillsNames === undefined) {
+        throw new Error(`Internal error in the ${factory.name} provider: ` + `shouldInjectPolyfill() can't be called during initialization.`);
+      }
+      if (!polyfillsNames.has(name)) {
+        console.warn(`Internal error in the ${providerName} provider: ` + `unknown polyfill "${name}".`);
+      }
+      if (filterPolyfills && !filterPolyfills(name)) return false;
+      let shouldInject = isRequired(name, targets, {
+        compatData: polyfillsSupport,
+        includes: include,
+        excludes: exclude
+      });
+      if (shouldInjectPolyfill) {
+        shouldInject = shouldInjectPolyfill(name, shouldInject);
+        if (typeof shouldInject !== "boolean") {
+          throw new Error(`.shouldInjectPolyfill must return a boolean.`);
+        }
+      }
+      return shouldInject;
+    },
+    debug(name) {
+      var _debugLog, _debugLog$polyfillsSu;
+      debugLog().found = true;
+      if (!debug || !name) return;
+      if (debugLog().polyfills.has(providerName)) return;
+      debugLog().polyfills.add(name);
+      (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
+    },
+    assertDependency(name, version = "*") {
+      if (missingDependencies === false) return;
+      if (absoluteImports) {
+        // If absoluteImports is not false, we will try resolving
+        // the dependency and throw if it's not possible. We can
+        // skip the check here.
+        return;
+      }
+      const dep = version === "*" ? name : `${name}@^${version}`;
+      const found = missingDependencies.all ? false : mapGetOr(depsCache, `${name} :: ${dirname}`, () => has());
+      if (!found) {
+        debugLog().missingDeps.add(dep);
+      }
+    }
+  };
+  const provider = factory(api, providerOptions, dirname);
+  const providerName = provider.name || factory.name;
+  if (typeof provider[methodName] !== "function") {
+    throw new Error(`The "${providerName}" provider doesn't support the "${method}" polyfilling method.`);
+  }
+  if (Array.isArray(provider.polyfills)) {
+    polyfillsNames = new Map(provider.polyfills.map((name, index) => [name, index]));
+    filterPolyfills = provider.filterPolyfills;
+  } else if (provider.polyfills) {
+    polyfillsNames = new Map(Object.keys(provider.polyfills).map((name, index) => [name, index]));
+    polyfillsSupport = provider.polyfills;
+    filterPolyfills = provider.filterPolyfills;
+  } else {
+    polyfillsNames = new Map();
+  }
+  ({
+    include,
+    exclude
+  } = validateIncludeExclude(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []));
+  let callProvider;
+  if (methodName === "usageGlobal") {
+    callProvider = (payload, path) => {
+      var _ref;
+      const utils = getUtils(path);
+      return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
+    };
+  } else {
+    callProvider = (payload, path) => {
+      const utils = getUtils(path);
+      provider[methodName](payload, utils, path);
+      return false;
+    };
+  }
+  return {
+    debug,
+    method,
+    targets,
+    provider,
+    providerName,
+    callProvider
+  };
+}
+function definePolyfillProvider(factory) {
+  return declare((babelApi, options, dirname) => {
+    babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
+    const {
+      traverse
+    } = babelApi;
+    let debugLog;
+    const missingDependencies = applyMissingDependenciesDefaults(options, babelApi);
+    const {
+      debug,
+      method,
+      targets,
+      provider,
+      providerName,
+      callProvider
+    } = instantiateProvider(factory, options, missingDependencies, dirname, () => debugLog, babelApi);
+    const createVisitor = method === "entry-global" ? entry : usage;
+    const visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
+    if (debug && debug !== presetEnvSilentDebugHeader) {
+      console.log(`${providerName}: \`DEBUG\` option`);
+      console.log(`\nUsing targets: ${stringifyTargetsMultiline(targets)}`);
+      console.log(`\nUsing polyfills with \`${method}\` method:`);
+    }
+    const {
+      runtimeName
+    } = provider;
+    return {
+      name: "inject-polyfills",
+      visitor,
+      pre(file) {
+        var _provider$pre;
+        if (runtimeName) {
+          if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
+            console.warn(`Two different polyfill providers` + ` (${file.get("runtimeHelpersModuleProvider")}` + ` and ${providerName}) are trying to define two` + ` conflicting @babel/runtime alternatives:` + ` ${file.get("runtimeHelpersModuleName")} and ${runtimeName}.` + ` The second one will be ignored.`);
+          } else {
+            file.set("runtimeHelpersModuleName", runtimeName);
+            file.set("runtimeHelpersModuleProvider", providerName);
+          }
+        }
+        debugLog = {
+          polyfills: new Set(),
+          polyfillsSupport: undefined,
+          found: false,
+          providers: new Set(),
+          missingDeps: new Set()
+        };
+        (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
+      },
+      post() {
+        var _provider$post;
+        (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
+        if (missingDependencies !== false) {
+          if (missingDependencies.log === "per-file") {
+            logMissing(debugLog.missingDeps);
+          } else {
+            laterLogMissing(debugLog.missingDeps);
+          }
+        }
+        if (!debug) return;
+        if (this.filename) console.log(`\n[${this.filename}]`);
+        if (debugLog.polyfills.size === 0) {
+          console.log(method === "entry-global" ? debugLog.found ? `Based on your targets, the ${providerName} polyfill did not add any polyfill.` : `The entry point for the ${providerName} polyfill has not been found.` : `Based on your code and targets, the ${providerName} polyfill did not add any polyfill.`);
+          return;
+        }
+        if (method === "entry-global") {
+          console.log(`The ${providerName} polyfill entry has been replaced with ` + `the following polyfills:`);
+        } else {
+          console.log(`The ${providerName} polyfill added the following polyfills:`);
+        }
+        for (const name of debugLog.polyfills) {
+          var _debugLog$polyfillsSu2;
+          if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
+            const filteredTargets = getInclusionReasons(name, targets, debugLog.polyfillsSupport);
+            const formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
+            console.log(`  ${name} ${formattedTargets}`);
+          } else {
+            console.log(`  ${name}`);
+          }
+        }
+      }
+    };
+  });
+}
+function mapGetOr(map, key, getDefault) {
+  let val = map.get(key);
+  if (val === undefined) {
+    val = getDefault();
+    map.set(key, val);
+  }
+  return val;
+}
+function isEmpty(obj) {
+  return Object.keys(obj).length === 0;
+}
+
+export default definePolyfillProvider;
+//# sourceMappingURL=index.browser.mjs.map
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.browser.mjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.browser.mjs","sources":["../src/utils.ts","../src/imports-injector.ts","../src/debug-utils.ts","../src/normalize-options.ts","../src/visitors/usage.ts","../src/visitors/entry.ts","../src/browser/dependencies.ts","../src/meta-resolver.ts","../src/index.ts"],"sourcesContent":["import { types as t, template } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport type { Utils } from \"./types\";\nimport type ImportsCachedInjector from \"./imports-injector\";\n\nexport function intersection<T>(a: Set<T>, b: Set<T>): Set<T> {\n  const result = new Set<T>();\n  a.forEach(v => b.has(v) && result.add(v));\n  return result;\n}\n\nexport function has(object: any, key: string) {\n  return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction getType(target: any): string {\n  return Object.prototype.toString.call(target).slice(8, -1);\n}\n\nfunction resolveId(path): string {\n  if (\n    path.isIdentifier() &&\n    !path.scope.hasBinding(path.node.name, /* noGlobals */ true)\n  ) {\n    return path.node.name;\n  }\n\n  if (path.isPure()) {\n    const { deopt } = path.evaluate();\n    if (deopt && deopt.isIdentifier()) {\n      return deopt.node.name;\n    }\n  }\n}\n\nexport function resolveKey(\n  path: NodePath<t.Expression | t.PrivateName>,\n  computed: boolean = false,\n) {\n  const { scope } = path;\n  if (path.isStringLiteral()) return path.node.value;\n  const isIdentifier = path.isIdentifier();\n  if (\n    isIdentifier &&\n    !(computed || (path.parent as t.MemberExpression).computed)\n  ) {\n    return path.node.name;\n  }\n\n  if (\n    computed &&\n    path.isMemberExpression() &&\n    path.get(\"object\").isIdentifier({ name: \"Symbol\" }) &&\n    !scope.hasBinding(\"Symbol\", /* noGlobals */ true)\n  ) {\n    const sym = resolveKey(path.get(\"property\"), path.node.computed);\n    if (sym) return \"Symbol.\" + sym;\n  }\n\n  if (\n    isIdentifier\n      ? scope.hasBinding(path.node.name, /* noGlobals */ true)\n      : path.isPure()\n  ) {\n    const { value } = path.evaluate();\n    if (typeof value === \"string\") return value;\n  }\n}\n\nexport function resolveSource(obj: NodePath): {\n  id: string | null;\n  placement: \"prototype\" | \"static\" | null;\n} {\n  if (\n    obj.isMemberExpression() &&\n    obj.get(\"property\").isIdentifier({ name: \"prototype\" })\n  ) {\n    const id = resolveId(obj.get(\"object\"));\n\n    if (id) {\n      return { id, placement: \"prototype\" };\n    }\n    return { id: null, placement: null };\n  }\n\n  const id = resolveId(obj);\n  if (id) {\n    return { id, placement: \"static\" };\n  }\n\n  if (obj.isRegExpLiteral()) {\n    return { id: \"RegExp\", placement: \"prototype\" };\n  } else if (obj.isFunction()) {\n    return { id: \"Function\", placement: \"prototype\" };\n  } else if (obj.isPure()) {\n    const { value } = obj.evaluate();\n    if (value !== undefined) {\n      return { id: getType(value), placement: \"prototype\" };\n    }\n  }\n\n  return { id: null, placement: null };\n}\n\nexport function getImportSource({ node }: NodePath<t.ImportDeclaration>) {\n  if (node.specifiers.length === 0) return node.source.value;\n}\n\nexport function getRequireSource({ node }: NodePath<t.Statement>) {\n  if (!t.isExpressionStatement(node)) return;\n  const { expression } = node;\n  if (\n    t.isCallExpression(expression) &&\n    t.isIdentifier(expression.callee) &&\n    expression.callee.name === \"require\" &&\n    expression.arguments.length === 1 &&\n    t.isStringLiteral(expression.arguments[0])\n  ) {\n    return expression.arguments[0].value;\n  }\n}\n\nfunction hoist(node: t.Node) {\n  // @ts-expect-error\n  node._blockHoist = 3;\n  return node;\n}\n\nexport function createUtilsGetter(cache: ImportsCachedInjector) {\n  return (path: NodePath): Utils => {\n    const prog = path.findParent(p => p.isProgram()) as NodePath<t.Program>;\n\n    return {\n      injectGlobalImport(url, moduleName) {\n        cache.storeAnonymous(prog, url, moduleName, (isScript, source) => {\n          return isScript\n            ? template.statement.ast`require(${source})`\n            : t.importDeclaration([], source);\n        });\n      },\n      injectNamedImport(url, name, hint = name, moduleName) {\n        return cache.storeNamed(\n          prog,\n          url,\n          name,\n          moduleName,\n          (isScript, source, name) => {\n            const id = prog.scope.generateUidIdentifier(hint);\n            return {\n              node: isScript\n                ? hoist(template.statement.ast`\n                  var ${id} = require(${source}).${name}\n                `)\n                : t.importDeclaration([t.importSpecifier(id, name)], source),\n              name: id.name,\n            };\n          },\n        );\n      },\n      injectDefaultImport(url, hint = url, moduleName) {\n        return cache.storeNamed(\n          prog,\n          url,\n          \"default\",\n          moduleName,\n          (isScript, source) => {\n            const id = prog.scope.generateUidIdentifier(hint);\n            return {\n              node: isScript\n                ? hoist(template.statement.ast`var ${id} = require(${source})`)\n                : t.importDeclaration([t.importDefaultSpecifier(id)], source),\n              name: id.name,\n            };\n          },\n        );\n      },\n    };\n  };\n}\n","import type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\n\ntype StrMap<K> = Map<string, K>;\n\nexport default class ImportsCachedInjector {\n  _imports: WeakMap<NodePath<t.Program>, StrMap<string>>;\n  _anonymousImports: WeakMap<NodePath<t.Program>, Set<string>>;\n  _lastImports: WeakMap<\n    NodePath<t.Program>,\n    Array<{ path: NodePath<t.Node>; index: number }>\n  >;\n  _resolver: (url: string) => string;\n  _getPreferredIndex: (url: string) => number;\n\n  constructor(\n    resolver: (url: string) => string,\n    getPreferredIndex: (url: string) => number,\n  ) {\n    this._imports = new WeakMap();\n    this._anonymousImports = new WeakMap();\n    this._lastImports = new WeakMap();\n    this._resolver = resolver;\n    this._getPreferredIndex = getPreferredIndex;\n  }\n\n  storeAnonymous(\n    programPath: NodePath<t.Program>,\n    url: string,\n    moduleName: string,\n    getVal: (isScript: boolean, source: t.StringLiteral) => t.Node,\n  ) {\n    const key = this._normalizeKey(programPath, url);\n    const imports = this._ensure<Set<string>>(\n      this._anonymousImports,\n      programPath,\n      Set,\n    );\n\n    if (imports.has(key)) return;\n\n    const node = getVal(\n      programPath.node.sourceType === \"script\",\n      t.stringLiteral(this._resolver(url)),\n    );\n    imports.add(key);\n    this._injectImport(programPath, node, moduleName);\n  }\n\n  storeNamed(\n    programPath: NodePath<t.Program>,\n    url: string,\n    name: string,\n    moduleName: string,\n    getVal: (\n      isScript: boolean,\n      // eslint-disable-next-line no-undef\n      source: t.StringLiteral,\n      // eslint-disable-next-line no-undef\n      name: t.Identifier,\n    ) => { node: t.Node; name: string },\n  ) {\n    const key = this._normalizeKey(programPath, url, name);\n    const imports = this._ensure<Map<string, any>>(\n      this._imports,\n      programPath,\n      Map,\n    );\n\n    if (!imports.has(key)) {\n      const { node, name: id } = getVal(\n        programPath.node.sourceType === \"script\",\n        t.stringLiteral(this._resolver(url)),\n        t.identifier(name),\n      );\n      imports.set(key, id);\n      this._injectImport(programPath, node, moduleName);\n    }\n\n    return t.identifier(imports.get(key));\n  }\n\n  _injectImport(\n    programPath: NodePath<t.Program>,\n    node: t.Node,\n    moduleName: string,\n  ) {\n    const newIndex = this._getPreferredIndex(moduleName);\n    const lastImports = this._lastImports.get(programPath) ?? [];\n\n    const isPathStillValid = (path: NodePath) =>\n      path.node &&\n      // Sometimes the AST is modified and the \"last import\"\n      // we have has been replaced\n      path.parent === programPath.node &&\n      path.container === programPath.node.body;\n\n    let last: NodePath;\n\n    if (newIndex === Infinity) {\n      // Fast path: we can always just insert at the end if newIndex is `Infinity`\n      if (lastImports.length > 0) {\n        last = lastImports[lastImports.length - 1].path;\n        if (!isPathStillValid(last)) last = undefined;\n      }\n    } else {\n      for (const [i, data] of lastImports.entries()) {\n        const { path, index } = data;\n        if (isPathStillValid(path)) {\n          if (newIndex < index) {\n            const [newPath] = path.insertBefore(node);\n            lastImports.splice(i, 0, { path: newPath, index: newIndex });\n            return;\n          }\n          last = path;\n        }\n      }\n    }\n\n    if (last) {\n      const [newPath] = last.insertAfter(node);\n      lastImports.push({ path: newPath, index: newIndex });\n    } else {\n      const [newPath] = programPath.unshiftContainer(\"body\", node);\n      this._lastImports.set(programPath, [{ path: newPath, index: newIndex }]);\n    }\n  }\n\n  _ensure<C extends Map<string, any> | Set<string>>(\n    map: WeakMap<NodePath<t.Program>, C>,\n    programPath: NodePath<t.Program>,\n    Collection: { new (...args: any): C },\n  ): C {\n    let collection = map.get(programPath);\n    if (!collection) {\n      collection = new Collection();\n      map.set(programPath, collection);\n    }\n    return collection;\n  }\n\n  _normalizeKey(\n    programPath: NodePath<t.Program>,\n    url: string,\n    name: string = \"\",\n  ): string {\n    const { sourceType } = programPath.node;\n\n    // If we rely on the imported binding (the \"name\" parameter), we also need to cache\n    // based on the sourceType. This is because the module transforms change the names\n    // of the import variables.\n    return `${name && sourceType}::${url}::${name}`;\n  }\n}\n","import { prettifyTargets } from \"@babel/helper-compilation-targets\";\n\nimport type { Targets } from \"./types\";\n\nexport const presetEnvSilentDebugHeader =\n  \"#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets\";\n\nexport function stringifyTargetsMultiline(targets: Targets): string {\n  return JSON.stringify(prettifyTargets(targets), null, 2);\n}\n\nexport function stringifyTargets(targets: Targets): string {\n  return JSON.stringify(targets)\n    .replace(/,/g, \", \")\n    .replace(/^\\{\"/, '{ \"')\n    .replace(/\"\\}$/, '\" }');\n}\n","import { intersection } from \"./utils\";\nimport type {\n  Pattern,\n  PluginOptions,\n  MissingDependenciesOption,\n} from \"./types\";\n\nfunction patternToRegExp(pattern: Pattern): RegExp | null {\n  if (pattern instanceof RegExp) return pattern;\n\n  try {\n    return new RegExp(`^${pattern}$`);\n  } catch {\n    return null;\n  }\n}\n\nfunction buildUnusedError(label, unused) {\n  if (!unused.length) return \"\";\n  return (\n    `  - The following \"${label}\" patterns didn't match any polyfill:\\n` +\n    unused.map(original => `    ${String(original)}\\n`).join(\"\")\n  );\n}\n\nfunction buldDuplicatesError(duplicates) {\n  if (!duplicates.size) return \"\";\n  return (\n    `  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\\n` +\n    Array.from(duplicates, name => `    ${name}\\n`).join(\"\")\n  );\n}\n\nexport function validateIncludeExclude(\n  provider: string,\n  polyfills: Map<string, unknown>,\n  includePatterns: Pattern[],\n  excludePatterns: Pattern[],\n) {\n  let current;\n  const filter = pattern => {\n    const regexp = patternToRegExp(pattern);\n    if (!regexp) return false;\n\n    let matched = false;\n    for (const polyfill of polyfills.keys()) {\n      if (regexp.test(polyfill)) {\n        matched = true;\n        current.add(polyfill);\n      }\n    }\n    return !matched;\n  };\n\n  // prettier-ignore\n  const include = current = new Set<string> ();\n  const unusedInclude = Array.from(includePatterns).filter(filter);\n\n  // prettier-ignore\n  const exclude = current = new Set<string> ();\n  const unusedExclude = Array.from(excludePatterns).filter(filter);\n\n  const duplicates = intersection(include, exclude);\n\n  if (\n    duplicates.size > 0 ||\n    unusedInclude.length > 0 ||\n    unusedExclude.length > 0\n  ) {\n    throw new Error(\n      `Error while validating the \"${provider}\" provider options:\\n` +\n        buildUnusedError(\"include\", unusedInclude) +\n        buildUnusedError(\"exclude\", unusedExclude) +\n        buldDuplicatesError(duplicates),\n    );\n  }\n\n  return { include, exclude };\n}\n\nexport function applyMissingDependenciesDefaults(\n  options: PluginOptions,\n  babelApi: any,\n): MissingDependenciesOption {\n  const { missingDependencies = {} } = options;\n  if (missingDependencies === false) return false;\n\n  const caller = babelApi.caller(caller => caller?.name);\n\n  const {\n    log = \"deferred\",\n    inject = caller === \"rollup-plugin-babel\" ? \"throw\" : \"import\",\n    all = false,\n  } = missingDependencies;\n\n  return { log, inject, all };\n}\n","import type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\nimport type { CallProvider } from \"./index\";\n\nimport { resolveKey, resolveSource } from \"../utils\";\n\nfunction isRemoved(path: NodePath) {\n  if (path.removed) return true;\n  if (!path.parentPath) return false;\n  if (path.listKey) {\n    if (!path.parentPath.node?.[path.listKey]?.includes(path.node)) return true;\n  } else {\n    if (path.parentPath.node[path.key] !== path.node) return true;\n  }\n  return isRemoved(path.parentPath);\n}\n\nexport default (callProvider: CallProvider) => {\n  function property(object, key, placement, path) {\n    return callProvider({ kind: \"property\", object, key, placement }, path);\n  }\n\n  function handleReferencedIdentifier(path) {\n    const {\n      node: { name },\n      scope,\n    } = path;\n    if (scope.getBindingIdentifier(name)) return;\n\n    callProvider({ kind: \"global\", name }, path);\n  }\n\n  function analyzeMemberExpression(\n    path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  ) {\n    const key = resolveKey(path.get(\"property\"), path.node.computed);\n    return { key, handleAsMemberExpression: !!key && key !== \"prototype\" };\n  }\n\n  return {\n    // Symbol(), new Promise\n    ReferencedIdentifier(path: NodePath<t.Identifier>) {\n      const { parentPath } = path;\n      if (\n        parentPath.isMemberExpression({ object: path.node }) &&\n        analyzeMemberExpression(parentPath).handleAsMemberExpression\n      ) {\n        return;\n      }\n      handleReferencedIdentifier(path);\n    },\n\n    \"MemberExpression|OptionalMemberExpression\"(\n      path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n    ) {\n      const { key, handleAsMemberExpression } = analyzeMemberExpression(path);\n      if (!handleAsMemberExpression) return;\n\n      const object = path.get(\"object\");\n      let objectIsGlobalIdentifier = object.isIdentifier();\n      if (objectIsGlobalIdentifier) {\n        const binding = object.scope.getBinding(\n          (object.node as t.Identifier).name,\n        );\n        if (binding) {\n          if (binding.path.isImportNamespaceSpecifier()) return;\n          objectIsGlobalIdentifier = false;\n        }\n      }\n\n      const source = resolveSource(object);\n      let skipObject = property(source.id, key, source.placement, path);\n      skipObject ||=\n        !objectIsGlobalIdentifier ||\n        path.shouldSkip ||\n        object.shouldSkip ||\n        isRemoved(object);\n\n      if (!skipObject) handleReferencedIdentifier(object);\n    },\n\n    ObjectPattern(path: NodePath<t.ObjectPattern>) {\n      const { parentPath, parent } = path;\n      let obj;\n\n      // const { keys, values } = Object\n      if (parentPath.isVariableDeclarator()) {\n        obj = parentPath.get(\"init\");\n        // ({ keys, values } = Object)\n      } else if (parentPath.isAssignmentExpression()) {\n        obj = parentPath.get(\"right\");\n        // !function ({ keys, values }) {...} (Object)\n        // resolution does not work after properties transform :-(\n      } else if (parentPath.isFunction()) {\n        const grand = parentPath.parentPath;\n        if (grand.isCallExpression() || grand.isNewExpression()) {\n          if (grand.node.callee === parent) {\n            obj = grand.get(\"arguments\")[path.key];\n          }\n        }\n      }\n\n      let id = null;\n      let placement = null;\n      if (obj) ({ id, placement } = resolveSource(obj));\n\n      for (const prop of path.get(\"properties\")) {\n        if (prop.isObjectProperty()) {\n          const key = resolveKey(prop.get(\"key\"));\n          if (key) property(id, key, placement, prop);\n        }\n      }\n    },\n\n    BinaryExpression(path: NodePath<t.BinaryExpression>) {\n      if (path.node.operator !== \"in\") return;\n\n      const source = resolveSource(path.get(\"right\"));\n      const key = resolveKey(path.get(\"left\"), true);\n\n      if (!key) return;\n\n      callProvider(\n        {\n          kind: \"in\",\n          object: source.id,\n          key,\n          placement: source.placement,\n        },\n        path,\n      );\n    },\n  };\n};\n","import type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\nimport type { CallProvider } from \"./index\";\n\nimport { getImportSource, getRequireSource } from \"../utils\";\n\nexport default (callProvider: CallProvider) => ({\n  ImportDeclaration(path: NodePath<t.ImportDeclaration>) {\n    const source = getImportSource(path);\n    if (!source) return;\n    callProvider({ kind: \"import\", source }, path);\n  },\n  Program(path: NodePath<t.Program>) {\n    path.get(\"body\").forEach(bodyPath => {\n      const source = getRequireSource(bodyPath);\n      if (!source) return;\n      callProvider({ kind: \"import\", source }, bodyPath);\n    });\n  },\n});\n","export function resolve(\n  dirname: string,\n  moduleName: string,\n  absoluteImports: boolean | string,\n): string {\n  if (absoluteImports === false) return moduleName;\n\n  throw new Error(\n    `\"absoluteImports\" is not supported in bundles prepared for the browser.`,\n  );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function has(basedir: string, name: string) {\n  return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function logMissing(missingDeps: Set<string>) {}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function laterLogMissing(missingDeps: Set<string>) {}\n","import type {\n  MetaDescriptor,\n  ResolverPolyfills,\n  ResolvedPolyfill,\n} from \"./types\";\n\nimport { has } from \"./utils\";\n\ntype ResolverFn<T> = (meta: MetaDescriptor) => void | ResolvedPolyfill<T>;\n\nconst PossibleGlobalObjects = new Set<string>([\n  \"global\",\n  \"globalThis\",\n  \"self\",\n  \"window\",\n]);\n\nexport default function createMetaResolver<T>(\n  polyfills: ResolverPolyfills<T>,\n): ResolverFn<T> {\n  const { static: staticP, instance: instanceP, global: globalP } = polyfills;\n\n  return meta => {\n    if (meta.kind === \"global\" && globalP && has(globalP, meta.name)) {\n      return { kind: \"global\", desc: globalP[meta.name], name: meta.name };\n    }\n\n    if (meta.kind === \"property\" || meta.kind === \"in\") {\n      const { placement, object, key } = meta;\n\n      if (object && placement === \"static\") {\n        if (globalP && PossibleGlobalObjects.has(object) && has(globalP, key)) {\n          return { kind: \"global\", desc: globalP[key], name: key };\n        }\n\n        if (staticP && has(staticP, object) && has(staticP[object], key)) {\n          return {\n            kind: \"static\",\n            desc: staticP[object][key],\n            name: `${object}$${key}`,\n          };\n        }\n      }\n\n      if (instanceP && has(instanceP, key)) {\n        return { kind: \"instance\", desc: instanceP[key], name: `${key}` };\n      }\n    }\n  };\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport type { NodePath } from \"@babel/traverse\";\n\nimport _getTargets, {\n  isRequired,\n  getInclusionReasons,\n} from \"@babel/helper-compilation-targets\";\nconst getTargets = _getTargets.default || _getTargets;\n\nimport { createUtilsGetter } from \"./utils\";\nimport ImportsCachedInjector from \"./imports-injector\";\nimport {\n  stringifyTargetsMultiline,\n  presetEnvSilentDebugHeader,\n} from \"./debug-utils\";\nimport {\n  validateIncludeExclude,\n  applyMissingDependenciesDefaults,\n} from \"./normalize-options\";\n\nimport type {\n  ProviderApi,\n  MethodString,\n  Targets,\n  MetaDescriptor,\n  PolyfillProvider,\n  PluginOptions,\n  ProviderOptions,\n} from \"./types\";\n\nimport * as v from \"./visitors\";\nimport * as deps from \"./node/dependencies\";\n\nimport createMetaResolver from \"./meta-resolver\";\n\nexport type { PolyfillProvider, MetaDescriptor, Utils, Targets } from \"./types\";\n\nfunction resolveOptions<Options>(\n  options: PluginOptions,\n  babelApi,\n): {\n  method: MethodString;\n  methodName: \"usageGlobal\" | \"entryGlobal\" | \"usagePure\";\n  targets: Targets;\n  debug: boolean | typeof presetEnvSilentDebugHeader;\n  shouldInjectPolyfill:\n    | ((name: string, shouldInject: boolean) => boolean)\n    | undefined;\n  providerOptions: ProviderOptions<Options>;\n  absoluteImports: string | boolean;\n} {\n  const {\n    method,\n    targets: targetsOption,\n    ignoreBrowserslistConfig,\n    configPath,\n    debug,\n    shouldInjectPolyfill,\n    absoluteImports,\n    ...providerOptions\n  } = options;\n\n  if (isEmpty(options)) {\n    throw new Error(\n      `\\\nThis plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md`,\n    );\n  }\n\n  let methodName;\n  if (method === \"usage-global\") methodName = \"usageGlobal\";\n  else if (method === \"entry-global\") methodName = \"entryGlobal\";\n  else if (method === \"usage-pure\") methodName = \"usagePure\";\n  else if (typeof method !== \"string\") {\n    throw new Error(\".method must be a string\");\n  } else {\n    throw new Error(\n      `.method must be one of \"entry-global\", \"usage-global\"` +\n        ` or \"usage-pure\" (received ${JSON.stringify(method)})`,\n    );\n  }\n\n  if (typeof shouldInjectPolyfill === \"function\") {\n    if (options.include || options.exclude) {\n      throw new Error(\n        `.include and .exclude are not supported when using the` +\n          ` .shouldInjectPolyfill function.`,\n      );\n    }\n  } else if (shouldInjectPolyfill != null) {\n    throw new Error(\n      `.shouldInjectPolyfill must be a function, or undefined` +\n        ` (received ${JSON.stringify(shouldInjectPolyfill)})`,\n    );\n  }\n\n  if (\n    absoluteImports != null &&\n    typeof absoluteImports !== \"boolean\" &&\n    typeof absoluteImports !== \"string\"\n  ) {\n    throw new Error(\n      `.absoluteImports must be a boolean, a string, or undefined` +\n        ` (received ${JSON.stringify(absoluteImports)})`,\n    );\n  }\n\n  let targets;\n\n  if (\n    // If any browserslist-related option is specified, fallback to the old\n    // behavior of not using the targets specified in the top-level options.\n    targetsOption ||\n    configPath ||\n    ignoreBrowserslistConfig\n  ) {\n    const targetsObj =\n      typeof targetsOption === \"string\" || Array.isArray(targetsOption)\n        ? { browsers: targetsOption }\n        : targetsOption;\n\n    targets = getTargets(targetsObj, {\n      ignoreBrowserslistConfig,\n      configPath,\n    });\n  } else {\n    targets = babelApi.targets();\n  }\n\n  return {\n    method,\n    methodName,\n    targets,\n    absoluteImports: absoluteImports ?? false,\n    shouldInjectPolyfill,\n    debug: !!debug,\n    providerOptions: providerOptions as any as ProviderOptions<Options>,\n  };\n}\n\nfunction instantiateProvider<Options>(\n  factory: PolyfillProvider<Options>,\n  options: PluginOptions,\n  missingDependencies,\n  dirname,\n  debugLog,\n  babelApi,\n) {\n  const {\n    method,\n    methodName,\n    targets,\n    debug,\n    shouldInjectPolyfill,\n    providerOptions,\n    absoluteImports,\n  } = resolveOptions<Options>(options, babelApi);\n\n  // eslint-disable-next-line prefer-const\n  let include, exclude;\n  let polyfillsSupport;\n  let polyfillsNames: Map<string, number> | undefined;\n  let filterPolyfills;\n\n  const getUtils = createUtilsGetter(\n    new ImportsCachedInjector(\n      moduleName => deps.resolve(dirname, moduleName, absoluteImports),\n      (name: string) => polyfillsNames?.get(name) ?? Infinity,\n    ),\n  );\n\n  const depsCache = new Map();\n\n  const api: ProviderApi = {\n    babel: babelApi,\n    getUtils,\n    method: options.method,\n    targets,\n    createMetaResolver,\n    shouldInjectPolyfill(name) {\n      if (polyfillsNames === undefined) {\n        throw new Error(\n          `Internal error in the ${factory.name} provider: ` +\n            `shouldInjectPolyfill() can't be called during initialization.`,\n        );\n      }\n      if (!polyfillsNames.has(name)) {\n        console.warn(\n          `Internal error in the ${providerName} provider: ` +\n            `unknown polyfill \"${name}\".`,\n        );\n      }\n\n      if (filterPolyfills && !filterPolyfills(name)) return false;\n\n      let shouldInject = isRequired(name, targets, {\n        compatData: polyfillsSupport,\n        includes: include,\n        excludes: exclude,\n      });\n\n      if (shouldInjectPolyfill) {\n        shouldInject = shouldInjectPolyfill(name, shouldInject);\n        if (typeof shouldInject !== \"boolean\") {\n          throw new Error(`.shouldInjectPolyfill must return a boolean.`);\n        }\n      }\n\n      return shouldInject;\n    },\n    debug(name) {\n      debugLog().found = true;\n\n      if (!debug || !name) return;\n\n      if (debugLog().polyfills.has(providerName)) return;\n      debugLog().polyfills.add(name);\n      debugLog().polyfillsSupport ??= polyfillsSupport;\n    },\n    assertDependency(name, version = \"*\") {\n      if (missingDependencies === false) return;\n      if (absoluteImports) {\n        // If absoluteImports is not false, we will try resolving\n        // the dependency and throw if it's not possible. We can\n        // skip the check here.\n        return;\n      }\n\n      const dep = version === \"*\" ? name : `${name}@^${version}`;\n\n      const found = missingDependencies.all\n        ? false\n        : mapGetOr(depsCache, `${name} :: ${dirname}`, () =>\n            deps.has(dirname, name),\n          );\n\n      if (!found) {\n        debugLog().missingDeps.add(dep);\n      }\n    },\n  };\n\n  const provider = factory(api, providerOptions, dirname);\n  const providerName = provider.name || factory.name;\n\n  if (typeof provider[methodName] !== \"function\") {\n    throw new Error(\n      `The \"${providerName}\" provider doesn't support the \"${method}\" polyfilling method.`,\n    );\n  }\n\n  if (Array.isArray(provider.polyfills)) {\n    polyfillsNames = new Map(\n      provider.polyfills.map((name, index) => [name, index]),\n    );\n    filterPolyfills = provider.filterPolyfills;\n  } else if (provider.polyfills) {\n    polyfillsNames = new Map(\n      Object.keys(provider.polyfills).map((name, index) => [name, index]),\n    );\n    polyfillsSupport = provider.polyfills;\n    filterPolyfills = provider.filterPolyfills;\n  } else {\n    polyfillsNames = new Map();\n  }\n\n  ({ include, exclude } = validateIncludeExclude(\n    providerName,\n    polyfillsNames,\n    providerOptions.include || [],\n    providerOptions.exclude || [],\n  ));\n\n  let callProvider: (payload: MetaDescriptor, path: NodePath) => boolean;\n  if (methodName === \"usageGlobal\") {\n    callProvider = (payload, path) => {\n      const utils = getUtils(path);\n      return (\n        (provider[methodName](payload, utils, path) satisfies boolean) ?? false\n      );\n    };\n  } else {\n    callProvider = (payload, path) => {\n      const utils = getUtils(path);\n      provider[methodName](payload, utils, path) satisfies void;\n      return false;\n    };\n  }\n\n  return {\n    debug,\n    method,\n    targets,\n    provider,\n    providerName,\n    callProvider,\n  };\n}\n\nexport default function definePolyfillProvider<Options>(\n  factory: PolyfillProvider<Options>,\n) {\n  return declare((babelApi, options: PluginOptions, dirname: string) => {\n    babelApi.assertVersion(\"^7.0.0 || ^8.0.0-alpha.0\");\n    const { traverse } = babelApi;\n\n    let debugLog;\n\n    const missingDependencies = applyMissingDependenciesDefaults(\n      options,\n      babelApi,\n    );\n\n    const { debug, method, targets, provider, providerName, callProvider } =\n      instantiateProvider<Options>(\n        factory,\n        options,\n        missingDependencies,\n        dirname,\n        () => debugLog,\n        babelApi,\n      );\n\n    const createVisitor = method === \"entry-global\" ? v.entry : v.usage;\n\n    const visitor = provider.visitor\n      ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor])\n      : createVisitor(callProvider);\n\n    if (debug && debug !== presetEnvSilentDebugHeader) {\n      console.log(`${providerName}: \\`DEBUG\\` option`);\n      console.log(`\\nUsing targets: ${stringifyTargetsMultiline(targets)}`);\n      console.log(`\\nUsing polyfills with \\`${method}\\` method:`);\n    }\n\n    const { runtimeName } = provider;\n\n    return {\n      name: \"inject-polyfills\",\n      visitor,\n\n      pre(file) {\n        if (runtimeName) {\n          if (\n            file.get(\"runtimeHelpersModuleName\") &&\n            file.get(\"runtimeHelpersModuleName\") !== runtimeName\n          ) {\n            console.warn(\n              `Two different polyfill providers` +\n                ` (${file.get(\"runtimeHelpersModuleProvider\")}` +\n                ` and ${providerName}) are trying to define two` +\n                ` conflicting @babel/runtime alternatives:` +\n                ` ${file.get(\"runtimeHelpersModuleName\")} and ${runtimeName}.` +\n                ` The second one will be ignored.`,\n            );\n          } else {\n            file.set(\"runtimeHelpersModuleName\", runtimeName);\n            file.set(\"runtimeHelpersModuleProvider\", providerName);\n          }\n        }\n\n        debugLog = {\n          polyfills: new Set(),\n          polyfillsSupport: undefined,\n          found: false,\n          providers: new Set(),\n          missingDeps: new Set(),\n        };\n\n        provider.pre?.apply(this, arguments);\n      },\n      post() {\n        provider.post?.apply(this, arguments);\n\n        if (missingDependencies !== false) {\n          if (missingDependencies.log === \"per-file\") {\n            deps.logMissing(debugLog.missingDeps);\n          } else {\n            deps.laterLogMissing(debugLog.missingDeps);\n          }\n        }\n\n        if (!debug) return;\n\n        if (this.filename) console.log(`\\n[${this.filename}]`);\n\n        if (debugLog.polyfills.size === 0) {\n          console.log(\n            method === \"entry-global\"\n              ? debugLog.found\n                ? `Based on your targets, the ${providerName} polyfill did not add any polyfill.`\n                : `The entry point for the ${providerName} polyfill has not been found.`\n              : `Based on your code and targets, the ${providerName} polyfill did not add any polyfill.`,\n          );\n\n          return;\n        }\n\n        if (method === \"entry-global\") {\n          console.log(\n            `The ${providerName} polyfill entry has been replaced with ` +\n              `the following polyfills:`,\n          );\n        } else {\n          console.log(\n            `The ${providerName} polyfill added the following polyfills:`,\n          );\n        }\n\n        for (const name of debugLog.polyfills) {\n          if (debugLog.polyfillsSupport?.[name]) {\n            const filteredTargets = getInclusionReasons(\n              name,\n              targets,\n              debugLog.polyfillsSupport,\n            );\n\n            const formattedTargets = JSON.stringify(filteredTargets)\n              .replace(/,/g, \", \")\n              .replace(/^\\{\"/, '{ \"')\n              .replace(/\"\\}$/, '\" }');\n\n            console.log(`  ${name} ${formattedTargets}`);\n          } else {\n            console.log(`  ${name}`);\n          }\n        }\n      },\n    };\n  });\n}\n\nfunction mapGetOr(map, key, getDefault) {\n  let val = map.get(key);\n  if (val === undefined) {\n    val = getDefault();\n    map.set(key, val);\n  }\n  return val;\n}\n\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n"],"names":["types","t","template","_babel","default","intersection","a","b","result","Set","forEach","v","has","add","object","key","Object","prototype","hasOwnProperty","call","getType","target","toString","slice","resolveId","path","isIdentifier","scope","hasBinding","node","name","isPure","deopt","evaluate","resolveKey","computed","isStringLiteral","value","parent","isMemberExpression","get","sym","resolveSource","obj","id","placement","isRegExpLiteral","isFunction","undefined","getImportSource","specifiers","length","source","getRequireSource","isExpressionStatement","expression","isCallExpression","callee","arguments","hoist","_blockHoist","createUtilsGetter","cache","prog","findParent","p","isProgram","injectGlobalImport","url","moduleName","storeAnonymous","isScript","statement","ast","importDeclaration","injectNamedImport","hint","storeNamed","generateUidIdentifier","importSpecifier","injectDefaultImport","importDefaultSpecifier","ImportsCachedInjector","constructor","resolver","getPreferredIndex","_imports","WeakMap","_anonymousImports","_lastImports","_resolver","_getPreferredIndex","programPath","getVal","_normalizeKey","imports","_ensure","sourceType","stringLiteral","_injectImport","Map","identifier","set","_this$_lastImports$ge","newIndex","lastImports","isPathStillValid","container","body","last","Infinity","i","data","entries","index","newPath","insertBefore","splice","insertAfter","push","unshiftContainer","map","Collection","collection","presetEnvSilentDebugHeader","stringifyTargetsMultiline","targets","JSON","stringify","prettifyTargets","patternToRegExp","pattern","RegExp","buildUnusedError","label","unused","original","String","join","buldDuplicatesError","duplicates","size","Array","from","validateIncludeExclude","provider","polyfills","includePatterns","excludePatterns","current","filter","regexp","matched","polyfill","keys","test","include","unusedInclude","exclude","unusedExclude","Error","applyMissingDependenciesDefaults","options","babelApi","missingDependencies","caller","log","inject","all","isRemoved","removed","parentPath","listKey","_path$parentPath$node","includes","callProvider","property","kind","handleReferencedIdentifier","getBindingIdentifier","analyzeMemberExpression","handleAsMemberExpression","ReferencedIdentifier","MemberExpression|OptionalMemberExpression","objectIsGlobalIdentifier","binding","getBinding","isImportNamespaceSpecifier","skipObject","shouldSkip","ObjectPattern","isVariableDeclarator","isAssignmentExpression","grand","isNewExpression","prop","isObjectProperty","BinaryExpression","operator","ImportDeclaration","Program","bodyPath","resolve","dirname","absoluteImports","basedir","logMissing","missingDeps","laterLogMissing","PossibleGlobalObjects","createMetaResolver","static","staticP","instance","instanceP","global","globalP","meta","desc","getTargets","_getTargets","resolveOptions","method","targetsOption","ignoreBrowserslistConfig","configPath","debug","shouldInjectPolyfill","providerOptions","isEmpty","methodName","targetsObj","isArray","browsers","instantiateProvider","factory","debugLog","polyfillsSupport","polyfillsNames","filterPolyfills","getUtils","deps","_polyfillsNames$get","_polyfillsNames","depsCache","api","babel","console","warn","providerName","shouldInject","isRequired","compatData","excludes","_debugLog","_debugLog$polyfillsSu","found","assertDependency","version","dep","mapGetOr","payload","_ref","utils","definePolyfillProvider","declare","assertVersion","traverse","createVisitor","visitor","visitors","merge","runtimeName","pre","file","_provider$pre","providers","apply","post","_provider$post","filename","_debugLog$polyfillsSu2","filteredTargets","getInclusionReasons","formattedTargets","replace","getDefault","val"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,854 @@
+import { declare } from '@babel/helper-plugin-utils';
+import _getTargets, { prettifyTargets, getInclusionReasons, isRequired } from '@babel/helper-compilation-targets';
+import * as _babel from '@babel/core';
+import path from 'path';
+import debounce from 'lodash.debounce';
+import requireResolve from 'resolve';
+import { createRequire } from 'module';
+
+const {
+  types: t$1,
+  template: template
+} = _babel.default || _babel;
+function intersection(a, b) {
+  const result = new Set();
+  a.forEach(v => b.has(v) && result.add(v));
+  return result;
+}
+function has$1(object, key) {
+  return Object.prototype.hasOwnProperty.call(object, key);
+}
+function getType(target) {
+  return Object.prototype.toString.call(target).slice(8, -1);
+}
+function resolveId(path) {
+  if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, /* noGlobals */true)) {
+    return path.node.name;
+  }
+  if (path.isPure()) {
+    const {
+      deopt
+    } = path.evaluate();
+    if (deopt && deopt.isIdentifier()) {
+      return deopt.node.name;
+    }
+  }
+}
+function resolveKey(path, computed = false) {
+  const {
+    scope
+  } = path;
+  if (path.isStringLiteral()) return path.node.value;
+  const isIdentifier = path.isIdentifier();
+  if (isIdentifier && !(computed || path.parent.computed)) {
+    return path.node.name;
+  }
+  if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
+    name: "Symbol"
+  }) && !scope.hasBinding("Symbol", /* noGlobals */true)) {
+    const sym = resolveKey(path.get("property"), path.node.computed);
+    if (sym) return "Symbol." + sym;
+  }
+  if (isIdentifier ? scope.hasBinding(path.node.name, /* noGlobals */true) : path.isPure()) {
+    const {
+      value
+    } = path.evaluate();
+    if (typeof value === "string") return value;
+  }
+}
+function resolveSource(obj) {
+  if (obj.isMemberExpression() && obj.get("property").isIdentifier({
+    name: "prototype"
+  })) {
+    const id = resolveId(obj.get("object"));
+    if (id) {
+      return {
+        id,
+        placement: "prototype"
+      };
+    }
+    return {
+      id: null,
+      placement: null
+    };
+  }
+  const id = resolveId(obj);
+  if (id) {
+    return {
+      id,
+      placement: "static"
+    };
+  }
+  if (obj.isRegExpLiteral()) {
+    return {
+      id: "RegExp",
+      placement: "prototype"
+    };
+  } else if (obj.isFunction()) {
+    return {
+      id: "Function",
+      placement: "prototype"
+    };
+  } else if (obj.isPure()) {
+    const {
+      value
+    } = obj.evaluate();
+    if (value !== undefined) {
+      return {
+        id: getType(value),
+        placement: "prototype"
+      };
+    }
+  }
+  return {
+    id: null,
+    placement: null
+  };
+}
+function getImportSource({
+  node
+}) {
+  if (node.specifiers.length === 0) return node.source.value;
+}
+function getRequireSource({
+  node
+}) {
+  if (!t$1.isExpressionStatement(node)) return;
+  const {
+    expression
+  } = node;
+  if (t$1.isCallExpression(expression) && t$1.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t$1.isStringLiteral(expression.arguments[0])) {
+    return expression.arguments[0].value;
+  }
+}
+function hoist(node) {
+  // @ts-expect-error
+  node._blockHoist = 3;
+  return node;
+}
+function createUtilsGetter(cache) {
+  return path => {
+    const prog = path.findParent(p => p.isProgram());
+    return {
+      injectGlobalImport(url, moduleName) {
+        cache.storeAnonymous(prog, url, moduleName, (isScript, source) => {
+          return isScript ? template.statement.ast`require(${source})` : t$1.importDeclaration([], source);
+        });
+      },
+      injectNamedImport(url, name, hint = name, moduleName) {
+        return cache.storeNamed(prog, url, name, moduleName, (isScript, source, name) => {
+          const id = prog.scope.generateUidIdentifier(hint);
+          return {
+            node: isScript ? hoist(template.statement.ast`
+                  var ${id} = require(${source}).${name}
+                `) : t$1.importDeclaration([t$1.importSpecifier(id, name)], source),
+            name: id.name
+          };
+        });
+      },
+      injectDefaultImport(url, hint = url, moduleName) {
+        return cache.storeNamed(prog, url, "default", moduleName, (isScript, source) => {
+          const id = prog.scope.generateUidIdentifier(hint);
+          return {
+            node: isScript ? hoist(template.statement.ast`var ${id} = require(${source})`) : t$1.importDeclaration([t$1.importDefaultSpecifier(id)], source),
+            name: id.name
+          };
+        });
+      }
+    };
+  };
+}
+
+const {
+  types: t
+} = _babel.default || _babel;
+class ImportsCachedInjector {
+  constructor(resolver, getPreferredIndex) {
+    this._imports = new WeakMap();
+    this._anonymousImports = new WeakMap();
+    this._lastImports = new WeakMap();
+    this._resolver = resolver;
+    this._getPreferredIndex = getPreferredIndex;
+  }
+  storeAnonymous(programPath, url, moduleName, getVal) {
+    const key = this._normalizeKey(programPath, url);
+    const imports = this._ensure(this._anonymousImports, programPath, Set);
+    if (imports.has(key)) return;
+    const node = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)));
+    imports.add(key);
+    this._injectImport(programPath, node, moduleName);
+  }
+  storeNamed(programPath, url, name, moduleName, getVal) {
+    const key = this._normalizeKey(programPath, url, name);
+    const imports = this._ensure(this._imports, programPath, Map);
+    if (!imports.has(key)) {
+      const {
+        node,
+        name: id
+      } = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)), t.identifier(name));
+      imports.set(key, id);
+      this._injectImport(programPath, node, moduleName);
+    }
+    return t.identifier(imports.get(key));
+  }
+  _injectImport(programPath, node, moduleName) {
+    var _this$_lastImports$ge;
+    const newIndex = this._getPreferredIndex(moduleName);
+    const lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
+    const isPathStillValid = path => path.node &&
+    // Sometimes the AST is modified and the "last import"
+    // we have has been replaced
+    path.parent === programPath.node && path.container === programPath.node.body;
+    let last;
+    if (newIndex === Infinity) {
+      // Fast path: we can always just insert at the end if newIndex is `Infinity`
+      if (lastImports.length > 0) {
+        last = lastImports[lastImports.length - 1].path;
+        if (!isPathStillValid(last)) last = undefined;
+      }
+    } else {
+      for (const [i, data] of lastImports.entries()) {
+        const {
+          path,
+          index
+        } = data;
+        if (isPathStillValid(path)) {
+          if (newIndex < index) {
+            const [newPath] = path.insertBefore(node);
+            lastImports.splice(i, 0, {
+              path: newPath,
+              index: newIndex
+            });
+            return;
+          }
+          last = path;
+        }
+      }
+    }
+    if (last) {
+      const [newPath] = last.insertAfter(node);
+      lastImports.push({
+        path: newPath,
+        index: newIndex
+      });
+    } else {
+      const [newPath] = programPath.unshiftContainer("body", node);
+      this._lastImports.set(programPath, [{
+        path: newPath,
+        index: newIndex
+      }]);
+    }
+  }
+  _ensure(map, programPath, Collection) {
+    let collection = map.get(programPath);
+    if (!collection) {
+      collection = new Collection();
+      map.set(programPath, collection);
+    }
+    return collection;
+  }
+  _normalizeKey(programPath, url, name = "") {
+    const {
+      sourceType
+    } = programPath.node;
+
+    // If we rely on the imported binding (the "name" parameter), we also need to cache
+    // based on the sourceType. This is because the module transforms change the names
+    // of the import variables.
+    return `${name && sourceType}::${url}::${name}`;
+  }
+}
+
+const presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
+function stringifyTargetsMultiline(targets) {
+  return JSON.stringify(prettifyTargets(targets), null, 2);
+}
+
+function patternToRegExp(pattern) {
+  if (pattern instanceof RegExp) return pattern;
+  try {
+    return new RegExp(`^${pattern}$`);
+  } catch {
+    return null;
+  }
+}
+function buildUnusedError(label, unused) {
+  if (!unused.length) return "";
+  return `  - The following "${label}" patterns didn't match any polyfill:\n` + unused.map(original => `    ${String(original)}\n`).join("");
+}
+function buldDuplicatesError(duplicates) {
+  if (!duplicates.size) return "";
+  return `  - The following polyfills were matched both by "include" and "exclude" patterns:\n` + Array.from(duplicates, name => `    ${name}\n`).join("");
+}
+function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
+  let current;
+  const filter = pattern => {
+    const regexp = patternToRegExp(pattern);
+    if (!regexp) return false;
+    let matched = false;
+    for (const polyfill of polyfills.keys()) {
+      if (regexp.test(polyfill)) {
+        matched = true;
+        current.add(polyfill);
+      }
+    }
+    return !matched;
+  };
+
+  // prettier-ignore
+  const include = current = new Set();
+  const unusedInclude = Array.from(includePatterns).filter(filter);
+
+  // prettier-ignore
+  const exclude = current = new Set();
+  const unusedExclude = Array.from(excludePatterns).filter(filter);
+  const duplicates = intersection(include, exclude);
+  if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
+    throw new Error(`Error while validating the "${provider}" provider options:\n` + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
+  }
+  return {
+    include,
+    exclude
+  };
+}
+function applyMissingDependenciesDefaults(options, babelApi) {
+  const {
+    missingDependencies = {}
+  } = options;
+  if (missingDependencies === false) return false;
+  const caller = babelApi.caller(caller => caller == null ? void 0 : caller.name);
+  const {
+    log = "deferred",
+    inject = caller === "rollup-plugin-babel" ? "throw" : "import",
+    all = false
+  } = missingDependencies;
+  return {
+    log,
+    inject,
+    all
+  };
+}
+
+function isRemoved(path) {
+  if (path.removed) return true;
+  if (!path.parentPath) return false;
+  if (path.listKey) {
+    var _path$parentPath$node;
+    if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
+  } else {
+    if (path.parentPath.node[path.key] !== path.node) return true;
+  }
+  return isRemoved(path.parentPath);
+}
+var usage = (callProvider => {
+  function property(object, key, placement, path) {
+    return callProvider({
+      kind: "property",
+      object,
+      key,
+      placement
+    }, path);
+  }
+  function handleReferencedIdentifier(path) {
+    const {
+      node: {
+        name
+      },
+      scope
+    } = path;
+    if (scope.getBindingIdentifier(name)) return;
+    callProvider({
+      kind: "global",
+      name
+    }, path);
+  }
+  function analyzeMemberExpression(path) {
+    const key = resolveKey(path.get("property"), path.node.computed);
+    return {
+      key,
+      handleAsMemberExpression: !!key && key !== "prototype"
+    };
+  }
+  return {
+    // Symbol(), new Promise
+    ReferencedIdentifier(path) {
+      const {
+        parentPath
+      } = path;
+      if (parentPath.isMemberExpression({
+        object: path.node
+      }) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
+        return;
+      }
+      handleReferencedIdentifier(path);
+    },
+    "MemberExpression|OptionalMemberExpression"(path) {
+      const {
+        key,
+        handleAsMemberExpression
+      } = analyzeMemberExpression(path);
+      if (!handleAsMemberExpression) return;
+      const object = path.get("object");
+      let objectIsGlobalIdentifier = object.isIdentifier();
+      if (objectIsGlobalIdentifier) {
+        const binding = object.scope.getBinding(object.node.name);
+        if (binding) {
+          if (binding.path.isImportNamespaceSpecifier()) return;
+          objectIsGlobalIdentifier = false;
+        }
+      }
+      const source = resolveSource(object);
+      let skipObject = property(source.id, key, source.placement, path);
+      skipObject || (skipObject = !objectIsGlobalIdentifier || path.shouldSkip || object.shouldSkip || isRemoved(object));
+      if (!skipObject) handleReferencedIdentifier(object);
+    },
+    ObjectPattern(path) {
+      const {
+        parentPath,
+        parent
+      } = path;
+      let obj;
+
+      // const { keys, values } = Object
+      if (parentPath.isVariableDeclarator()) {
+        obj = parentPath.get("init");
+        // ({ keys, values } = Object)
+      } else if (parentPath.isAssignmentExpression()) {
+        obj = parentPath.get("right");
+        // !function ({ keys, values }) {...} (Object)
+        // resolution does not work after properties transform :-(
+      } else if (parentPath.isFunction()) {
+        const grand = parentPath.parentPath;
+        if (grand.isCallExpression() || grand.isNewExpression()) {
+          if (grand.node.callee === parent) {
+            obj = grand.get("arguments")[path.key];
+          }
+        }
+      }
+      let id = null;
+      let placement = null;
+      if (obj) ({
+        id,
+        placement
+      } = resolveSource(obj));
+      for (const prop of path.get("properties")) {
+        if (prop.isObjectProperty()) {
+          const key = resolveKey(prop.get("key"));
+          if (key) property(id, key, placement, prop);
+        }
+      }
+    },
+    BinaryExpression(path) {
+      if (path.node.operator !== "in") return;
+      const source = resolveSource(path.get("right"));
+      const key = resolveKey(path.get("left"), true);
+      if (!key) return;
+      callProvider({
+        kind: "in",
+        object: source.id,
+        key,
+        placement: source.placement
+      }, path);
+    }
+  };
+});
+
+var entry = (callProvider => ({
+  ImportDeclaration(path) {
+    const source = getImportSource(path);
+    if (!source) return;
+    callProvider({
+      kind: "import",
+      source
+    }, path);
+  },
+  Program(path) {
+    path.get("body").forEach(bodyPath => {
+      const source = getRequireSource(bodyPath);
+      if (!source) return;
+      callProvider({
+        kind: "import",
+        source
+      }, bodyPath);
+    });
+  }
+}));
+
+const nativeRequireResolve = parseFloat(process.versions.node) >= 8.9;
+const require = createRequire(import /*::(_)*/.meta.url); // eslint-disable-line
+
+function myResolve(name, basedir) {
+  if (nativeRequireResolve) {
+    return require.resolve(name, {
+      paths: [basedir]
+    }).replace(/\\/g, "/");
+  } else {
+    return requireResolve.sync(name, {
+      basedir
+    }).replace(/\\/g, "/");
+  }
+}
+function resolve(dirname, moduleName, absoluteImports) {
+  if (absoluteImports === false) return moduleName;
+  let basedir = dirname;
+  if (typeof absoluteImports === "string") {
+    basedir = path.resolve(basedir, absoluteImports);
+  }
+  try {
+    return myResolve(moduleName, basedir);
+  } catch (err) {
+    if (err.code !== "MODULE_NOT_FOUND") throw err;
+    throw Object.assign(new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`), {
+      code: "BABEL_POLYFILL_NOT_FOUND",
+      polyfill: moduleName,
+      dirname
+    });
+  }
+}
+function has(basedir, name) {
+  try {
+    myResolve(name, basedir);
+    return true;
+  } catch {
+    return false;
+  }
+}
+function logMissing(missingDeps) {
+  if (missingDeps.size === 0) return;
+  const deps = Array.from(missingDeps).sort().join(" ");
+  console.warn("\nSome polyfills have been added but are not present in your dependencies.\n" + "Please run one of the following commands:\n" + `\tnpm install --save ${deps}\n` + `\tyarn add ${deps}\n`);
+  process.exitCode = 1;
+}
+let allMissingDeps = new Set();
+const laterLogMissingDependencies = debounce(() => {
+  logMissing(allMissingDeps);
+  allMissingDeps = new Set();
+}, 100);
+function laterLogMissing(missingDeps) {
+  if (missingDeps.size === 0) return;
+  missingDeps.forEach(name => allMissingDeps.add(name));
+  laterLogMissingDependencies();
+}
+
+const PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
+function createMetaResolver(polyfills) {
+  const {
+    static: staticP,
+    instance: instanceP,
+    global: globalP
+  } = polyfills;
+  return meta => {
+    if (meta.kind === "global" && globalP && has$1(globalP, meta.name)) {
+      return {
+        kind: "global",
+        desc: globalP[meta.name],
+        name: meta.name
+      };
+    }
+    if (meta.kind === "property" || meta.kind === "in") {
+      const {
+        placement,
+        object,
+        key
+      } = meta;
+      if (object && placement === "static") {
+        if (globalP && PossibleGlobalObjects.has(object) && has$1(globalP, key)) {
+          return {
+            kind: "global",
+            desc: globalP[key],
+            name: key
+          };
+        }
+        if (staticP && has$1(staticP, object) && has$1(staticP[object], key)) {
+          return {
+            kind: "static",
+            desc: staticP[object][key],
+            name: `${object}$${key}`
+          };
+        }
+      }
+      if (instanceP && has$1(instanceP, key)) {
+        return {
+          kind: "instance",
+          desc: instanceP[key],
+          name: `${key}`
+        };
+      }
+    }
+  };
+}
+
+const getTargets = _getTargets.default || _getTargets;
+function resolveOptions(options, babelApi) {
+  const {
+    method,
+    targets: targetsOption,
+    ignoreBrowserslistConfig,
+    configPath,
+    debug,
+    shouldInjectPolyfill,
+    absoluteImports,
+    ...providerOptions
+  } = options;
+  if (isEmpty(options)) {
+    throw new Error(`\
+This plugin requires options, for example:
+    {
+      "plugins": [
+        ["<plugin name>", { method: "usage-pure" }]
+      ]
+    }
+
+See more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md`);
+  }
+  let methodName;
+  if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
+    throw new Error(".method must be a string");
+  } else {
+    throw new Error(`.method must be one of "entry-global", "usage-global"` + ` or "usage-pure" (received ${JSON.stringify(method)})`);
+  }
+  if (typeof shouldInjectPolyfill === "function") {
+    if (options.include || options.exclude) {
+      throw new Error(`.include and .exclude are not supported when using the` + ` .shouldInjectPolyfill function.`);
+    }
+  } else if (shouldInjectPolyfill != null) {
+    throw new Error(`.shouldInjectPolyfill must be a function, or undefined` + ` (received ${JSON.stringify(shouldInjectPolyfill)})`);
+  }
+  if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
+    throw new Error(`.absoluteImports must be a boolean, a string, or undefined` + ` (received ${JSON.stringify(absoluteImports)})`);
+  }
+  let targets;
+  if (
+  // If any browserslist-related option is specified, fallback to the old
+  // behavior of not using the targets specified in the top-level options.
+  targetsOption || configPath || ignoreBrowserslistConfig) {
+    const targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
+      browsers: targetsOption
+    } : targetsOption;
+    targets = getTargets(targetsObj, {
+      ignoreBrowserslistConfig,
+      configPath
+    });
+  } else {
+    targets = babelApi.targets();
+  }
+  return {
+    method,
+    methodName,
+    targets,
+    absoluteImports: absoluteImports != null ? absoluteImports : false,
+    shouldInjectPolyfill,
+    debug: !!debug,
+    providerOptions: providerOptions
+  };
+}
+function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
+  const {
+    method,
+    methodName,
+    targets,
+    debug,
+    shouldInjectPolyfill,
+    providerOptions,
+    absoluteImports
+  } = resolveOptions(options, babelApi);
+
+  // eslint-disable-next-line prefer-const
+  let include, exclude;
+  let polyfillsSupport;
+  let polyfillsNames;
+  let filterPolyfills;
+  const getUtils = createUtilsGetter(new ImportsCachedInjector(moduleName => resolve(dirname, moduleName, absoluteImports), name => {
+    var _polyfillsNames$get, _polyfillsNames;
+    return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
+  }));
+  const depsCache = new Map();
+  const api = {
+    babel: babelApi,
+    getUtils,
+    method: options.method,
+    targets,
+    createMetaResolver,
+    shouldInjectPolyfill(name) {
+      if (polyfillsNames === undefined) {
+        throw new Error(`Internal error in the ${factory.name} provider: ` + `shouldInjectPolyfill() can't be called during initialization.`);
+      }
+      if (!polyfillsNames.has(name)) {
+        console.warn(`Internal error in the ${providerName} provider: ` + `unknown polyfill "${name}".`);
+      }
+      if (filterPolyfills && !filterPolyfills(name)) return false;
+      let shouldInject = isRequired(name, targets, {
+        compatData: polyfillsSupport,
+        includes: include,
+        excludes: exclude
+      });
+      if (shouldInjectPolyfill) {
+        shouldInject = shouldInjectPolyfill(name, shouldInject);
+        if (typeof shouldInject !== "boolean") {
+          throw new Error(`.shouldInjectPolyfill must return a boolean.`);
+        }
+      }
+      return shouldInject;
+    },
+    debug(name) {
+      var _debugLog, _debugLog$polyfillsSu;
+      debugLog().found = true;
+      if (!debug || !name) return;
+      if (debugLog().polyfills.has(providerName)) return;
+      debugLog().polyfills.add(name);
+      (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
+    },
+    assertDependency(name, version = "*") {
+      if (missingDependencies === false) return;
+      if (absoluteImports) {
+        // If absoluteImports is not false, we will try resolving
+        // the dependency and throw if it's not possible. We can
+        // skip the check here.
+        return;
+      }
+      const dep = version === "*" ? name : `${name}@^${version}`;
+      const found = missingDependencies.all ? false : mapGetOr(depsCache, `${name} :: ${dirname}`, () => has(dirname, name));
+      if (!found) {
+        debugLog().missingDeps.add(dep);
+      }
+    }
+  };
+  const provider = factory(api, providerOptions, dirname);
+  const providerName = provider.name || factory.name;
+  if (typeof provider[methodName] !== "function") {
+    throw new Error(`The "${providerName}" provider doesn't support the "${method}" polyfilling method.`);
+  }
+  if (Array.isArray(provider.polyfills)) {
+    polyfillsNames = new Map(provider.polyfills.map((name, index) => [name, index]));
+    filterPolyfills = provider.filterPolyfills;
+  } else if (provider.polyfills) {
+    polyfillsNames = new Map(Object.keys(provider.polyfills).map((name, index) => [name, index]));
+    polyfillsSupport = provider.polyfills;
+    filterPolyfills = provider.filterPolyfills;
+  } else {
+    polyfillsNames = new Map();
+  }
+  ({
+    include,
+    exclude
+  } = validateIncludeExclude(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []));
+  let callProvider;
+  if (methodName === "usageGlobal") {
+    callProvider = (payload, path) => {
+      var _ref;
+      const utils = getUtils(path);
+      return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
+    };
+  } else {
+    callProvider = (payload, path) => {
+      const utils = getUtils(path);
+      provider[methodName](payload, utils, path);
+      return false;
+    };
+  }
+  return {
+    debug,
+    method,
+    targets,
+    provider,
+    providerName,
+    callProvider
+  };
+}
+function definePolyfillProvider(factory) {
+  return declare((babelApi, options, dirname) => {
+    babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
+    const {
+      traverse
+    } = babelApi;
+    let debugLog;
+    const missingDependencies = applyMissingDependenciesDefaults(options, babelApi);
+    const {
+      debug,
+      method,
+      targets,
+      provider,
+      providerName,
+      callProvider
+    } = instantiateProvider(factory, options, missingDependencies, dirname, () => debugLog, babelApi);
+    const createVisitor = method === "entry-global" ? entry : usage;
+    const visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
+    if (debug && debug !== presetEnvSilentDebugHeader) {
+      console.log(`${providerName}: \`DEBUG\` option`);
+      console.log(`\nUsing targets: ${stringifyTargetsMultiline(targets)}`);
+      console.log(`\nUsing polyfills with \`${method}\` method:`);
+    }
+    const {
+      runtimeName
+    } = provider;
+    return {
+      name: "inject-polyfills",
+      visitor,
+      pre(file) {
+        var _provider$pre;
+        if (runtimeName) {
+          if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
+            console.warn(`Two different polyfill providers` + ` (${file.get("runtimeHelpersModuleProvider")}` + ` and ${providerName}) are trying to define two` + ` conflicting @babel/runtime alternatives:` + ` ${file.get("runtimeHelpersModuleName")} and ${runtimeName}.` + ` The second one will be ignored.`);
+          } else {
+            file.set("runtimeHelpersModuleName", runtimeName);
+            file.set("runtimeHelpersModuleProvider", providerName);
+          }
+        }
+        debugLog = {
+          polyfills: new Set(),
+          polyfillsSupport: undefined,
+          found: false,
+          providers: new Set(),
+          missingDeps: new Set()
+        };
+        (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
+      },
+      post() {
+        var _provider$post;
+        (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
+        if (missingDependencies !== false) {
+          if (missingDependencies.log === "per-file") {
+            logMissing(debugLog.missingDeps);
+          } else {
+            laterLogMissing(debugLog.missingDeps);
+          }
+        }
+        if (!debug) return;
+        if (this.filename) console.log(`\n[${this.filename}]`);
+        if (debugLog.polyfills.size === 0) {
+          console.log(method === "entry-global" ? debugLog.found ? `Based on your targets, the ${providerName} polyfill did not add any polyfill.` : `The entry point for the ${providerName} polyfill has not been found.` : `Based on your code and targets, the ${providerName} polyfill did not add any polyfill.`);
+          return;
+        }
+        if (method === "entry-global") {
+          console.log(`The ${providerName} polyfill entry has been replaced with ` + `the following polyfills:`);
+        } else {
+          console.log(`The ${providerName} polyfill added the following polyfills:`);
+        }
+        for (const name of debugLog.polyfills) {
+          var _debugLog$polyfillsSu2;
+          if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
+            const filteredTargets = getInclusionReasons(name, targets, debugLog.polyfillsSupport);
+            const formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
+            console.log(`  ${name} ${formattedTargets}`);
+          } else {
+            console.log(`  ${name}`);
+          }
+        }
+      }
+    };
+  });
+}
+function mapGetOr(map, key, getDefault) {
+  let val = map.get(key);
+  if (val === undefined) {
+    val = getDefault();
+    map.set(key, val);
+  }
+  return val;
+}
+function isEmpty(obj) {
+  return Object.keys(obj).length === 0;
+}
+
+export default definePolyfillProvider;
+//# sourceMappingURL=index.node.mjs.map
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.node.mjs","sources":["../src/utils.ts","../src/imports-injector.ts","../src/debug-utils.ts","../src/normalize-options.ts","../src/visitors/usage.ts","../src/visitors/entry.ts","../src/node/dependencies.ts","../src/meta-resolver.ts","../src/index.ts"],"sourcesContent":["import { types as t, template } from \"@babel/core\";\nimport type { NodePath } from \"@babel/traverse\";\nimport type { Utils } from \"./types\";\nimport type ImportsCachedInjector from \"./imports-injector\";\n\nexport function intersection<T>(a: Set<T>, b: Set<T>): Set<T> {\n  const result = new Set<T>();\n  a.forEach(v => b.has(v) && result.add(v));\n  return result;\n}\n\nexport function has(object: any, key: string) {\n  return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nfunction getType(target: any): string {\n  return Object.prototype.toString.call(target).slice(8, -1);\n}\n\nfunction resolveId(path): string {\n  if (\n    path.isIdentifier() &&\n    !path.scope.hasBinding(path.node.name, /* noGlobals */ true)\n  ) {\n    return path.node.name;\n  }\n\n  if (path.isPure()) {\n    const { deopt } = path.evaluate();\n    if (deopt && deopt.isIdentifier()) {\n      return deopt.node.name;\n    }\n  }\n}\n\nexport function resolveKey(\n  path: NodePath<t.Expression | t.PrivateName>,\n  computed: boolean = false,\n) {\n  const { scope } = path;\n  if (path.isStringLiteral()) return path.node.value;\n  const isIdentifier = path.isIdentifier();\n  if (\n    isIdentifier &&\n    !(computed || (path.parent as t.MemberExpression).computed)\n  ) {\n    return path.node.name;\n  }\n\n  if (\n    computed &&\n    path.isMemberExpression() &&\n    path.get(\"object\").isIdentifier({ name: \"Symbol\" }) &&\n    !scope.hasBinding(\"Symbol\", /* noGlobals */ true)\n  ) {\n    const sym = resolveKey(path.get(\"property\"), path.node.computed);\n    if (sym) return \"Symbol.\" + sym;\n  }\n\n  if (\n    isIdentifier\n      ? scope.hasBinding(path.node.name, /* noGlobals */ true)\n      : path.isPure()\n  ) {\n    const { value } = path.evaluate();\n    if (typeof value === \"string\") return value;\n  }\n}\n\nexport function resolveSource(obj: NodePath): {\n  id: string | null;\n  placement: \"prototype\" | \"static\" | null;\n} {\n  if (\n    obj.isMemberExpression() &&\n    obj.get(\"property\").isIdentifier({ name: \"prototype\" })\n  ) {\n    const id = resolveId(obj.get(\"object\"));\n\n    if (id) {\n      return { id, placement: \"prototype\" };\n    }\n    return { id: null, placement: null };\n  }\n\n  const id = resolveId(obj);\n  if (id) {\n    return { id, placement: \"static\" };\n  }\n\n  if (obj.isRegExpLiteral()) {\n    return { id: \"RegExp\", placement: \"prototype\" };\n  } else if (obj.isFunction()) {\n    return { id: \"Function\", placement: \"prototype\" };\n  } else if (obj.isPure()) {\n    const { value } = obj.evaluate();\n    if (value !== undefined) {\n      return { id: getType(value), placement: \"prototype\" };\n    }\n  }\n\n  return { id: null, placement: null };\n}\n\nexport function getImportSource({ node }: NodePath<t.ImportDeclaration>) {\n  if (node.specifiers.length === 0) return node.source.value;\n}\n\nexport function getRequireSource({ node }: NodePath<t.Statement>) {\n  if (!t.isExpressionStatement(node)) return;\n  const { expression } = node;\n  if (\n    t.isCallExpression(expression) &&\n    t.isIdentifier(expression.callee) &&\n    expression.callee.name === \"require\" &&\n    expression.arguments.length === 1 &&\n    t.isStringLiteral(expression.arguments[0])\n  ) {\n    return expression.arguments[0].value;\n  }\n}\n\nfunction hoist(node: t.Node) {\n  // @ts-expect-error\n  node._blockHoist = 3;\n  return node;\n}\n\nexport function createUtilsGetter(cache: ImportsCachedInjector) {\n  return (path: NodePath): Utils => {\n    const prog = path.findParent(p => p.isProgram()) as NodePath<t.Program>;\n\n    return {\n      injectGlobalImport(url, moduleName) {\n        cache.storeAnonymous(prog, url, moduleName, (isScript, source) => {\n          return isScript\n            ? template.statement.ast`require(${source})`\n            : t.importDeclaration([], source);\n        });\n      },\n      injectNamedImport(url, name, hint = name, moduleName) {\n        return cache.storeNamed(\n          prog,\n          url,\n          name,\n          moduleName,\n          (isScript, source, name) => {\n            const id = prog.scope.generateUidIdentifier(hint);\n            return {\n              node: isScript\n                ? hoist(template.statement.ast`\n                  var ${id} = require(${source}).${name}\n                `)\n                : t.importDeclaration([t.importSpecifier(id, name)], source),\n              name: id.name,\n            };\n          },\n        );\n      },\n      injectDefaultImport(url, hint = url, moduleName) {\n        return cache.storeNamed(\n          prog,\n          url,\n          \"default\",\n          moduleName,\n          (isScript, source) => {\n            const id = prog.scope.generateUidIdentifier(hint);\n            return {\n              node: isScript\n                ? hoist(template.statement.ast`var ${id} = require(${source})`)\n                : t.importDeclaration([t.importDefaultSpecifier(id)], source),\n              name: id.name,\n            };\n          },\n        );\n      },\n    };\n  };\n}\n","import type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\n\ntype StrMap<K> = Map<string, K>;\n\nexport default class ImportsCachedInjector {\n  _imports: WeakMap<NodePath<t.Program>, StrMap<string>>;\n  _anonymousImports: WeakMap<NodePath<t.Program>, Set<string>>;\n  _lastImports: WeakMap<\n    NodePath<t.Program>,\n    Array<{ path: NodePath<t.Node>; index: number }>\n  >;\n  _resolver: (url: string) => string;\n  _getPreferredIndex: (url: string) => number;\n\n  constructor(\n    resolver: (url: string) => string,\n    getPreferredIndex: (url: string) => number,\n  ) {\n    this._imports = new WeakMap();\n    this._anonymousImports = new WeakMap();\n    this._lastImports = new WeakMap();\n    this._resolver = resolver;\n    this._getPreferredIndex = getPreferredIndex;\n  }\n\n  storeAnonymous(\n    programPath: NodePath<t.Program>,\n    url: string,\n    moduleName: string,\n    getVal: (isScript: boolean, source: t.StringLiteral) => t.Node,\n  ) {\n    const key = this._normalizeKey(programPath, url);\n    const imports = this._ensure<Set<string>>(\n      this._anonymousImports,\n      programPath,\n      Set,\n    );\n\n    if (imports.has(key)) return;\n\n    const node = getVal(\n      programPath.node.sourceType === \"script\",\n      t.stringLiteral(this._resolver(url)),\n    );\n    imports.add(key);\n    this._injectImport(programPath, node, moduleName);\n  }\n\n  storeNamed(\n    programPath: NodePath<t.Program>,\n    url: string,\n    name: string,\n    moduleName: string,\n    getVal: (\n      isScript: boolean,\n      // eslint-disable-next-line no-undef\n      source: t.StringLiteral,\n      // eslint-disable-next-line no-undef\n      name: t.Identifier,\n    ) => { node: t.Node; name: string },\n  ) {\n    const key = this._normalizeKey(programPath, url, name);\n    const imports = this._ensure<Map<string, any>>(\n      this._imports,\n      programPath,\n      Map,\n    );\n\n    if (!imports.has(key)) {\n      const { node, name: id } = getVal(\n        programPath.node.sourceType === \"script\",\n        t.stringLiteral(this._resolver(url)),\n        t.identifier(name),\n      );\n      imports.set(key, id);\n      this._injectImport(programPath, node, moduleName);\n    }\n\n    return t.identifier(imports.get(key));\n  }\n\n  _injectImport(\n    programPath: NodePath<t.Program>,\n    node: t.Node,\n    moduleName: string,\n  ) {\n    const newIndex = this._getPreferredIndex(moduleName);\n    const lastImports = this._lastImports.get(programPath) ?? [];\n\n    const isPathStillValid = (path: NodePath) =>\n      path.node &&\n      // Sometimes the AST is modified and the \"last import\"\n      // we have has been replaced\n      path.parent === programPath.node &&\n      path.container === programPath.node.body;\n\n    let last: NodePath;\n\n    if (newIndex === Infinity) {\n      // Fast path: we can always just insert at the end if newIndex is `Infinity`\n      if (lastImports.length > 0) {\n        last = lastImports[lastImports.length - 1].path;\n        if (!isPathStillValid(last)) last = undefined;\n      }\n    } else {\n      for (const [i, data] of lastImports.entries()) {\n        const { path, index } = data;\n        if (isPathStillValid(path)) {\n          if (newIndex < index) {\n            const [newPath] = path.insertBefore(node);\n            lastImports.splice(i, 0, { path: newPath, index: newIndex });\n            return;\n          }\n          last = path;\n        }\n      }\n    }\n\n    if (last) {\n      const [newPath] = last.insertAfter(node);\n      lastImports.push({ path: newPath, index: newIndex });\n    } else {\n      const [newPath] = programPath.unshiftContainer(\"body\", node);\n      this._lastImports.set(programPath, [{ path: newPath, index: newIndex }]);\n    }\n  }\n\n  _ensure<C extends Map<string, any> | Set<string>>(\n    map: WeakMap<NodePath<t.Program>, C>,\n    programPath: NodePath<t.Program>,\n    Collection: { new (...args: any): C },\n  ): C {\n    let collection = map.get(programPath);\n    if (!collection) {\n      collection = new Collection();\n      map.set(programPath, collection);\n    }\n    return collection;\n  }\n\n  _normalizeKey(\n    programPath: NodePath<t.Program>,\n    url: string,\n    name: string = \"\",\n  ): string {\n    const { sourceType } = programPath.node;\n\n    // If we rely on the imported binding (the \"name\" parameter), we also need to cache\n    // based on the sourceType. This is because the module transforms change the names\n    // of the import variables.\n    return `${name && sourceType}::${url}::${name}`;\n  }\n}\n","import { prettifyTargets } from \"@babel/helper-compilation-targets\";\n\nimport type { Targets } from \"./types\";\n\nexport const presetEnvSilentDebugHeader =\n  \"#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets\";\n\nexport function stringifyTargetsMultiline(targets: Targets): string {\n  return JSON.stringify(prettifyTargets(targets), null, 2);\n}\n\nexport function stringifyTargets(targets: Targets): string {\n  return JSON.stringify(targets)\n    .replace(/,/g, \", \")\n    .replace(/^\\{\"/, '{ \"')\n    .replace(/\"\\}$/, '\" }');\n}\n","import { intersection } from \"./utils\";\nimport type {\n  Pattern,\n  PluginOptions,\n  MissingDependenciesOption,\n} from \"./types\";\n\nfunction patternToRegExp(pattern: Pattern): RegExp | null {\n  if (pattern instanceof RegExp) return pattern;\n\n  try {\n    return new RegExp(`^${pattern}$`);\n  } catch {\n    return null;\n  }\n}\n\nfunction buildUnusedError(label, unused) {\n  if (!unused.length) return \"\";\n  return (\n    `  - The following \"${label}\" patterns didn't match any polyfill:\\n` +\n    unused.map(original => `    ${String(original)}\\n`).join(\"\")\n  );\n}\n\nfunction buldDuplicatesError(duplicates) {\n  if (!duplicates.size) return \"\";\n  return (\n    `  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\\n` +\n    Array.from(duplicates, name => `    ${name}\\n`).join(\"\")\n  );\n}\n\nexport function validateIncludeExclude(\n  provider: string,\n  polyfills: Map<string, unknown>,\n  includePatterns: Pattern[],\n  excludePatterns: Pattern[],\n) {\n  let current;\n  const filter = pattern => {\n    const regexp = patternToRegExp(pattern);\n    if (!regexp) return false;\n\n    let matched = false;\n    for (const polyfill of polyfills.keys()) {\n      if (regexp.test(polyfill)) {\n        matched = true;\n        current.add(polyfill);\n      }\n    }\n    return !matched;\n  };\n\n  // prettier-ignore\n  const include = current = new Set<string> ();\n  const unusedInclude = Array.from(includePatterns).filter(filter);\n\n  // prettier-ignore\n  const exclude = current = new Set<string> ();\n  const unusedExclude = Array.from(excludePatterns).filter(filter);\n\n  const duplicates = intersection(include, exclude);\n\n  if (\n    duplicates.size > 0 ||\n    unusedInclude.length > 0 ||\n    unusedExclude.length > 0\n  ) {\n    throw new Error(\n      `Error while validating the \"${provider}\" provider options:\\n` +\n        buildUnusedError(\"include\", unusedInclude) +\n        buildUnusedError(\"exclude\", unusedExclude) +\n        buldDuplicatesError(duplicates),\n    );\n  }\n\n  return { include, exclude };\n}\n\nexport function applyMissingDependenciesDefaults(\n  options: PluginOptions,\n  babelApi: any,\n): MissingDependenciesOption {\n  const { missingDependencies = {} } = options;\n  if (missingDependencies === false) return false;\n\n  const caller = babelApi.caller(caller => caller?.name);\n\n  const {\n    log = \"deferred\",\n    inject = caller === \"rollup-plugin-babel\" ? \"throw\" : \"import\",\n    all = false,\n  } = missingDependencies;\n\n  return { log, inject, all };\n}\n","import type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\nimport type { CallProvider } from \"./index\";\n\nimport { resolveKey, resolveSource } from \"../utils\";\n\nfunction isRemoved(path: NodePath) {\n  if (path.removed) return true;\n  if (!path.parentPath) return false;\n  if (path.listKey) {\n    if (!path.parentPath.node?.[path.listKey]?.includes(path.node)) return true;\n  } else {\n    if (path.parentPath.node[path.key] !== path.node) return true;\n  }\n  return isRemoved(path.parentPath);\n}\n\nexport default (callProvider: CallProvider) => {\n  function property(object, key, placement, path) {\n    return callProvider({ kind: \"property\", object, key, placement }, path);\n  }\n\n  function handleReferencedIdentifier(path) {\n    const {\n      node: { name },\n      scope,\n    } = path;\n    if (scope.getBindingIdentifier(name)) return;\n\n    callProvider({ kind: \"global\", name }, path);\n  }\n\n  function analyzeMemberExpression(\n    path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  ) {\n    const key = resolveKey(path.get(\"property\"), path.node.computed);\n    return { key, handleAsMemberExpression: !!key && key !== \"prototype\" };\n  }\n\n  return {\n    // Symbol(), new Promise\n    ReferencedIdentifier(path: NodePath<t.Identifier>) {\n      const { parentPath } = path;\n      if (\n        parentPath.isMemberExpression({ object: path.node }) &&\n        analyzeMemberExpression(parentPath).handleAsMemberExpression\n      ) {\n        return;\n      }\n      handleReferencedIdentifier(path);\n    },\n\n    \"MemberExpression|OptionalMemberExpression\"(\n      path: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n    ) {\n      const { key, handleAsMemberExpression } = analyzeMemberExpression(path);\n      if (!handleAsMemberExpression) return;\n\n      const object = path.get(\"object\");\n      let objectIsGlobalIdentifier = object.isIdentifier();\n      if (objectIsGlobalIdentifier) {\n        const binding = object.scope.getBinding(\n          (object.node as t.Identifier).name,\n        );\n        if (binding) {\n          if (binding.path.isImportNamespaceSpecifier()) return;\n          objectIsGlobalIdentifier = false;\n        }\n      }\n\n      const source = resolveSource(object);\n      let skipObject = property(source.id, key, source.placement, path);\n      skipObject ||=\n        !objectIsGlobalIdentifier ||\n        path.shouldSkip ||\n        object.shouldSkip ||\n        isRemoved(object);\n\n      if (!skipObject) handleReferencedIdentifier(object);\n    },\n\n    ObjectPattern(path: NodePath<t.ObjectPattern>) {\n      const { parentPath, parent } = path;\n      let obj;\n\n      // const { keys, values } = Object\n      if (parentPath.isVariableDeclarator()) {\n        obj = parentPath.get(\"init\");\n        // ({ keys, values } = Object)\n      } else if (parentPath.isAssignmentExpression()) {\n        obj = parentPath.get(\"right\");\n        // !function ({ keys, values }) {...} (Object)\n        // resolution does not work after properties transform :-(\n      } else if (parentPath.isFunction()) {\n        const grand = parentPath.parentPath;\n        if (grand.isCallExpression() || grand.isNewExpression()) {\n          if (grand.node.callee === parent) {\n            obj = grand.get(\"arguments\")[path.key];\n          }\n        }\n      }\n\n      let id = null;\n      let placement = null;\n      if (obj) ({ id, placement } = resolveSource(obj));\n\n      for (const prop of path.get(\"properties\")) {\n        if (prop.isObjectProperty()) {\n          const key = resolveKey(prop.get(\"key\"));\n          if (key) property(id, key, placement, prop);\n        }\n      }\n    },\n\n    BinaryExpression(path: NodePath<t.BinaryExpression>) {\n      if (path.node.operator !== \"in\") return;\n\n      const source = resolveSource(path.get(\"right\"));\n      const key = resolveKey(path.get(\"left\"), true);\n\n      if (!key) return;\n\n      callProvider(\n        {\n          kind: \"in\",\n          object: source.id,\n          key,\n          placement: source.placement,\n        },\n        path,\n      );\n    },\n  };\n};\n","import type { NodePath } from \"@babel/traverse\";\nimport { types as t } from \"@babel/core\";\nimport type { CallProvider } from \"./index\";\n\nimport { getImportSource, getRequireSource } from \"../utils\";\n\nexport default (callProvider: CallProvider) => ({\n  ImportDeclaration(path: NodePath<t.ImportDeclaration>) {\n    const source = getImportSource(path);\n    if (!source) return;\n    callProvider({ kind: \"import\", source }, path);\n  },\n  Program(path: NodePath<t.Program>) {\n    path.get(\"body\").forEach(bodyPath => {\n      const source = getRequireSource(bodyPath);\n      if (!source) return;\n      callProvider({ kind: \"import\", source }, bodyPath);\n    });\n  },\n});\n","import path from \"path\";\nimport debounce from \"lodash.debounce\";\nimport requireResolve from \"resolve\";\n\nconst nativeRequireResolve = parseFloat(process.versions.node) >= 8.9;\n\nimport { createRequire } from \"module\";\nconst require = createRequire(import /*::(_)*/.meta.url); // eslint-disable-line\n\nfunction myResolve(name: string, basedir: string) {\n  if (nativeRequireResolve) {\n    return require\n      .resolve(name, {\n        paths: [basedir],\n      })\n      .replace(/\\\\/g, \"/\");\n  } else {\n    return requireResolve.sync(name, { basedir }).replace(/\\\\/g, \"/\");\n  }\n}\n\nexport function resolve(\n  dirname: string,\n  moduleName: string,\n  absoluteImports: boolean | string,\n): string {\n  if (absoluteImports === false) return moduleName;\n\n  let basedir = dirname;\n  if (typeof absoluteImports === \"string\") {\n    basedir = path.resolve(basedir, absoluteImports);\n  }\n\n  try {\n    return myResolve(moduleName, basedir);\n  } catch (err) {\n    if (err.code !== \"MODULE_NOT_FOUND\") throw err;\n\n    throw Object.assign(\n      new Error(`Failed to resolve \"${moduleName}\" relative to \"${dirname}\"`),\n      {\n        code: \"BABEL_POLYFILL_NOT_FOUND\",\n        polyfill: moduleName,\n        dirname,\n      },\n    );\n  }\n}\n\nexport function has(basedir: string, name: string) {\n  try {\n    myResolve(name, basedir);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport function logMissing(missingDeps: Set<string>) {\n  if (missingDeps.size === 0) return;\n\n  const deps = Array.from(missingDeps).sort().join(\" \");\n\n  console.warn(\n    \"\\nSome polyfills have been added but are not present in your dependencies.\\n\" +\n      \"Please run one of the following commands:\\n\" +\n      `\\tnpm install --save ${deps}\\n` +\n      `\\tyarn add ${deps}\\n`,\n  );\n\n  process.exitCode = 1;\n}\n\nlet allMissingDeps = new Set<string>();\n\nconst laterLogMissingDependencies = debounce(() => {\n  logMissing(allMissingDeps);\n  allMissingDeps = new Set<string>();\n}, 100);\n\nexport function laterLogMissing(missingDeps: Set<string>) {\n  if (missingDeps.size === 0) return;\n\n  missingDeps.forEach(name => allMissingDeps.add(name));\n  laterLogMissingDependencies();\n}\n","import type {\n  MetaDescriptor,\n  ResolverPolyfills,\n  ResolvedPolyfill,\n} from \"./types\";\n\nimport { has } from \"./utils\";\n\ntype ResolverFn<T> = (meta: MetaDescriptor) => void | ResolvedPolyfill<T>;\n\nconst PossibleGlobalObjects = new Set<string>([\n  \"global\",\n  \"globalThis\",\n  \"self\",\n  \"window\",\n]);\n\nexport default function createMetaResolver<T>(\n  polyfills: ResolverPolyfills<T>,\n): ResolverFn<T> {\n  const { static: staticP, instance: instanceP, global: globalP } = polyfills;\n\n  return meta => {\n    if (meta.kind === \"global\" && globalP && has(globalP, meta.name)) {\n      return { kind: \"global\", desc: globalP[meta.name], name: meta.name };\n    }\n\n    if (meta.kind === \"property\" || meta.kind === \"in\") {\n      const { placement, object, key } = meta;\n\n      if (object && placement === \"static\") {\n        if (globalP && PossibleGlobalObjects.has(object) && has(globalP, key)) {\n          return { kind: \"global\", desc: globalP[key], name: key };\n        }\n\n        if (staticP && has(staticP, object) && has(staticP[object], key)) {\n          return {\n            kind: \"static\",\n            desc: staticP[object][key],\n            name: `${object}$${key}`,\n          };\n        }\n      }\n\n      if (instanceP && has(instanceP, key)) {\n        return { kind: \"instance\", desc: instanceP[key], name: `${key}` };\n      }\n    }\n  };\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport type { NodePath } from \"@babel/traverse\";\n\nimport _getTargets, {\n  isRequired,\n  getInclusionReasons,\n} from \"@babel/helper-compilation-targets\";\nconst getTargets = _getTargets.default || _getTargets;\n\nimport { createUtilsGetter } from \"./utils\";\nimport ImportsCachedInjector from \"./imports-injector\";\nimport {\n  stringifyTargetsMultiline,\n  presetEnvSilentDebugHeader,\n} from \"./debug-utils\";\nimport {\n  validateIncludeExclude,\n  applyMissingDependenciesDefaults,\n} from \"./normalize-options\";\n\nimport type {\n  ProviderApi,\n  MethodString,\n  Targets,\n  MetaDescriptor,\n  PolyfillProvider,\n  PluginOptions,\n  ProviderOptions,\n} from \"./types\";\n\nimport * as v from \"./visitors\";\nimport * as deps from \"./node/dependencies\";\n\nimport createMetaResolver from \"./meta-resolver\";\n\nexport type { PolyfillProvider, MetaDescriptor, Utils, Targets } from \"./types\";\n\nfunction resolveOptions<Options>(\n  options: PluginOptions,\n  babelApi,\n): {\n  method: MethodString;\n  methodName: \"usageGlobal\" | \"entryGlobal\" | \"usagePure\";\n  targets: Targets;\n  debug: boolean | typeof presetEnvSilentDebugHeader;\n  shouldInjectPolyfill:\n    | ((name: string, shouldInject: boolean) => boolean)\n    | undefined;\n  providerOptions: ProviderOptions<Options>;\n  absoluteImports: string | boolean;\n} {\n  const {\n    method,\n    targets: targetsOption,\n    ignoreBrowserslistConfig,\n    configPath,\n    debug,\n    shouldInjectPolyfill,\n    absoluteImports,\n    ...providerOptions\n  } = options;\n\n  if (isEmpty(options)) {\n    throw new Error(\n      `\\\nThis plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md`,\n    );\n  }\n\n  let methodName;\n  if (method === \"usage-global\") methodName = \"usageGlobal\";\n  else if (method === \"entry-global\") methodName = \"entryGlobal\";\n  else if (method === \"usage-pure\") methodName = \"usagePure\";\n  else if (typeof method !== \"string\") {\n    throw new Error(\".method must be a string\");\n  } else {\n    throw new Error(\n      `.method must be one of \"entry-global\", \"usage-global\"` +\n        ` or \"usage-pure\" (received ${JSON.stringify(method)})`,\n    );\n  }\n\n  if (typeof shouldInjectPolyfill === \"function\") {\n    if (options.include || options.exclude) {\n      throw new Error(\n        `.include and .exclude are not supported when using the` +\n          ` .shouldInjectPolyfill function.`,\n      );\n    }\n  } else if (shouldInjectPolyfill != null) {\n    throw new Error(\n      `.shouldInjectPolyfill must be a function, or undefined` +\n        ` (received ${JSON.stringify(shouldInjectPolyfill)})`,\n    );\n  }\n\n  if (\n    absoluteImports != null &&\n    typeof absoluteImports !== \"boolean\" &&\n    typeof absoluteImports !== \"string\"\n  ) {\n    throw new Error(\n      `.absoluteImports must be a boolean, a string, or undefined` +\n        ` (received ${JSON.stringify(absoluteImports)})`,\n    );\n  }\n\n  let targets;\n\n  if (\n    // If any browserslist-related option is specified, fallback to the old\n    // behavior of not using the targets specified in the top-level options.\n    targetsOption ||\n    configPath ||\n    ignoreBrowserslistConfig\n  ) {\n    const targetsObj =\n      typeof targetsOption === \"string\" || Array.isArray(targetsOption)\n        ? { browsers: targetsOption }\n        : targetsOption;\n\n    targets = getTargets(targetsObj, {\n      ignoreBrowserslistConfig,\n      configPath,\n    });\n  } else {\n    targets = babelApi.targets();\n  }\n\n  return {\n    method,\n    methodName,\n    targets,\n    absoluteImports: absoluteImports ?? false,\n    shouldInjectPolyfill,\n    debug: !!debug,\n    providerOptions: providerOptions as any as ProviderOptions<Options>,\n  };\n}\n\nfunction instantiateProvider<Options>(\n  factory: PolyfillProvider<Options>,\n  options: PluginOptions,\n  missingDependencies,\n  dirname,\n  debugLog,\n  babelApi,\n) {\n  const {\n    method,\n    methodName,\n    targets,\n    debug,\n    shouldInjectPolyfill,\n    providerOptions,\n    absoluteImports,\n  } = resolveOptions<Options>(options, babelApi);\n\n  // eslint-disable-next-line prefer-const\n  let include, exclude;\n  let polyfillsSupport;\n  let polyfillsNames: Map<string, number> | undefined;\n  let filterPolyfills;\n\n  const getUtils = createUtilsGetter(\n    new ImportsCachedInjector(\n      moduleName => deps.resolve(dirname, moduleName, absoluteImports),\n      (name: string) => polyfillsNames?.get(name) ?? Infinity,\n    ),\n  );\n\n  const depsCache = new Map();\n\n  const api: ProviderApi = {\n    babel: babelApi,\n    getUtils,\n    method: options.method,\n    targets,\n    createMetaResolver,\n    shouldInjectPolyfill(name) {\n      if (polyfillsNames === undefined) {\n        throw new Error(\n          `Internal error in the ${factory.name} provider: ` +\n            `shouldInjectPolyfill() can't be called during initialization.`,\n        );\n      }\n      if (!polyfillsNames.has(name)) {\n        console.warn(\n          `Internal error in the ${providerName} provider: ` +\n            `unknown polyfill \"${name}\".`,\n        );\n      }\n\n      if (filterPolyfills && !filterPolyfills(name)) return false;\n\n      let shouldInject = isRequired(name, targets, {\n        compatData: polyfillsSupport,\n        includes: include,\n        excludes: exclude,\n      });\n\n      if (shouldInjectPolyfill) {\n        shouldInject = shouldInjectPolyfill(name, shouldInject);\n        if (typeof shouldInject !== \"boolean\") {\n          throw new Error(`.shouldInjectPolyfill must return a boolean.`);\n        }\n      }\n\n      return shouldInject;\n    },\n    debug(name) {\n      debugLog().found = true;\n\n      if (!debug || !name) return;\n\n      if (debugLog().polyfills.has(providerName)) return;\n      debugLog().polyfills.add(name);\n      debugLog().polyfillsSupport ??= polyfillsSupport;\n    },\n    assertDependency(name, version = \"*\") {\n      if (missingDependencies === false) return;\n      if (absoluteImports) {\n        // If absoluteImports is not false, we will try resolving\n        // the dependency and throw if it's not possible. We can\n        // skip the check here.\n        return;\n      }\n\n      const dep = version === \"*\" ? name : `${name}@^${version}`;\n\n      const found = missingDependencies.all\n        ? false\n        : mapGetOr(depsCache, `${name} :: ${dirname}`, () =>\n            deps.has(dirname, name),\n          );\n\n      if (!found) {\n        debugLog().missingDeps.add(dep);\n      }\n    },\n  };\n\n  const provider = factory(api, providerOptions, dirname);\n  const providerName = provider.name || factory.name;\n\n  if (typeof provider[methodName] !== \"function\") {\n    throw new Error(\n      `The \"${providerName}\" provider doesn't support the \"${method}\" polyfilling method.`,\n    );\n  }\n\n  if (Array.isArray(provider.polyfills)) {\n    polyfillsNames = new Map(\n      provider.polyfills.map((name, index) => [name, index]),\n    );\n    filterPolyfills = provider.filterPolyfills;\n  } else if (provider.polyfills) {\n    polyfillsNames = new Map(\n      Object.keys(provider.polyfills).map((name, index) => [name, index]),\n    );\n    polyfillsSupport = provider.polyfills;\n    filterPolyfills = provider.filterPolyfills;\n  } else {\n    polyfillsNames = new Map();\n  }\n\n  ({ include, exclude } = validateIncludeExclude(\n    providerName,\n    polyfillsNames,\n    providerOptions.include || [],\n    providerOptions.exclude || [],\n  ));\n\n  let callProvider: (payload: MetaDescriptor, path: NodePath) => boolean;\n  if (methodName === \"usageGlobal\") {\n    callProvider = (payload, path) => {\n      const utils = getUtils(path);\n      return (\n        (provider[methodName](payload, utils, path) satisfies boolean) ?? false\n      );\n    };\n  } else {\n    callProvider = (payload, path) => {\n      const utils = getUtils(path);\n      provider[methodName](payload, utils, path) satisfies void;\n      return false;\n    };\n  }\n\n  return {\n    debug,\n    method,\n    targets,\n    provider,\n    providerName,\n    callProvider,\n  };\n}\n\nexport default function definePolyfillProvider<Options>(\n  factory: PolyfillProvider<Options>,\n) {\n  return declare((babelApi, options: PluginOptions, dirname: string) => {\n    babelApi.assertVersion(\"^7.0.0 || ^8.0.0-alpha.0\");\n    const { traverse } = babelApi;\n\n    let debugLog;\n\n    const missingDependencies = applyMissingDependenciesDefaults(\n      options,\n      babelApi,\n    );\n\n    const { debug, method, targets, provider, providerName, callProvider } =\n      instantiateProvider<Options>(\n        factory,\n        options,\n        missingDependencies,\n        dirname,\n        () => debugLog,\n        babelApi,\n      );\n\n    const createVisitor = method === \"entry-global\" ? v.entry : v.usage;\n\n    const visitor = provider.visitor\n      ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor])\n      : createVisitor(callProvider);\n\n    if (debug && debug !== presetEnvSilentDebugHeader) {\n      console.log(`${providerName}: \\`DEBUG\\` option`);\n      console.log(`\\nUsing targets: ${stringifyTargetsMultiline(targets)}`);\n      console.log(`\\nUsing polyfills with \\`${method}\\` method:`);\n    }\n\n    const { runtimeName } = provider;\n\n    return {\n      name: \"inject-polyfills\",\n      visitor,\n\n      pre(file) {\n        if (runtimeName) {\n          if (\n            file.get(\"runtimeHelpersModuleName\") &&\n            file.get(\"runtimeHelpersModuleName\") !== runtimeName\n          ) {\n            console.warn(\n              `Two different polyfill providers` +\n                ` (${file.get(\"runtimeHelpersModuleProvider\")}` +\n                ` and ${providerName}) are trying to define two` +\n                ` conflicting @babel/runtime alternatives:` +\n                ` ${file.get(\"runtimeHelpersModuleName\")} and ${runtimeName}.` +\n                ` The second one will be ignored.`,\n            );\n          } else {\n            file.set(\"runtimeHelpersModuleName\", runtimeName);\n            file.set(\"runtimeHelpersModuleProvider\", providerName);\n          }\n        }\n\n        debugLog = {\n          polyfills: new Set(),\n          polyfillsSupport: undefined,\n          found: false,\n          providers: new Set(),\n          missingDeps: new Set(),\n        };\n\n        provider.pre?.apply(this, arguments);\n      },\n      post() {\n        provider.post?.apply(this, arguments);\n\n        if (missingDependencies !== false) {\n          if (missingDependencies.log === \"per-file\") {\n            deps.logMissing(debugLog.missingDeps);\n          } else {\n            deps.laterLogMissing(debugLog.missingDeps);\n          }\n        }\n\n        if (!debug) return;\n\n        if (this.filename) console.log(`\\n[${this.filename}]`);\n\n        if (debugLog.polyfills.size === 0) {\n          console.log(\n            method === \"entry-global\"\n              ? debugLog.found\n                ? `Based on your targets, the ${providerName} polyfill did not add any polyfill.`\n                : `The entry point for the ${providerName} polyfill has not been found.`\n              : `Based on your code and targets, the ${providerName} polyfill did not add any polyfill.`,\n          );\n\n          return;\n        }\n\n        if (method === \"entry-global\") {\n          console.log(\n            `The ${providerName} polyfill entry has been replaced with ` +\n              `the following polyfills:`,\n          );\n        } else {\n          console.log(\n            `The ${providerName} polyfill added the following polyfills:`,\n          );\n        }\n\n        for (const name of debugLog.polyfills) {\n          if (debugLog.polyfillsSupport?.[name]) {\n            const filteredTargets = getInclusionReasons(\n              name,\n              targets,\n              debugLog.polyfillsSupport,\n            );\n\n            const formattedTargets = JSON.stringify(filteredTargets)\n              .replace(/,/g, \", \")\n              .replace(/^\\{\"/, '{ \"')\n              .replace(/\"\\}$/, '\" }');\n\n            console.log(`  ${name} ${formattedTargets}`);\n          } else {\n            console.log(`  ${name}`);\n          }\n        }\n      },\n    };\n  });\n}\n\nfunction mapGetOr(map, key, getDefault) {\n  let val = map.get(key);\n  if (val === undefined) {\n    val = getDefault();\n    map.set(key, val);\n  }\n  return val;\n}\n\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n"],"names":["types","t","template","_babel","default","intersection","a","b","result","Set","forEach","v","has","add","object","key","Object","prototype","hasOwnProperty","call","getType","target","toString","slice","resolveId","path","isIdentifier","scope","hasBinding","node","name","isPure","deopt","evaluate","resolveKey","computed","isStringLiteral","value","parent","isMemberExpression","get","sym","resolveSource","obj","id","placement","isRegExpLiteral","isFunction","undefined","getImportSource","specifiers","length","source","getRequireSource","isExpressionStatement","expression","isCallExpression","callee","arguments","hoist","_blockHoist","createUtilsGetter","cache","prog","findParent","p","isProgram","injectGlobalImport","url","moduleName","storeAnonymous","isScript","statement","ast","importDeclaration","injectNamedImport","hint","storeNamed","generateUidIdentifier","importSpecifier","injectDefaultImport","importDefaultSpecifier","ImportsCachedInjector","constructor","resolver","getPreferredIndex","_imports","WeakMap","_anonymousImports","_lastImports","_resolver","_getPreferredIndex","programPath","getVal","_normalizeKey","imports","_ensure","sourceType","stringLiteral","_injectImport","Map","identifier","set","_this$_lastImports$ge","newIndex","lastImports","isPathStillValid","container","body","last","Infinity","i","data","entries","index","newPath","insertBefore","splice","insertAfter","push","unshiftContainer","map","Collection","collection","presetEnvSilentDebugHeader","stringifyTargetsMultiline","targets","JSON","stringify","prettifyTargets","patternToRegExp","pattern","RegExp","buildUnusedError","label","unused","original","String","join","buldDuplicatesError","duplicates","size","Array","from","validateIncludeExclude","provider","polyfills","includePatterns","excludePatterns","current","filter","regexp","matched","polyfill","keys","test","include","unusedInclude","exclude","unusedExclude","Error","applyMissingDependenciesDefaults","options","babelApi","missingDependencies","caller","log","inject","all","isRemoved","removed","parentPath","listKey","_path$parentPath$node","includes","callProvider","property","kind","handleReferencedIdentifier","getBindingIdentifier","analyzeMemberExpression","handleAsMemberExpression","ReferencedIdentifier","MemberExpression|OptionalMemberExpression","objectIsGlobalIdentifier","binding","getBinding","isImportNamespaceSpecifier","skipObject","shouldSkip","ObjectPattern","isVariableDeclarator","isAssignmentExpression","grand","isNewExpression","prop","isObjectProperty","BinaryExpression","operator","ImportDeclaration","Program","bodyPath","nativeRequireResolve","parseFloat","process","versions","require","createRequire","import","meta","myResolve","basedir","resolve","paths","replace","requireResolve","sync","dirname","absoluteImports","err","code","assign","logMissing","missingDeps","deps","sort","console","warn","exitCode","allMissingDeps","laterLogMissingDependencies","debounce","laterLogMissing","PossibleGlobalObjects","createMetaResolver","static","staticP","instance","instanceP","global","globalP","desc","getTargets","_getTargets","resolveOptions","method","targetsOption","ignoreBrowserslistConfig","configPath","debug","shouldInjectPolyfill","providerOptions","isEmpty","methodName","targetsObj","isArray","browsers","instantiateProvider","factory","debugLog","polyfillsSupport","polyfillsNames","filterPolyfills","getUtils","_polyfillsNames$get","_polyfillsNames","depsCache","api","babel","providerName","shouldInject","isRequired","compatData","excludes","_debugLog","_debugLog$polyfillsSu","found","assertDependency","version","dep","mapGetOr","payload","_ref","utils","definePolyfillProvider","declare","assertVersion","traverse","createVisitor","visitor","visitors","merge","runtimeName","pre","file","_provider$pre","providers","apply","post","_provider$post","filename","_debugLog$polyfillsSu2","filteredTargets","getInclusionReasons","formattedTargets","getDefault","val"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/browser/dependencies.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/browser/dependencies.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/browser/dependencies.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+"use strict";
+
+exports.__esModule = true;
+exports.has = has;
+exports.laterLogMissing = laterLogMissing;
+exports.logMissing = logMissing;
+exports.resolve = resolve;
+function resolve(dirname, moduleName, absoluteImports) {
+  if (absoluteImports === false) return moduleName;
+  throw new Error(`"absoluteImports" is not supported in bundles prepared for the browser.`);
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function has(basedir, name) {
+  return true;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function logMissing(missingDeps) {}
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
+function laterLogMissing(missingDeps) {}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/debug-utils.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/debug-utils.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/debug-utils.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,15 @@
+"use strict";
+
+exports.__esModule = true;
+exports.presetEnvSilentDebugHeader = void 0;
+exports.stringifyTargets = stringifyTargets;
+exports.stringifyTargetsMultiline = stringifyTargetsMultiline;
+var _helperCompilationTargets = require("@babel/helper-compilation-targets");
+const presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
+exports.presetEnvSilentDebugHeader = presetEnvSilentDebugHeader;
+function stringifyTargetsMultiline(targets) {
+  return JSON.stringify((0, _helperCompilationTargets.prettifyTargets)(targets), null, 2);
+}
+function stringifyTargets(targets) {
+  return JSON.stringify(targets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/define-provider.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/define-provider.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/define-provider.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__esModule = true;
+exports.defineProvider = defineProvider;
+function defineProvider(factory) {
+  // This will allow us to do some things
+
+  return factory;
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/imports-injector.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/imports-injector.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/imports-injector.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,107 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _babel = _interopRequireWildcard(require("@babel/core"));
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+const {
+  types: t
+} = _babel.default || _babel;
+class ImportsCachedInjector {
+  constructor(resolver, getPreferredIndex) {
+    this._imports = new WeakMap();
+    this._anonymousImports = new WeakMap();
+    this._lastImports = new WeakMap();
+    this._resolver = resolver;
+    this._getPreferredIndex = getPreferredIndex;
+  }
+  storeAnonymous(programPath, url, moduleName, getVal) {
+    const key = this._normalizeKey(programPath, url);
+    const imports = this._ensure(this._anonymousImports, programPath, Set);
+    if (imports.has(key)) return;
+    const node = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)));
+    imports.add(key);
+    this._injectImport(programPath, node, moduleName);
+  }
+  storeNamed(programPath, url, name, moduleName, getVal) {
+    const key = this._normalizeKey(programPath, url, name);
+    const imports = this._ensure(this._imports, programPath, Map);
+    if (!imports.has(key)) {
+      const {
+        node,
+        name: id
+      } = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)), t.identifier(name));
+      imports.set(key, id);
+      this._injectImport(programPath, node, moduleName);
+    }
+    return t.identifier(imports.get(key));
+  }
+  _injectImport(programPath, node, moduleName) {
+    var _this$_lastImports$ge;
+    const newIndex = this._getPreferredIndex(moduleName);
+    const lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
+    const isPathStillValid = path => path.node &&
+    // Sometimes the AST is modified and the "last import"
+    // we have has been replaced
+    path.parent === programPath.node && path.container === programPath.node.body;
+    let last;
+    if (newIndex === Infinity) {
+      // Fast path: we can always just insert at the end if newIndex is `Infinity`
+      if (lastImports.length > 0) {
+        last = lastImports[lastImports.length - 1].path;
+        if (!isPathStillValid(last)) last = undefined;
+      }
+    } else {
+      for (const [i, data] of lastImports.entries()) {
+        const {
+          path,
+          index
+        } = data;
+        if (isPathStillValid(path)) {
+          if (newIndex < index) {
+            const [newPath] = path.insertBefore(node);
+            lastImports.splice(i, 0, {
+              path: newPath,
+              index: newIndex
+            });
+            return;
+          }
+          last = path;
+        }
+      }
+    }
+    if (last) {
+      const [newPath] = last.insertAfter(node);
+      lastImports.push({
+        path: newPath,
+        index: newIndex
+      });
+    } else {
+      const [newPath] = programPath.unshiftContainer("body", node);
+      this._lastImports.set(programPath, [{
+        path: newPath,
+        index: newIndex
+      }]);
+    }
+  }
+  _ensure(map, programPath, Collection) {
+    let collection = map.get(programPath);
+    if (!collection) {
+      collection = new Collection();
+      map.set(programPath, collection);
+    }
+    return collection;
+  }
+  _normalizeKey(programPath, url, name = "") {
+    const {
+      sourceType
+    } = programPath.node;
+
+    // If we rely on the imported binding (the "name" parameter), we also need to cache
+    // based on the sourceType. This is because the module transforms change the names
+    // of the import variables.
+    return `${name && sourceType}::${url}::${name}`;
+  }
+}
+exports.default = ImportsCachedInjector;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,289 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = definePolyfillProvider;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperCompilationTargets = _interopRequireWildcard(require("@babel/helper-compilation-targets"));
+var _utils = require("./utils");
+var _importsInjector = _interopRequireDefault(require("./imports-injector"));
+var _debugUtils = require("./debug-utils");
+var _normalizeOptions = require("./normalize-options");
+var v = _interopRequireWildcard(require("./visitors"));
+var deps = _interopRequireWildcard(require("./node/dependencies"));
+var _metaResolver = _interopRequireDefault(require("./meta-resolver"));
+const _excluded = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+const getTargets = _helperCompilationTargets.default.default || _helperCompilationTargets.default;
+function resolveOptions(options, babelApi) {
+  const {
+      method,
+      targets: targetsOption,
+      ignoreBrowserslistConfig,
+      configPath,
+      debug,
+      shouldInjectPolyfill,
+      absoluteImports
+    } = options,
+    providerOptions = _objectWithoutPropertiesLoose(options, _excluded);
+  if (isEmpty(options)) {
+    throw new Error(`\
+This plugin requires options, for example:
+    {
+      "plugins": [
+        ["<plugin name>", { method: "usage-pure" }]
+      ]
+    }
+
+See more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md`);
+  }
+  let methodName;
+  if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
+    throw new Error(".method must be a string");
+  } else {
+    throw new Error(`.method must be one of "entry-global", "usage-global"` + ` or "usage-pure" (received ${JSON.stringify(method)})`);
+  }
+  if (typeof shouldInjectPolyfill === "function") {
+    if (options.include || options.exclude) {
+      throw new Error(`.include and .exclude are not supported when using the` + ` .shouldInjectPolyfill function.`);
+    }
+  } else if (shouldInjectPolyfill != null) {
+    throw new Error(`.shouldInjectPolyfill must be a function, or undefined` + ` (received ${JSON.stringify(shouldInjectPolyfill)})`);
+  }
+  if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
+    throw new Error(`.absoluteImports must be a boolean, a string, or undefined` + ` (received ${JSON.stringify(absoluteImports)})`);
+  }
+  let targets;
+  if (
+  // If any browserslist-related option is specified, fallback to the old
+  // behavior of not using the targets specified in the top-level options.
+  targetsOption || configPath || ignoreBrowserslistConfig) {
+    const targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
+      browsers: targetsOption
+    } : targetsOption;
+    targets = getTargets(targetsObj, {
+      ignoreBrowserslistConfig,
+      configPath
+    });
+  } else {
+    targets = babelApi.targets();
+  }
+  return {
+    method,
+    methodName,
+    targets,
+    absoluteImports: absoluteImports != null ? absoluteImports : false,
+    shouldInjectPolyfill,
+    debug: !!debug,
+    providerOptions: providerOptions
+  };
+}
+function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
+  const {
+    method,
+    methodName,
+    targets,
+    debug,
+    shouldInjectPolyfill,
+    providerOptions,
+    absoluteImports
+  } = resolveOptions(options, babelApi);
+
+  // eslint-disable-next-line prefer-const
+  let include, exclude;
+  let polyfillsSupport;
+  let polyfillsNames;
+  let filterPolyfills;
+  const getUtils = (0, _utils.createUtilsGetter)(new _importsInjector.default(moduleName => deps.resolve(dirname, moduleName, absoluteImports), name => {
+    var _polyfillsNames$get, _polyfillsNames;
+    return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
+  }));
+  const depsCache = new Map();
+  const api = {
+    babel: babelApi,
+    getUtils,
+    method: options.method,
+    targets,
+    createMetaResolver: _metaResolver.default,
+    shouldInjectPolyfill(name) {
+      if (polyfillsNames === undefined) {
+        throw new Error(`Internal error in the ${factory.name} provider: ` + `shouldInjectPolyfill() can't be called during initialization.`);
+      }
+      if (!polyfillsNames.has(name)) {
+        console.warn(`Internal error in the ${providerName} provider: ` + `unknown polyfill "${name}".`);
+      }
+      if (filterPolyfills && !filterPolyfills(name)) return false;
+      let shouldInject = (0, _helperCompilationTargets.isRequired)(name, targets, {
+        compatData: polyfillsSupport,
+        includes: include,
+        excludes: exclude
+      });
+      if (shouldInjectPolyfill) {
+        shouldInject = shouldInjectPolyfill(name, shouldInject);
+        if (typeof shouldInject !== "boolean") {
+          throw new Error(`.shouldInjectPolyfill must return a boolean.`);
+        }
+      }
+      return shouldInject;
+    },
+    debug(name) {
+      var _debugLog, _debugLog$polyfillsSu;
+      debugLog().found = true;
+      if (!debug || !name) return;
+      if (debugLog().polyfills.has(providerName)) return;
+      debugLog().polyfills.add(name);
+      (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
+    },
+    assertDependency(name, version = "*") {
+      if (missingDependencies === false) return;
+      if (absoluteImports) {
+        // If absoluteImports is not false, we will try resolving
+        // the dependency and throw if it's not possible. We can
+        // skip the check here.
+        return;
+      }
+      const dep = version === "*" ? name : `${name}@^${version}`;
+      const found = missingDependencies.all ? false : mapGetOr(depsCache, `${name} :: ${dirname}`, () => deps.has(dirname, name));
+      if (!found) {
+        debugLog().missingDeps.add(dep);
+      }
+    }
+  };
+  const provider = factory(api, providerOptions, dirname);
+  const providerName = provider.name || factory.name;
+  if (typeof provider[methodName] !== "function") {
+    throw new Error(`The "${providerName}" provider doesn't support the "${method}" polyfilling method.`);
+  }
+  if (Array.isArray(provider.polyfills)) {
+    polyfillsNames = new Map(provider.polyfills.map((name, index) => [name, index]));
+    filterPolyfills = provider.filterPolyfills;
+  } else if (provider.polyfills) {
+    polyfillsNames = new Map(Object.keys(provider.polyfills).map((name, index) => [name, index]));
+    polyfillsSupport = provider.polyfills;
+    filterPolyfills = provider.filterPolyfills;
+  } else {
+    polyfillsNames = new Map();
+  }
+  ({
+    include,
+    exclude
+  } = (0, _normalizeOptions.validateIncludeExclude)(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []));
+  let callProvider;
+  if (methodName === "usageGlobal") {
+    callProvider = (payload, path) => {
+      var _ref;
+      const utils = getUtils(path);
+      return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
+    };
+  } else {
+    callProvider = (payload, path) => {
+      const utils = getUtils(path);
+      provider[methodName](payload, utils, path);
+      return false;
+    };
+  }
+  return {
+    debug,
+    method,
+    targets,
+    provider,
+    providerName,
+    callProvider
+  };
+}
+function definePolyfillProvider(factory) {
+  return (0, _helperPluginUtils.declare)((babelApi, options, dirname) => {
+    babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
+    const {
+      traverse
+    } = babelApi;
+    let debugLog;
+    const missingDependencies = (0, _normalizeOptions.applyMissingDependenciesDefaults)(options, babelApi);
+    const {
+      debug,
+      method,
+      targets,
+      provider,
+      providerName,
+      callProvider
+    } = instantiateProvider(factory, options, missingDependencies, dirname, () => debugLog, babelApi);
+    const createVisitor = method === "entry-global" ? v.entry : v.usage;
+    const visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
+    if (debug && debug !== _debugUtils.presetEnvSilentDebugHeader) {
+      console.log(`${providerName}: \`DEBUG\` option`);
+      console.log(`\nUsing targets: ${(0, _debugUtils.stringifyTargetsMultiline)(targets)}`);
+      console.log(`\nUsing polyfills with \`${method}\` method:`);
+    }
+    const {
+      runtimeName
+    } = provider;
+    return {
+      name: "inject-polyfills",
+      visitor,
+      pre(file) {
+        var _provider$pre;
+        if (runtimeName) {
+          if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
+            console.warn(`Two different polyfill providers` + ` (${file.get("runtimeHelpersModuleProvider")}` + ` and ${providerName}) are trying to define two` + ` conflicting @babel/runtime alternatives:` + ` ${file.get("runtimeHelpersModuleName")} and ${runtimeName}.` + ` The second one will be ignored.`);
+          } else {
+            file.set("runtimeHelpersModuleName", runtimeName);
+            file.set("runtimeHelpersModuleProvider", providerName);
+          }
+        }
+        debugLog = {
+          polyfills: new Set(),
+          polyfillsSupport: undefined,
+          found: false,
+          providers: new Set(),
+          missingDeps: new Set()
+        };
+        (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
+      },
+      post() {
+        var _provider$post;
+        (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
+        if (missingDependencies !== false) {
+          if (missingDependencies.log === "per-file") {
+            deps.logMissing(debugLog.missingDeps);
+          } else {
+            deps.laterLogMissing(debugLog.missingDeps);
+          }
+        }
+        if (!debug) return;
+        if (this.filename) console.log(`\n[${this.filename}]`);
+        if (debugLog.polyfills.size === 0) {
+          console.log(method === "entry-global" ? debugLog.found ? `Based on your targets, the ${providerName} polyfill did not add any polyfill.` : `The entry point for the ${providerName} polyfill has not been found.` : `Based on your code and targets, the ${providerName} polyfill did not add any polyfill.`);
+          return;
+        }
+        if (method === "entry-global") {
+          console.log(`The ${providerName} polyfill entry has been replaced with ` + `the following polyfills:`);
+        } else {
+          console.log(`The ${providerName} polyfill added the following polyfills:`);
+        }
+        for (const name of debugLog.polyfills) {
+          var _debugLog$polyfillsSu2;
+          if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
+            const filteredTargets = (0, _helperCompilationTargets.getInclusionReasons)(name, targets, debugLog.polyfillsSupport);
+            const formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
+            console.log(`  ${name} ${formattedTargets}`);
+          } else {
+            console.log(`  ${name}`);
+          }
+        }
+      }
+    };
+  });
+}
+function mapGetOr(map, key, getDefault) {
+  let val = map.get(key);
+  if (val === undefined) {
+    val = getDefault();
+    map.set(key, val);
+  }
+  return val;
+}
+function isEmpty(obj) {
+  return Object.keys(obj).length === 0;
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/meta-resolver.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/meta-resolver.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/meta-resolver.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,52 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = createMetaResolver;
+var _utils = require("./utils");
+const PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
+function createMetaResolver(polyfills) {
+  const {
+    static: staticP,
+    instance: instanceP,
+    global: globalP
+  } = polyfills;
+  return meta => {
+    if (meta.kind === "global" && globalP && (0, _utils.has)(globalP, meta.name)) {
+      return {
+        kind: "global",
+        desc: globalP[meta.name],
+        name: meta.name
+      };
+    }
+    if (meta.kind === "property" || meta.kind === "in") {
+      const {
+        placement,
+        object,
+        key
+      } = meta;
+      if (object && placement === "static") {
+        if (globalP && PossibleGlobalObjects.has(object) && (0, _utils.has)(globalP, key)) {
+          return {
+            kind: "global",
+            desc: globalP[key],
+            name: key
+          };
+        }
+        if (staticP && (0, _utils.has)(staticP, object) && (0, _utils.has)(staticP[object], key)) {
+          return {
+            kind: "static",
+            desc: staticP[object][key],
+            name: `${object}$${key}`
+          };
+        }
+      }
+      if (instanceP && (0, _utils.has)(instanceP, key)) {
+        return {
+          kind: "instance",
+          desc: instanceP[key],
+          name: `${key}`
+        };
+      }
+    }
+  };
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/node/dependencies.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/node/dependencies.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/node/dependencies.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,67 @@
+"use strict";
+
+exports.__esModule = true;
+exports.has = has;
+exports.laterLogMissing = laterLogMissing;
+exports.logMissing = logMissing;
+exports.resolve = resolve;
+var _path = _interopRequireDefault(require("path"));
+var _lodash = _interopRequireDefault(require("lodash.debounce"));
+var _resolve = _interopRequireDefault(require("resolve"));
+var _module = require("module");
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+const nativeRequireResolve = parseFloat(process.versions.node) >= 8.9;
+// eslint-disable-line
+
+function myResolve(name, basedir) {
+  if (nativeRequireResolve) {
+    return require.resolve(name, {
+      paths: [basedir]
+    }).replace(/\\/g, "/");
+  } else {
+    return _resolve.default.sync(name, {
+      basedir
+    }).replace(/\\/g, "/");
+  }
+}
+function resolve(dirname, moduleName, absoluteImports) {
+  if (absoluteImports === false) return moduleName;
+  let basedir = dirname;
+  if (typeof absoluteImports === "string") {
+    basedir = _path.default.resolve(basedir, absoluteImports);
+  }
+  try {
+    return myResolve(moduleName, basedir);
+  } catch (err) {
+    if (err.code !== "MODULE_NOT_FOUND") throw err;
+    throw Object.assign(new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`), {
+      code: "BABEL_POLYFILL_NOT_FOUND",
+      polyfill: moduleName,
+      dirname
+    });
+  }
+}
+function has(basedir, name) {
+  try {
+    myResolve(name, basedir);
+    return true;
+  } catch (_unused) {
+    return false;
+  }
+}
+function logMissing(missingDeps) {
+  if (missingDeps.size === 0) return;
+  const deps = Array.from(missingDeps).sort().join(" ");
+  console.warn("\nSome polyfills have been added but are not present in your dependencies.\n" + "Please run one of the following commands:\n" + `\tnpm install --save ${deps}\n` + `\tyarn add ${deps}\n`);
+  process.exitCode = 1;
+}
+let allMissingDeps = new Set();
+const laterLogMissingDependencies = (0, _lodash.default)(() => {
+  logMissing(allMissingDeps);
+  allMissingDeps = new Set();
+}, 100);
+function laterLogMissing(missingDeps) {
+  if (missingDeps.size === 0) return;
+  missingDeps.forEach(name => allMissingDeps.add(name));
+  laterLogMissingDependencies();
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/normalize-options.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/normalize-options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/normalize-options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,70 @@
+"use strict";
+
+exports.__esModule = true;
+exports.applyMissingDependenciesDefaults = applyMissingDependenciesDefaults;
+exports.validateIncludeExclude = validateIncludeExclude;
+var _utils = require("./utils");
+function patternToRegExp(pattern) {
+  if (pattern instanceof RegExp) return pattern;
+  try {
+    return new RegExp(`^${pattern}$`);
+  } catch (_unused) {
+    return null;
+  }
+}
+function buildUnusedError(label, unused) {
+  if (!unused.length) return "";
+  return `  - The following "${label}" patterns didn't match any polyfill:\n` + unused.map(original => `    ${String(original)}\n`).join("");
+}
+function buldDuplicatesError(duplicates) {
+  if (!duplicates.size) return "";
+  return `  - The following polyfills were matched both by "include" and "exclude" patterns:\n` + Array.from(duplicates, name => `    ${name}\n`).join("");
+}
+function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
+  let current;
+  const filter = pattern => {
+    const regexp = patternToRegExp(pattern);
+    if (!regexp) return false;
+    let matched = false;
+    for (const polyfill of polyfills.keys()) {
+      if (regexp.test(polyfill)) {
+        matched = true;
+        current.add(polyfill);
+      }
+    }
+    return !matched;
+  };
+
+  // prettier-ignore
+  const include = current = new Set();
+  const unusedInclude = Array.from(includePatterns).filter(filter);
+
+  // prettier-ignore
+  const exclude = current = new Set();
+  const unusedExclude = Array.from(excludePatterns).filter(filter);
+  const duplicates = (0, _utils.intersection)(include, exclude);
+  if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
+    throw new Error(`Error while validating the "${provider}" provider options:\n` + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
+  }
+  return {
+    include,
+    exclude
+  };
+}
+function applyMissingDependenciesDefaults(options, babelApi) {
+  const {
+    missingDependencies = {}
+  } = options;
+  if (missingDependencies === false) return false;
+  const caller = babelApi.caller(caller => caller == null ? void 0 : caller.name);
+  const {
+    log = "deferred",
+    inject = caller === "rollup-plugin-babel" ? "throw" : "import",
+    all = false
+  } = missingDependencies;
+  return {
+    log,
+    inject,
+    all
+  };
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/types.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/types.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+"use strict";
+
+exports.__esModule = true;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/utils.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/utils.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/utils.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,165 @@
+"use strict";
+
+exports.__esModule = true;
+exports.createUtilsGetter = createUtilsGetter;
+exports.getImportSource = getImportSource;
+exports.getRequireSource = getRequireSource;
+exports.has = has;
+exports.intersection = intersection;
+exports.resolveKey = resolveKey;
+exports.resolveSource = resolveSource;
+var _babel = _interopRequireWildcard(require("@babel/core"));
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+const {
+  types: t,
+  template: template
+} = _babel.default || _babel;
+function intersection(a, b) {
+  const result = new Set();
+  a.forEach(v => b.has(v) && result.add(v));
+  return result;
+}
+function has(object, key) {
+  return Object.prototype.hasOwnProperty.call(object, key);
+}
+function getType(target) {
+  return Object.prototype.toString.call(target).slice(8, -1);
+}
+function resolveId(path) {
+  if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, /* noGlobals */true)) {
+    return path.node.name;
+  }
+  if (path.isPure()) {
+    const {
+      deopt
+    } = path.evaluate();
+    if (deopt && deopt.isIdentifier()) {
+      return deopt.node.name;
+    }
+  }
+}
+function resolveKey(path, computed = false) {
+  const {
+    scope
+  } = path;
+  if (path.isStringLiteral()) return path.node.value;
+  const isIdentifier = path.isIdentifier();
+  if (isIdentifier && !(computed || path.parent.computed)) {
+    return path.node.name;
+  }
+  if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
+    name: "Symbol"
+  }) && !scope.hasBinding("Symbol", /* noGlobals */true)) {
+    const sym = resolveKey(path.get("property"), path.node.computed);
+    if (sym) return "Symbol." + sym;
+  }
+  if (isIdentifier ? scope.hasBinding(path.node.name, /* noGlobals */true) : path.isPure()) {
+    const {
+      value
+    } = path.evaluate();
+    if (typeof value === "string") return value;
+  }
+}
+function resolveSource(obj) {
+  if (obj.isMemberExpression() && obj.get("property").isIdentifier({
+    name: "prototype"
+  })) {
+    const id = resolveId(obj.get("object"));
+    if (id) {
+      return {
+        id,
+        placement: "prototype"
+      };
+    }
+    return {
+      id: null,
+      placement: null
+    };
+  }
+  const id = resolveId(obj);
+  if (id) {
+    return {
+      id,
+      placement: "static"
+    };
+  }
+  if (obj.isRegExpLiteral()) {
+    return {
+      id: "RegExp",
+      placement: "prototype"
+    };
+  } else if (obj.isFunction()) {
+    return {
+      id: "Function",
+      placement: "prototype"
+    };
+  } else if (obj.isPure()) {
+    const {
+      value
+    } = obj.evaluate();
+    if (value !== undefined) {
+      return {
+        id: getType(value),
+        placement: "prototype"
+      };
+    }
+  }
+  return {
+    id: null,
+    placement: null
+  };
+}
+function getImportSource({
+  node
+}) {
+  if (node.specifiers.length === 0) return node.source.value;
+}
+function getRequireSource({
+  node
+}) {
+  if (!t.isExpressionStatement(node)) return;
+  const {
+    expression
+  } = node;
+  if (t.isCallExpression(expression) && t.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t.isStringLiteral(expression.arguments[0])) {
+    return expression.arguments[0].value;
+  }
+}
+function hoist(node) {
+  // @ts-expect-error
+  node._blockHoist = 3;
+  return node;
+}
+function createUtilsGetter(cache) {
+  return path => {
+    const prog = path.findParent(p => p.isProgram());
+    return {
+      injectGlobalImport(url, moduleName) {
+        cache.storeAnonymous(prog, url, moduleName, (isScript, source) => {
+          return isScript ? template.statement.ast`require(${source})` : t.importDeclaration([], source);
+        });
+      },
+      injectNamedImport(url, name, hint = name, moduleName) {
+        return cache.storeNamed(prog, url, name, moduleName, (isScript, source, name) => {
+          const id = prog.scope.generateUidIdentifier(hint);
+          return {
+            node: isScript ? hoist(template.statement.ast`
+                  var ${id} = require(${source}).${name}
+                `) : t.importDeclaration([t.importSpecifier(id, name)], source),
+            name: id.name
+          };
+        });
+      },
+      injectDefaultImport(url, hint = url, moduleName) {
+        return cache.storeNamed(prog, url, "default", moduleName, (isScript, source) => {
+          const id = prog.scope.generateUidIdentifier(hint);
+          return {
+            node: isScript ? hoist(template.statement.ast`var ${id} = require(${source})`) : t.importDeclaration([t.importDefaultSpecifier(id)], source),
+            name: id.name
+          };
+        });
+      }
+    };
+  };
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/entry.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/entry.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/entry.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,26 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _utils = require("../utils");
+var _default = callProvider => ({
+  ImportDeclaration(path) {
+    const source = (0, _utils.getImportSource)(path);
+    if (!source) return;
+    callProvider({
+      kind: "import",
+      source
+    }, path);
+  },
+  Program(path) {
+    path.get("body").forEach(bodyPath => {
+      const source = (0, _utils.getRequireSource)(bodyPath);
+      if (!source) return;
+      callProvider({
+        kind: "import",
+        source
+      }, bodyPath);
+    });
+  }
+});
+exports.default = _default;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__esModule = true;
+exports.usage = exports.entry = void 0;
+var _usage = _interopRequireDefault(require("./usage"));
+exports.usage = _usage.default;
+var _entry = _interopRequireDefault(require("./entry"));
+exports.entry = _entry.default;
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/usage.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/usage.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/lib/visitors/usage.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,129 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+var _utils = require("../utils");
+function isRemoved(path) {
+  if (path.removed) return true;
+  if (!path.parentPath) return false;
+  if (path.listKey) {
+    var _path$parentPath$node;
+    if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
+  } else {
+    if (path.parentPath.node[path.key] !== path.node) return true;
+  }
+  return isRemoved(path.parentPath);
+}
+var _default = callProvider => {
+  function property(object, key, placement, path) {
+    return callProvider({
+      kind: "property",
+      object,
+      key,
+      placement
+    }, path);
+  }
+  function handleReferencedIdentifier(path) {
+    const {
+      node: {
+        name
+      },
+      scope
+    } = path;
+    if (scope.getBindingIdentifier(name)) return;
+    callProvider({
+      kind: "global",
+      name
+    }, path);
+  }
+  function analyzeMemberExpression(path) {
+    const key = (0, _utils.resolveKey)(path.get("property"), path.node.computed);
+    return {
+      key,
+      handleAsMemberExpression: !!key && key !== "prototype"
+    };
+  }
+  return {
+    // Symbol(), new Promise
+    ReferencedIdentifier(path) {
+      const {
+        parentPath
+      } = path;
+      if (parentPath.isMemberExpression({
+        object: path.node
+      }) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
+        return;
+      }
+      handleReferencedIdentifier(path);
+    },
+    "MemberExpression|OptionalMemberExpression"(path) {
+      const {
+        key,
+        handleAsMemberExpression
+      } = analyzeMemberExpression(path);
+      if (!handleAsMemberExpression) return;
+      const object = path.get("object");
+      let objectIsGlobalIdentifier = object.isIdentifier();
+      if (objectIsGlobalIdentifier) {
+        const binding = object.scope.getBinding(object.node.name);
+        if (binding) {
+          if (binding.path.isImportNamespaceSpecifier()) return;
+          objectIsGlobalIdentifier = false;
+        }
+      }
+      const source = (0, _utils.resolveSource)(object);
+      let skipObject = property(source.id, key, source.placement, path);
+      skipObject || (skipObject = !objectIsGlobalIdentifier || path.shouldSkip || object.shouldSkip || isRemoved(object));
+      if (!skipObject) handleReferencedIdentifier(object);
+    },
+    ObjectPattern(path) {
+      const {
+        parentPath,
+        parent
+      } = path;
+      let obj;
+
+      // const { keys, values } = Object
+      if (parentPath.isVariableDeclarator()) {
+        obj = parentPath.get("init");
+        // ({ keys, values } = Object)
+      } else if (parentPath.isAssignmentExpression()) {
+        obj = parentPath.get("right");
+        // !function ({ keys, values }) {...} (Object)
+        // resolution does not work after properties transform :-(
+      } else if (parentPath.isFunction()) {
+        const grand = parentPath.parentPath;
+        if (grand.isCallExpression() || grand.isNewExpression()) {
+          if (grand.node.callee === parent) {
+            obj = grand.get("arguments")[path.key];
+          }
+        }
+      }
+      let id = null;
+      let placement = null;
+      if (obj) ({
+        id,
+        placement
+      } = (0, _utils.resolveSource)(obj));
+      for (const prop of path.get("properties")) {
+        if (prop.isObjectProperty()) {
+          const key = (0, _utils.resolveKey)(prop.get("key"));
+          if (key) property(id, key, placement, prop);
+        }
+      }
+    },
+    BinaryExpression(path) {
+      if (path.node.operator !== "in") return;
+      const source = (0, _utils.resolveSource)(path.get("right"));
+      const key = (0, _utils.resolveKey)(path.get("left"), true);
+      if (!key) return;
+      callProvider({
+        kind: "in",
+        object: source.id,
+        key,
+        placement: source.placement
+      }, path);
+    }
+  };
+};
+exports.default = _default;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/resolve
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/resolve	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/.bin/resolve	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+../resolve/bin/resolve
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.editorconfig
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.editorconfig	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.editorconfig	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 200
+
+[*.js]
+block_comment_start = /*
+block_comment = *
+block_comment_end = */
+
+[*.yml]
+indent_size = 1
+
+[package.json]
+indent_style = tab
+
+[lib/core.json]
+indent_style = tab
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[{*.json,Makefile}]
+max_line_length = off
+
+[test/{dotdot,resolver,module_dir,multirepo,node_path,pathfilter,precedence}/**/*]
+indent_style = off
+indent_size = off
+max_line_length = off
+insert_final_newline = off
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.eslintrc
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.eslintrc	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.eslintrc	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,65 @@
+{
+    "root": true,
+
+    "extends": "@ljharb",
+
+    "rules": {
+        "indent": [2, 4],
+        "strict": 0,
+        "complexity": 0,
+        "consistent-return": 0,
+        "curly": 0,
+        "dot-notation": [2, { "allowKeywords": true }],
+        "func-name-matching": 0,
+        "func-style": 0,
+        "global-require": 1,
+        "id-length": [2, { "min": 1, "max": 40 }],
+        "max-lines": [2, 350],
+        "max-lines-per-function": 0,
+        "max-nested-callbacks": 0,
+        "max-params": 0,
+        "max-statements-per-line": [2, { "max": 2 }],
+        "max-statements": 0,
+        "no-magic-numbers": 0,
+        "no-shadow": 0,
+        "no-use-before-define": 0,
+        "sort-keys": 0,
+    },
+    "overrides": [
+        {
+            "files": "bin/**",
+            "rules": {
+                "no-process-exit": "off",
+            },
+        },
+        {
+            "files": "example/**",
+            "rules": {
+                "no-console": 0,
+            },
+        },
+        {
+            "files": "test/resolver/nested_symlinks/mylib/*.js",
+            "rules": {
+                "no-throw-literal": 0,
+            },
+        },
+        {
+            "files": "test/**",
+            "parserOptions": {
+                "ecmaVersion": 5,
+                "allowReserved": false,
+            },
+            "rules": {
+                "dot-notation": [2, { "allowPattern": "throws" }],
+                "max-lines": 0,
+                "max-lines-per-function": 0,
+                "no-unused-vars": [2, { "vars": "all", "args": "none" }],
+            },
+        },
+    ],
+
+    "ignorePatterns": [
+        "./test/resolver/malformed_package_json/package.json",
+    ],
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.github/FUNDING.yml
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.github/FUNDING.yml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/.github/FUNDING.yml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [ljharb]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: npm/resolve
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2012 James Halliday
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/SECURITY.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/SECURITY.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/SECURITY.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+# Security
+
+Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report.
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/async.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./lib/async');
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/bin/resolve
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/bin/resolve	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/bin/resolve	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,50 @@
+#!/usr/bin/env node
+
+'use strict';
+
+var path = require('path');
+var fs = require('fs');
+
+if (
+    String(process.env.npm_lifecycle_script).slice(0, 8) !== 'resolve '
+    && (
+        !process.argv
+        || process.argv.length < 2
+        || (process.argv[1] !== __filename && fs.statSync(process.argv[1]).ino !== fs.statSync(__filename).ino)
+        || (process.env.npm_lifecycle_event !== 'npx' && process.env._ && fs.realpathSync(path.resolve(process.env._)) !== __filename)
+    )
+) {
+    console.error('Error: `resolve` must be run directly as an executable');
+    process.exit(1);
+}
+
+var supportsPreserveSymlinkFlag = require('supports-preserve-symlinks-flag');
+
+var preserveSymlinks = false;
+for (var i = 2; i < process.argv.length; i += 1) {
+    if (process.argv[i].slice(0, 2) === '--') {
+        if (supportsPreserveSymlinkFlag && process.argv[i] === '--preserve-symlinks') {
+            preserveSymlinks = true;
+        } else if (process.argv[i].length > 2) {
+            console.error('Unknown argument ' + process.argv[i].replace(/[=].*$/, ''));
+            process.exit(2);
+        }
+        process.argv.splice(i, 1);
+        i -= 1;
+        if (process.argv[i] === '--') { break; } // eslint-disable-line no-restricted-syntax
+    }
+}
+
+if (process.argv.length < 3) {
+    console.error('Error: `resolve` expects a specifier');
+    process.exit(2);
+}
+
+var resolve = require('../');
+
+var result = resolve.sync(process.argv[2], {
+    basedir: process.cwd(),
+    preserveSymlinks: preserveSymlinks
+});
+
+console.log(result);
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/example/async.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/example/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/example/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,5 @@
+var resolve = require('../');
+resolve('tap', { basedir: __dirname }, function (err, res) {
+    if (err) console.error(err);
+    else console.log(res);
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/example/sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/example/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/example/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+var resolve = require('../');
+var res = resolve.sync('tap', { basedir: __dirname });
+console.log(res);
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,6 @@
+var async = require('./lib/async');
+async.core = require('./lib/core');
+async.isCore = require('./lib/is-core');
+async.sync = require('./lib/sync');
+
+module.exports = async;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/async.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,329 @@
+var fs = require('fs');
+var getHomedir = require('./homedir');
+var path = require('path');
+var caller = require('./caller');
+var nodeModulesPaths = require('./node-modules-paths');
+var normalizeOptions = require('./normalize-options');
+var isCore = require('is-core-module');
+
+var realpathFS = process.platform !== 'win32' && fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
+
+var homedir = getHomedir();
+var defaultPaths = function () {
+    return [
+        path.join(homedir, '.node_modules'),
+        path.join(homedir, '.node_libraries')
+    ];
+};
+
+var defaultIsFile = function isFile(file, cb) {
+    fs.stat(file, function (err, stat) {
+        if (!err) {
+            return cb(null, stat.isFile() || stat.isFIFO());
+        }
+        if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+        return cb(err);
+    });
+};
+
+var defaultIsDir = function isDirectory(dir, cb) {
+    fs.stat(dir, function (err, stat) {
+        if (!err) {
+            return cb(null, stat.isDirectory());
+        }
+        if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+        return cb(err);
+    });
+};
+
+var defaultRealpath = function realpath(x, cb) {
+    realpathFS(x, function (realpathErr, realPath) {
+        if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr);
+        else cb(null, realpathErr ? x : realPath);
+    });
+};
+
+var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {
+    if (opts && opts.preserveSymlinks === false) {
+        realpath(x, cb);
+    } else {
+        cb(null, x);
+    }
+};
+
+var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) {
+    readFile(pkgfile, function (readFileErr, body) {
+        if (readFileErr) cb(readFileErr);
+        else {
+            try {
+                var pkg = JSON.parse(body);
+                cb(null, pkg);
+            } catch (jsonErr) {
+                cb(null);
+            }
+        }
+    });
+};
+
+var getPackageCandidates = function getPackageCandidates(x, start, opts) {
+    var dirs = nodeModulesPaths(start, opts, x);
+    for (var i = 0; i < dirs.length; i++) {
+        dirs[i] = path.join(dirs[i], x);
+    }
+    return dirs;
+};
+
+module.exports = function resolve(x, options, callback) {
+    var cb = callback;
+    var opts = options;
+    if (typeof options === 'function') {
+        cb = opts;
+        opts = {};
+    }
+    if (typeof x !== 'string') {
+        var err = new TypeError('Path must be a string.');
+        return process.nextTick(function () {
+            cb(err);
+        });
+    }
+
+    opts = normalizeOptions(x, opts);
+
+    var isFile = opts.isFile || defaultIsFile;
+    var isDirectory = opts.isDirectory || defaultIsDir;
+    var readFile = opts.readFile || fs.readFile;
+    var realpath = opts.realpath || defaultRealpath;
+    var readPackage = opts.readPackage || defaultReadPackage;
+    if (opts.readFile && opts.readPackage) {
+        var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.');
+        return process.nextTick(function () {
+            cb(conflictErr);
+        });
+    }
+    var packageIterator = opts.packageIterator;
+
+    var extensions = opts.extensions || ['.js'];
+    var includeCoreModules = opts.includeCoreModules !== false;
+    var basedir = opts.basedir || path.dirname(caller());
+    var parent = opts.filename || basedir;
+
+    opts.paths = opts.paths || defaultPaths();
+
+    // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+    var absoluteStart = path.resolve(basedir);
+
+    maybeRealpath(
+        realpath,
+        absoluteStart,
+        opts,
+        function (err, realStart) {
+            if (err) cb(err);
+            else init(realStart);
+        }
+    );
+
+    var res;
+    function init(basedir) {
+        if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
+            res = path.resolve(basedir, x);
+            if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';
+            if ((/\/$/).test(x) && res === basedir) {
+                loadAsDirectory(res, opts.package, onfile);
+            } else loadAsFile(res, opts.package, onfile);
+        } else if (includeCoreModules && isCore(x)) {
+            return cb(null, x);
+        } else loadNodeModules(x, basedir, function (err, n, pkg) {
+            if (err) cb(err);
+            else if (n) {
+                return maybeRealpath(realpath, n, opts, function (err, realN) {
+                    if (err) {
+                        cb(err);
+                    } else {
+                        cb(null, realN, pkg);
+                    }
+                });
+            } else {
+                var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+                moduleError.code = 'MODULE_NOT_FOUND';
+                cb(moduleError);
+            }
+        });
+    }
+
+    function onfile(err, m, pkg) {
+        if (err) cb(err);
+        else if (m) cb(null, m, pkg);
+        else loadAsDirectory(res, function (err, d, pkg) {
+            if (err) cb(err);
+            else if (d) {
+                maybeRealpath(realpath, d, opts, function (err, realD) {
+                    if (err) {
+                        cb(err);
+                    } else {
+                        cb(null, realD, pkg);
+                    }
+                });
+            } else {
+                var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+                moduleError.code = 'MODULE_NOT_FOUND';
+                cb(moduleError);
+            }
+        });
+    }
+
+    function loadAsFile(x, thePackage, callback) {
+        var loadAsFilePackage = thePackage;
+        var cb = callback;
+        if (typeof loadAsFilePackage === 'function') {
+            cb = loadAsFilePackage;
+            loadAsFilePackage = undefined;
+        }
+
+        var exts = [''].concat(extensions);
+        load(exts, x, loadAsFilePackage);
+
+        function load(exts, x, loadPackage) {
+            if (exts.length === 0) return cb(null, undefined, loadPackage);
+            var file = x + exts[0];
+
+            var pkg = loadPackage;
+            if (pkg) onpkg(null, pkg);
+            else loadpkg(path.dirname(file), onpkg);
+
+            function onpkg(err, pkg_, dir) {
+                pkg = pkg_;
+                if (err) return cb(err);
+                if (dir && pkg && opts.pathFilter) {
+                    var rfile = path.relative(dir, file);
+                    var rel = rfile.slice(0, rfile.length - exts[0].length);
+                    var r = opts.pathFilter(pkg, x, rel);
+                    if (r) return load(
+                        [''].concat(extensions.slice()),
+                        path.resolve(dir, r),
+                        pkg
+                    );
+                }
+                isFile(file, onex);
+            }
+            function onex(err, ex) {
+                if (err) return cb(err);
+                if (ex) return cb(null, file, pkg);
+                load(exts.slice(1), x, pkg);
+            }
+        }
+    }
+
+    function loadpkg(dir, cb) {
+        if (dir === '' || dir === '/') return cb(null);
+        if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
+            return cb(null);
+        }
+        if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null);
+
+        maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {
+            if (unwrapErr) return loadpkg(path.dirname(dir), cb);
+            var pkgfile = path.join(pkgdir, 'package.json');
+            isFile(pkgfile, function (err, ex) {
+                // on err, ex is false
+                if (!ex) return loadpkg(path.dirname(dir), cb);
+
+                readPackage(readFile, pkgfile, function (err, pkgParam) {
+                    if (err) cb(err);
+
+                    var pkg = pkgParam;
+
+                    if (pkg && opts.packageFilter) {
+                        pkg = opts.packageFilter(pkg, pkgfile);
+                    }
+                    cb(null, pkg, dir);
+                });
+            });
+        });
+    }
+
+    function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
+        var cb = callback;
+        var fpkg = loadAsDirectoryPackage;
+        if (typeof fpkg === 'function') {
+            cb = fpkg;
+            fpkg = opts.package;
+        }
+
+        maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) {
+            if (unwrapErr) return cb(unwrapErr);
+            var pkgfile = path.join(pkgdir, 'package.json');
+            isFile(pkgfile, function (err, ex) {
+                if (err) return cb(err);
+                if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);
+
+                readPackage(readFile, pkgfile, function (err, pkgParam) {
+                    if (err) return cb(err);
+
+                    var pkg = pkgParam;
+
+                    if (pkg && opts.packageFilter) {
+                        pkg = opts.packageFilter(pkg, pkgfile);
+                    }
+
+                    if (pkg && pkg.main) {
+                        if (typeof pkg.main !== 'string') {
+                            var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+                            mainError.code = 'INVALID_PACKAGE_MAIN';
+                            return cb(mainError);
+                        }
+                        if (pkg.main === '.' || pkg.main === './') {
+                            pkg.main = 'index';
+                        }
+                        loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {
+                            if (err) return cb(err);
+                            if (m) return cb(null, m, pkg);
+                            if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);
+
+                            var dir = path.resolve(x, pkg.main);
+                            loadAsDirectory(dir, pkg, function (err, n, pkg) {
+                                if (err) return cb(err);
+                                if (n) return cb(null, n, pkg);
+                                loadAsFile(path.join(x, 'index'), pkg, cb);
+                            });
+                        });
+                        return;
+                    }
+
+                    loadAsFile(path.join(x, '/index'), pkg, cb);
+                });
+            });
+        });
+    }
+
+    function processDirs(cb, dirs) {
+        if (dirs.length === 0) return cb(null, undefined);
+        var dir = dirs[0];
+
+        isDirectory(path.dirname(dir), isdir);
+
+        function isdir(err, isdir) {
+            if (err) return cb(err);
+            if (!isdir) return processDirs(cb, dirs.slice(1));
+            loadAsFile(dir, opts.package, onfile);
+        }
+
+        function onfile(err, m, pkg) {
+            if (err) return cb(err);
+            if (m) return cb(null, m, pkg);
+            loadAsDirectory(dir, opts.package, ondir);
+        }
+
+        function ondir(err, n, pkg) {
+            if (err) return cb(err);
+            if (n) return cb(null, n, pkg);
+            processDirs(cb, dirs.slice(1));
+        }
+    }
+    function loadNodeModules(x, start, cb) {
+        var thunk = function () { return getPackageCandidates(x, start, opts); };
+        processDirs(
+            cb,
+            packageIterator ? packageIterator(x, start, thunk, opts) : thunk()
+        );
+    }
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/caller.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/caller.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/caller.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+module.exports = function () {
+    // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+    var origPrepareStackTrace = Error.prepareStackTrace;
+    Error.prepareStackTrace = function (_, stack) { return stack; };
+    var stack = (new Error()).stack;
+    Error.prepareStackTrace = origPrepareStackTrace;
+    return stack[2].getFileName();
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/core.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,12 @@
+'use strict';
+
+var isCoreModule = require('is-core-module');
+var data = require('./core.json');
+
+var core = {};
+for (var mod in data) { // eslint-disable-line no-restricted-syntax
+    if (Object.prototype.hasOwnProperty.call(data, mod)) {
+        core[mod] = isCoreModule(mod);
+    }
+}
+module.exports = core;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/core.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/core.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/core.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,162 @@
+{
+	"assert": true,
+	"node:assert": [">= 14.18 && < 15", ">= 16"],
+	"assert/strict": ">= 15",
+	"node:assert/strict": ">= 16",
+	"async_hooks": ">= 8",
+	"node:async_hooks": [">= 14.18 && < 15", ">= 16"],
+	"buffer_ieee754": ">= 0.5 && < 0.9.7",
+	"buffer": true,
+	"node:buffer": [">= 14.18 && < 15", ">= 16"],
+	"child_process": true,
+	"node:child_process": [">= 14.18 && < 15", ">= 16"],
+	"cluster": ">= 0.5",
+	"node:cluster": [">= 14.18 && < 15", ">= 16"],
+	"console": true,
+	"node:console": [">= 14.18 && < 15", ">= 16"],
+	"constants": true,
+	"node:constants": [">= 14.18 && < 15", ">= 16"],
+	"crypto": true,
+	"node:crypto": [">= 14.18 && < 15", ">= 16"],
+	"_debug_agent": ">= 1 && < 8",
+	"_debugger": "< 8",
+	"dgram": true,
+	"node:dgram": [">= 14.18 && < 15", ">= 16"],
+	"diagnostics_channel": [">= 14.17 && < 15", ">= 15.1"],
+	"node:diagnostics_channel": [">= 14.18 && < 15", ">= 16"],
+	"dns": true,
+	"node:dns": [">= 14.18 && < 15", ">= 16"],
+	"dns/promises": ">= 15",
+	"node:dns/promises": ">= 16",
+	"domain": ">= 0.7.12",
+	"node:domain": [">= 14.18 && < 15", ">= 16"],
+	"events": true,
+	"node:events": [">= 14.18 && < 15", ">= 16"],
+	"freelist": "< 6",
+	"fs": true,
+	"node:fs": [">= 14.18 && < 15", ">= 16"],
+	"fs/promises": [">= 10 && < 10.1", ">= 14"],
+	"node:fs/promises": [">= 14.18 && < 15", ">= 16"],
+	"_http_agent": ">= 0.11.1",
+	"node:_http_agent": [">= 14.18 && < 15", ">= 16"],
+	"_http_client": ">= 0.11.1",
+	"node:_http_client": [">= 14.18 && < 15", ">= 16"],
+	"_http_common": ">= 0.11.1",
+	"node:_http_common": [">= 14.18 && < 15", ">= 16"],
+	"_http_incoming": ">= 0.11.1",
+	"node:_http_incoming": [">= 14.18 && < 15", ">= 16"],
+	"_http_outgoing": ">= 0.11.1",
+	"node:_http_outgoing": [">= 14.18 && < 15", ">= 16"],
+	"_http_server": ">= 0.11.1",
+	"node:_http_server": [">= 14.18 && < 15", ">= 16"],
+	"http": true,
+	"node:http": [">= 14.18 && < 15", ">= 16"],
+	"http2": ">= 8.8",
+	"node:http2": [">= 14.18 && < 15", ">= 16"],
+	"https": true,
+	"node:https": [">= 14.18 && < 15", ">= 16"],
+	"inspector": ">= 8",
+	"node:inspector": [">= 14.18 && < 15", ">= 16"],
+	"inspector/promises": [">= 19"],
+	"node:inspector/promises": [">= 19"],
+	"_linklist": "< 8",
+	"module": true,
+	"node:module": [">= 14.18 && < 15", ">= 16"],
+	"net": true,
+	"node:net": [">= 14.18 && < 15", ">= 16"],
+	"node-inspect/lib/_inspect": ">= 7.6 && < 12",
+	"node-inspect/lib/internal/inspect_client": ">= 7.6 && < 12",
+	"node-inspect/lib/internal/inspect_repl": ">= 7.6 && < 12",
+	"os": true,
+	"node:os": [">= 14.18 && < 15", ">= 16"],
+	"path": true,
+	"node:path": [">= 14.18 && < 15", ">= 16"],
+	"path/posix": ">= 15.3",
+	"node:path/posix": ">= 16",
+	"path/win32": ">= 15.3",
+	"node:path/win32": ">= 16",
+	"perf_hooks": ">= 8.5",
+	"node:perf_hooks": [">= 14.18 && < 15", ">= 16"],
+	"process": ">= 1",
+	"node:process": [">= 14.18 && < 15", ">= 16"],
+	"punycode": ">= 0.5",
+	"node:punycode": [">= 14.18 && < 15", ">= 16"],
+	"querystring": true,
+	"node:querystring": [">= 14.18 && < 15", ">= 16"],
+	"readline": true,
+	"node:readline": [">= 14.18 && < 15", ">= 16"],
+	"readline/promises": ">= 17",
+	"node:readline/promises": ">= 17",
+	"repl": true,
+	"node:repl": [">= 14.18 && < 15", ">= 16"],
+	"node:sea": [">= 20.12 && < 21", ">= 21.7"],
+	"smalloc": ">= 0.11.5 && < 3",
+	"node:sqlite": ">= 23.4",
+	"_stream_duplex": ">= 0.9.4",
+	"node:_stream_duplex": [">= 14.18 && < 15", ">= 16"],
+	"_stream_transform": ">= 0.9.4",
+	"node:_stream_transform": [">= 14.18 && < 15", ">= 16"],
+	"_stream_wrap": ">= 1.4.1",
+	"node:_stream_wrap": [">= 14.18 && < 15", ">= 16"],
+	"_stream_passthrough": ">= 0.9.4",
+	"node:_stream_passthrough": [">= 14.18 && < 15", ">= 16"],
+	"_stream_readable": ">= 0.9.4",
+	"node:_stream_readable": [">= 14.18 && < 15", ">= 16"],
+	"_stream_writable": ">= 0.9.4",
+	"node:_stream_writable": [">= 14.18 && < 15", ">= 16"],
+	"stream": true,
+	"node:stream": [">= 14.18 && < 15", ">= 16"],
+	"stream/consumers": ">= 16.7",
+	"node:stream/consumers": ">= 16.7",
+	"stream/promises": ">= 15",
+	"node:stream/promises": ">= 16",
+	"stream/web": ">= 16.5",
+	"node:stream/web": ">= 16.5",
+	"string_decoder": true,
+	"node:string_decoder": [">= 14.18 && < 15", ">= 16"],
+	"sys": [">= 0.4 && < 0.7", ">= 0.8"],
+	"node:sys": [">= 14.18 && < 15", ">= 16"],
+	"test/reporters": ">= 19.9 && < 20.2",
+	"node:test/reporters": [">= 18.17 && < 19", ">= 19.9", ">= 20"],
+	"test/mock_loader": ">= 22.3 && < 22.7",
+	"node:test/mock_loader": ">= 22.3 && < 22.7",
+	"node:test": [">= 16.17 && < 17", ">= 18"],
+	"timers": true,
+	"node:timers": [">= 14.18 && < 15", ">= 16"],
+	"timers/promises": ">= 15",
+	"node:timers/promises": ">= 16",
+	"_tls_common": ">= 0.11.13",
+	"node:_tls_common": [">= 14.18 && < 15", ">= 16"],
+	"_tls_legacy": ">= 0.11.3 && < 10",
+	"_tls_wrap": ">= 0.11.3",
+	"node:_tls_wrap": [">= 14.18 && < 15", ">= 16"],
+	"tls": true,
+	"node:tls": [">= 14.18 && < 15", ">= 16"],
+	"trace_events": ">= 10",
+	"node:trace_events": [">= 14.18 && < 15", ">= 16"],
+	"tty": true,
+	"node:tty": [">= 14.18 && < 15", ">= 16"],
+	"url": true,
+	"node:url": [">= 14.18 && < 15", ">= 16"],
+	"util": true,
+	"node:util": [">= 14.18 && < 15", ">= 16"],
+	"util/types": ">= 15.3",
+	"node:util/types": ">= 16",
+	"v8/tools/arguments": ">= 10 && < 12",
+	"v8/tools/codemap": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+	"v8/tools/consarray": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+	"v8/tools/csvparser": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+	"v8/tools/logreader": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+	"v8/tools/profile_view": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+	"v8/tools/splaytree": [">= 4.4 && < 5", ">= 5.2 && < 12"],
+	"v8": ">= 1",
+	"node:v8": [">= 14.18 && < 15", ">= 16"],
+	"vm": true,
+	"node:vm": [">= 14.18 && < 15", ">= 16"],
+	"wasi": [">= 13.4 && < 13.5", ">= 18.17 && < 19", ">= 20"],
+	"node:wasi": [">= 18.17 && < 19", ">= 20"],
+	"worker_threads": ">= 11.7",
+	"node:worker_threads": [">= 14.18 && < 15", ">= 16"],
+	"zlib": ">= 0.5",
+	"node:zlib": [">= 14.18 && < 15", ">= 16"]
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/homedir.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/homedir.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/homedir.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,24 @@
+'use strict';
+
+var os = require('os');
+
+// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js
+
+module.exports = os.homedir || function homedir() {
+    var home = process.env.HOME;
+    var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME;
+
+    if (process.platform === 'win32') {
+        return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null;
+    }
+
+    if (process.platform === 'darwin') {
+        return home || (user ? '/Users/' + user : null);
+    }
+
+    if (process.platform === 'linux') {
+        return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens
+    }
+
+    return home || null;
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/is-core.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/is-core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/is-core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,5 @@
+var isCoreModule = require('is-core-module');
+
+module.exports = function isCore(x) {
+    return isCoreModule(x);
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/node-modules-paths.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/node-modules-paths.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/node-modules-paths.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,42 @@
+var path = require('path');
+var parse = path.parse || require('path-parse'); // eslint-disable-line global-require
+
+var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
+    var prefix = '/';
+    if ((/^([A-Za-z]:)/).test(absoluteStart)) {
+        prefix = '';
+    } else if ((/^\\\\/).test(absoluteStart)) {
+        prefix = '\\\\';
+    }
+
+    var paths = [absoluteStart];
+    var parsed = parse(absoluteStart);
+    while (parsed.dir !== paths[paths.length - 1]) {
+        paths.push(parsed.dir);
+        parsed = parse(parsed.dir);
+    }
+
+    return paths.reduce(function (dirs, aPath) {
+        return dirs.concat(modules.map(function (moduleDir) {
+            return path.resolve(prefix, aPath, moduleDir);
+        }));
+    }, []);
+};
+
+module.exports = function nodeModulesPaths(start, opts, request) {
+    var modules = opts && opts.moduleDirectory
+        ? [].concat(opts.moduleDirectory)
+        : ['node_modules'];
+
+    if (opts && typeof opts.paths === 'function') {
+        return opts.paths(
+            request,
+            start,
+            function () { return getNodeModulesDirs(start, modules); },
+            opts
+        );
+    }
+
+    var dirs = getNodeModulesDirs(start, modules);
+    return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/normalize-options.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/normalize-options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/normalize-options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,10 @@
+module.exports = function (x, opts) {
+    /**
+     * This file is purposefully a passthrough. It's expected that third-party
+     * environments will override it at runtime in order to inject special logic
+     * into `resolve` (by manipulating the options). One such example is the PnP
+     * code path in Yarn.
+     */
+
+    return opts || {};
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/lib/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,208 @@
+var isCore = require('is-core-module');
+var fs = require('fs');
+var path = require('path');
+var getHomedir = require('./homedir');
+var caller = require('./caller');
+var nodeModulesPaths = require('./node-modules-paths');
+var normalizeOptions = require('./normalize-options');
+
+var realpathFS = process.platform !== 'win32' && fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
+
+var homedir = getHomedir();
+var defaultPaths = function () {
+    return [
+        path.join(homedir, '.node_modules'),
+        path.join(homedir, '.node_libraries')
+    ];
+};
+
+var defaultIsFile = function isFile(file) {
+    try {
+        var stat = fs.statSync(file, { throwIfNoEntry: false });
+    } catch (e) {
+        if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+        throw e;
+    }
+    return !!stat && (stat.isFile() || stat.isFIFO());
+};
+
+var defaultIsDir = function isDirectory(dir) {
+    try {
+        var stat = fs.statSync(dir, { throwIfNoEntry: false });
+    } catch (e) {
+        if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+        throw e;
+    }
+    return !!stat && stat.isDirectory();
+};
+
+var defaultRealpathSync = function realpathSync(x) {
+    try {
+        return realpathFS(x);
+    } catch (realpathErr) {
+        if (realpathErr.code !== 'ENOENT') {
+            throw realpathErr;
+        }
+    }
+    return x;
+};
+
+var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) {
+    if (opts && opts.preserveSymlinks === false) {
+        return realpathSync(x);
+    }
+    return x;
+};
+
+var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) {
+    var body = readFileSync(pkgfile);
+    try {
+        var pkg = JSON.parse(body);
+        return pkg;
+    } catch (jsonErr) {}
+};
+
+var getPackageCandidates = function getPackageCandidates(x, start, opts) {
+    var dirs = nodeModulesPaths(start, opts, x);
+    for (var i = 0; i < dirs.length; i++) {
+        dirs[i] = path.join(dirs[i], x);
+    }
+    return dirs;
+};
+
+module.exports = function resolveSync(x, options) {
+    if (typeof x !== 'string') {
+        throw new TypeError('Path must be a string.');
+    }
+    var opts = normalizeOptions(x, options);
+
+    var isFile = opts.isFile || defaultIsFile;
+    var readFileSync = opts.readFileSync || fs.readFileSync;
+    var isDirectory = opts.isDirectory || defaultIsDir;
+    var realpathSync = opts.realpathSync || defaultRealpathSync;
+    var readPackageSync = opts.readPackageSync || defaultReadPackageSync;
+    if (opts.readFileSync && opts.readPackageSync) {
+        throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.');
+    }
+    var packageIterator = opts.packageIterator;
+
+    var extensions = opts.extensions || ['.js'];
+    var includeCoreModules = opts.includeCoreModules !== false;
+    var basedir = opts.basedir || path.dirname(caller());
+    var parent = opts.filename || basedir;
+
+    opts.paths = opts.paths || defaultPaths();
+
+    // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+    var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);
+
+    if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
+        var res = path.resolve(absoluteStart, x);
+        if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';
+        var m = loadAsFileSync(res) || loadAsDirectorySync(res);
+        if (m) return maybeRealpathSync(realpathSync, m, opts);
+    } else if (includeCoreModules && isCore(x)) {
+        return x;
+    } else {
+        var n = loadNodeModulesSync(x, absoluteStart);
+        if (n) return maybeRealpathSync(realpathSync, n, opts);
+    }
+
+    var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+    err.code = 'MODULE_NOT_FOUND';
+    throw err;
+
+    function loadAsFileSync(x) {
+        var pkg = loadpkg(path.dirname(x));
+
+        if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
+            var rfile = path.relative(pkg.dir, x);
+            var r = opts.pathFilter(pkg.pkg, x, rfile);
+            if (r) {
+                x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign
+            }
+        }
+
+        if (isFile(x)) {
+            return x;
+        }
+
+        for (var i = 0; i < extensions.length; i++) {
+            var file = x + extensions[i];
+            if (isFile(file)) {
+                return file;
+            }
+        }
+    }
+
+    function loadpkg(dir) {
+        if (dir === '' || dir === '/') return;
+        if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
+            return;
+        }
+        if ((/[/\\]node_modules[/\\]*$/).test(dir)) return;
+
+        var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');
+
+        if (!isFile(pkgfile)) {
+            return loadpkg(path.dirname(dir));
+        }
+
+        var pkg = readPackageSync(readFileSync, pkgfile);
+
+        if (pkg && opts.packageFilter) {
+            // v2 will pass pkgfile
+            pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment
+        }
+
+        return { pkg: pkg, dir: dir };
+    }
+
+    function loadAsDirectorySync(x) {
+        var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json');
+        if (isFile(pkgfile)) {
+            try {
+                var pkg = readPackageSync(readFileSync, pkgfile);
+            } catch (e) {}
+
+            if (pkg && opts.packageFilter) {
+                // v2 will pass pkgfile
+                pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment
+            }
+
+            if (pkg && pkg.main) {
+                if (typeof pkg.main !== 'string') {
+                    var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+                    mainError.code = 'INVALID_PACKAGE_MAIN';
+                    throw mainError;
+                }
+                if (pkg.main === '.' || pkg.main === './') {
+                    pkg.main = 'index';
+                }
+                try {
+                    var m = loadAsFileSync(path.resolve(x, pkg.main));
+                    if (m) return m;
+                    var n = loadAsDirectorySync(path.resolve(x, pkg.main));
+                    if (n) return n;
+                } catch (e) {}
+            }
+        }
+
+        return loadAsFileSync(path.join(x, '/index'));
+    }
+
+    function loadNodeModulesSync(x, start) {
+        var thunk = function () { return getPackageCandidates(x, start, opts); };
+        var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk();
+
+        for (var i = 0; i < dirs.length; i++) {
+            var dir = dirs[i];
+            if (isDirectory(path.dirname(dir))) {
+                var m = loadAsFileSync(dir);
+                if (m) return m;
+                var n = loadAsDirectorySync(dir);
+                if (n) return n;
+            }
+        }
+    }
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,75 @@
+{
+	"name": "resolve",
+	"description": "resolve like require.resolve() on behalf of files asynchronously and synchronously",
+	"version": "1.22.10",
+	"repository": {
+		"type": "git",
+		"url": "git://github.com/browserify/resolve.git"
+	},
+	"bin": {
+		"resolve": "./bin/resolve"
+	},
+	"main": "index.js",
+	"keywords": [
+		"resolve",
+		"require",
+		"node",
+		"module"
+	],
+	"scripts": {
+		"prepack": "npmignore --auto --commentLines=autogenerated && cp node_modules/is-core-module/core.json ./lib/ ||:",
+		"prepublishOnly": "safe-publish-latest",
+		"prepublish": "not-in-publish || npm run prepublishOnly",
+		"prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')",
+		"lint": "eslint --ext=js,mjs --no-eslintrc -c .eslintrc . 'bin/**'",
+		"pretests-only": "cd ./test/resolver/nested_symlinks && node mylib/sync && node mylib/async",
+		"tests-only": "tape test/*.js",
+		"pretest": "npm run lint",
+		"test": "npm run --silent tests-only",
+		"posttest": "npm run test:multirepo && npx npm@'>= 10.2' audit --production",
+		"test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test"
+	},
+	"devDependencies": {
+		"@ljharb/eslint-config": "^21.1.1",
+		"array.prototype.map": "^1.0.7",
+		"copy-dir": "^1.3.0",
+		"eclint": "^2.8.1",
+		"eslint": "=8.8.0",
+		"in-publish": "^2.0.1",
+		"mkdirp": "^0.5.5",
+		"mv": "^2.1.1",
+		"npmignore": "^0.3.1",
+		"object-keys": "^1.1.1",
+		"rimraf": "^2.7.1",
+		"safe-publish-latest": "^2.0.0",
+		"semver": "^6.3.1",
+		"tap": "0.4.13",
+		"tape": "^5.9.0",
+		"tmp": "^0.0.31"
+	},
+	"license": "MIT",
+	"author": {
+		"name": "James Halliday",
+		"email": "mail@substack.net",
+		"url": "http://substack.net"
+	},
+	"funding": {
+		"url": "https://github.com/sponsors/ljharb"
+	},
+	"dependencies": {
+		"is-core-module": "^2.16.0",
+		"path-parse": "^1.0.7",
+		"supports-preserve-symlinks-flag": "^1.0.0"
+	},
+	"publishConfig": {
+		"ignore": [
+			".github/workflows",
+			"appveyor.yml",
+			"test/resolver/malformed_package_json",
+			"test/list-exports"
+		]
+	},
+	"engines": {
+		"node": ">= 0.4"
+	}
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/readme.markdown
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/readme.markdown	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/readme.markdown	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,301 @@
+# resolve <sup>[![Version Badge][2]][1]</sup>
+
+implements the [node `require.resolve()` algorithm](https://nodejs.org/api/modules.html#modules_all_together) such that you can `require.resolve()` on behalf of a file asynchronously and synchronously
+
+[![github actions][actions-image]][actions-url]
+[![coverage][codecov-image]][codecov-url]
+[![dependency status][5]][6]
+[![dev dependency status][7]][8]
+[![License][license-image]][license-url]
+[![Downloads][downloads-image]][downloads-url]
+
+[![npm badge][11]][1]
+
+# example
+
+asynchronously resolve:
+
+```js
+var resolve = require('resolve/async'); // or, require('resolve')
+resolve('tap', { basedir: __dirname }, function (err, res) {
+    if (err) console.error(err);
+    else console.log(res);
+});
+```
+
+```
+$ node example/async.js
+/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
+```
+
+synchronously resolve:
+
+```js
+var resolve = require('resolve/sync'); // or, `require('resolve').sync
+var res = resolve('tap', { basedir: __dirname });
+console.log(res);
+```
+
+```
+$ node example/sync.js
+/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
+```
+
+# methods
+
+```js
+var resolve = require('resolve');
+var async = require('resolve/async');
+var sync = require('resolve/sync');
+```
+
+For both the synchronous and asynchronous methods, errors may have any of the following `err.code` values:
+
+- `MODULE_NOT_FOUND`: the given path string (`id`) could not be resolved to a module
+- `INVALID_BASEDIR`: the specified `opts.basedir` doesn't exist, or is not a directory
+- `INVALID_PACKAGE_MAIN`: a `package.json` was encountered with an invalid `main` property (eg. not a string)
+
+## resolve(id, opts={}, cb)
+
+Asynchronously resolve the module path string `id` into `cb(err, res [, pkg])`, where `pkg` (if defined) is the data from `package.json`.
+
+options are:
+
+* opts.basedir - directory to begin resolving from
+
+* opts.package - `package.json` data applicable to the module being loaded
+
+* opts.extensions - array of file extensions to search in order
+
+* opts.includeCoreModules - set to `false` to exclude node core modules (e.g. `fs`) from the search
+
+* opts.readFile - how to read files asynchronously
+
+* opts.isFile - function to asynchronously test whether a file exists
+
+* opts.isDirectory - function to asynchronously test whether a file exists and is a directory
+
+* opts.realpath - function to asynchronously resolve a potential symlink to its real path
+
+* `opts.readPackage(readFile, pkgfile, cb)` - function to asynchronously read and parse a package.json file
+  * readFile - the passed `opts.readFile` or `fs.readFile` if not specified
+  * pkgfile - path to package.json
+  * cb - callback
+
+* `opts.packageFilter(pkg, pkgfile, dir)` - transform the parsed package.json contents before looking at the "main" field
+  * pkg - package data
+  * pkgfile - path to package.json
+  * dir - directory that contains package.json
+
+* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
+  * pkg - package data
+  * path - the path being resolved
+  * relativePath - the path relative from the package.json location
+  * returns - a relative path that will be joined from the package.json location
+
+* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this)
+
+  For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function
+    * request - the import specifier being resolved
+    * start - lookup path
+    * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
+    * opts - the resolution options
+
+* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this)
+    * request - the import specifier being resolved
+    * start - lookup path
+    * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
+    * opts - the resolution options
+
+* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
+
+* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving.
+This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag.
+**Note:** this property is currently `true` by default but it will be changed to
+`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*.
+
+default `opts` values:
+
+```js
+{
+    paths: [],
+    basedir: __dirname,
+    extensions: ['.js'],
+    includeCoreModules: true,
+    readFile: fs.readFile,
+    isFile: function isFile(file, cb) {
+        fs.stat(file, function (err, stat) {
+            if (!err) {
+                return cb(null, stat.isFile() || stat.isFIFO());
+            }
+            if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+            return cb(err);
+        });
+    },
+    isDirectory: function isDirectory(dir, cb) {
+        fs.stat(dir, function (err, stat) {
+            if (!err) {
+                return cb(null, stat.isDirectory());
+            }
+            if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+            return cb(err);
+        });
+    },
+    realpath: function realpath(file, cb) {
+        var realpath = typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
+        realpath(file, function (realPathErr, realPath) {
+            if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr);
+            else cb(null, realPathErr ? file : realPath);
+        });
+    },
+    readPackage: function defaultReadPackage(readFile, pkgfile, cb) {
+        readFile(pkgfile, function (readFileErr, body) {
+            if (readFileErr) cb(readFileErr);
+            else {
+                try {
+                    var pkg = JSON.parse(body);
+                    cb(null, pkg);
+                } catch (jsonErr) {
+                    cb(null);
+                }
+            }
+        });
+    },
+    moduleDirectory: 'node_modules',
+    preserveSymlinks: true
+}
+```
+
+## resolve.sync(id, opts)
+
+Synchronously resolve the module path string `id`, returning the result and
+throwing an error when `id` can't be resolved.
+
+options are:
+
+* opts.basedir - directory to begin resolving from
+
+* opts.extensions - array of file extensions to search in order
+
+* opts.includeCoreModules - set to `false` to exclude node core modules (e.g. `fs`) from the search
+
+* opts.readFileSync - how to read files synchronously
+
+* opts.isFile - function to synchronously test whether a file exists
+
+* opts.isDirectory - function to synchronously test whether a file exists and is a directory
+
+* opts.realpathSync - function to synchronously resolve a potential symlink to its real path
+
+* `opts.readPackageSync(readFileSync, pkgfile)` - function to synchronously read and parse a package.json file
+  * readFileSync - the passed `opts.readFileSync` or `fs.readFileSync` if not specified
+  * pkgfile - path to package.json
+
+* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field
+  * pkg - package data
+  * dir - directory that contains package.json (Note: the second argument will change to "pkgfile" in v2)
+
+* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
+  * pkg - package data
+  * path - the path being resolved
+  * relativePath - the path relative from the package.json location
+  * returns - a relative path that will be joined from the package.json location
+
+* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this)
+
+  For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function
+    * request - the import specifier being resolved
+    * start - lookup path
+    * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
+    * opts - the resolution options
+
+* `opts.packageIterator(request, start, opts)` - return the list of candidate paths where the packages sources may be found (probably don't use this)
+    * request - the import specifier being resolved
+    * start - lookup path
+    * getPackageCandidates - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
+    * opts - the resolution options
+
+* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
+
+* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving.
+This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag.
+**Note:** this property is currently `true` by default but it will be changed to
+`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*.
+
+default `opts` values:
+
+```js
+{
+    paths: [],
+    basedir: __dirname,
+    extensions: ['.js'],
+    includeCoreModules: true,
+    readFileSync: fs.readFileSync,
+    isFile: function isFile(file) {
+        try {
+            var stat = fs.statSync(file);
+        } catch (e) {
+            if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+            throw e;
+        }
+        return stat.isFile() || stat.isFIFO();
+    },
+    isDirectory: function isDirectory(dir) {
+        try {
+            var stat = fs.statSync(dir);
+        } catch (e) {
+            if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+            throw e;
+        }
+        return stat.isDirectory();
+    },
+    realpathSync: function realpathSync(file) {
+        try {
+            var realpath = typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
+            return realpath(file);
+        } catch (realPathErr) {
+            if (realPathErr.code !== 'ENOENT') {
+                throw realPathErr;
+            }
+        }
+        return file;
+    },
+    readPackageSync: function defaultReadPackageSync(readFileSync, pkgfile) {
+        var body = readFileSync(pkgfile);
+        try {
+            var pkg = JSON.parse(body);
+            return pkg;
+        } catch (jsonErr) {}
+    },
+    moduleDirectory: 'node_modules',
+    preserveSymlinks: true
+}
+```
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```sh
+npm install resolve
+```
+
+# license
+
+MIT
+
+[1]: https://npmjs.org/package/resolve
+[2]: https://versionbadg.es/browserify/resolve.svg
+[5]: https://david-dm.org/browserify/resolve.svg
+[6]: https://david-dm.org/browserify/resolve
+[7]: https://david-dm.org/browserify/resolve/dev-status.svg
+[8]: https://david-dm.org/browserify/resolve#info=devDependencies
+[11]: https://nodei.co/npm/resolve.png?downloads=true&stars=true
+[license-image]: https://img.shields.io/npm/l/resolve.svg
+[license-url]: LICENSE
+[downloads-image]: https://img.shields.io/npm/dm/resolve.svg
+[downloads-url]: https://npm-stat.com/charts.html?package=resolve
+[codecov-image]: https://codecov.io/gh/browserify/resolve/branch/main/graphs/badge.svg
+[codecov-url]: https://app.codecov.io/gh/browserify/resolve/
+[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/browserify/resolve
+[actions-url]: https://github.com/browserify/resolve/actions
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('./lib/sync');
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/core.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,88 @@
+var test = require('tape');
+var keys = require('object-keys');
+var semver = require('semver');
+
+var resolve = require('../');
+
+var brokenNode = semver.satisfies(process.version, '11.11 - 11.13');
+
+test('core modules', function (t) {
+    t.test('isCore()', function (st) {
+        st.ok(resolve.isCore('fs'));
+        st.ok(resolve.isCore('net'));
+        st.ok(resolve.isCore('http'));
+
+        st.ok(!resolve.isCore('seq'));
+        st.ok(!resolve.isCore('../'));
+
+        st.ok(!resolve.isCore('toString'));
+
+        st.end();
+    });
+
+    t.test('core list', function (st) {
+        var cores = keys(resolve.core);
+        st.plan(cores.length);
+
+        for (var i = 0; i < cores.length; ++i) {
+            var mod = cores[i];
+            // note: this must be require, not require.resolve, due to https://github.com/nodejs/node/issues/43274
+            var requireFunc = function () { require(mod); }; // eslint-disable-line no-loop-func
+            t.comment(mod + ': ' + resolve.core[mod]);
+            if (resolve.core[mod]) {
+                st.doesNotThrow(requireFunc, mod + ' supported; requiring does not throw');
+            } else if (brokenNode) {
+                st.ok(true, 'this version of node is broken: attempting to require things that fail to resolve breaks "home_paths" tests');
+            } else {
+                st.throws(requireFunc, mod + ' not supported; requiring throws');
+            }
+        }
+
+        st.end();
+    });
+
+    t.test('core via repl module', { skip: !resolve.core.repl }, function (st) {
+        var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle
+        if (!libs) {
+            st.skip('module.builtinModules does not exist');
+            return st.end();
+        }
+        for (var i = 0; i < libs.length; ++i) {
+            var mod = libs[i];
+            st.ok(resolve.core[mod], mod + ' is a core module');
+            st.doesNotThrow(
+                function () { require(mod); }, // eslint-disable-line no-loop-func
+                'requiring ' + mod + ' does not throw'
+            );
+        }
+        st.end();
+    });
+
+    t.test('core via builtinModules list', { skip: !resolve.core.module }, function (st) {
+        var libs = require('module').builtinModules;
+        if (!libs) {
+            st.skip('module.builtinModules does not exist');
+            return st.end();
+        }
+        var blacklist = [
+            '_debug_agent',
+            'v8/tools/tickprocessor-driver',
+            'v8/tools/SourceMap',
+            'v8/tools/tickprocessor',
+            'v8/tools/profile'
+        ];
+        for (var i = 0; i < libs.length; ++i) {
+            var mod = libs[i];
+            if (blacklist.indexOf(mod) === -1) {
+                st.ok(resolve.core[mod], mod + ' is a core module');
+                st.doesNotThrow(
+                    function () { require(mod); }, // eslint-disable-line no-loop-func
+                    'requiring ' + mod + ' does not throw'
+                );
+            }
+        }
+        st.end();
+    });
+
+    t.end();
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('dotdot', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, '/dotdot/abc');
+
+    resolve('..', { basedir: dir }, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(__dirname, 'dotdot/index.js'));
+    });
+
+    resolve('.', { basedir: dir }, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, 'index.js'));
+    });
+});
+
+test('dotdot sync', function (t) {
+    t.plan(2);
+    var dir = path.join(__dirname, '/dotdot/abc');
+
+    var a = resolve.sync('..', { basedir: dir });
+    t.equal(a, path.join(__dirname, 'dotdot/index.js'));
+
+    var b = resolve.sync('.', { basedir: dir });
+    t.equal(b, path.join(dir, 'index.js'));
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot/abc/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot/abc/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot/abc/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,2 @@
+var x = require('..');
+console.log(x);
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/dotdot/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'whatever';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/faulty_basedir.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/faulty_basedir.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/faulty_basedir.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+var test = require('tape');
+var path = require('path');
+var resolve = require('../');
+
+test('faulty basedir must produce error in windows', { skip: process.platform !== 'win32' }, function (t) {
+    t.plan(1);
+
+    var resolverDir = 'C:\\a\\b\\c\\d';
+
+    resolve('tape/lib/test.js', { basedir: resolverDir }, function (err, res, pkg) {
+        t.equal(!!err, true);
+    });
+});
+
+test('non-existent basedir should not throw when preserveSymlinks is false', function (t) {
+    t.plan(2);
+
+    var opts = {
+        basedir: path.join(path.sep, 'unreal', 'path', 'that', 'does', 'not', 'exist'),
+        preserveSymlinks: false
+    };
+
+    var module = './dotdot/abc';
+
+    resolve(module, opts, function (err, res) {
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+        t.equal(res, undefined);
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/filter.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/filter.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/filter.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, 'resolver');
+    var packageFilterArgs;
+    resolve('./baz', {
+        basedir: dir,
+        packageFilter: function (pkg, pkgfile) {
+            pkg.main = 'doom'; // eslint-disable-line no-param-reassign
+            packageFilterArgs = [pkg, pkgfile];
+            return pkg;
+        }
+    }, function (err, res, pkg) {
+        if (err) t.fail(err);
+
+        t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
+
+        var packageData = packageFilterArgs[0];
+        t.equal(pkg, packageData, 'first packageFilter argument is "pkg"');
+        t.equal(packageData.main, 'doom', 'package "main" was altered');
+
+        var packageFile = packageFilterArgs[1];
+        t.equal(
+            packageFile,
+            path.join(dir, 'baz/package.json'),
+            'second packageFilter argument is "pkgfile"'
+        );
+
+        t.end();
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/filter_sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/filter_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/filter_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,33 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    var packageFilterArgs;
+    var res = resolve.sync('./baz', {
+        basedir: dir,
+        // NOTE: in v2.x, this will be `pkg, pkgfile, dir`, but must remain "broken" here in v1.x for compatibility
+        packageFilter: function (pkg, /*pkgfile,*/ dir) { // eslint-disable-line spaced-comment
+            pkg.main = 'doom'; // eslint-disable-line no-param-reassign
+            packageFilterArgs = 'is 1.x' ? [pkg, dir] : [pkg, pkgfile, dir]; // eslint-disable-line no-constant-condition, no-undef
+            return pkg;
+        }
+    });
+
+    t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
+
+    var packageData = packageFilterArgs[0];
+    t.equal(packageData.main, 'doom', 'package "main" was altered');
+
+    if (!'is 1.x') { // eslint-disable-line no-constant-condition
+        var packageFile = packageFilterArgs[1];
+        t.equal(packageFile, path.join(dir, 'baz', 'package.json'), 'package.json path is correct');
+    }
+
+    var packageDir = packageFilterArgs['is 1.x' ? 1 : 2]; // eslint-disable-line no-constant-condition
+    // eslint-disable-next-line no-constant-condition
+    t.equal(packageDir, path.join(dir, 'baz'), ('is 1.x' ? 'second' : 'third') + ' packageFilter argument is "dir"');
+
+    t.end();
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/home_paths.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/home_paths.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/home_paths.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,127 @@
+'use strict';
+
+var fs = require('fs');
+var homedir = require('../lib/homedir');
+var path = require('path');
+
+var test = require('tape');
+var mkdirp = require('mkdirp');
+var rimraf = require('rimraf');
+var mv = require('mv');
+var copyDir = require('copy-dir');
+var tmp = require('tmp');
+
+var HOME = homedir();
+
+var hnm = path.join(HOME, '.node_modules');
+var hnl = path.join(HOME, '.node_libraries');
+
+var resolve = require('../async');
+
+function makeDir(t, dir, cb) {
+    mkdirp(dir, function (err) {
+        if (err) {
+            cb(err);
+        } else {
+            t.teardown(function cleanup() {
+                rimraf.sync(dir);
+            });
+            cb();
+        }
+    });
+}
+
+function makeTempDir(t, dir, cb) {
+    if (fs.existsSync(dir)) {
+        var tmpResult = tmp.dirSync();
+        t.teardown(tmpResult.removeCallback);
+        var backup = path.join(tmpResult.name, path.basename(dir));
+        mv(dir, backup, function (err) {
+            if (err) {
+                cb(err);
+            } else {
+                t.teardown(function () {
+                    mv(backup, dir, cb);
+                });
+                makeDir(t, dir, cb);
+            }
+        });
+    } else {
+        makeDir(t, dir, cb);
+    }
+}
+
+test('homedir module paths', function (t) {
+    t.plan(7);
+
+    makeTempDir(t, hnm, function (err) {
+        t.error(err, 'no error with HNM temp dir');
+        if (err) {
+            return t.end();
+        }
+
+        var bazHNMDir = path.join(hnm, 'baz');
+        var dotMainDir = path.join(hnm, 'dot_main');
+        copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNMDir);
+        copyDir.sync(path.join(__dirname, 'resolver/dot_main'), dotMainDir);
+
+        var bazPkg = { name: 'baz', main: 'quux.js' };
+        var dotMainPkg = { main: 'index' };
+
+        var bazHNMmain = path.join(bazHNMDir, 'quux.js');
+        t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`');
+        var dotMainMain = path.join(dotMainDir, 'index.js');
+        t.equal(require.resolve('dot_main'), dotMainMain, 'sanity check: require.resolve finds `dot_main`');
+
+        makeTempDir(t, hnl, function (err) {
+            t.error(err, 'no error with HNL temp dir');
+            if (err) {
+                return t.end();
+            }
+            var bazHNLDir = path.join(hnl, 'baz');
+            copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNLDir);
+
+            var dotSlashMainDir = path.join(hnl, 'dot_slash_main');
+            var dotSlashMainMain = path.join(dotSlashMainDir, 'index.js');
+            var dotSlashMainPkg = { main: 'index' };
+            copyDir.sync(path.join(__dirname, 'resolver/dot_slash_main'), dotSlashMainDir);
+
+            t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`');
+            t.equal(require.resolve('dot_slash_main'), dotSlashMainMain, 'sanity check: require.resolve finds HNL `dot_slash_main`');
+
+            t.test('with temp dirs', function (st) {
+                st.plan(3);
+
+                st.test('just in `$HOME/.node_modules`', function (s2t) {
+                    s2t.plan(3);
+
+                    resolve('dot_main', function (err, res, pkg) {
+                        s2t.error(err, 'no error resolving `dot_main`');
+                        s2t.equal(res, dotMainMain, '`dot_main` resolves in `$HOME/.node_modules`');
+                        s2t.deepEqual(pkg, dotMainPkg);
+                    });
+                });
+
+                st.test('just in `$HOME/.node_libraries`', function (s2t) {
+                    s2t.plan(3);
+
+                    resolve('dot_slash_main', function (err, res, pkg) {
+                        s2t.error(err, 'no error resolving `dot_slash_main`');
+                        s2t.equal(res, dotSlashMainMain, '`dot_slash_main` resolves in `$HOME/.node_libraries`');
+                        s2t.deepEqual(pkg, dotSlashMainPkg);
+                    });
+                });
+
+                st.test('in `$HOME/.node_libraries` and `$HOME/.node_modules`', function (s2t) {
+                    s2t.plan(3);
+
+                    resolve('baz', function (err, res, pkg) {
+                        s2t.error(err, 'no error resolving `baz`');
+                        s2t.equal(res, bazHNMmain, '`baz` resolves in `$HOME/.node_modules` when in both');
+                        s2t.deepEqual(pkg, bazPkg);
+                    });
+                });
+            });
+        });
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/home_paths_sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/home_paths_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/home_paths_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,114 @@
+'use strict';
+
+var fs = require('fs');
+var homedir = require('../lib/homedir');
+var path = require('path');
+
+var test = require('tape');
+var mkdirp = require('mkdirp');
+var rimraf = require('rimraf');
+var mv = require('mv');
+var copyDir = require('copy-dir');
+var tmp = require('tmp');
+
+var HOME = homedir();
+
+var hnm = path.join(HOME, '.node_modules');
+var hnl = path.join(HOME, '.node_libraries');
+
+var resolve = require('../sync');
+
+function makeDir(t, dir, cb) {
+    mkdirp(dir, function (err) {
+        if (err) {
+            cb(err);
+        } else {
+            t.teardown(function cleanup() {
+                rimraf.sync(dir);
+            });
+            cb();
+        }
+    });
+}
+
+function makeTempDir(t, dir, cb) {
+    if (fs.existsSync(dir)) {
+        var tmpResult = tmp.dirSync();
+        t.teardown(tmpResult.removeCallback);
+        var backup = path.join(tmpResult.name, path.basename(dir));
+        mv(dir, backup, function (err) {
+            if (err) {
+                cb(err);
+            } else {
+                t.teardown(function () {
+                    mv(backup, dir, cb);
+                });
+                makeDir(t, dir, cb);
+            }
+        });
+    } else {
+        makeDir(t, dir, cb);
+    }
+}
+
+test('homedir module paths', function (t) {
+    t.plan(7);
+
+    makeTempDir(t, hnm, function (err) {
+        t.error(err, 'no error with HNM temp dir');
+        if (err) {
+            return t.end();
+        }
+
+        var bazHNMDir = path.join(hnm, 'baz');
+        var dotMainDir = path.join(hnm, 'dot_main');
+        copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNMDir);
+        copyDir.sync(path.join(__dirname, 'resolver/dot_main'), dotMainDir);
+
+        var bazHNMmain = path.join(bazHNMDir, 'quux.js');
+        t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`');
+        var dotMainMain = path.join(dotMainDir, 'index.js');
+        t.equal(require.resolve('dot_main'), dotMainMain, 'sanity check: require.resolve finds `dot_main`');
+
+        makeTempDir(t, hnl, function (err) {
+            t.error(err, 'no error with HNL temp dir');
+            if (err) {
+                return t.end();
+            }
+            var bazHNLDir = path.join(hnl, 'baz');
+            copyDir.sync(path.join(__dirname, 'resolver/baz'), bazHNLDir);
+
+            var dotSlashMainDir = path.join(hnl, 'dot_slash_main');
+            var dotSlashMainMain = path.join(dotSlashMainDir, 'index.js');
+            copyDir.sync(path.join(__dirname, 'resolver/dot_slash_main'), dotSlashMainDir);
+
+            t.equal(require.resolve('baz'), bazHNMmain, 'sanity check: require.resolve finds HNM `baz`');
+            t.equal(require.resolve('dot_slash_main'), dotSlashMainMain, 'sanity check: require.resolve finds HNL `dot_slash_main`');
+
+            t.test('with temp dirs', function (st) {
+                st.plan(3);
+
+                st.test('just in `$HOME/.node_modules`', function (s2t) {
+                    s2t.plan(1);
+
+                    var res = resolve('dot_main');
+                    s2t.equal(res, dotMainMain, '`dot_main` resolves in `$HOME/.node_modules`');
+                });
+
+                st.test('just in `$HOME/.node_libraries`', function (s2t) {
+                    s2t.plan(1);
+
+                    var res = resolve('dot_slash_main');
+                    s2t.equal(res, dotSlashMainMain, '`dot_slash_main` resolves in `$HOME/.node_libraries`');
+                });
+
+                st.test('in `$HOME/.node_libraries` and `$HOME/.node_modules`', function (s2t) {
+                    s2t.plan(1);
+
+                    var res = resolve('baz');
+                    s2t.equal(res, bazHNMmain, '`baz` resolves in `$HOME/.node_modules` when in both');
+                });
+            });
+        });
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/mock.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/mock.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/mock.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,315 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+    t.plan(8);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+
+    var dirs = {};
+    dirs[path.resolve('/foo/bar')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            isDirectory: function (dir, cb) {
+                cb(null, !!dirs[path.resolve(dir)]);
+            },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            },
+            realpath: function (file, cb) {
+                cb(null, file);
+            }
+        };
+    }
+
+    resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    resolve('../baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('mock from package', function (t) {
+    t.plan(8);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+
+    var dirs = {};
+    dirs[path.resolve('/foo/bar')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, file));
+            },
+            isDirectory: function (dir, cb) {
+                cb(null, !!dirs[path.resolve(dir)]);
+            },
+            'package': { main: 'bar' },
+            readFile: function (file, cb) {
+                cb(null, files[file]);
+            },
+            realpath: function (file, cb) {
+                cb(null, file);
+            }
+        };
+    }
+
+    resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg && pkg.main, 'bar');
+    });
+
+    resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg && pkg.main, 'bar');
+    });
+
+    resolve('baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    resolve('../baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('mock package', function (t) {
+    t.plan(2);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+
+    var dirs = {};
+    dirs[path.resolve('/foo')] = true;
+    dirs[path.resolve('/foo/node_modules')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            isDirectory: function (dir, cb) {
+                cb(null, !!dirs[path.resolve(dir)]);
+            },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            },
+            realpath: function (file, cb) {
+                cb(null, file);
+            }
+        };
+    }
+
+    resolve('bar', opts('/foo'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
+        t.equal(pkg && pkg.main, './baz.js');
+    });
+});
+
+test('mock package from package', function (t) {
+    t.plan(2);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+
+    var dirs = {};
+    dirs[path.resolve('/foo')] = true;
+    dirs[path.resolve('/foo/node_modules')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            isDirectory: function (dir, cb) {
+                cb(null, !!dirs[path.resolve(dir)]);
+            },
+            'package': { main: 'bar' },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            },
+            realpath: function (file, cb) {
+                cb(null, file);
+            }
+        };
+    }
+
+    resolve('bar', opts('/foo'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
+        t.equal(pkg && pkg.main, './baz.js');
+    });
+});
+
+test('symlinked', function (t) {
+    t.plan(4);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep';
+
+    var dirs = {};
+    dirs[path.resolve('/foo/bar')] = true;
+    dirs[path.resolve('/foo/bar/symlinked')] = true;
+
+    function opts(basedir) {
+        return {
+            preserveSymlinks: false,
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            isDirectory: function (dir, cb) {
+                cb(null, !!dirs[path.resolve(dir)]);
+            },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            },
+            realpath: function (file, cb) {
+                var resolved = path.resolve(file);
+
+                if (resolved.indexOf('symlinked') >= 0) {
+                    cb(null, resolved);
+                    return;
+                }
+
+                var ext = path.extname(resolved);
+
+                if (ext) {
+                    var dir = path.dirname(resolved);
+                    var base = path.basename(resolved);
+                    cb(null, path.join(dir, 'symlinked', base));
+                } else {
+                    cb(null, path.join(resolved, 'symlinked'));
+                }
+            }
+        };
+    }
+
+    resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/symlinked/baz.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/symlinked/baz.js'));
+        t.equal(pkg, undefined);
+    });
+});
+
+test('readPackage', function (t) {
+    t.plan(3);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'boop';
+
+    var dirs = {};
+    dirs[path.resolve('/foo')] = true;
+    dirs[path.resolve('/foo/node_modules')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            isDirectory: function (dir, cb) {
+                cb(null, !!dirs[path.resolve(dir)]);
+            },
+            'package': { main: 'bar' },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            },
+            realpath: function (file, cb) {
+                cb(null, file);
+            }
+        };
+    }
+
+    t.test('with readFile', function (st) {
+        st.plan(3);
+
+        resolve('bar', opts('/foo'), function (err, res, pkg) {
+            st.error(err);
+            st.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
+            st.equal(pkg && pkg.main, './baz.js');
+        });
+    });
+
+    var readPackage = function (readFile, file, cb) {
+        var barPackage = path.join('bar', 'package.json');
+        if (file.slice(-barPackage.length) === barPackage) {
+            cb(null, { main: './something-else.js' });
+        } else {
+            cb(null, JSON.parse(files[path.resolve(file)]));
+        }
+    };
+
+    t.test('with readPackage', function (st) {
+        st.plan(3);
+
+        var options = opts('/foo');
+        delete options.readFile;
+        options.readPackage = readPackage;
+        resolve('bar', options, function (err, res, pkg) {
+            st.error(err);
+            st.equal(res, path.resolve('/foo/node_modules/bar/something-else.js'));
+            st.equal(pkg && pkg.main, './something-else.js');
+        });
+    });
+
+    t.test('with readFile and readPackage', function (st) {
+        st.plan(1);
+
+        var options = opts('/foo');
+        options.readPackage = readPackage;
+        resolve('bar', options, function (err) {
+            st.throws(function () { throw err; }, TypeError, 'errors when both readFile and readPackage are provided');
+        });
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/mock_sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/mock_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/mock_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,214 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+    t.plan(4);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+
+    var dirs = {};
+    dirs[path.resolve('/foo/bar')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file) {
+                return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
+            },
+            isDirectory: function (dir) {
+                return !!dirs[path.resolve(dir)];
+            },
+            readFileSync: function (file) {
+                return files[path.resolve(file)];
+            },
+            realpathSync: function (file) {
+                return file;
+            }
+        };
+    }
+
+    t.equal(
+        resolve.sync('./baz', opts('/foo/bar')),
+        path.resolve('/foo/bar/baz.js')
+    );
+
+    t.equal(
+        resolve.sync('./baz.js', opts('/foo/bar')),
+        path.resolve('/foo/bar/baz.js')
+    );
+
+    t.throws(function () {
+        resolve.sync('baz', opts('/foo/bar'));
+    });
+
+    t.throws(function () {
+        resolve.sync('../baz', opts('/foo/bar'));
+    });
+});
+
+test('mock package', function (t) {
+    t.plan(1);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+
+    var dirs = {};
+    dirs[path.resolve('/foo')] = true;
+    dirs[path.resolve('/foo/node_modules')] = true;
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file) {
+                return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
+            },
+            isDirectory: function (dir) {
+                return !!dirs[path.resolve(dir)];
+            },
+            readFileSync: function (file) {
+                return files[path.resolve(file)];
+            },
+            realpathSync: function (file) {
+                return file;
+            }
+        };
+    }
+
+    t.equal(
+        resolve.sync('bar', opts('/foo')),
+        path.resolve('/foo/node_modules/bar/baz.js')
+    );
+});
+
+test('symlinked', function (t) {
+    t.plan(2);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/bar/symlinked/baz.js')] = 'beep';
+
+    var dirs = {};
+    dirs[path.resolve('/foo/bar')] = true;
+    dirs[path.resolve('/foo/bar/symlinked')] = true;
+
+    function opts(basedir) {
+        return {
+            preserveSymlinks: false,
+            basedir: path.resolve(basedir),
+            isFile: function (file) {
+                return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
+            },
+            isDirectory: function (dir) {
+                return !!dirs[path.resolve(dir)];
+            },
+            readFileSync: function (file) {
+                return files[path.resolve(file)];
+            },
+            realpathSync: function (file) {
+                var resolved = path.resolve(file);
+
+                if (resolved.indexOf('symlinked') >= 0) {
+                    return resolved;
+                }
+
+                var ext = path.extname(resolved);
+
+                if (ext) {
+                    var dir = path.dirname(resolved);
+                    var base = path.basename(resolved);
+                    return path.join(dir, 'symlinked', base);
+                }
+                return path.join(resolved, 'symlinked');
+            }
+        };
+    }
+
+    t.equal(
+        resolve.sync('./baz', opts('/foo/bar')),
+        path.resolve('/foo/bar/symlinked/baz.js')
+    );
+
+    t.equal(
+        resolve.sync('./baz.js', opts('/foo/bar')),
+        path.resolve('/foo/bar/symlinked/baz.js')
+    );
+});
+
+test('readPackageSync', function (t) {
+    t.plan(3);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'boop';
+
+    var dirs = {};
+    dirs[path.resolve('/foo')] = true;
+    dirs[path.resolve('/foo/node_modules')] = true;
+
+    function opts(basedir, useReadPackage) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file) {
+                return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
+            },
+            isDirectory: function (dir) {
+                return !!dirs[path.resolve(dir)];
+            },
+            readFileSync: useReadPackage ? null : function (file) {
+                return files[path.resolve(file)];
+            },
+            realpathSync: function (file) {
+                return file;
+            }
+        };
+    }
+    t.test('with readFile', function (st) {
+        st.plan(1);
+
+        st.equal(
+            resolve.sync('bar', opts('/foo')),
+            path.resolve('/foo/node_modules/bar/baz.js')
+        );
+    });
+
+    var readPackageSync = function (readFileSync, file) {
+        if (file.indexOf(path.join('bar', 'package.json')) >= 0) {
+            return { main: './something-else.js' };
+        }
+        return JSON.parse(files[path.resolve(file)]);
+    };
+
+    t.test('with readPackage', function (st) {
+        st.plan(1);
+
+        var options = opts('/foo');
+        delete options.readFileSync;
+        options.readPackageSync = readPackageSync;
+
+        st.equal(
+            resolve.sync('bar', options),
+            path.resolve('/foo/node_modules/bar/something-else.js')
+        );
+    });
+
+    t.test('with readFile and readPackage', function (st) {
+        st.plan(1);
+
+        var options = opts('/foo');
+        options.readPackageSync = readPackageSync;
+        st.throws(
+            function () { resolve.sync('bar', options); },
+            TypeError,
+            'errors when both readFile and readPackage are provided'
+        );
+    });
+});
+
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,56 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('moduleDirectory strings', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, 'module_dir');
+    var xopts = {
+        basedir: dir,
+        moduleDirectory: 'xmodules'
+    };
+    resolve('aaa', xopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/xmodules/aaa/index.js'));
+    });
+
+    var yopts = {
+        basedir: dir,
+        moduleDirectory: 'ymodules'
+    };
+    resolve('aaa', yopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/ymodules/aaa/index.js'));
+    });
+});
+
+test('moduleDirectory array', function (t) {
+    t.plan(6);
+    var dir = path.join(__dirname, 'module_dir');
+    var aopts = {
+        basedir: dir,
+        moduleDirectory: ['xmodules', 'ymodules', 'zmodules']
+    };
+    resolve('aaa', aopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/xmodules/aaa/index.js'));
+    });
+
+    var bopts = {
+        basedir: dir,
+        moduleDirectory: ['zmodules', 'ymodules', 'xmodules']
+    };
+    resolve('aaa', bopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/ymodules/aaa/index.js'));
+    });
+
+    var copts = {
+        basedir: dir,
+        moduleDirectory: ['xmodules', 'ymodules', 'zmodules']
+    };
+    resolve('bbb', copts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/zmodules/bbb/main.js'));
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/xmodules/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/xmodules/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = function (x) { return x * 100; };
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/ymodules/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/ymodules/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = function (x) { return x + 100; };
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/zmodules/bbb/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/zmodules/bbb/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = function (n) { return n * 111; };
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/zmodules/bbb/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/module_dir/zmodules/bbb/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+{
+  "main": "main.js"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node-modules-paths.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node-modules-paths.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node-modules-paths.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,143 @@
+var test = require('tape');
+var path = require('path');
+var parse = path.parse || require('path-parse');
+var keys = require('object-keys');
+
+var nodeModulesPaths = require('../lib/node-modules-paths');
+
+var verifyDirs = function verifyDirs(t, start, dirs, moduleDirectories, paths) {
+    var moduleDirs = [].concat(moduleDirectories || 'node_modules');
+    if (paths) {
+        for (var k = 0; k < paths.length; ++k) {
+            moduleDirs.push(path.basename(paths[k]));
+        }
+    }
+
+    var foundModuleDirs = {};
+    var uniqueDirs = {};
+    var parsedDirs = {};
+    for (var i = 0; i < dirs.length; ++i) {
+        var parsed = parse(dirs[i]);
+        if (!foundModuleDirs[parsed.base]) { foundModuleDirs[parsed.base] = 0; }
+        foundModuleDirs[parsed.base] += 1;
+        parsedDirs[parsed.dir] = true;
+        uniqueDirs[dirs[i]] = true;
+    }
+    t.equal(keys(parsedDirs).length >= start.split(path.sep).length, true, 'there are >= dirs than "start" has');
+    var foundModuleDirNames = keys(foundModuleDirs);
+    t.deepEqual(foundModuleDirNames, moduleDirs, 'all desired module dirs were found');
+    t.equal(keys(uniqueDirs).length, dirs.length, 'all dirs provided were unique');
+
+    var counts = {};
+    for (var j = 0; j < foundModuleDirNames.length; ++j) {
+        counts[foundModuleDirs[j]] = true;
+    }
+    t.equal(keys(counts).length, 1, 'all found module directories had the same count');
+};
+
+test('node-modules-paths', function (t) {
+    t.test('no options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start);
+
+        verifyDirs(t, start, dirs);
+
+        t.end();
+    });
+
+    t.test('empty options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start, {});
+
+        verifyDirs(t, start, dirs);
+
+        t.end();
+    });
+
+    t.test('with paths=array option', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var paths = ['a', 'b'];
+        var dirs = nodeModulesPaths(start, { paths: paths });
+
+        verifyDirs(t, start, dirs, null, paths);
+
+        t.end();
+    });
+
+    t.test('with paths=function option', function (t) {
+        var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) {
+            return getNodeModulesDirs().concat(path.join(absoluteStart, 'not node modules', request));
+        };
+
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start, { paths: paths }, 'pkg');
+
+        verifyDirs(t, start, dirs, null, [path.join(start, 'not node modules', 'pkg')]);
+
+        t.end();
+    });
+
+    t.test('with paths=function skipping node modules resolution', function (t) {
+        var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) {
+            return [];
+        };
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start, { paths: paths });
+        t.deepEqual(dirs, [], 'no node_modules was computed');
+        t.end();
+    });
+
+    t.test('with moduleDirectory option', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var moduleDirectory = 'not node modules';
+        var dirs = nodeModulesPaths(start, { moduleDirectory: moduleDirectory });
+
+        verifyDirs(t, start, dirs, moduleDirectory);
+
+        t.end();
+    });
+
+    t.test('with 1 moduleDirectory and paths options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var paths = ['a', 'b'];
+        var moduleDirectory = 'not node modules';
+        var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectory });
+
+        verifyDirs(t, start, dirs, moduleDirectory, paths);
+
+        t.end();
+    });
+
+    t.test('with 1+ moduleDirectory and paths options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var paths = ['a', 'b'];
+        var moduleDirectories = ['not node modules', 'other modules'];
+        var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
+
+        verifyDirs(t, start, dirs, moduleDirectories, paths);
+
+        t.end();
+    });
+
+    t.test('combine paths correctly on Windows', function (t) {
+        var start = 'C:\\Users\\username\\myProject\\src';
+        var paths = [];
+        var moduleDirectories = ['node_modules', start];
+        var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
+
+        t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir');
+
+        t.end();
+    });
+
+    t.test('combine paths correctly on non-Windows', { skip: process.platform === 'win32' }, function (t) {
+        var start = '/Users/username/git/myProject/src';
+        var paths = [];
+        var moduleDirectories = ['node_modules', '/Users/username/git/myProject/src'];
+        var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
+
+        t.equal(dirs.indexOf(path.resolve(start)) > -1, true, 'should contain start dir');
+
+        t.end();
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,70 @@
+var fs = require('fs');
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('$NODE_PATH', function (t) {
+    t.plan(8);
+
+    var isDir = function (dir, cb) {
+        if (dir === '/node_path' || dir === 'node_path/x') {
+            return cb(null, true);
+        }
+        fs.stat(dir, function (err, stat) {
+            if (!err) {
+                return cb(null, stat.isDirectory());
+            }
+            if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+            return cb(err);
+        });
+    };
+
+    resolve('aaa', {
+        paths: [
+            path.join(__dirname, '/node_path/x'),
+            path.join(__dirname, '/node_path/y')
+        ],
+        basedir: __dirname,
+        isDirectory: isDir
+    }, function (err, res) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, '/node_path/x/aaa/index.js'), 'aaa resolves');
+    });
+
+    resolve('bbb', {
+        paths: [
+            path.join(__dirname, '/node_path/x'),
+            path.join(__dirname, '/node_path/y')
+        ],
+        basedir: __dirname,
+        isDirectory: isDir
+    }, function (err, res) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, '/node_path/y/bbb/index.js'), 'bbb resolves');
+    });
+
+    resolve('ccc', {
+        paths: [
+            path.join(__dirname, '/node_path/x'),
+            path.join(__dirname, '/node_path/y')
+        ],
+        basedir: __dirname,
+        isDirectory: isDir
+    }, function (err, res) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, '/node_path/x/ccc/index.js'), 'ccc resolves');
+    });
+
+    // ensure that relative paths still resolve against the regular `node_modules` correctly
+    resolve('tap', {
+        paths: [
+            'node_path'
+        ],
+        basedir: path.join(__dirname, 'node_path/x'),
+        isDirectory: isDir
+    }, function (err, res) {
+        var root = require('tap/package.json').main; // eslint-disable-line global-require
+        t.error(err);
+        t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap', root), 'tap resolves');
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/x/aaa/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/x/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/x/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'A';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/x/ccc/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/x/ccc/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/x/ccc/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'C';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/y/bbb/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/y/bbb/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/y/bbb/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'B';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/y/ccc/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/y/ccc/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/node_path/y/ccc/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'CY';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/nonstring.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/nonstring.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/nonstring.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,9 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('nonstring', function (t) {
+    t.plan(1);
+    resolve(555, function (err, res, pkg) {
+        t.ok(err);
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/pathfilter.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/pathfilter.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/pathfilter.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,75 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+var resolverDir = path.join(__dirname, '/pathfilter/deep_ref');
+
+var pathFilterFactory = function (t) {
+    return function (pkg, x, remainder) {
+        t.equal(pkg.version, '1.2.3');
+        t.equal(x, path.join(resolverDir, 'node_modules/deep/ref'));
+        t.equal(remainder, 'ref');
+        return 'alt';
+    };
+};
+
+test('#62: deep module references and the pathFilter', function (t) {
+    t.test('deep/ref.js', function (st) {
+        st.plan(3);
+
+        resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) {
+            if (err) st.fail(err);
+
+            st.equal(pkg.version, '1.2.3');
+            st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+        });
+
+        var res = resolve.sync('deep/ref', { basedir: resolverDir });
+        st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+    });
+
+    t.test('deep/deeper/ref', function (st) {
+        st.plan(4);
+
+        resolve(
+            'deep/deeper/ref',
+            { basedir: resolverDir },
+            function (err, res, pkg) {
+                if (err) t.fail(err);
+                st.notEqual(pkg, undefined);
+                st.equal(pkg.version, '1.2.3');
+                st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
+            }
+        );
+
+        var res = resolve.sync(
+            'deep/deeper/ref',
+            { basedir: resolverDir }
+        );
+        st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
+    });
+
+    t.test('deep/ref alt', function (st) {
+        st.plan(8);
+
+        var pathFilter = pathFilterFactory(st);
+
+        var res = resolve.sync(
+            'deep/ref',
+            { basedir: resolverDir, pathFilter: pathFilter }
+        );
+        st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
+
+        resolve(
+            'deep/ref',
+            { basedir: resolverDir, pathFilter: pathFilter },
+            function (err, res, pkg) {
+                if (err) st.fail(err);
+                st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
+                st.end();
+            }
+        );
+    });
+
+    t.end();
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('precedence', function (t) {
+    t.plan(3);
+    var dir = path.join(__dirname, 'precedence/aaa');
+
+    resolve('./', { basedir: dir }, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, 'index.js'));
+        t.equal(pkg.name, 'resolve');
+    });
+});
+
+test('./ should not load ${dir}.js', function (t) { // eslint-disable-line no-template-curly-in-string
+    t.plan(1);
+    var dir = path.join(__dirname, 'precedence/bbb');
+
+    resolve('./', { basedir: dir }, function (err, res, pkg) {
+        t.ok(err);
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'wtf';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'okok';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa/main.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/aaa/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+console.log(require('./'));
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/bbb.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/bbb.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/bbb.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = '>_<';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/bbb/main.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/bbb/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/precedence/bbb/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+console.log(require('./')); // should throw
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,597 @@
+var path = require('path');
+var fs = require('fs');
+var test = require('tape');
+var resolve = require('../');
+var async = require('../async');
+
+test('`./async` entry point', function (t) {
+    t.equal(resolve, async, '`./async` entry point is the same as `main`');
+    t.end();
+});
+
+test('async foo', function (t) {
+    t.plan(12);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./foo', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg && pkg.name, 'resolve');
+    });
+
+    resolve('./foo.js', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg && pkg.name, 'resolve');
+    });
+
+    resolve('./foo', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg && pkg.main, 'resolver');
+    });
+
+    resolve('./foo.js', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg.main, 'resolver');
+    });
+
+    resolve('./foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+    });
+
+    resolve('foo', { basedir: dir }, function (err) {
+        t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    // Test that filename is reported as the "from" value when passed.
+    resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) {
+        t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'");
+    });
+});
+
+test('bar', function (t) {
+    t.plan(6);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('foo', { basedir: dir + '/bar', 'package': { main: 'bar' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
+        t.equal(pkg.main, 'bar');
+    });
+});
+
+test('baz', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./baz', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'baz/quux.js'));
+        t.equal(pkg.main, 'quux.js');
+    });
+
+    resolve('./baz', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'baz/quux.js'));
+        t.equal(pkg.main, 'quux.js');
+    });
+});
+
+test('biz', function (t) {
+    t.plan(24);
+    var dir = path.join(__dirname, 'resolver/biz/node_modules');
+
+    resolve('./grux', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('./grux', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg.main, 'biz');
+    });
+
+    resolve('./garply', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('./garply', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('tiv', { basedir: dir + '/grux' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('tiv', { basedir: dir + '/grux', 'package': { main: 'grux' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg.main, 'grux');
+    });
+
+    resolve('tiv', { basedir: dir + '/garply' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('tiv', { basedir: dir + '/garply', 'package': { main: './lib' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('grux', { basedir: dir + '/tiv' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('grux', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg.main, 'tiv');
+    });
+
+    resolve('garply', { basedir: dir + '/tiv' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('garply', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+});
+
+test('quux', function (t) {
+    t.plan(2);
+    var dir = path.join(__dirname, 'resolver/quux');
+
+    resolve('./foo', { basedir: dir, 'package': { main: 'quux' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo/index.js'));
+        t.equal(pkg.main, 'quux');
+    });
+});
+
+test('normalize', function (t) {
+    t.plan(2);
+    var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
+
+    resolve('../grux', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'index.js'));
+        t.equal(pkg, undefined);
+    });
+});
+
+test('cup', function (t) {
+    t.plan(5);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'cup.coffee'));
+    });
+
+    resolve('./cup.coffee', { basedir: dir }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'cup.coffee'));
+    });
+
+    resolve('./cup', { basedir: dir, extensions: ['.js'] }, function (err, res) {
+        t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    // Test that filename is reported as the "from" value when passed.
+    resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) {
+        t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'");
+    });
+});
+
+test('mug', function (t) {
+    t.plan(3);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./mug', { basedir: dir }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'mug.js'));
+    });
+
+    resolve('./mug', { basedir: dir, extensions: ['.coffee', '.js'] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, '/mug.coffee'));
+    });
+
+    resolve('./mug', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
+        t.equal(res, path.join(dir, '/mug.js'));
+    });
+});
+
+test('other path', function (t) {
+    t.plan(6);
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'bar');
+    var otherDir = path.join(resolverDir, 'other_path');
+
+    resolve('root', { basedir: dir, paths: [otherDir] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(resolverDir, 'other_path/root.js'));
+    });
+
+    resolve('lib/other-lib', { basedir: dir, paths: [otherDir] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(resolverDir, 'other_path/lib/other-lib.js'));
+    });
+
+    resolve('root', { basedir: dir }, function (err, res) {
+        t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    resolve('zzz', { basedir: dir, paths: [otherDir] }, function (err, res) {
+        t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('path iterator', function (t) {
+    t.plan(2);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+
+    var exactIterator = function (x, start, getPackageCandidates, opts) {
+        return [path.join(resolverDir, x)];
+    };
+
+    resolve('baz', { packageIterator: exactIterator }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(resolverDir, 'baz/quux.js'));
+        t.equal(pkg && pkg.name, 'baz');
+    });
+});
+
+test('incorrect main', function (t) {
+    t.plan(1);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'incorrect_main');
+
+    resolve('./incorrect_main', { basedir: resolverDir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'index.js'));
+    });
+});
+
+test('missing index', function (t) {
+    t.plan(2);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+    resolve('./missing_index', { basedir: resolverDir }, function (err, res, pkg) {
+        t.ok(err instanceof Error);
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+    });
+});
+
+test('missing main', function (t) {
+    t.plan(1);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+
+    resolve('./missing_main', { basedir: resolverDir }, function (err, res, pkg) {
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+    });
+});
+
+test('null main', function (t) {
+    t.plan(1);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+
+    resolve('./null_main', { basedir: resolverDir }, function (err, res, pkg) {
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+    });
+});
+
+test('main: false', function (t) {
+    t.plan(2);
+
+    var basedir = path.join(__dirname, 'resolver');
+    var dir = path.join(basedir, 'false_main');
+    resolve('./false_main', { basedir: basedir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(
+            res,
+            path.join(dir, 'index.js'),
+            '`"main": false`: resolves to `index.js`'
+        );
+        t.deepEqual(pkg, {
+            name: 'false_main',
+            main: false
+        });
+    });
+});
+
+test('without basedir', function (t) {
+    t.plan(1);
+
+    var dir = path.join(__dirname, 'resolver/without_basedir');
+    var tester = require(path.join(dir, 'main.js')); // eslint-disable-line global-require
+
+    tester(t, function (err, res, pkg) {
+        if (err) {
+            t.fail(err);
+        } else {
+            t.equal(res, path.join(dir, 'node_modules/mymodule.js'));
+        }
+    });
+});
+
+test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
+    t.plan(2);
+
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./foo', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'same_names/foo.js'));
+    });
+
+    resolve('./foo/', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'same_names/foo/index.js'));
+    });
+});
+
+test('#211 - incorrectly resolves module-paths like "." when from inside a folder with a sibling file of the same name', function (t) {
+    t.plan(2);
+
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./', { basedir: path.join(dir, 'same_names/foo') }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'same_names/foo/index.js'));
+    });
+
+    resolve('.', { basedir: path.join(dir, 'same_names/foo') }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'same_names/foo/index.js'));
+    });
+});
+
+test('async: #121 - treating an existing file as a dir when no basedir', function (t) {
+    var testFile = path.basename(__filename);
+
+    t.test('sanity check', function (st) {
+        st.plan(1);
+        resolve('./' + testFile, function (err, res, pkg) {
+            if (err) t.fail(err);
+            st.equal(res, __filename, 'sanity check');
+        });
+    });
+
+    t.test('with a fake directory', function (st) {
+        st.plan(4);
+
+        resolve('./' + testFile + '/blah', function (err, res, pkg) {
+            st.ok(err, 'there is an error');
+            st.notOk(res, 'no result');
+
+            st.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
+            st.equal(
+                err && err.message,
+                'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'',
+                'can not find nonexistent module'
+            );
+            st.end();
+        });
+    });
+
+    t.end();
+});
+
+test('async dot main', function (t) {
+    var start = new Date();
+    t.plan(3);
+    resolve('./resolver/dot_main', function (err, ret) {
+        t.notOk(err);
+        t.equal(ret, path.join(__dirname, 'resolver/dot_main/index.js'));
+        t.ok(new Date() - start < 50, 'resolve.sync timedout');
+        t.end();
+    });
+});
+
+test('async dot slash main', function (t) {
+    var start = new Date();
+    t.plan(3);
+    resolve('./resolver/dot_slash_main', function (err, ret) {
+        t.notOk(err);
+        t.equal(ret, path.join(__dirname, 'resolver/dot_slash_main/index.js'));
+        t.ok(new Date() - start < 50, 'resolve.sync timedout');
+        t.end();
+    });
+});
+
+test('not a directory', function (t) {
+    t.plan(6);
+    var path = './foo';
+    resolve(path, { basedir: __filename }, function (err, res, pkg) {
+        t.ok(err, 'a non-directory errors');
+        t.equal(arguments.length, 1);
+        t.equal(res, undefined);
+        t.equal(pkg, undefined);
+
+        t.equal(err && err.message, 'Cannot find module \'' + path + '\' from \'' + __filename + '\'');
+        t.equal(err && err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('non-string "main" field in package.json', function (t) {
+    t.plan(5);
+
+    var dir = path.join(__dirname, 'resolver');
+    resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid_main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+        t.equal(res, undefined, 'res is undefined');
+        t.equal(pkg, undefined, 'pkg is undefined');
+    });
+});
+
+test('non-string "main" field in package.json', function (t) {
+    t.plan(5);
+
+    var dir = path.join(__dirname, 'resolver');
+    resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid_main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+        t.equal(res, undefined, 'res is undefined');
+        t.equal(pkg, undefined, 'pkg is undefined');
+    });
+});
+
+test('browser field in package.json', function (t) {
+    t.plan(3);
+
+    var dir = path.join(__dirname, 'resolver');
+    resolve(
+        './browser_field',
+        {
+            basedir: dir,
+            packageFilter: function packageFilter(pkg) {
+                if (pkg.browser) {
+                    pkg.main = pkg.browser; // eslint-disable-line no-param-reassign
+                    delete pkg.browser; // eslint-disable-line no-param-reassign
+                }
+                return pkg;
+            }
+        },
+        function (err, res, pkg) {
+            if (err) t.fail(err);
+            t.equal(res, path.join(dir, 'browser_field', 'b.js'));
+            t.equal(pkg && pkg.main, 'b');
+            t.equal(pkg && pkg.browser, undefined);
+        }
+    );
+});
+
+test('absolute paths', function (t) {
+    t.plan(4);
+
+    var extensionless = __filename.slice(0, -path.extname(__filename).length);
+
+    resolve(__filename, function (err, res) {
+        t.equal(
+            res,
+            __filename,
+            'absolute path to this file resolves'
+        );
+    });
+    resolve(extensionless, function (err, res) {
+        t.equal(
+            res,
+            __filename,
+            'extensionless absolute path to this file resolves'
+        );
+    });
+    resolve(__filename, { basedir: process.cwd() }, function (err, res) {
+        t.equal(
+            res,
+            __filename,
+            'absolute path to this file with a basedir resolves'
+        );
+    });
+    resolve(extensionless, { basedir: process.cwd() }, function (err, res) {
+        t.equal(
+            res,
+            __filename,
+            'extensionless absolute path to this file with a basedir resolves'
+        );
+    });
+});
+
+var malformedDir = path.join(__dirname, 'resolver/malformed_package_json');
+test('malformed package.json', { skip: !fs.existsSync(malformedDir) }, function (t) {
+    /* eslint operator-linebreak: ["error", "before"], function-paren-newline: "off" */
+    t.plan(
+        (3 * 3) // 3 sets of 3 assertions in the final callback
+        + 2 // 1 readPackage call with malformed package.json
+    );
+
+    var basedir = malformedDir;
+    var expected = path.join(basedir, 'index.js');
+
+    resolve('./index.js', { basedir: basedir }, function (err, res, pkg) {
+        t.error(err, 'no error');
+        t.equal(res, expected, 'malformed package.json is silently ignored');
+        t.equal(pkg, undefined, 'malformed package.json gives an undefined `pkg` argument');
+    });
+
+    resolve(
+        './index.js',
+        {
+            basedir: basedir,
+            packageFilter: function (pkg, pkgfile, dir) {
+                t.fail('should not reach here');
+            }
+        },
+        function (err, res, pkg) {
+            t.error(err, 'with packageFilter: no error');
+            t.equal(res, expected, 'with packageFilter: malformed package.json is silently ignored');
+            t.equal(pkg, undefined, 'with packageFilter: malformed package.json gives an undefined `pkg` argument');
+        }
+    );
+
+    resolve(
+        './index.js',
+        {
+            basedir: basedir,
+            readPackage: function (readFile, pkgfile, cb) {
+                t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path');
+                readFile(pkgfile, function (err, result) {
+                    try {
+                        cb(null, JSON.parse(result));
+                    } catch (e) {
+                        t.ok(e instanceof SyntaxError, 'readPackage: malformed package.json parses as a syntax error');
+                        cb(null);
+                    }
+                });
+            }
+        },
+        function (err, res, pkg) {
+            t.error(err, 'with readPackage: no error');
+            t.equal(res, expected, 'with readPackage: malformed package.json is silently ignored');
+            t.equal(pkg, undefined, 'with readPackage: malformed package.json gives an undefined `pkg` argument');
+        }
+    );
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/baz/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/baz/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/baz/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+{
+    "name": "baz",
+    "main": "quux.js"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/baz/quux.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/baz/quux.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/baz/quux.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/browser_field/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/browser_field/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/browser_field/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,5 @@
+{
+  "name": "browser_field",
+  "main": "a",
+  "browser": "b"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/cup.coffee
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/cup.coffee	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/cup.coffee	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_main/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_main/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_main/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_main/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+{
+    "main": "."
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_slash_main/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_slash_main/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_slash_main/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_slash_main/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_slash_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/dot_slash_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+{
+    "main": "./"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/false_main/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/false_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/false_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+{
+	"name": "false_main",
+	"main": false
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/foo.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/foo.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/foo.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/incorrect_main/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/incorrect_main/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/incorrect_main/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,2 @@
+// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/incorrect_main/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/incorrect_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/incorrect_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+{
+    "main": "wrong.js"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/invalid_main/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/invalid_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/invalid_main/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+{
+  "name": "invalid_main",
+  "main": [
+    "why is this a thing",
+    "srsly omg wtf"
+  ]
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/lerna.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/lerna.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/lerna.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,6 @@
+{
+  "packages": [
+    "packages/*"
+  ],
+  "version": "0.0.0"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,20 @@
+{
+  "name": "ljharb-monorepo-symlink-test",
+  "private": true,
+  "version": "0.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "postinstall": "lerna bootstrap",
+    "test": "node packages/package-a"
+  },
+  "author": "",
+  "license": "MIT",
+  "dependencies": {
+    "jquery": "^3.3.1",
+    "resolve": "../../../"
+  },
+  "devDependencies": {
+    "lerna": "^3.4.3"
+  }
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+'use strict';
+
+var assert = require('assert');
+var path = require('path');
+var resolve = require('resolve');
+
+var basedir = __dirname + '/node_modules/@my-scope/package-b';
+
+var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js');
+
+/*
+ * preserveSymlinks === false
+ * will search NPM package from
+ * - packages/package-b/node_modules
+ * - packages/node_modules
+ * - node_modules
+ */
+assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: false }), expected);
+assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected);
+
+/*
+ * preserveSymlinks === true
+ * will search NPM package from
+ * - packages/package-a/node_modules/@my-scope/packages/package-b/node_modules
+ * - packages/package-a/node_modules/@my-scope/packages/node_modules
+ * - packages/package-a/node_modules/@my-scope/node_modules
+ * - packages/package-a/node_modules/node_modules
+ * - packages/package-a/node_modules
+ * - packages/node_modules
+ * - node_modules
+ */
+assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: true }), expected);
+assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected);
+
+console.log(' * all monorepo paths successfully resolved through symlinks');
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,14 @@
+{
+  "name": "@my-scope/package-a",
+  "version": "0.0.0",
+  "private": true,
+  "description": "",
+  "license": "MIT",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1"
+  },
+  "dependencies": {
+    "@my-scope/package-b": "^0.0.0"
+  }
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,14 @@
+{
+  "name": "@my-scope/package-b",
+  "private": true,
+  "version": "0.0.0",
+  "description": "",
+  "license": "MIT",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1"
+  },
+  "dependencies": {
+    "@my-scope/package-a": "^0.0.0"
+  }
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,26 @@
+var a = require.resolve('buffer/').replace(process.cwd(), '$CWD');
+var b;
+var c;
+
+var test = function test() {
+    console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false'));
+    console.log(b, ': preserveSymlinks true');
+    console.log(c, ': preserveSymlinks false');
+
+    if (a !== b && a !== c) {
+        throw 'async: no match';
+    }
+    console.log('async: success! a matched either b or c\n');
+};
+
+require('resolve')('buffer/', { preserveSymlinks: true }, function (err, result) {
+    if (err) { throw err; }
+    b = result.replace(process.cwd(), '$CWD');
+    if (b && c) { test(); }
+});
+require('resolve')('buffer/', { preserveSymlinks: false }, function (err, result) {
+    if (err) { throw err; }
+    c = result.replace(process.cwd(), '$CWD');
+    if (b && c) { test(); }
+});
+
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,15 @@
+{
+  "name": "mylib",
+  "version": "0.0.0",
+  "description": "",
+  "private": true,
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "buffer": "*"
+  }
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,12 @@
+var a = require.resolve('buffer/').replace(process.cwd(), '$CWD');
+var b = require('resolve').sync('buffer/', { preserveSymlinks: true }).replace(process.cwd(), '$CWD');
+var c = require('resolve').sync('buffer/', { preserveSymlinks: false }).replace(process.cwd(), '$CWD');
+
+console.log(a, ': require.resolve, preserveSymlinks ' + (process.execArgv.indexOf('preserve-symlinks') > -1 ? 'true' : 'false'));
+console.log(b, ': preserveSymlinks true');
+console.log(c, ': preserveSymlinks false');
+
+if (a !== b && a !== c) {
+    throw 'sync: no match';
+}
+console.log('sync: success! a matched either b or c\n');
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/quux/foo/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/quux/foo/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/quux/foo/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/same_names/foo.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/same_names/foo.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/same_names/foo.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 42;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/same_names/foo/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/same_names/foo/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/same_names/foo/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 1;
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/symlinked/package/bar.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/symlinked/package/bar.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/symlinked/package/bar.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+module.exports = 'bar';
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/symlinked/package/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/symlinked/package/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/symlinked/package/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+{
+    "main": "bar.js"
+}
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/without_basedir/main.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/without_basedir/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver/without_basedir/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,5 @@
+var resolve = require('../../../');
+
+module.exports = function (t, cb) {
+    resolve('mymodule', null, cb);
+};
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver_sync.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/resolver_sync.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,730 @@
+var path = require('path');
+var fs = require('fs');
+var test = require('tape');
+
+var resolve = require('../');
+var sync = require('../sync');
+
+var requireResolveSupportsPaths = require.resolve.length > 1
+    && !(/^v12\.[012]\./).test(process.version); // broken in v12.0-12.2, see https://github.com/nodejs/node/issues/27794
+
+var requireResolveDefaultPathsBroken = (/^v8\.9\.|^v9\.[01]\.0|^v9\.2\./).test(process.version);
+// broken in node v8.9.x, v9.0, v9.1, v9.2.x. see https://github.com/nodejs/node/pull/17113
+
+test('`./sync` entry point', function (t) {
+    t.equal(resolve.sync, sync, '`./sync` entry point is the same as `.sync` on `main`');
+    t.end();
+});
+
+test('foo', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./foo', { basedir: dir }),
+        path.join(dir, 'foo.js'),
+        './foo'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./foo', { basedir: dir }),
+            require.resolve('./foo', { paths: [dir] }),
+            './foo: resolve.sync === require.resolve'
+        );
+    }
+
+    t.equal(
+        resolve.sync('./foo.js', { basedir: dir }),
+        path.join(dir, 'foo.js'),
+        './foo.js'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./foo.js', { basedir: dir }),
+            require.resolve('./foo.js', { paths: [dir] }),
+            './foo.js: resolve.sync === require.resolve'
+        );
+    }
+
+    t.equal(
+        resolve.sync('./foo.js', { basedir: dir, filename: path.join(dir, 'bar.js') }),
+        path.join(dir, 'foo.js')
+    );
+
+    t.throws(function () {
+        resolve.sync('foo', { basedir: dir });
+    });
+
+    // Test that filename is reported as the "from" value when passed.
+    t.throws(
+        function () {
+            resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') });
+        },
+        {
+            name: 'Error',
+            message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'"
+        }
+    );
+
+    t.end();
+});
+
+test('bar', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    var basedir = path.join(dir, 'bar');
+
+    t.equal(
+        resolve.sync('foo', { basedir: basedir }),
+        path.join(dir, 'bar/node_modules/foo/index.js'),
+        'foo in bar'
+    );
+    if (!requireResolveDefaultPathsBroken && requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('foo', { basedir: basedir }),
+            require.resolve('foo', { paths: [basedir] }),
+            'foo in bar: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('baz', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./baz', { basedir: dir }),
+        path.join(dir, 'baz/quux.js'),
+        './baz'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./baz', { basedir: dir }),
+            require.resolve('./baz', { paths: [dir] }),
+            './baz: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('biz', function (t) {
+    var dir = path.join(__dirname, 'resolver/biz/node_modules');
+
+    t.equal(
+        resolve.sync('./grux', { basedir: dir }),
+        path.join(dir, 'grux/index.js')
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./grux', { basedir: dir }),
+            require.resolve('./grux', { paths: [dir] }),
+            './grux: resolve.sync === require.resolve'
+        );
+    }
+
+    var tivDir = path.join(dir, 'grux');
+    t.equal(
+        resolve.sync('tiv', { basedir: tivDir }),
+        path.join(dir, 'tiv/index.js')
+    );
+    if (!requireResolveDefaultPathsBroken && requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('tiv', { basedir: tivDir }),
+            require.resolve('tiv', { paths: [tivDir] }),
+            'tiv: resolve.sync === require.resolve'
+        );
+    }
+
+    var gruxDir = path.join(dir, 'tiv');
+    t.equal(
+        resolve.sync('grux', { basedir: gruxDir }),
+        path.join(dir, 'grux/index.js')
+    );
+    if (!requireResolveDefaultPathsBroken && requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('grux', { basedir: gruxDir }),
+            require.resolve('grux', { paths: [gruxDir] }),
+            'grux: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('normalize', function (t) {
+    var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
+
+    t.equal(
+        resolve.sync('../grux', { basedir: dir }),
+        path.join(dir, 'index.js')
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('../grux', { basedir: dir }),
+            require.resolve('../grux', { paths: [dir] }),
+            '../grux: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('cup', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./cup', {
+            basedir: dir,
+            extensions: ['.js', '.coffee']
+        }),
+        path.join(dir, 'cup.coffee'),
+        './cup -> ./cup.coffee'
+    );
+
+    t.equal(
+        resolve.sync('./cup.coffee', { basedir: dir }),
+        path.join(dir, 'cup.coffee'),
+        './cup.coffee'
+    );
+
+    t.throws(function () {
+        resolve.sync('./cup', {
+            basedir: dir,
+            extensions: ['.js']
+        });
+    });
+
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./cup.coffee', { basedir: dir, extensions: ['.js', '.coffee'] }),
+            require.resolve('./cup.coffee', { paths: [dir] }),
+            './cup.coffee: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('mug', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./mug', { basedir: dir }),
+        path.join(dir, 'mug.js'),
+        './mug -> ./mug.js'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./mug', { basedir: dir }),
+            require.resolve('./mug', { paths: [dir] }),
+            './mug: resolve.sync === require.resolve'
+        );
+    }
+
+    t.equal(
+        resolve.sync('./mug', {
+            basedir: dir,
+            extensions: ['.coffee', '.js']
+        }),
+        path.join(dir, 'mug.coffee'),
+        './mug -> ./mug.coffee'
+    );
+
+    t.equal(
+        resolve.sync('./mug', {
+            basedir: dir,
+            extensions: ['.js', '.coffee']
+        }),
+        path.join(dir, 'mug.js'),
+        './mug -> ./mug.js'
+    );
+
+    t.end();
+});
+
+test('other path', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'bar');
+    var otherDir = path.join(resolverDir, 'other_path');
+
+    t.equal(
+        resolve.sync('root', {
+            basedir: dir,
+            paths: [otherDir]
+        }),
+        path.join(resolverDir, 'other_path/root.js')
+    );
+
+    t.equal(
+        resolve.sync('lib/other-lib', {
+            basedir: dir,
+            paths: [otherDir]
+        }),
+        path.join(resolverDir, 'other_path/lib/other-lib.js')
+    );
+
+    t.throws(function () {
+        resolve.sync('root', { basedir: dir });
+    });
+
+    t.throws(function () {
+        resolve.sync('zzz', {
+            basedir: dir,
+            paths: [otherDir]
+        });
+    });
+
+    t.end();
+});
+
+test('path iterator', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+
+    var exactIterator = function (x, start, getPackageCandidates, opts) {
+        return [path.join(resolverDir, x)];
+    };
+
+    t.equal(
+        resolve.sync('baz', { packageIterator: exactIterator }),
+        path.join(resolverDir, 'baz/quux.js')
+    );
+
+    t.end();
+});
+
+test('incorrect main', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'incorrect_main');
+
+    t.equal(
+        resolve.sync('./incorrect_main', { basedir: resolverDir }),
+        path.join(dir, 'index.js')
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./incorrect_main', { basedir: resolverDir }),
+            require.resolve('./incorrect_main', { paths: [resolverDir] }),
+            './incorrect_main: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('missing index', function (t) {
+    t.plan(requireResolveSupportsPaths ? 2 : 1);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+    try {
+        resolve.sync('./missing_index', { basedir: resolverDir });
+        t.fail('did not fail');
+    } catch (err) {
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+    }
+    if (requireResolveSupportsPaths) {
+        try {
+            require.resolve('./missing_index', { basedir: resolverDir });
+            t.fail('require.resolve did not fail');
+        } catch (err) {
+            t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+        }
+    }
+});
+
+test('missing main', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+
+    try {
+        resolve.sync('./missing_main', { basedir: resolverDir });
+        t.fail('require.resolve did not fail');
+    } catch (err) {
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+    }
+    if (requireResolveSupportsPaths) {
+        try {
+            resolve.sync('./missing_main', { basedir: resolverDir });
+            t.fail('require.resolve did not fail');
+        } catch (err) {
+            t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+        }
+    }
+
+    t.end();
+});
+
+test('null main', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+
+    try {
+        resolve.sync('./null_main', { basedir: resolverDir });
+        t.fail('require.resolve did not fail');
+    } catch (err) {
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+    }
+    if (requireResolveSupportsPaths) {
+        try {
+            resolve.sync('./null_main', { basedir: resolverDir });
+            t.fail('require.resolve did not fail');
+        } catch (err) {
+            t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
+        }
+    }
+
+    t.end();
+});
+
+test('main: false', function (t) {
+    var basedir = path.join(__dirname, 'resolver');
+    var dir = path.join(basedir, 'false_main');
+    t.equal(
+        resolve.sync('./false_main', { basedir: basedir }),
+        path.join(dir, 'index.js'),
+        '`"main": false`: resolves to `index.js`'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./false_main', { basedir: basedir }),
+            require.resolve('./false_main', { paths: [basedir] }),
+            '`"main": false`: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+var stubStatSync = function stubStatSync(fn) {
+    var statSync = fs.statSync;
+    try {
+        fs.statSync = function () {
+            throw new EvalError('Unknown Error');
+        };
+        return fn();
+    } finally {
+        fs.statSync = statSync;
+    }
+};
+
+test('#79 - re-throw non ENOENT errors from stat', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    stubStatSync(function () {
+        t.throws(function () {
+            resolve.sync('foo', { basedir: dir });
+        }, /Unknown Error/);
+    });
+
+    t.end();
+});
+
+test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    var basedir = path.join(dir, 'same_names');
+
+    t.equal(
+        resolve.sync('./foo', { basedir: basedir }),
+        path.join(dir, 'same_names/foo.js')
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./foo', { basedir: basedir }),
+            require.resolve('./foo', { paths: [basedir] }),
+            './foo: resolve.sync === require.resolve'
+        );
+    }
+
+    t.equal(
+        resolve.sync('./foo/', { basedir: basedir }),
+        path.join(dir, 'same_names/foo/index.js')
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./foo/', { basedir: basedir }),
+            require.resolve('./foo/', { paths: [basedir] }),
+            './foo/: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+test('#211 - incorrectly resolves module-paths like "." when from inside a folder with a sibling file of the same name', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    var basedir = path.join(dir, 'same_names/foo');
+
+    t.equal(
+        resolve.sync('./', { basedir: basedir }),
+        path.join(dir, 'same_names/foo/index.js'),
+        './'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./', { basedir: basedir }),
+            require.resolve('./', { paths: [basedir] }),
+            './: resolve.sync === require.resolve'
+        );
+    }
+
+    t.equal(
+        resolve.sync('.', { basedir: basedir }),
+        path.join(dir, 'same_names/foo/index.js'),
+        '.'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('.', { basedir: basedir }),
+            require.resolve('.', { paths: [basedir] }),
+            '.: resolve.sync === require.resolve',
+            { todo: true }
+        );
+    }
+
+    t.end();
+});
+
+test('sync: #121 - treating an existing file as a dir when no basedir', function (t) {
+    var testFile = path.basename(__filename);
+
+    t.test('sanity check', function (st) {
+        st.equal(
+            resolve.sync('./' + testFile),
+            __filename,
+            'sanity check'
+        );
+        st.equal(
+            resolve.sync('./' + testFile),
+            require.resolve('./' + testFile),
+            'sanity check: resolve.sync === require.resolve'
+        );
+
+        st.end();
+    });
+
+    t.test('with a fake directory', function (st) {
+        function run() { return resolve.sync('./' + testFile + '/blah'); }
+
+        st.throws(run, 'throws an error');
+
+        try {
+            run();
+        } catch (e) {
+            st.equal(e.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
+            st.equal(
+                e.message,
+                'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'',
+                'can not find nonexistent module'
+            );
+        }
+
+        st.end();
+    });
+
+    t.end();
+});
+
+test('sync dot main', function (t) {
+    var start = new Date();
+
+    t.equal(
+        resolve.sync('./resolver/dot_main'),
+        path.join(__dirname, 'resolver/dot_main/index.js'),
+        './resolver/dot_main'
+    );
+    t.equal(
+        resolve.sync('./resolver/dot_main'),
+        require.resolve('./resolver/dot_main'),
+        './resolver/dot_main: resolve.sync === require.resolve'
+    );
+
+    t.ok(new Date() - start < 50, 'resolve.sync timedout');
+
+    t.end();
+});
+
+test('sync dot slash main', function (t) {
+    var start = new Date();
+
+    t.equal(
+        resolve.sync('./resolver/dot_slash_main'),
+        path.join(__dirname, 'resolver/dot_slash_main/index.js')
+    );
+    t.equal(
+        resolve.sync('./resolver/dot_slash_main'),
+        require.resolve('./resolver/dot_slash_main'),
+        './resolver/dot_slash_main: resolve.sync === require.resolve'
+    );
+
+    t.ok(new Date() - start < 50, 'resolve.sync timedout');
+
+    t.end();
+});
+
+test('not a directory', function (t) {
+    var path = './foo';
+    try {
+        resolve.sync(path, { basedir: __filename });
+        t.fail();
+    } catch (err) {
+        t.ok(err, 'a non-directory errors');
+        t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'");
+        t.equal(err && err.code, 'MODULE_NOT_FOUND');
+    }
+    t.end();
+});
+
+test('non-string "main" field in package.json', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    try {
+        var result = resolve.sync('./invalid_main', { basedir: dir });
+        t.equal(result, undefined, 'result should not exist');
+        t.fail('should not get here');
+    } catch (err) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid_main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+    }
+    t.end();
+});
+
+test('non-string "main" field in package.json', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    try {
+        var result = resolve.sync('./invalid_main', { basedir: dir });
+        t.equal(result, undefined, 'result should not exist');
+        t.fail('should not get here');
+    } catch (err) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid_main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+    }
+    t.end();
+});
+
+test('browser field in package.json', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    var res = resolve.sync('./browser_field', {
+        basedir: dir,
+        packageFilter: function packageFilter(pkg) {
+            if (pkg.browser) {
+                pkg.main = pkg.browser; // eslint-disable-line no-param-reassign
+                delete pkg.browser; // eslint-disable-line no-param-reassign
+            }
+            return pkg;
+        }
+    });
+    t.equal(res, path.join(dir, 'browser_field', 'b.js'));
+    t.end();
+});
+
+test('absolute paths', function (t) {
+    var extensionless = __filename.slice(0, -path.extname(__filename).length);
+
+    t.equal(
+        resolve.sync(__filename),
+        __filename,
+        'absolute path to this file resolves'
+    );
+    t.equal(
+        resolve.sync(__filename),
+        require.resolve(__filename),
+        'absolute path to this file: resolve.sync === require.resolve'
+    );
+
+    t.equal(
+        resolve.sync(extensionless),
+        __filename,
+        'extensionless absolute path to this file resolves'
+    );
+    t.equal(
+        resolve.sync(__filename),
+        require.resolve(__filename),
+        'absolute path to this file: resolve.sync === require.resolve'
+    );
+
+    t.equal(
+        resolve.sync(__filename, { basedir: process.cwd() }),
+        __filename,
+        'absolute path to this file with a basedir resolves'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync(__filename, { basedir: process.cwd() }),
+            require.resolve(__filename, { paths: [process.cwd()] }),
+            'absolute path to this file + basedir: resolve.sync === require.resolve'
+        );
+    }
+
+    t.equal(
+        resolve.sync(extensionless, { basedir: process.cwd() }),
+        __filename,
+        'extensionless absolute path to this file with a basedir resolves'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync(extensionless, { basedir: process.cwd() }),
+            require.resolve(extensionless, { paths: [process.cwd()] }),
+            'extensionless absolute path to this file + basedir: resolve.sync === require.resolve'
+        );
+    }
+
+    t.end();
+});
+
+var malformedDir = path.join(__dirname, 'resolver/malformed_package_json');
+test('malformed package.json', { skip: !fs.existsSync(malformedDir) }, function (t) {
+    t.plan(5 + (requireResolveSupportsPaths ? 1 : 0));
+
+    var basedir = malformedDir;
+    var expected = path.join(basedir, 'index.js');
+
+    t.equal(
+        resolve.sync('./index.js', { basedir: basedir }),
+        expected,
+        'malformed package.json is silently ignored'
+    );
+    if (requireResolveSupportsPaths) {
+        t.equal(
+            resolve.sync('./index.js', { basedir: basedir }),
+            require.resolve('./index.js', { paths: [basedir] }),
+            'malformed package.json: resolve.sync === require.resolve'
+        );
+    }
+
+    var res1 = resolve.sync(
+        './index.js',
+        {
+            basedir: basedir,
+            packageFilter: function (pkg, pkgfile, dir) {
+                t.fail('should not reach here');
+            }
+        }
+    );
+
+    t.equal(
+        res1,
+        expected,
+        'with packageFilter: malformed package.json is silently ignored'
+    );
+
+    var res2 = resolve.sync(
+        './index.js',
+        {
+            basedir: basedir,
+            readPackageSync: function (readFileSync, pkgfile) {
+                t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path');
+                var result = String(readFileSync(pkgfile));
+                try {
+                    return JSON.parse(result);
+                } catch (e) {
+                    t.ok(e instanceof SyntaxError, 'readPackageSync: malformed package.json parses as a syntax error');
+                }
+            }
+        }
+    );
+
+    t.equal(
+        res2,
+        expected,
+        'with readPackageSync: malformed package.json is silently ignored'
+    );
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/shadowed_core.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/shadowed_core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/shadowed_core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,54 @@
+var test = require('tape');
+var resolve = require('../');
+var path = require('path');
+
+test('shadowed core modules still return core module', function (t) {
+    t.plan(2);
+
+    resolve('util', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) {
+        t.ifError(err);
+        t.equal(res, 'util');
+    });
+});
+
+test('shadowed core modules still return core module [sync]', function (t) {
+    t.plan(1);
+
+    var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core') });
+
+    t.equal(res, 'util');
+});
+
+test('shadowed core modules return shadow when appending `/`', function (t) {
+    t.plan(2);
+
+    resolve('util/', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) {
+        t.ifError(err);
+        t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
+    });
+});
+
+test('shadowed core modules return shadow when appending `/` [sync]', function (t) {
+    t.plan(1);
+
+    var res = resolve.sync('util/', { basedir: path.join(__dirname, 'shadowed_core') });
+
+    t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
+});
+
+test('shadowed core modules return shadow with `includeCoreModules: false`', function (t) {
+    t.plan(2);
+
+    resolve('util', { basedir: path.join(__dirname, 'shadowed_core'), includeCoreModules: false }, function (err, res) {
+        t.ifError(err);
+        t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
+    });
+});
+
+test('shadowed core modules return shadow with `includeCoreModules: false` [sync]', function (t) {
+    t.plan(1);
+
+    var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core'), includeCoreModules: false });
+
+    t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/subdirs.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/subdirs.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/subdirs.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,13 @@
+var test = require('tape');
+var resolve = require('../');
+var path = require('path');
+
+test('subdirs', function (t) {
+    t.plan(2);
+
+    var dir = path.join(__dirname, '/subdirs');
+    resolve('a/b/c/x.json', { basedir: dir }, function (err, res) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json'));
+    });
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/symlinks.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/symlinks.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve/test/symlinks.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,176 @@
+var path = require('path');
+var fs = require('fs');
+var test = require('tape');
+var map = require('array.prototype.map');
+var resolve = require('../');
+
+var symlinkDir = path.join(__dirname, 'resolver', 'symlinked', 'symlink');
+var packageDir = path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'package');
+var modADir = path.join(__dirname, 'symlinks', 'source', 'node_modules', 'mod-a');
+var symlinkModADir = path.join(__dirname, 'symlinks', 'dest', 'node_modules', 'mod-a');
+try {
+    fs.unlinkSync(symlinkDir);
+} catch (err) {}
+try {
+    fs.unlinkSync(packageDir);
+} catch (err) {}
+try {
+    fs.unlinkSync(modADir);
+} catch (err) {}
+try {
+    fs.unlinkSync(symlinkModADir);
+} catch (err) {}
+
+try {
+    fs.symlinkSync('./_/symlink_target', symlinkDir, 'dir');
+} catch (err) {
+    // if fails then it is probably on Windows and lets try to create a junction
+    fs.symlinkSync(path.join(__dirname, 'resolver', 'symlinked', '_', 'symlink_target') + '\\', symlinkDir, 'junction');
+}
+try {
+    fs.symlinkSync('../../package', packageDir, 'dir');
+} catch (err) {
+    // if fails then it is probably on Windows and lets try to create a junction
+    fs.symlinkSync(path.join(__dirname, '..', '..', 'package') + '\\', packageDir, 'junction');
+}
+try {
+    fs.symlinkSync('../../source/node_modules/mod-a', symlinkModADir, 'dir');
+} catch (err) {
+    // if fails then it is probably on Windows and lets try to create a junction
+    fs.symlinkSync(path.join(__dirname, '..', '..', 'source', 'node_modules', 'mod-a') + '\\', symlinkModADir, 'junction');
+}
+
+test('symlink', function (t) {
+    t.plan(2);
+
+    resolve('foo', { basedir: symlinkDir, preserveSymlinks: false }, function (err, res, pkg) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
+    });
+});
+
+test('sync symlink when preserveSymlinks = true', function (t) {
+    t.plan(4);
+
+    resolve('foo', { basedir: symlinkDir }, function (err, res, pkg) {
+        t.ok(err, 'there is an error');
+        t.notOk(res, 'no result');
+
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
+        t.equal(
+            err && err.message,
+            'Cannot find module \'foo\' from \'' + symlinkDir + '\'',
+            'can not find nonexistent module'
+        );
+    });
+});
+
+test('sync symlink', function (t) {
+    var start = new Date();
+    t.doesNotThrow(function () {
+        t.equal(
+            resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }),
+            path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js')
+        );
+    });
+    t.ok(new Date() - start < 50, 'resolve.sync timedout');
+    t.end();
+});
+
+test('sync symlink when preserveSymlinks = true', function (t) {
+    t.throws(function () {
+        resolve.sync('foo', { basedir: symlinkDir });
+    }, /Cannot find module 'foo'/);
+    t.end();
+});
+
+test('sync symlink from node_modules to other dir when preserveSymlinks = false', function (t) {
+    var basedir = path.join(__dirname, 'resolver', 'symlinked', '_');
+    var fn = resolve.sync('package', { basedir: basedir, preserveSymlinks: false });
+
+    t.equal(fn, path.resolve(__dirname, 'resolver/symlinked/package/bar.js'));
+    t.end();
+});
+
+test('async symlink from node_modules to other dir when preserveSymlinks = false', function (t) {
+    t.plan(2);
+    var basedir = path.join(__dirname, 'resolver', 'symlinked', '_');
+    resolve('package', { basedir: basedir, preserveSymlinks: false }, function (err, result) {
+        t.notOk(err, 'no error');
+        t.equal(result, path.resolve(__dirname, 'resolver/symlinked/package/bar.js'));
+    });
+});
+
+test('packageFilter', function (t) {
+    function relative(x) {
+        return path.relative(__dirname, x);
+    }
+
+    function testPackageFilter(preserveSymlinks) {
+        return function (st) {
+            st.plan('is 1.x' ? 3 : 5); // eslint-disable-line no-constant-condition
+
+            var destMain = 'symlinks/dest/node_modules/mod-a/index.js';
+            var destPkg = 'symlinks/dest/node_modules/mod-a/package.json';
+            var sourceMain = 'symlinks/source/node_modules/mod-a/index.js';
+            var sourcePkg = 'symlinks/source/node_modules/mod-a/package.json';
+            var destDir = path.join(__dirname, 'symlinks', 'dest');
+
+            /* eslint multiline-comment-style: 0 */
+            /* v2.x will restore these tests
+            var packageFilterPath = [];
+            var actualPath = resolve.sync('mod-a', {
+                basedir: destDir,
+                preserveSymlinks: preserveSymlinks,
+                packageFilter: function (pkg, pkgfile, dir) {
+                    packageFilterPath.push(pkgfile);
+                }
+            });
+            st.equal(
+                relative(actualPath),
+                path.normalize(preserveSymlinks ? destMain : sourceMain),
+                'sync: actual path is correct'
+            );
+            st.deepEqual(
+                map(packageFilterPath, relative),
+                map(preserveSymlinks ? [destPkg, destPkg] : [sourcePkg, sourcePkg], path.normalize),
+                'sync: packageFilter pkgfile arg is correct'
+            );
+            */
+
+            var asyncPackageFilterPath = [];
+            resolve(
+                'mod-a',
+                {
+                    basedir: destDir,
+                    preserveSymlinks: preserveSymlinks,
+                    packageFilter: function (pkg, pkgfile) {
+                        asyncPackageFilterPath.push(pkgfile);
+                    }
+                },
+                function (err, actualPath) {
+                    st.error(err, 'no error');
+                    st.equal(
+                        relative(actualPath),
+                        path.normalize(preserveSymlinks ? destMain : sourceMain),
+                        'async: actual path is correct'
+                    );
+                    st.deepEqual(
+                        map(asyncPackageFilterPath, relative),
+                        map(
+                            preserveSymlinks ? [destPkg, destPkg, destPkg] : [sourcePkg, sourcePkg, sourcePkg],
+                            path.normalize
+                        ),
+                        'async: packageFilter pkgfile arg is correct'
+                    );
+                }
+            );
+        };
+    }
+
+    t.test('preserveSymlinks: false', testPackageFilter(false));
+
+    t.test('preserveSymlinks: true', testPackageFilter(true));
+
+    t.end();
+});
Index: imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-define-polyfill-provider/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,59 @@
+{
+  "name": "@babel/helper-define-polyfill-provider",
+  "version": "0.6.3",
+  "description": "Babel helper to create your own polyfill provider",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel-polyfills.git",
+    "directory": "packages/babel-helper-define-polyfill-provider"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "lib/index.js",
+  "browser": {
+    "./lib/node/dependencies.js": "./lib/browser/dependencies.js",
+    "./src/node/dependencies.js": "./src/browser/dependencies.js"
+  },
+  "exports": {
+    ".": [
+      {
+        "import": {
+          "node": "./esm/index.node.mjs",
+          "browser": "./esm/index.browser.mjs"
+        },
+        "default": "./lib/index.js"
+      },
+      "./lib/index.js"
+    ],
+    "./package.json": "./package.json"
+  },
+  "dependencies": {
+    "@babel/helper-compilation-targets": "^7.22.6",
+    "@babel/helper-plugin-utils": "^7.22.5",
+    "debug": "^4.1.1",
+    "lodash.debounce": "^4.0.8",
+    "resolve": "^1.14.2"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+  },
+  "devDependencies": {
+    "@babel/cli": "^7.22.6",
+    "@babel/core": "^7.22.6",
+    "@babel/generator": "^7.22.5",
+    "@babel/plugin-transform-modules-commonjs": "^7.22.5",
+    "@babel/traverse": "^7.22.6",
+    "babel-loader": "^8.1.0",
+    "rollup": "^2.3.2",
+    "rollup-plugin-babel": "^4.4.0",
+    "strip-ansi": "^6.0.0",
+    "webpack": "^4.42.1",
+    "webpack-cli": "^3.3.11"
+  },
+  "gitHead": "66340fb145086a826c496f008f67488367846c09"
+}
Index: imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-member-expression-to-functions
+
+> Helper function to replace certain member expressions with function calls
+
+See our website [@babel/helper-member-expression-to-functions](https://babeljs.io/docs/babel-helper-member-expression-to-functions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-member-expression-to-functions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-member-expression-to-functions
+```
Index: imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,397 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var _t = require('@babel/types');
+
+function _interopNamespace(e) {
+  if (e && e.__esModule) return e;
+  var n = Object.create(null);
+  if (e) {
+    Object.keys(e).forEach(function (k) {
+      if (k !== 'default') {
+        var d = Object.getOwnPropertyDescriptor(e, k);
+        Object.defineProperty(n, k, d.get ? d : {
+          enumerable: true,
+          get: function () { return e[k]; }
+        });
+      }
+    });
+  }
+  n.default = e;
+  return Object.freeze(n);
+}
+
+var _t__namespace = /*#__PURE__*/_interopNamespace(_t);
+
+function willPathCastToBoolean(path) {
+  const maybeWrapped = path;
+  const {
+    node,
+    parentPath
+  } = maybeWrapped;
+  if (parentPath.isLogicalExpression()) {
+    const {
+      operator,
+      right
+    } = parentPath.node;
+    if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
+      return willPathCastToBoolean(parentPath);
+    }
+  }
+  if (parentPath.isSequenceExpression()) {
+    const {
+      expressions
+    } = parentPath.node;
+    if (expressions[expressions.length - 1] === node) {
+      return willPathCastToBoolean(parentPath);
+    } else {
+      return true;
+    }
+  }
+  return parentPath.isConditional({
+    test: node
+  }) || parentPath.isUnaryExpression({
+    operator: "!"
+  }) || parentPath.isLoop({
+    test: node
+  });
+}
+
+const {
+  LOGICAL_OPERATORS,
+  arrowFunctionExpression,
+  assignmentExpression,
+  binaryExpression,
+  booleanLiteral,
+  callExpression,
+  cloneNode,
+  conditionalExpression,
+  identifier,
+  isMemberExpression,
+  isOptionalCallExpression,
+  isOptionalMemberExpression,
+  isUpdateExpression,
+  logicalExpression,
+  memberExpression,
+  nullLiteral,
+  optionalCallExpression,
+  optionalMemberExpression,
+  sequenceExpression,
+  updateExpression
+} = _t__namespace;
+class AssignmentMemoiser {
+  constructor() {
+    this._map = void 0;
+    this._map = new WeakMap();
+  }
+  has(key) {
+    return this._map.has(key);
+  }
+  get(key) {
+    if (!this.has(key)) return;
+    const record = this._map.get(key);
+    const {
+      value
+    } = record;
+    record.count--;
+    if (record.count === 0) {
+      return assignmentExpression("=", value, key);
+    }
+    return value;
+  }
+  set(key, value, count) {
+    return this._map.set(key, {
+      count,
+      value
+    });
+  }
+}
+function toNonOptional(path, base) {
+  const {
+    node
+  } = path;
+  if (isOptionalMemberExpression(node)) {
+    return memberExpression(base, node.property, node.computed);
+  }
+  if (path.isOptionalCallExpression()) {
+    const callee = path.get("callee");
+    if (path.node.optional && callee.isOptionalMemberExpression()) {
+      const object = callee.node.object;
+      const context = path.scope.maybeGenerateMemoised(object);
+      callee.get("object").replaceWith(assignmentExpression("=", context, object));
+      return callExpression(memberExpression(base, identifier("call")), [context, ...path.node.arguments]);
+    }
+    return callExpression(base, path.node.arguments);
+  }
+  return path.node;
+}
+function isInDetachedTree(path) {
+  while (path) {
+    if (path.isProgram()) break;
+    const {
+      parentPath,
+      container,
+      listKey
+    } = path;
+    const parentNode = parentPath.node;
+    if (listKey) {
+      if (container !== parentNode[listKey]) {
+        return true;
+      }
+    } else {
+      if (container !== parentNode) return true;
+    }
+    path = parentPath;
+  }
+  return false;
+}
+const handle = {
+  memoise() {},
+  handle(member, noDocumentAll) {
+    const {
+      node,
+      parent,
+      parentPath,
+      scope
+    } = member;
+    if (member.isOptionalMemberExpression()) {
+      if (isInDetachedTree(member)) return;
+      const endPath = member.find(({
+        node,
+        parent
+      }) => {
+        if (isOptionalMemberExpression(parent)) {
+          return parent.optional || parent.object !== node;
+        }
+        if (isOptionalCallExpression(parent)) {
+          return node !== member.node && parent.optional || parent.callee !== node;
+        }
+        return true;
+      });
+      if (scope.path.isPattern()) {
+        endPath.replaceWith(callExpression(arrowFunctionExpression([], endPath.node), []));
+        return;
+      }
+      const willEndPathCastToBoolean = willPathCastToBoolean(endPath);
+      const rootParentPath = endPath.parentPath;
+      if (rootParentPath.isUpdateExpression({
+        argument: node
+      })) {
+        throw member.buildCodeFrameError(`can't handle update expression`);
+      }
+      const isAssignment = rootParentPath.isAssignmentExpression({
+        left: endPath.node
+      });
+      const isDeleteOperation = rootParentPath.isUnaryExpression({
+        operator: "delete"
+      });
+      if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) {
+        throw member.buildCodeFrameError(`can't delete a private class element`);
+      }
+      let startingOptional = member;
+      for (;;) {
+        if (startingOptional.isOptionalMemberExpression()) {
+          if (startingOptional.node.optional) break;
+          startingOptional = startingOptional.get("object");
+          continue;
+        } else if (startingOptional.isOptionalCallExpression()) {
+          if (startingOptional.node.optional) break;
+          startingOptional = startingOptional.get("callee");
+          continue;
+        }
+        throw new Error(`Internal error: unexpected ${startingOptional.node.type}`);
+      }
+      const startingNode = startingOptional.isOptionalMemberExpression() ? startingOptional.node.object : startingOptional.node.callee;
+      const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);
+      const baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode;
+      const parentIsOptionalCall = parentPath.isOptionalCallExpression({
+        callee: node
+      });
+      const isOptionalCall = parent => parentIsOptionalCall;
+      const parentIsCall = parentPath.isCallExpression({
+        callee: node
+      });
+      startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));
+      if (isOptionalCall()) {
+        if (parent.optional) {
+          parentPath.replaceWith(this.optionalCall(member, parent.arguments));
+        } else {
+          parentPath.replaceWith(this.call(member, parent.arguments));
+        }
+      } else if (parentIsCall) {
+        member.replaceWith(this.boundGet(member));
+      } else if (this.delete && parentPath.isUnaryExpression({
+        operator: "delete"
+      })) {
+        parentPath.replaceWith(this.delete(member));
+      } else if (parentPath.isAssignmentExpression()) {
+        handleAssignment(this, member, parentPath);
+      } else {
+        member.replaceWith(this.get(member));
+      }
+      let regular = member.node;
+      for (let current = member; current !== endPath;) {
+        const parentPath = current.parentPath;
+        if (parentPath === endPath && isOptionalCall() && parent.optional) {
+          regular = parentPath.node;
+          break;
+        }
+        regular = toNonOptional(parentPath, regular);
+        current = parentPath;
+      }
+      let context;
+      const endParentPath = endPath.parentPath;
+      if (isMemberExpression(regular) && endParentPath.isOptionalCallExpression({
+        callee: endPath.node,
+        optional: true
+      })) {
+        const {
+          object
+        } = regular;
+        context = member.scope.maybeGenerateMemoised(object);
+        if (context) {
+          regular.object = assignmentExpression("=", context, object);
+        }
+      }
+      let replacementPath = endPath;
+      if (isDeleteOperation || isAssignment) {
+        replacementPath = endParentPath;
+        regular = endParentPath.node;
+      }
+      const baseMemoised = baseNeedsMemoised ? assignmentExpression("=", cloneNode(baseRef), cloneNode(startingNode)) : cloneNode(baseRef);
+      if (willEndPathCastToBoolean) {
+        let nonNullishCheck;
+        if (noDocumentAll) {
+          nonNullishCheck = binaryExpression("!=", baseMemoised, nullLiteral());
+        } else {
+          nonNullishCheck = logicalExpression("&&", binaryExpression("!==", baseMemoised, nullLiteral()), binaryExpression("!==", cloneNode(baseRef), scope.buildUndefinedNode()));
+        }
+        replacementPath.replaceWith(logicalExpression("&&", nonNullishCheck, regular));
+      } else {
+        let nullishCheck;
+        if (noDocumentAll) {
+          nullishCheck = binaryExpression("==", baseMemoised, nullLiteral());
+        } else {
+          nullishCheck = logicalExpression("||", binaryExpression("===", baseMemoised, nullLiteral()), binaryExpression("===", cloneNode(baseRef), scope.buildUndefinedNode()));
+        }
+        replacementPath.replaceWith(conditionalExpression(nullishCheck, isDeleteOperation ? booleanLiteral(true) : scope.buildUndefinedNode(), regular));
+      }
+      if (context) {
+        const endParent = endParentPath.node;
+        endParentPath.replaceWith(optionalCallExpression(optionalMemberExpression(endParent.callee, identifier("call"), false, true), [cloneNode(context), ...endParent.arguments], false));
+      }
+      return;
+    }
+    if (isUpdateExpression(parent, {
+      argument: node
+    })) {
+      if (this.simpleSet) {
+        member.replaceWith(this.simpleSet(member));
+        return;
+      }
+      const {
+        operator,
+        prefix
+      } = parent;
+      this.memoise(member, 2);
+      const ref = scope.generateUidIdentifierBasedOnNode(node);
+      scope.push({
+        id: ref
+      });
+      const seq = [assignmentExpression("=", cloneNode(ref), this.get(member))];
+      if (prefix) {
+        seq.push(updateExpression(operator, cloneNode(ref), prefix));
+        const value = sequenceExpression(seq);
+        parentPath.replaceWith(this.set(member, value));
+        return;
+      } else {
+        const ref2 = scope.generateUidIdentifierBasedOnNode(node);
+        scope.push({
+          id: ref2
+        });
+        seq.push(assignmentExpression("=", cloneNode(ref2), updateExpression(operator, cloneNode(ref), prefix)), cloneNode(ref));
+        const value = sequenceExpression(seq);
+        parentPath.replaceWith(sequenceExpression([this.set(member, value), cloneNode(ref2)]));
+        return;
+      }
+    }
+    if (parentPath.isAssignmentExpression({
+      left: node
+    })) {
+      handleAssignment(this, member, parentPath);
+      return;
+    }
+    if (parentPath.isCallExpression({
+      callee: node
+    })) {
+      parentPath.replaceWith(this.call(member, parentPath.node.arguments));
+      return;
+    }
+    if (parentPath.isOptionalCallExpression({
+      callee: node
+    })) {
+      if (scope.path.isPattern()) {
+        parentPath.replaceWith(callExpression(arrowFunctionExpression([], parentPath.node), []));
+        return;
+      }
+      parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments));
+      return;
+    }
+    if (this.delete && parentPath.isUnaryExpression({
+      operator: "delete"
+    })) {
+      parentPath.replaceWith(this.delete(member));
+      return;
+    }
+    if (parentPath.isForXStatement({
+      left: node
+    }) || parentPath.isObjectProperty({
+      value: node
+    }) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({
+      left: node
+    }) && parentPath.parentPath.isObjectProperty({
+      value: parent
+    }) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({
+      left: node
+    }) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) {
+      member.replaceWith(this.destructureSet(member));
+      return;
+    }
+    if (parentPath.isTaggedTemplateExpression()) {
+      member.replaceWith(this.boundGet(member));
+    } else {
+      member.replaceWith(this.get(member));
+    }
+  }
+};
+function handleAssignment(state, member, parentPath) {
+  if (state.simpleSet) {
+    member.replaceWith(state.simpleSet(member));
+    return;
+  }
+  const {
+    operator,
+    right: value
+  } = parentPath.node;
+  if (operator === "=") {
+    parentPath.replaceWith(state.set(member, value));
+  } else {
+    const operatorTrunc = operator.slice(0, -1);
+    if (LOGICAL_OPERATORS.includes(operatorTrunc)) {
+      state.memoise(member, 1);
+      parentPath.replaceWith(logicalExpression(operatorTrunc, state.get(member), state.set(member, value)));
+    } else {
+      state.memoise(member, 2);
+      parentPath.replaceWith(state.set(member, binaryExpression(operatorTrunc, state.get(member), value)));
+    }
+  }
+}
+function memberExpressionToFunctions(path, visitor, state) {
+  path.traverse(visitor, Object.assign({}, handle, state, {
+    memoiser: new AssignmentMemoiser()
+  }));
+}
+
+exports.default = memberExpressionToFunctions;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import type { NodePath } from \"@babel/traverse\";\n\n/**\n * Test if a NodePath will be cast to boolean when evaluated.\n *\n * @example\n * // returns true\n * const nodePathAQDotB = NodePath(\"if (a?.#b) {}\").get(\"test\"); // a?.#b\n * willPathCastToBoolean(nodePathAQDotB)\n * @example\n * // returns false\n * willPathCastToBoolean(NodePath(\"a?.#b\"))\n * @todo Respect transparent expression wrappers\n * @see {@link packages/babel-plugin-transform-optional-chaining/src/util.js}\n * @param {NodePath} path\n * @returns {boolean}\n */\nexport function willPathCastToBoolean(path: NodePath): boolean {\n  const maybeWrapped = path;\n  const { node, parentPath } = maybeWrapped;\n  if (parentPath.isLogicalExpression()) {\n    const { operator, right } = parentPath.node;\n    if (\n      operator === \"&&\" ||\n      operator === \"||\" ||\n      (operator === \"??\" && node === right)\n    ) {\n      return willPathCastToBoolean(parentPath);\n    }\n  }\n  if (parentPath.isSequenceExpression()) {\n    const { expressions } = parentPath.node;\n    if (expressions[expressions.length - 1] === node) {\n      return willPathCastToBoolean(parentPath);\n    } else {\n      // if it is in the middle of a sequence expression, we don't\n      // care the return value so just cast to boolean for smaller\n      // output\n      return true;\n    }\n  }\n  return (\n    parentPath.isConditional({ test: node }) ||\n    parentPath.isUnaryExpression({ operator: \"!\" }) ||\n    parentPath.isLoop({ test: node })\n  );\n}\n","import type { NodePath, Visitor } from \"@babel/traverse\";\nimport {\n  LOGICAL_OPERATORS,\n  arrowFunctionExpression,\n  assignmentExpression,\n  binaryExpression,\n  booleanLiteral,\n  callExpression,\n  cloneNode,\n  conditionalExpression,\n  identifier,\n  isMemberExpression,\n  isOptionalCallExpression,\n  isOptionalMemberExpression,\n  isUpdateExpression,\n  logicalExpression,\n  memberExpression,\n  nullLiteral,\n  optionalCallExpression,\n  optionalMemberExpression,\n  sequenceExpression,\n  updateExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { willPathCastToBoolean } from \"./util.ts\";\n\nclass AssignmentMemoiser {\n  private _map: WeakMap<t.Expression, { count: number; value: t.Identifier }>;\n  constructor() {\n    this._map = new WeakMap();\n  }\n\n  has(key: t.Expression) {\n    return this._map.has(key);\n  }\n\n  get(key: t.Expression) {\n    if (!this.has(key)) return;\n\n    const record = this._map.get(key);\n    const { value } = record;\n\n    record.count--;\n    if (record.count === 0) {\n      // The `count` access is the outermost function call (hopefully), so it\n      // does the assignment.\n      return assignmentExpression(\"=\", value, key);\n    }\n    return value;\n  }\n\n  set(key: t.Expression, value: t.Identifier, count: number) {\n    return this._map.set(key, { count, value });\n  }\n}\n\nfunction toNonOptional(\n  path: NodePath<t.Expression>,\n  base: t.Expression,\n): t.Expression {\n  const { node } = path;\n  if (isOptionalMemberExpression(node)) {\n    return memberExpression(base, node.property, node.computed);\n  }\n\n  if (path.isOptionalCallExpression()) {\n    const callee = path.get(\"callee\");\n    if (path.node.optional && callee.isOptionalMemberExpression()) {\n      // object must be a conditional expression because the optional private access in object has been transformed\n      const object = callee.node.object as t.ConditionalExpression;\n      const context = path.scope.maybeGenerateMemoised(object);\n      callee\n        .get(\"object\")\n        .replaceWith(assignmentExpression(\"=\", context, object));\n\n      return callExpression(memberExpression(base, identifier(\"call\")), [\n        context,\n        ...path.node.arguments,\n      ]);\n    }\n\n    return callExpression(base, path.node.arguments);\n  }\n\n  return path.node;\n}\n\n// Determines if the current path is in a detached tree. This can happen when\n// we are iterating on a path, and replace an ancestor with a new node. Babel\n// doesn't always stop traversing the old node tree, and that can cause\n// inconsistencies.\nfunction isInDetachedTree(path: NodePath) {\n  while (path) {\n    if (path.isProgram()) break;\n\n    const { parentPath, container, listKey } = path;\n    const parentNode = parentPath.node;\n    if (listKey) {\n      if (\n        container !==\n        // @ts-expect-error listKey must be a valid parent node key\n        parentNode[listKey]\n      ) {\n        return true;\n      }\n    } else {\n      if (container !== parentNode) return true;\n    }\n\n    path = parentPath;\n  }\n\n  return false;\n}\n\ntype Member = NodePath<t.OptionalMemberExpression | t.MemberExpression>;\n\nconst handle = {\n  memoise() {\n    // noop.\n  },\n\n  handle(this: HandlerState, member: Member, noDocumentAll: boolean) {\n    const { node, parent, parentPath, scope } = member;\n\n    if (member.isOptionalMemberExpression()) {\n      // Transforming optional chaining requires we replace ancestors.\n      if (isInDetachedTree(member)) return;\n\n      // We're looking for the end of _this_ optional chain, which is actually\n      // the \"rightmost\" property access of the chain. This is because\n      // everything up to that property access is \"optional\".\n      //\n      // Let's take the case of `FOO?.BAR.baz?.qux`, with `FOO?.BAR` being our\n      // member. The \"end\" to most users would be `qux` property access.\n      // Everything up to it could be skipped if it `FOO` were nullish. But\n      // actually, we can consider the `baz` access to be the end. So we're\n      // looking for the nearest optional chain that is `optional: true`.\n      const endPath = member.find(({ node, parent }) => {\n        if (isOptionalMemberExpression(parent)) {\n          // We need to check `parent.object` since we could be inside the\n          // computed expression of a `bad?.[FOO?.BAR]`. In this case, the\n          // endPath is the `FOO?.BAR` member itself.\n          return parent.optional || parent.object !== node;\n        }\n        if (isOptionalCallExpression(parent)) {\n          // Checking `parent.callee` since we could be in the arguments, eg\n          // `bad?.(FOO?.BAR)`.\n          // Also skip `FOO?.BAR` in `FOO?.BAR?.()` since we need to transform the optional call to ensure proper this\n          return (\n            // In FOO?.#BAR?.(), endPath points the optional call expression so we skip FOO?.#BAR\n            (node !== member.node && parent.optional) || parent.callee !== node\n          );\n        }\n        return true;\n      }) as NodePath<t.OptionalMemberExpression>;\n\n      // Replace `function (a, x = a.b?.#c) {}` to `function (a, x = (() => a.b?.#c)() ){}`\n      // so the temporary variable can be injected in correct scope\n      // This can be further optimized to avoid unnecessary IIFE\n      if (scope.path.isPattern()) {\n        endPath.replaceWith(\n          // The injected member will be queued and eventually transformed when visited\n          callExpression(arrowFunctionExpression([], endPath.node), []),\n        );\n        return;\n      }\n\n      const willEndPathCastToBoolean = willPathCastToBoolean(endPath);\n\n      const rootParentPath = endPath.parentPath;\n      if (rootParentPath.isUpdateExpression({ argument: node })) {\n        throw member.buildCodeFrameError(`can't handle update expression`);\n      }\n      const isAssignment = rootParentPath.isAssignmentExpression({\n        left: endPath.node,\n      });\n      const isDeleteOperation = rootParentPath.isUnaryExpression({\n        operator: \"delete\",\n      });\n      if (\n        isDeleteOperation &&\n        endPath.isOptionalMemberExpression() &&\n        endPath.get(\"property\").isPrivateName()\n      ) {\n        // @babel/parser will throw error on `delete obj?.#x`.\n        // This error serves as fallback when `delete obj?.#x` is constructed from babel types\n        throw member.buildCodeFrameError(\n          `can't delete a private class element`,\n        );\n      }\n\n      // Now, we're looking for the start of this optional chain, which is\n      // optional to the left of this member.\n      //\n      // Let's take the case of `foo?.bar?.baz.QUX?.BAM`, with `QUX?.BAM` being\n      // our member. The \"start\" to most users would be `foo` object access.\n      // But actually, we can consider the `bar` access to be the start. So\n      // we're looking for the nearest optional chain that is `optional: true`,\n      // which is guaranteed to be somewhere in the object/callee tree.\n      let startingOptional: NodePath<t.Expression> = member;\n      for (;;) {\n        if (startingOptional.isOptionalMemberExpression()) {\n          if (startingOptional.node.optional) break;\n          startingOptional = startingOptional.get(\"object\");\n          continue;\n        } else if (startingOptional.isOptionalCallExpression()) {\n          if (startingOptional.node.optional) break;\n          startingOptional = startingOptional.get(\"callee\");\n          continue;\n        }\n        // prevent infinite loop: unreachable if the AST is well-formed\n        throw new Error(\n          `Internal error: unexpected ${startingOptional.node.type}`,\n        );\n      }\n\n      const startingNode = startingOptional.isOptionalMemberExpression()\n        ? startingOptional.node.object\n        : startingOptional.node.callee;\n      const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);\n      const baseRef = baseNeedsMemoised ?? startingNode;\n\n      // Compute parentIsOptionalCall before `startingOptional` is replaced\n      // as `node` may refer to `startingOptional.node` before replaced.\n      const parentIsOptionalCall = parentPath.isOptionalCallExpression({\n        callee: node,\n      });\n      // here we use a function to wrap `parentIsOptionalCall` to get type\n      // for parent, do not use it anywhere else\n      // See https://github.com/microsoft/TypeScript/issues/10421\n      const isOptionalCall = (\n        parent: t.Node,\n      ): parent is t.OptionalCallExpression => parentIsOptionalCall;\n      // if parentIsCall is true, it implies that node.extra.parenthesized is always true\n      const parentIsCall = parentPath.isCallExpression({ callee: node });\n      startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));\n      if (isOptionalCall(parent)) {\n        if (parent.optional) {\n          parentPath.replaceWith(this.optionalCall(member, parent.arguments));\n        } else {\n          parentPath.replaceWith(this.call(member, parent.arguments));\n        }\n      } else if (parentIsCall) {\n        // `(a?.#b)()` to `(a == null ? void 0 : a.#b.bind(a))()`\n        member.replaceWith(this.boundGet(member));\n      } else if (\n        (process.env.BABEL_8_BREAKING || this.delete) &&\n        parentPath.isUnaryExpression({ operator: \"delete\" })\n      ) {\n        parentPath.replaceWith(this.delete(member));\n      } else if (parentPath.isAssignmentExpression()) {\n        // `a?.#b = c` to `(a == null ? void 0 : a.#b = c)`\n        handleAssignment(this, member, parentPath);\n      } else {\n        member.replaceWith(this.get(member));\n      }\n\n      let regular: t.Expression = member.node;\n      for (let current: NodePath = member; current !== endPath; ) {\n        const parentPath = current.parentPath as NodePath<t.Expression>;\n        // skip transforming `Foo.#BAR?.call(FOO)`\n        if (\n          parentPath === endPath &&\n          isOptionalCall(parent) &&\n          parent.optional\n        ) {\n          regular = parentPath.node;\n          break;\n        }\n        regular = toNonOptional(parentPath, regular);\n        current = parentPath;\n      }\n\n      let context: t.Identifier;\n      const endParentPath = endPath.parentPath as NodePath<t.Expression>;\n      if (\n        isMemberExpression(regular) &&\n        endParentPath.isOptionalCallExpression({\n          callee: endPath.node,\n          optional: true,\n        })\n      ) {\n        const { object } = regular;\n        context = member.scope.maybeGenerateMemoised(object);\n        if (context) {\n          regular.object = assignmentExpression(\n            \"=\",\n            context,\n            // object must not be Super when `context` is an identifier\n            // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n            object as t.Expression,\n          );\n        }\n      }\n\n      let replacementPath: NodePath = endPath;\n      if (isDeleteOperation || isAssignment) {\n        replacementPath = endParentPath;\n        regular = endParentPath.node;\n      }\n\n      const baseMemoised = baseNeedsMemoised\n        ? assignmentExpression(\n            \"=\",\n            // When base needs memoised, the baseRef must be an identifier\n            cloneNode(baseRef as t.Identifier),\n            cloneNode(startingNode),\n          )\n        : cloneNode(baseRef);\n\n      if (willEndPathCastToBoolean) {\n        let nonNullishCheck;\n        if (noDocumentAll) {\n          nonNullishCheck = binaryExpression(\"!=\", baseMemoised, nullLiteral());\n        } else {\n          nonNullishCheck = logicalExpression(\n            \"&&\",\n            binaryExpression(\"!==\", baseMemoised, nullLiteral()),\n            binaryExpression(\n              \"!==\",\n              cloneNode(baseRef),\n              scope.buildUndefinedNode(),\n            ),\n          );\n        }\n        replacementPath.replaceWith(\n          logicalExpression(\"&&\", nonNullishCheck, regular),\n        );\n      } else {\n        let nullishCheck;\n        if (noDocumentAll) {\n          nullishCheck = binaryExpression(\"==\", baseMemoised, nullLiteral());\n        } else {\n          nullishCheck = logicalExpression(\n            \"||\",\n            binaryExpression(\"===\", baseMemoised, nullLiteral()),\n            binaryExpression(\n              \"===\",\n              cloneNode(baseRef),\n              scope.buildUndefinedNode(),\n            ),\n          );\n        }\n\n        replacementPath.replaceWith(\n          conditionalExpression(\n            nullishCheck,\n            isDeleteOperation\n              ? booleanLiteral(true)\n              : scope.buildUndefinedNode(),\n            regular,\n          ),\n        );\n      }\n\n      // context and isDeleteOperation can not be both truthy\n      if (context) {\n        const endParent = endParentPath.node as t.OptionalCallExpression;\n        endParentPath.replaceWith(\n          optionalCallExpression(\n            optionalMemberExpression(\n              endParent.callee,\n              identifier(\"call\"),\n              false,\n              true,\n            ),\n            [cloneNode(context), ...endParent.arguments],\n            false,\n          ),\n        );\n      }\n\n      return;\n    }\n\n    // MEMBER++   ->   _set(MEMBER, (ref = _get(MEMBER), ref2 = ref++, ref)), ref2\n    // ++MEMBER   ->   _set(MEMBER, (ref = _get(MEMBER), ++ref))\n    if (isUpdateExpression(parent, { argument: node })) {\n      if (this.simpleSet) {\n        member.replaceWith(this.simpleSet(member));\n        return;\n      }\n\n      const { operator, prefix } = parent;\n\n      // Give the state handler a chance to memoise the member, since we'll\n      // reference it twice. The second access (the set) should do the memo\n      // assignment.\n      this.memoise(member, 2);\n\n      const ref = scope.generateUidIdentifierBasedOnNode(node);\n      scope.push({ id: ref });\n\n      const seq: t.Expression[] = [\n        // ref = _get(MEMBER)\n        assignmentExpression(\"=\", cloneNode(ref), this.get(member)),\n      ];\n\n      if (prefix) {\n        seq.push(updateExpression(operator, cloneNode(ref), prefix));\n\n        // (ref = _get(MEMBER), ++ref)\n        const value = sequenceExpression(seq);\n        parentPath.replaceWith(this.set(member, value));\n\n        return;\n      } else {\n        const ref2 = scope.generateUidIdentifierBasedOnNode(node);\n        scope.push({ id: ref2 });\n\n        seq.push(\n          assignmentExpression(\n            \"=\",\n            cloneNode(ref2),\n            updateExpression(operator, cloneNode(ref), prefix),\n          ),\n          cloneNode(ref),\n        );\n\n        // (ref = _get(MEMBER), ref2 = ref++, ref)\n        const value = sequenceExpression(seq);\n        parentPath.replaceWith(\n          sequenceExpression([this.set(member, value), cloneNode(ref2)]),\n        );\n\n        return;\n      }\n    }\n\n    // MEMBER = VALUE   ->   _set(MEMBER, VALUE)\n    // MEMBER += VALUE   ->   _set(MEMBER, _get(MEMBER) + VALUE)\n    // MEMBER ??= VALUE   ->   _get(MEMBER) ?? _set(MEMBER, VALUE)\n    if (parentPath.isAssignmentExpression({ left: node })) {\n      handleAssignment(this, member, parentPath);\n      return;\n    }\n\n    // MEMBER(ARGS) -> _call(MEMBER, ARGS)\n    if (parentPath.isCallExpression({ callee: node })) {\n      parentPath.replaceWith(this.call(member, parentPath.node.arguments));\n      return;\n    }\n\n    // MEMBER?.(ARGS) -> _optionalCall(MEMBER, ARGS)\n    if (parentPath.isOptionalCallExpression({ callee: node })) {\n      // Replace `function (a, x = a.b.#c?.()) {}` to `function (a, x = (() => a.b.#c?.())() ){}`\n      // so the temporary variable can be injected in correct scope\n      // This can be further optimized to avoid unnecessary IIFE\n      if (scope.path.isPattern()) {\n        parentPath.replaceWith(\n          // The injected member will be queued and eventually transformed when visited\n          callExpression(arrowFunctionExpression([], parentPath.node), []),\n        );\n        return;\n      }\n      parentPath.replaceWith(\n        this.optionalCall(member, parentPath.node.arguments),\n      );\n      return;\n    }\n\n    // delete MEMBER -> _delete(MEMBER)\n    if (\n      (process.env.BABEL_8_BREAKING || this.delete) &&\n      parentPath.isUnaryExpression({ operator: \"delete\" })\n    ) {\n      parentPath.replaceWith(this.delete(member));\n      return;\n    }\n\n    // for (MEMBER of ARR)\n    // for (MEMBER in ARR)\n    // { KEY: MEMBER } = OBJ -> { KEY: _destructureSet(MEMBER) } = OBJ\n    // { KEY: MEMBER = _VALUE } = OBJ -> { KEY: _destructureSet(MEMBER) = _VALUE } = OBJ\n    // {...MEMBER} -> {..._destructureSet(MEMBER)}\n    //\n    // [MEMBER] = ARR -> [_destructureSet(MEMBER)] = ARR\n    // [MEMBER = _VALUE] = ARR -> [_destructureSet(MEMBER) = _VALUE] = ARR\n    // [...MEMBER] -> [..._destructureSet(MEMBER)]\n    if (\n      // for (MEMBER of ARR)\n      // for (MEMBER in ARR)\n      parentPath.isForXStatement({ left: node }) ||\n      // { KEY: MEMBER } = OBJ\n      (parentPath.isObjectProperty({ value: node }) &&\n        parentPath.parentPath.isObjectPattern()) ||\n      // { KEY: MEMBER = _VALUE } = OBJ\n      (parentPath.isAssignmentPattern({ left: node }) &&\n        parentPath.parentPath.isObjectProperty({ value: parent }) &&\n        parentPath.parentPath.parentPath.isObjectPattern()) ||\n      // [MEMBER] = ARR\n      parentPath.isArrayPattern() ||\n      // [MEMBER = _VALUE] = ARR\n      (parentPath.isAssignmentPattern({ left: node }) &&\n        parentPath.parentPath.isArrayPattern()) ||\n      // {...MEMBER}\n      // [...MEMBER]\n      parentPath.isRestElement()\n    ) {\n      member.replaceWith(this.destructureSet(member));\n      return;\n    }\n\n    if (parentPath.isTaggedTemplateExpression()) {\n      // MEMBER   ->   _get(MEMBER).bind(this)\n      member.replaceWith(this.boundGet(member));\n    } else {\n      // MEMBER   ->   _get(MEMBER)\n      member.replaceWith(this.get(member));\n    }\n  },\n};\n\nfunction handleAssignment(\n  state: HandlerState,\n  member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  parentPath: NodePath<t.AssignmentExpression>,\n) {\n  if (state.simpleSet) {\n    member.replaceWith(state.simpleSet(member));\n    return;\n  }\n\n  const { operator, right: value } = parentPath.node;\n\n  if (operator === \"=\") {\n    parentPath.replaceWith(state.set(member, value));\n  } else {\n    const operatorTrunc = operator.slice(0, -1);\n    if (LOGICAL_OPERATORS.includes(operatorTrunc)) {\n      // Give the state handler a chance to memoise the member, since we'll\n      // reference it twice. The first access (the get) should do the memo\n      // assignment.\n      state.memoise(member, 1);\n      parentPath.replaceWith(\n        logicalExpression(\n          operatorTrunc as t.LogicalExpression[\"operator\"],\n          state.get(member),\n          state.set(member, value),\n        ),\n      );\n    } else {\n      // Here, the second access (the set) is evaluated first.\n      state.memoise(member, 2);\n      parentPath.replaceWith(\n        state.set(\n          member,\n          binaryExpression(\n            operatorTrunc as t.BinaryExpression[\"operator\"],\n            state.get(member),\n            value,\n          ),\n        ),\n      );\n    }\n  }\n}\n\nexport interface Handler<State> {\n  memoise?(\n    this: HandlerState<State> & State,\n    member: Member,\n    count: number,\n  ): void;\n  destructureSet(\n    this: HandlerState<State> & State,\n    member: Member,\n  ): t.Expression;\n  boundGet(this: HandlerState<State> & State, member: Member): t.Expression;\n  simpleSet?(this: HandlerState<State> & State, member: Member): t.Expression;\n  get(this: HandlerState<State> & State, member: Member): t.Expression;\n  set(\n    this: HandlerState<State> & State,\n    member: Member,\n    value: t.Expression,\n  ): t.Expression;\n  call(\n    this: HandlerState<State> & State,\n    member: Member,\n    args: t.CallExpression[\"arguments\"],\n  ): t.Expression;\n  optionalCall(\n    this: HandlerState<State> & State,\n    member: Member,\n    args: t.OptionalCallExpression[\"arguments\"],\n  ): t.Expression;\n  delete(this: HandlerState<State> & State, member: Member): t.Expression;\n}\n\nexport interface HandlerState<State = object> extends Handler<State> {\n  handle(\n    this: HandlerState<State> & State,\n    member: Member,\n    noDocumentAll?: boolean,\n  ): void;\n  memoiser: AssignmentMemoiser;\n}\n\n// We do not provide a default traversal visitor\n// Instead, caller passes one, and must call `state.handle` on the members\n// it wishes to be transformed.\n// Additionally, the caller must pass in a state object with at least\n// get, set, and call methods.\n// Optionally, a memoise method may be defined on the state, which will be\n// called when the member is a self-referential update.\nexport default function memberExpressionToFunctions<CustomState extends object>(\n  path: NodePath,\n  visitor: Visitor<HandlerState<CustomState>>,\n  state: Handler<CustomState> & CustomState,\n) {\n  path.traverse(visitor, {\n    ...handle,\n    ...state,\n    memoiser: new AssignmentMemoiser(),\n  });\n}\n"],"names":["willPathCastToBoolean","path","maybeWrapped","node","parentPath","isLogicalExpression","operator","right","isSequenceExpression","expressions","length","isConditional","test","isUnaryExpression","isLoop","LOGICAL_OPERATORS","arrowFunctionExpression","assignmentExpression","binaryExpression","booleanLiteral","callExpression","cloneNode","conditionalExpression","identifier","isMemberExpression","isOptionalCallExpression","isOptionalMemberExpression","isUpdateExpression","logicalExpression","memberExpression","nullLiteral","optionalCallExpression","optionalMemberExpression","sequenceExpression","updateExpression","_t","AssignmentMemoiser","constructor","_map","WeakMap","has","key","get","record","value","count","set","toNonOptional","base","property","computed","callee","optional","object","context","scope","maybeGenerateMemoised","replaceWith","arguments","isInDetachedTree","isProgram","container","listKey","parentNode","handle","memoise","member","noDocumentAll","parent","endPath","find","isPattern","willEndPathCastToBoolean","rootParentPath","argument","buildCodeFrameError","isAssignment","isAssignmentExpression","left","isDeleteOperation","isPrivateName","startingOptional","Error","type","startingNode","baseNeedsMemoised","baseRef","parentIsOptionalCall","isOptionalCall","parentIsCall","isCallExpression","optionalCall","call","boundGet","delete","handleAssignment","regular","current","endParentPath","replacementPath","baseMemoised","nonNullishCheck","buildUndefinedNode","nullishCheck","endParent","simpleSet","prefix","ref","generateUidIdentifierBasedOnNode","push","id","seq","ref2","isForXStatement","isObjectProperty","isObjectPattern","isAssignmentPattern","isArrayPattern","isRestElement","destructureSet","isTaggedTemplateExpression","state","operatorTrunc","slice","includes","memberExpressionToFunctions","visitor","traverse","Object","assign","memoiser"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-member-expression-to-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,25 @@
+{
+  "name": "@babel/helper-member-expression-to-functions",
+  "version": "7.25.9",
+  "description": "Helper function to replace certain member expressions with function calls",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-member-expression-to-functions"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-member-expression-to-functions",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "dependencies": {
+    "@babel/traverse": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-module-imports/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-module-imports/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-module-imports/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,22 +1,41 @@
 {
-  "name": "@babel/helper-module-imports",
-  "version": "7.25.9",
-  "description": "Babel helper functions for inserting module loads",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_from": "@babel/helper-module-imports@^7.25.9",
+  "_id": "@babel/helper-module-imports@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+  "_location": "/@babel/helper-module-imports",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helper-module-imports@^7.25.9",
+    "name": "@babel/helper-module-imports",
+    "escapedName": "@babel%2fhelper-module-imports",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-module-imports"
+  "_requiredBy": [
+    "/@babel/helper-module-transforms"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+  "_shasum": "e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715",
+  "_spec": "@babel/helper-module-imports@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/helper-module-transforms",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "@babel/traverse": "^7.25.9",
     "@babel/types": "^7.25.9"
   },
+  "deprecated": false,
+  "description": "Babel helper functions for inserting module loads",
   "devDependencies": {
     "@babel/core": "^7.25.9"
@@ -25,4 +44,17 @@
     "node": ">=6.9.0"
   },
-  "type": "commonjs"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-module-imports",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-module-imports"
+  },
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/helper-module-transforms/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-module-transforms/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-module-transforms/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,9 +1,55 @@
 {
-  "name": "@babel/helper-module-transforms",
-  "version": "7.26.0",
+  "_from": "@babel/helper-module-transforms@^7.26.0",
+  "_id": "@babel/helper-module-transforms@7.26.0",
+  "_inBundle": false,
+  "_integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+  "_location": "/@babel/helper-module-transforms",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helper-module-transforms@^7.26.0",
+    "name": "@babel/helper-module-transforms",
+    "escapedName": "@babel%2fhelper-module-transforms",
+    "scope": "@babel",
+    "rawSpec": "^7.26.0",
+    "saveSpec": null,
+    "fetchSpec": "^7.26.0"
+  },
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+  "_shasum": "8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae",
+  "_spec": "@babel/helper-module-transforms@^7.26.0",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/core",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "@babel/helper-module-imports": "^7.25.9",
+    "@babel/helper-validator-identifier": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "deprecated": false,
   "description": "Babel helper functions for implementing ES6 module transformations",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "devDependencies": {
+    "@babel/core": "^7.26.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
   "homepage": "https://babel.dev/docs/en/next/babel-helper-module-transforms",
   "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-module-transforms",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
   "publishConfig": {
     "access": "public"
@@ -11,22 +57,8 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-helper-module-transforms"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/helper-module-imports": "^7.25.9",
-    "@babel/helper-validator-identifier": "^7.25.9",
-    "@babel/traverse": "^7.25.9"
-  },
-  "devDependencies": {
-    "@babel/core": "^7.26.0"
-  },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "type": "commonjs"
+  "type": "commonjs",
+  "version": "7.26.0"
 }
Index: imaps-frontend/node_modules/@babel/helper-optimise-call-expression/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-optimise-call-expression/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-optimise-call-expression/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-optimise-call-expression/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-optimise-call-expression/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-optimise-call-expression/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-optimise-call-expression
+
+> Helper function to optimise call expression
+
+See our website [@babel/helper-optimise-call-expression](https://babeljs.io/docs/babel-helper-optimise-call-expression) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-optimise-call-expression
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-optimise-call-expression
+```
Index: imaps-frontend/node_modules/@babel/helper-optimise-call-expression/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-optimise-call-expression/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-optimise-call-expression/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = optimiseCallExpression;
+var _t = require("@babel/types");
+const {
+  callExpression,
+  identifier,
+  isIdentifier,
+  isSpreadElement,
+  memberExpression,
+  optionalCallExpression,
+  optionalMemberExpression
+} = _t;
+function optimiseCallExpression(callee, thisNode, args, optional) {
+  if (args.length === 1 && isSpreadElement(args[0]) && isIdentifier(args[0].argument, {
+    name: "arguments"
+  })) {
+    if (optional) {
+      return optionalCallExpression(optionalMemberExpression(callee, identifier("apply"), false, true), [thisNode, args[0].argument], false);
+    }
+    return callExpression(memberExpression(callee, identifier("apply")), [thisNode, args[0].argument]);
+  } else {
+    if (optional) {
+      return optionalCallExpression(optionalMemberExpression(callee, identifier("call"), false, true), [thisNode, ...args], false);
+    }
+    return callExpression(memberExpression(callee, identifier("call")), [thisNode, ...args]);
+  }
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-optimise-call-expression/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-optimise-call-expression/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-optimise-call-expression/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_t","require","callExpression","identifier","isIdentifier","isSpreadElement","memberExpression","optionalCallExpression","optionalMemberExpression","optimiseCallExpression","callee","thisNode","args","optional","length","argument","name"],"sources":["../src/index.ts"],"sourcesContent":["import {\n  callExpression,\n  identifier,\n  isIdentifier,\n  isSpreadElement,\n  memberExpression,\n  optionalCallExpression,\n  optionalMemberExpression,\n} from \"@babel/types\";\nimport type {\n  CallExpression,\n  Expression,\n  OptionalCallExpression,\n} from \"@babel/types\";\n\n/**\n * A helper function that generates a new call expression with given thisNode.\n It will also optimize `(...arguments)` to `.apply(arguments)`\n *\n * @export\n * @param {Expression} callee The callee of call expression\n * @param {Expression} thisNode The desired this of call expression\n * @param {Readonly<CallExpression[\"arguments\"]>} args The arguments of call expression\n * @param {boolean} optional Whether the call expression is optional\n * @returns {CallExpression | OptionalCallExpression} The generated new call expression\n */\nexport default function optimiseCallExpression(\n  callee: Expression,\n  thisNode: Expression,\n  args: Readonly<CallExpression[\"arguments\"]>,\n  optional: boolean,\n): CallExpression | OptionalCallExpression {\n  if (\n    args.length === 1 &&\n    isSpreadElement(args[0]) &&\n    isIdentifier(args[0].argument, { name: \"arguments\" })\n  ) {\n    // a.b?.(...arguments);\n    if (optional) {\n      return optionalCallExpression(\n        optionalMemberExpression(callee, identifier(\"apply\"), false, true),\n        [thisNode, args[0].argument],\n        false,\n      );\n    }\n    // a.b(...arguments);\n    return callExpression(memberExpression(callee, identifier(\"apply\")), [\n      thisNode,\n      args[0].argument,\n    ]);\n  } else {\n    // a.b?.(arg1, arg2)\n    if (optional) {\n      return optionalCallExpression(\n        optionalMemberExpression(callee, identifier(\"call\"), false, true),\n        [thisNode, ...args],\n        false,\n      );\n    }\n    // a.b(arg1, arg2)\n    return callExpression(memberExpression(callee, identifier(\"call\")), [\n      thisNode,\n      ...args,\n    ]);\n  }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAQsB;EAPpBC,cAAc;EACdC,UAAU;EACVC,YAAY;EACZC,eAAe;EACfC,gBAAgB;EAChBC,sBAAsB;EACtBC;AAAwB,IAAAR,EAAA;AAmBX,SAASS,sBAAsBA,CAC5CC,MAAkB,EAClBC,QAAoB,EACpBC,IAA2C,EAC3CC,QAAiB,EACwB;EACzC,IACED,IAAI,CAACE,MAAM,KAAK,CAAC,IACjBT,eAAe,CAACO,IAAI,CAAC,CAAC,CAAC,CAAC,IACxBR,YAAY,CAACQ,IAAI,CAAC,CAAC,CAAC,CAACG,QAAQ,EAAE;IAAEC,IAAI,EAAE;EAAY,CAAC,CAAC,EACrD;IAEA,IAAIH,QAAQ,EAAE;MACZ,OAAON,sBAAsB,CAC3BC,wBAAwB,CAACE,MAAM,EAAEP,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAClE,CAACQ,QAAQ,EAAEC,IAAI,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,EAC5B,KACF,CAAC;IACH;IAEA,OAAOb,cAAc,CAACI,gBAAgB,CAACI,MAAM,EAAEP,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CACnEQ,QAAQ,EACRC,IAAI,CAAC,CAAC,CAAC,CAACG,QAAQ,CACjB,CAAC;EACJ,CAAC,MAAM;IAEL,IAAIF,QAAQ,EAAE;MACZ,OAAON,sBAAsB,CAC3BC,wBAAwB,CAACE,MAAM,EAAEP,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EACjE,CAACQ,QAAQ,EAAE,GAAGC,IAAI,CAAC,EACnB,KACF,CAAC;IACH;IAEA,OAAOV,cAAc,CAACI,gBAAgB,CAACI,MAAM,EAAEP,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAClEQ,QAAQ,EACR,GAAGC,IAAI,CACR,CAAC;EACJ;AACF","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-optimise-call-expression/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-optimise-call-expression/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-optimise-call-expression/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,28 @@
+{
+  "name": "@babel/helper-optimise-call-expression",
+  "version": "7.25.9",
+  "description": "Helper function to optimise call expression",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-optimise-call-expression"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-optimise-call-expression",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/types": "^7.25.9"
+  },
+  "devDependencies": {
+    "@babel/generator": "^7.25.9",
+    "@babel/parser": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-plugin-utils/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-plugin-utils/lib/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-plugin-utils/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["apiPolyfills","assertVersion","api","range","throwVersionError","version","Object","assign","targets","assumption","undefined","addExternalDependency","declare","builder","options","dirname","_clonedApi2","clonedApi","name","keys","_clonedApi","copyApiObject","declarePreset","exports","proto","test","getPrototypeOf","hasOwnProperty","call","Number","isInteger","Error","limit","stackTraceLimit","err","slice","code"],"sources":["../src/index.ts"],"sourcesContent":["import type {\n  PluginAPI,\n  PluginObject,\n  PluginPass,\n  PresetAPI,\n  PresetObject,\n} from \"@babel/core\";\n\ntype APIPolyfillFactory<T extends keyof PluginAPI> = (\n  api: PluginAPI,\n) => PluginAPI[T];\n\ntype APIPolyfills = {\n  assertVersion: APIPolyfillFactory<\"assertVersion\">;\n};\n\nconst apiPolyfills: APIPolyfills = {\n  // Not supported by Babel 7 and early versions of Babel 7 beta.\n  // It's important that this is polyfilled for older Babel versions\n  // since it's needed to report the version mismatch.\n  assertVersion: (api: PluginAPI) => (range: number | string) => {\n    throwVersionError(range, api.version);\n  },\n};\nif (!process.env.BABEL_8_BREAKING) {\n  Object.assign(apiPolyfills, {\n    // This is supported starting from Babel 7.13\n    targets: () => () => {\n      return {};\n    },\n    // This is supported starting from Babel 7.13\n    assumption: () => () => {\n      return undefined;\n    },\n    // This is supported starting from Babel 7.17\n    addExternalDependency: () => () => {},\n  });\n}\n\nexport function declare<State = object, Option = object>(\n  builder: (\n    api: PluginAPI,\n    options: Option,\n    dirname: string,\n  ) => PluginObject<State & PluginPass>,\n): (\n  api: PluginAPI,\n  options: Option,\n  dirname: string,\n) => PluginObject<State & PluginPass> {\n  return (api, options: Option, dirname: string) => {\n    let clonedApi: PluginAPI;\n\n    for (const name of Object.keys(\n      apiPolyfills,\n    ) as (keyof typeof apiPolyfills)[]) {\n      if (api[name]) continue;\n\n      clonedApi ??= copyApiObject(api);\n      clonedApi[name] = apiPolyfills[name](clonedApi);\n    }\n\n    // @ts-expect-error options || {} may not be assigned to Options\n    return builder(clonedApi ?? api, options || {}, dirname);\n  };\n}\n\nexport const declarePreset = declare as <Option = object>(\n  builder: (api: PresetAPI, options: Option, dirname: string) => PresetObject,\n) => (api: PresetAPI, options: Option, dirname: string) => PresetObject;\n\nfunction copyApiObject(api: PluginAPI): PluginAPI {\n  // Babel >= 7 <= beta.41 passed the API as a new object that had\n  // babel/core as the prototype. While slightly faster, it also\n  // means that the Object.assign copy below fails. Rather than\n  // keep complexity, the Babel 6 behavior has been reverted and this\n  // normalizes all that for Babel 7.\n  let proto = null;\n  if (typeof api.version === \"string\" && /^7\\./.test(api.version)) {\n    proto = Object.getPrototypeOf(api);\n    if (\n      proto &&\n      (!Object.hasOwn(proto, \"version\") ||\n        !Object.hasOwn(proto, \"transform\") ||\n        !Object.hasOwn(proto, \"template\") ||\n        !Object.hasOwn(proto, \"types\"))\n    ) {\n      proto = null;\n    }\n  }\n\n  return {\n    ...proto,\n    ...api,\n  };\n}\n\nfunction throwVersionError(range: string | number, version: string) {\n  if (typeof range === \"number\") {\n    if (!Number.isInteger(range)) {\n      throw new Error(\"Expected string or integer value.\");\n    }\n    range = `^${range}.0.0-0`;\n  }\n  if (typeof range !== \"string\") {\n    throw new Error(\"Expected string or integer value.\");\n  }\n\n  const limit = Error.stackTraceLimit;\n\n  if (typeof limit === \"number\" && limit < 25) {\n    // Bump up the limit if needed so that users are more likely\n    // to be able to see what is calling Babel.\n    Error.stackTraceLimit = 25;\n  }\n\n  let err;\n  if (version.slice(0, 2) === \"7.\") {\n    err = new Error(\n      `Requires Babel \"^7.0.0-beta.41\", but was loaded with \"${version}\". ` +\n        `You'll need to update your @babel/core version.`,\n    );\n  } else {\n    err = new Error(\n      `Requires Babel \"${range}\", but was loaded with \"${version}\". ` +\n        `If you are sure you have a compatible version of @babel/core, ` +\n        `it is likely that something in your build process is loading the ` +\n        `wrong version. Inspect the stack trace of this error to look for ` +\n        `the first entry that doesn't mention \"@babel/core\" or \"babel-core\" ` +\n        `to see what is calling Babel.`,\n    );\n  }\n\n  if (typeof limit === \"number\") {\n    Error.stackTraceLimit = limit;\n  }\n\n  throw Object.assign(err, {\n    code: \"BABEL_VERSION_UNSUPPORTED\",\n    version,\n    range,\n  } as any);\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["apiPolyfills","assertVersion","api","range","throwVersionError","version","Object","assign","targets","assumption","undefined","addExternalDependency","declare","builder","options","dirname","_clonedApi2","clonedApi","name","keys","_clonedApi","copyApiObject","declarePreset","exports","proto","test","getPrototypeOf","hasOwnProperty","call","Number","isInteger","Error","limit","stackTraceLimit","err","slice","code"],"sources":["../src/index.ts"],"sourcesContent":["import type {\n  PluginAPI,\n  PluginObject,\n  PluginPass,\n  PresetAPI,\n  PresetObject,\n} from \"@babel/core\";\n\ntype APIPolyfillFactory<T extends keyof PluginAPI> = (\n  api: PluginAPI,\n) => PluginAPI[T];\n\ntype APIPolyfills = {\n  assertVersion: APIPolyfillFactory<\"assertVersion\">;\n};\n\nconst apiPolyfills: APIPolyfills = {\n  // Not supported by Babel 7 and early versions of Babel 7 beta.\n  // It's important that this is polyfilled for older Babel versions\n  // since it's needed to report the version mismatch.\n  assertVersion: (api: PluginAPI) => (range: number | string) => {\n    throwVersionError(range, api.version);\n  },\n};\nif (!process.env.BABEL_8_BREAKING) {\n  Object.assign(apiPolyfills, {\n    // This is supported starting from Babel 7.13\n    targets: () => (): any => {\n      return {};\n    },\n    // This is supported starting from Babel 7.13\n    assumption: () => (): any => {\n      return undefined;\n    },\n    // This is supported starting from Babel 7.17\n    addExternalDependency: () => () => {},\n  });\n}\n\nexport function declare<State = object, Option = object>(\n  builder: (\n    api: PluginAPI,\n    options: Option,\n    dirname: string,\n  ) => PluginObject<State & PluginPass>,\n): (\n  api: PluginAPI,\n  options: Option,\n  dirname: string,\n) => PluginObject<State & PluginPass> {\n  return (api, options: Option, dirname: string) => {\n    let clonedApi: PluginAPI;\n\n    for (const name of Object.keys(\n      apiPolyfills,\n    ) as (keyof typeof apiPolyfills)[]) {\n      if (api[name]) continue;\n\n      clonedApi ??= copyApiObject(api);\n      clonedApi[name] = apiPolyfills[name](clonedApi);\n    }\n\n    // @ts-expect-error options || {} may not be assigned to Options\n    return builder(clonedApi ?? api, options || {}, dirname);\n  };\n}\n\nexport const declarePreset = declare as <Option = object>(\n  builder: (api: PresetAPI, options: Option, dirname: string) => PresetObject,\n) => (api: PresetAPI, options: Option, dirname: string) => PresetObject;\n\nfunction copyApiObject(api: PluginAPI): PluginAPI {\n  // Babel >= 7 <= beta.41 passed the API as a new object that had\n  // babel/core as the prototype. While slightly faster, it also\n  // means that the Object.assign copy below fails. Rather than\n  // keep complexity, the Babel 6 behavior has been reverted and this\n  // normalizes all that for Babel 7.\n  let proto = null;\n  if (typeof api.version === \"string\" && /^7\\./.test(api.version)) {\n    proto = Object.getPrototypeOf(api);\n    if (\n      proto &&\n      (!Object.hasOwn(proto, \"version\") ||\n        !Object.hasOwn(proto, \"transform\") ||\n        !Object.hasOwn(proto, \"template\") ||\n        !Object.hasOwn(proto, \"types\"))\n    ) {\n      proto = null;\n    }\n  }\n\n  return {\n    ...proto,\n    ...api,\n  };\n}\n\nfunction throwVersionError(range: string | number, version: string) {\n  if (typeof range === \"number\") {\n    if (!Number.isInteger(range)) {\n      throw new Error(\"Expected string or integer value.\");\n    }\n    range = `^${range}.0.0-0`;\n  }\n  if (typeof range !== \"string\") {\n    throw new Error(\"Expected string or integer value.\");\n  }\n\n  const limit = Error.stackTraceLimit;\n\n  if (typeof limit === \"number\" && limit < 25) {\n    // Bump up the limit if needed so that users are more likely\n    // to be able to see what is calling Babel.\n    Error.stackTraceLimit = 25;\n  }\n\n  let err;\n  if (version.slice(0, 2) === \"7.\") {\n    err = new Error(\n      `Requires Babel \"^7.0.0-beta.41\", but was loaded with \"${version}\". ` +\n        `You'll need to update your @babel/core version.`,\n    );\n  } else {\n    err = new Error(\n      `Requires Babel \"${range}\", but was loaded with \"${version}\". ` +\n        `If you are sure you have a compatible version of @babel/core, ` +\n        `it is likely that something in your build process is loading the ` +\n        `wrong version. Inspect the stack trace of this error to look for ` +\n        `the first entry that doesn't mention \"@babel/core\" or \"babel-core\" ` +\n        `to see what is calling Babel.`,\n    );\n  }\n\n  if (typeof limit === \"number\") {\n    Error.stackTraceLimit = limit;\n  }\n\n  throw Object.assign(err, {\n    code: \"BABEL_VERSION_UNSUPPORTED\",\n    version,\n    range,\n  } as any);\n}\n"],"mappings":";;;;;;;AAgBA,MAAMA,YAA0B,GAAG;EAIjCC,aAAa,EAAGC,GAAc,IAAMC,KAAsB,IAAK;IAC7DC,iBAAiB,CAACD,KAAK,EAAED,GAAG,CAACG,OAAO,CAAC;EACvC;AACF,CAAC;AACkC;EACjCC,MAAM,CAACC,MAAM,CAACP,YAAY,EAAE;IAE1BQ,OAAO,EAAEA,CAAA,KAAM,MAAW;MACxB,OAAO,CAAC,CAAC;IACX,CAAC;IAEDC,UAAU,EAAEA,CAAA,KAAM,MAAW;MAC3B,OAAOC,SAAS;IAClB,CAAC;IAEDC,qBAAqB,EAAEA,CAAA,KAAM,MAAM,CAAC;EACtC,CAAC,CAAC;AACJ;AAEO,SAASC,OAAOA,CACrBC,OAIqC,EAKD;EACpC,OAAO,CAACX,GAAG,EAAEY,OAAe,EAAEC,OAAe,KAAK;IAAA,IAAAC,WAAA;IAChD,IAAIC,SAAoB;IAExB,KAAK,MAAMC,IAAI,IAAIZ,MAAM,CAACa,IAAI,CAC5BnB,YACF,CAAC,EAAmC;MAAA,IAAAoB,UAAA;MAClC,IAAIlB,GAAG,CAACgB,IAAI,CAAC,EAAE;MAEf,CAAAE,UAAA,GAAAH,SAAS,YAAAG,UAAA,GAATH,SAAS,GAAKI,aAAa,CAACnB,GAAG,CAAC;MAChCe,SAAS,CAACC,IAAI,CAAC,GAAGlB,YAAY,CAACkB,IAAI,CAAC,CAACD,SAAS,CAAC;IACjD;IAGA,OAAOJ,OAAO,EAAAG,WAAA,GAACC,SAAS,YAAAD,WAAA,GAAId,GAAG,EAAEY,OAAO,IAAI,CAAC,CAAC,EAAEC,OAAO,CAAC;EAC1D,CAAC;AACH;AAEO,MAAMO,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAGV,OAE0C;AAEvE,SAASS,aAAaA,CAACnB,GAAc,EAAa;EAMhD,IAAIsB,KAAK,GAAG,IAAI;EAChB,IAAI,OAAOtB,GAAG,CAACG,OAAO,KAAK,QAAQ,IAAI,MAAM,CAACoB,IAAI,CAACvB,GAAG,CAACG,OAAO,CAAC,EAAE;IAC/DmB,KAAK,GAAGlB,MAAM,CAACoB,cAAc,CAACxB,GAAG,CAAC;IAClC,IACEsB,KAAK,KACJ,CAACG,cAAA,CAAAC,IAAA,CAAcJ,KAAK,EAAE,SAAS,CAAC,IAC/B,CAACG,cAAA,CAAAC,IAAA,CAAcJ,KAAK,EAAE,WAAW,CAAC,IAClC,CAACG,cAAA,CAAAC,IAAA,CAAcJ,KAAK,EAAE,UAAU,CAAC,IACjC,CAACG,cAAA,CAAAC,IAAA,CAAcJ,KAAK,EAAE,OAAO,CAAC,CAAC,EACjC;MACAA,KAAK,GAAG,IAAI;IACd;EACF;EAEA,OAAAlB,MAAA,CAAAC,MAAA,KACKiB,KAAK,EACLtB,GAAG;AAEV;AAEA,SAASE,iBAAiBA,CAACD,KAAsB,EAAEE,OAAe,EAAE;EAClE,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;IAC7B,IAAI,CAAC0B,MAAM,CAACC,SAAS,CAAC3B,KAAK,CAAC,EAAE;MAC5B,MAAM,IAAI4B,KAAK,CAAC,mCAAmC,CAAC;IACtD;IACA5B,KAAK,GAAG,IAAIA,KAAK,QAAQ;EAC3B;EACA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,MAAM,IAAI4B,KAAK,CAAC,mCAAmC,CAAC;EACtD;EAEA,MAAMC,KAAK,GAAGD,KAAK,CAACE,eAAe;EAEnC,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,GAAG,EAAE,EAAE;IAG3CD,KAAK,CAACE,eAAe,GAAG,EAAE;EAC5B;EAEA,IAAIC,GAAG;EACP,IAAI7B,OAAO,CAAC8B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;IAChCD,GAAG,GAAG,IAAIH,KAAK,CACb,yDAAyD1B,OAAO,KAAK,GACnE,iDACJ,CAAC;EACH,CAAC,MAAM;IACL6B,GAAG,GAAG,IAAIH,KAAK,CACb,mBAAmB5B,KAAK,2BAA2BE,OAAO,KAAK,GAC7D,gEAAgE,GAChE,mEAAmE,GACnE,mEAAmE,GACnE,qEAAqE,GACrE,+BACJ,CAAC;EACH;EAEA,IAAI,OAAO2B,KAAK,KAAK,QAAQ,EAAE;IAC7BD,KAAK,CAACE,eAAe,GAAGD,KAAK;EAC/B;EAEA,MAAM1B,MAAM,CAACC,MAAM,CAAC2B,GAAG,EAAE;IACvBE,IAAI,EAAE,2BAA2B;IACjC/B,OAAO;IACPF;EACF,CAAQ,CAAC;AACX","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-plugin-utils/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-plugin-utils/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-plugin-utils/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,5 @@
 {
   "name": "@babel/helper-plugin-utils",
-  "version": "7.25.9",
+  "version": "7.26.5",
   "description": "General utilities for plugins to use",
   "author": "The Babel Team (https://babel.dev/team)",
@@ -19,5 +19,5 @@
   },
   "devDependencies": {
-    "@babel/core": "^7.25.9"
+    "@babel/core": "^7.26.0"
   },
   "type": "commonjs"
Index: imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-remap-async-to-generator
+
+> Helper function to remap async functions to generators
+
+See our website [@babel/helper-remap-async-to-generator](https://babeljs.io/docs/babel-helper-remap-async-to-generator) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-remap-async-to-generator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-remap-async-to-generator
+```
Index: imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,64 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = _default;
+var _helperWrapFunction = require("@babel/helper-wrap-function");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+const {
+  callExpression,
+  cloneNode,
+  isIdentifier,
+  isThisExpression,
+  yieldExpression
+} = _core.types;
+const awaitVisitor = _traverse.visitors.environmentVisitor({
+  ArrowFunctionExpression(path) {
+    path.skip();
+  },
+  AwaitExpression(path, {
+    wrapAwait
+  }) {
+    const argument = path.get("argument");
+    path.replaceWith(yieldExpression(wrapAwait ? callExpression(cloneNode(wrapAwait), [argument.node]) : argument.node));
+  }
+});
+function _default(path, helpers, noNewArrows, ignoreFunctionLength) {
+  path.traverse(awaitVisitor, {
+    wrapAwait: helpers.wrapAwait
+  });
+  const isIIFE = checkIsIIFE(path);
+  path.node.async = false;
+  path.node.generator = true;
+  (0, _helperWrapFunction.default)(path, cloneNode(helpers.wrapAsync), noNewArrows, ignoreFunctionLength);
+  const isProperty = path.isObjectMethod() || path.isClassMethod() || path.parentPath.isObjectProperty() || path.parentPath.isClassProperty();
+  if (!isProperty && !isIIFE && path.isExpression()) {
+    (0, _helperAnnotateAsPure.default)(path);
+  }
+  function checkIsIIFE(path) {
+    if (path.parentPath.isCallExpression({
+      callee: path.node
+    })) {
+      return true;
+    }
+    const {
+      parentPath
+    } = path;
+    if (parentPath.isMemberExpression() && isIdentifier(parentPath.node.property, {
+      name: "bind"
+    })) {
+      const {
+        parentPath: bindCall
+      } = parentPath;
+      return bindCall.isCallExpression() && bindCall.node.arguments.length === 1 && isThisExpression(bindCall.node.arguments[0]) && bindCall.parentPath.isCallExpression({
+        callee: bindCall.node
+      });
+    }
+    return false;
+  }
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperWrapFunction","require","_helperAnnotateAsPure","_core","_traverse","callExpression","cloneNode","isIdentifier","isThisExpression","yieldExpression","t","awaitVisitor","visitors","environmentVisitor","ArrowFunctionExpression","path","skip","AwaitExpression","wrapAwait","argument","get","replaceWith","node","_default","helpers","noNewArrows","ignoreFunctionLength","traverse","isIIFE","checkIsIIFE","async","generator","wrapFunction","wrapAsync","isProperty","isObjectMethod","isClassMethod","parentPath","isObjectProperty","isClassProperty","isExpression","annotateAsPure","isCallExpression","callee","isMemberExpression","property","name","bindCall","arguments","length"],"sources":["../src/index.ts"],"sourcesContent":["/* @noflow */\n\nimport type { NodePath } from \"@babel/core\";\nimport wrapFunction from \"@babel/helper-wrap-function\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { types as t } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nconst {\n  callExpression,\n  cloneNode,\n  isIdentifier,\n  isThisExpression,\n  yieldExpression,\n} = t;\n\nconst awaitVisitor = visitors.environmentVisitor<{ wrapAwait: t.Expression }>({\n  ArrowFunctionExpression(path) {\n    path.skip();\n  },\n\n  AwaitExpression(path, { wrapAwait }) {\n    const argument = path.get(\"argument\");\n\n    path.replaceWith(\n      yieldExpression(\n        wrapAwait\n          ? callExpression(cloneNode(wrapAwait), [argument.node])\n          : argument.node,\n      ),\n    );\n  },\n});\n\nexport default function (\n  path: NodePath<t.Function>,\n  helpers: {\n    wrapAsync: t.Expression;\n    wrapAwait?: t.Expression;\n  },\n  noNewArrows?: boolean,\n  ignoreFunctionLength?: boolean,\n) {\n  path.traverse(awaitVisitor, {\n    wrapAwait: helpers.wrapAwait,\n  });\n\n  const isIIFE = checkIsIIFE(path);\n\n  path.node.async = false;\n  path.node.generator = true;\n\n  wrapFunction(\n    path,\n    cloneNode(helpers.wrapAsync),\n    noNewArrows,\n    ignoreFunctionLength,\n  );\n\n  const isProperty =\n    path.isObjectMethod() ||\n    path.isClassMethod() ||\n    path.parentPath.isObjectProperty() ||\n    path.parentPath.isClassProperty();\n\n  if (!isProperty && !isIIFE && path.isExpression()) {\n    annotateAsPure(path);\n  }\n\n  function checkIsIIFE(path: NodePath) {\n    if (path.parentPath.isCallExpression({ callee: path.node })) {\n      return true;\n    }\n\n    // try to catch calls to Function#bind, as emitted by arrowFunctionToExpression in spec mode\n    // this may also catch .bind(this) written by users, but does it matter? 🤔\n    const { parentPath } = path;\n    if (\n      parentPath.isMemberExpression() &&\n      isIdentifier(parentPath.node.property, { name: \"bind\" })\n    ) {\n      const { parentPath: bindCall } = parentPath;\n\n      // (function () { ... }).bind(this)()\n\n      return (\n        // first, check if the .bind is actually being called\n        bindCall.isCallExpression() &&\n        // and whether its sole argument is 'this'\n        bindCall.node.arguments.length === 1 &&\n        isThisExpression(bindCall.node.arguments[0]) &&\n        // and whether the result of the .bind(this) is being called\n        bindCall.parentPath.isCallExpression({ callee: bindCall.node })\n      );\n    }\n\n    return false;\n  }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,MAAM;EACJI,cAAc;EACdC,SAAS;EACTC,YAAY;EACZC,gBAAgB;EAChBC;AACF,CAAC,GAAGC,WAAC;AAEL,MAAMC,YAAY,GAAGC,kBAAQ,CAACC,kBAAkB,CAA8B;EAC5EC,uBAAuBA,CAACC,IAAI,EAAE;IAC5BA,IAAI,CAACC,IAAI,CAAC,CAAC;EACb,CAAC;EAEDC,eAAeA,CAACF,IAAI,EAAE;IAAEG;EAAU,CAAC,EAAE;IACnC,MAAMC,QAAQ,GAAGJ,IAAI,CAACK,GAAG,CAAC,UAAU,CAAC;IAErCL,IAAI,CAACM,WAAW,CACdZ,eAAe,CACbS,SAAS,GACLb,cAAc,CAACC,SAAS,CAACY,SAAS,CAAC,EAAE,CAACC,QAAQ,CAACG,IAAI,CAAC,CAAC,GACrDH,QAAQ,CAACG,IACf,CACF,CAAC;EACH;AACF,CAAC,CAAC;AAEa,SAAAC,SACbR,IAA0B,EAC1BS,OAGC,EACDC,WAAqB,EACrBC,oBAA8B,EAC9B;EACAX,IAAI,CAACY,QAAQ,CAAChB,YAAY,EAAE;IAC1BO,SAAS,EAAEM,OAAO,CAACN;EACrB,CAAC,CAAC;EAEF,MAAMU,MAAM,GAAGC,WAAW,CAACd,IAAI,CAAC;EAEhCA,IAAI,CAACO,IAAI,CAACQ,KAAK,GAAG,KAAK;EACvBf,IAAI,CAACO,IAAI,CAACS,SAAS,GAAG,IAAI;EAE1B,IAAAC,2BAAY,EACVjB,IAAI,EACJT,SAAS,CAACkB,OAAO,CAACS,SAAS,CAAC,EAC5BR,WAAW,EACXC,oBACF,CAAC;EAED,MAAMQ,UAAU,GACdnB,IAAI,CAACoB,cAAc,CAAC,CAAC,IACrBpB,IAAI,CAACqB,aAAa,CAAC,CAAC,IACpBrB,IAAI,CAACsB,UAAU,CAACC,gBAAgB,CAAC,CAAC,IAClCvB,IAAI,CAACsB,UAAU,CAACE,eAAe,CAAC,CAAC;EAEnC,IAAI,CAACL,UAAU,IAAI,CAACN,MAAM,IAAIb,IAAI,CAACyB,YAAY,CAAC,CAAC,EAAE;IACjD,IAAAC,6BAAc,EAAC1B,IAAI,CAAC;EACtB;EAEA,SAASc,WAAWA,CAACd,IAAc,EAAE;IACnC,IAAIA,IAAI,CAACsB,UAAU,CAACK,gBAAgB,CAAC;MAAEC,MAAM,EAAE5B,IAAI,CAACO;IAAK,CAAC,CAAC,EAAE;MAC3D,OAAO,IAAI;IACb;IAIA,MAAM;MAAEe;IAAW,CAAC,GAAGtB,IAAI;IAC3B,IACEsB,UAAU,CAACO,kBAAkB,CAAC,CAAC,IAC/BrC,YAAY,CAAC8B,UAAU,CAACf,IAAI,CAACuB,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAO,CAAC,CAAC,EACxD;MACA,MAAM;QAAET,UAAU,EAAEU;MAAS,CAAC,GAAGV,UAAU;MAI3C,OAEEU,QAAQ,CAACL,gBAAgB,CAAC,CAAC,IAE3BK,QAAQ,CAACzB,IAAI,CAAC0B,SAAS,CAACC,MAAM,KAAK,CAAC,IACpCzC,gBAAgB,CAACuC,QAAQ,CAACzB,IAAI,CAAC0B,SAAS,CAAC,CAAC,CAAC,CAAC,IAE5CD,QAAQ,CAACV,UAAU,CAACK,gBAAgB,CAAC;QAAEC,MAAM,EAAEI,QAAQ,CAACzB;MAAK,CAAC,CAAC;IAEnE;IAEA,OAAO,KAAK;EACd;AACF","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-remap-async-to-generator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,32 @@
+{
+  "name": "@babel/helper-remap-async-to-generator",
+  "version": "7.25.9",
+  "description": "Helper function to remap async functions to generators",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-remap-async-to-generator"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-remap-async-to-generator",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "@babel/helper-wrap-function": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-replace-supers/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-replace-supers/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-replace-supers/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-replace-supers/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-replace-supers/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-replace-supers/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-replace-supers
+
+> Helper function to replace supers
+
+See our website [@babel/helper-replace-supers](https://babeljs.io/docs/babel-helper-replace-supers) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-replace-supers
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-replace-supers
+```
Index: imaps-frontend/node_modules/@babel/helper-replace-supers/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-replace-supers/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-replace-supers/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,305 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperMemberExpressionToFunctions = require("@babel/helper-member-expression-to-functions");
+var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+const {
+  assignmentExpression,
+  callExpression,
+  cloneNode,
+  identifier,
+  memberExpression,
+  sequenceExpression,
+  stringLiteral,
+  thisExpression
+} = _core.types;
+{
+  exports.environmentVisitor = _traverse.visitors.environmentVisitor({});
+  exports.skipAllButComputedKey = function skipAllButComputedKey(path) {
+    path.skip();
+    if (path.node.computed) {
+      path.context.maybeQueue(path.get("key"));
+    }
+  };
+}
+const visitor = _traverse.visitors.environmentVisitor({
+  Super(path, state) {
+    const {
+      node,
+      parentPath
+    } = path;
+    if (!parentPath.isMemberExpression({
+      object: node
+    })) return;
+    state.handle(parentPath);
+  }
+});
+const unshadowSuperBindingVisitor = _traverse.visitors.environmentVisitor({
+  Scopable(path, {
+    refName
+  }) {
+    const binding = path.scope.getOwnBinding(refName);
+    if (binding && binding.identifier.name === refName) {
+      path.scope.rename(refName);
+    }
+  }
+});
+const specHandlers = {
+  memoise(superMember, count) {
+    const {
+      scope,
+      node
+    } = superMember;
+    const {
+      computed,
+      property
+    } = node;
+    if (!computed) {
+      return;
+    }
+    const memo = scope.maybeGenerateMemoised(property);
+    if (!memo) {
+      return;
+    }
+    this.memoiser.set(property, memo, count);
+  },
+  prop(superMember) {
+    const {
+      computed,
+      property
+    } = superMember.node;
+    if (this.memoiser.has(property)) {
+      return cloneNode(this.memoiser.get(property));
+    }
+    if (computed) {
+      return cloneNode(property);
+    }
+    return stringLiteral(property.name);
+  },
+  _getPrototypeOfExpression() {
+    const objectRef = cloneNode(this.getObjectRef());
+    const targetRef = this.isStatic || this.isPrivateMethod ? objectRef : memberExpression(objectRef, identifier("prototype"));
+    return callExpression(this.file.addHelper("getPrototypeOf"), [targetRef]);
+  },
+  get(superMember) {
+    const objectRef = cloneNode(this.getObjectRef());
+    return callExpression(this.file.addHelper("superPropGet"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), objectRef]) : objectRef, this.prop(superMember), thisExpression(), ...(this.isStatic || this.isPrivateMethod ? [] : [_core.types.numericLiteral(1)])]);
+  },
+  _call(superMember, args, optional) {
+    const objectRef = cloneNode(this.getObjectRef());
+    let argsNode;
+    if (args.length === 1 && _core.types.isSpreadElement(args[0]) && (_core.types.isIdentifier(args[0].argument) || _core.types.isArrayExpression(args[0].argument))) {
+      argsNode = args[0].argument;
+    } else {
+      argsNode = _core.types.arrayExpression(args);
+    }
+    const call = _core.types.callExpression(this.file.addHelper("superPropGet"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), objectRef]) : objectRef, this.prop(superMember), thisExpression(), _core.types.numericLiteral(2 | (this.isStatic || this.isPrivateMethod ? 0 : 1))]);
+    if (optional) {
+      return _core.types.optionalCallExpression(call, [argsNode], true);
+    }
+    return callExpression(call, [argsNode]);
+  },
+  set(superMember, value) {
+    const objectRef = cloneNode(this.getObjectRef());
+    return callExpression(this.file.addHelper("superPropSet"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), objectRef]) : objectRef, this.prop(superMember), value, thisExpression(), _core.types.numericLiteral(superMember.isInStrictMode() ? 1 : 0), ...(this.isStatic || this.isPrivateMethod ? [] : [_core.types.numericLiteral(1)])]);
+  },
+  destructureSet(superMember) {
+    throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`);
+  },
+  call(superMember, args) {
+    return this._call(superMember, args, false);
+  },
+  optionalCall(superMember, args) {
+    return this._call(superMember, args, true);
+  },
+  delete(superMember) {
+    if (superMember.node.computed) {
+      return sequenceExpression([callExpression(this.file.addHelper("toPropertyKey"), [cloneNode(superMember.node.property)]), _core.template.expression.ast`
+          function () { throw new ReferenceError("'delete super[expr]' is invalid"); }()
+        `]);
+    } else {
+      return _core.template.expression.ast`
+        function () { throw new ReferenceError("'delete super.prop' is invalid"); }()
+      `;
+    }
+  }
+};
+const specHandlers_old = {
+  memoise(superMember, count) {
+    const {
+      scope,
+      node
+    } = superMember;
+    const {
+      computed,
+      property
+    } = node;
+    if (!computed) {
+      return;
+    }
+    const memo = scope.maybeGenerateMemoised(property);
+    if (!memo) {
+      return;
+    }
+    this.memoiser.set(property, memo, count);
+  },
+  prop(superMember) {
+    const {
+      computed,
+      property
+    } = superMember.node;
+    if (this.memoiser.has(property)) {
+      return cloneNode(this.memoiser.get(property));
+    }
+    if (computed) {
+      return cloneNode(property);
+    }
+    return stringLiteral(property.name);
+  },
+  _getPrototypeOfExpression() {
+    const objectRef = cloneNode(this.getObjectRef());
+    const targetRef = this.isStatic || this.isPrivateMethod ? objectRef : memberExpression(objectRef, identifier("prototype"));
+    return callExpression(this.file.addHelper("getPrototypeOf"), [targetRef]);
+  },
+  get(superMember) {
+    return this._get(superMember);
+  },
+  _get(superMember) {
+    const proto = this._getPrototypeOfExpression();
+    return callExpression(this.file.addHelper("get"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), proto]) : proto, this.prop(superMember), thisExpression()]);
+  },
+  set(superMember, value) {
+    const proto = this._getPrototypeOfExpression();
+    return callExpression(this.file.addHelper("set"), [this.isDerivedConstructor ? sequenceExpression([thisExpression(), proto]) : proto, this.prop(superMember), value, thisExpression(), _core.types.booleanLiteral(superMember.isInStrictMode())]);
+  },
+  destructureSet(superMember) {
+    throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`);
+  },
+  call(superMember, args) {
+    return (0, _helperOptimiseCallExpression.default)(this._get(superMember), thisExpression(), args, false);
+  },
+  optionalCall(superMember, args) {
+    return (0, _helperOptimiseCallExpression.default)(this._get(superMember), cloneNode(thisExpression()), args, true);
+  },
+  delete(superMember) {
+    if (superMember.node.computed) {
+      return sequenceExpression([callExpression(this.file.addHelper("toPropertyKey"), [cloneNode(superMember.node.property)]), _core.template.expression.ast`
+          function () { throw new ReferenceError("'delete super[expr]' is invalid"); }()
+        `]);
+    } else {
+      return _core.template.expression.ast`
+        function () { throw new ReferenceError("'delete super.prop' is invalid"); }()
+      `;
+    }
+  }
+};
+const looseHandlers = Object.assign({}, specHandlers, {
+  prop(superMember) {
+    const {
+      property
+    } = superMember.node;
+    if (this.memoiser.has(property)) {
+      return cloneNode(this.memoiser.get(property));
+    }
+    return cloneNode(property);
+  },
+  get(superMember) {
+    const {
+      isStatic,
+      getSuperRef
+    } = this;
+    const {
+      computed
+    } = superMember.node;
+    const prop = this.prop(superMember);
+    let object;
+    if (isStatic) {
+      var _getSuperRef;
+      object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : memberExpression(identifier("Function"), identifier("prototype"));
+    } else {
+      var _getSuperRef2;
+      object = memberExpression((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : identifier("Object"), identifier("prototype"));
+    }
+    return memberExpression(object, prop, computed);
+  },
+  set(superMember, value) {
+    const {
+      computed
+    } = superMember.node;
+    const prop = this.prop(superMember);
+    return assignmentExpression("=", memberExpression(thisExpression(), prop, computed), value);
+  },
+  destructureSet(superMember) {
+    const {
+      computed
+    } = superMember.node;
+    const prop = this.prop(superMember);
+    return memberExpression(thisExpression(), prop, computed);
+  },
+  call(superMember, args) {
+    return (0, _helperOptimiseCallExpression.default)(this.get(superMember), thisExpression(), args, false);
+  },
+  optionalCall(superMember, args) {
+    return (0, _helperOptimiseCallExpression.default)(this.get(superMember), thisExpression(), args, true);
+  }
+});
+class ReplaceSupers {
+  constructor(opts) {
+    var _opts$constantSuper;
+    const path = opts.methodPath;
+    this.methodPath = path;
+    this.isDerivedConstructor = path.isClassMethod({
+      kind: "constructor"
+    }) && !!opts.superRef;
+    this.isStatic = path.isObjectMethod() || path.node.static || (path.isStaticBlock == null ? void 0 : path.isStaticBlock());
+    this.isPrivateMethod = path.isPrivate() && path.isMethod();
+    this.file = opts.file;
+    this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose;
+    this.opts = opts;
+  }
+  getObjectRef() {
+    return cloneNode(this.opts.objectRef || this.opts.getObjectRef());
+  }
+  getSuperRef() {
+    if (this.opts.superRef) return cloneNode(this.opts.superRef);
+    if (this.opts.getSuperRef) {
+      return cloneNode(this.opts.getSuperRef());
+    }
+  }
+  replace() {
+    const {
+      methodPath
+    } = this;
+    if (this.opts.refToPreserve) {
+      methodPath.traverse(unshadowSuperBindingVisitor, {
+        refName: this.opts.refToPreserve.name
+      });
+    }
+    const handler = this.constantSuper ? looseHandlers : this.file.availableHelper("superPropSet") ? specHandlers : specHandlers_old;
+    visitor.shouldSkip = path => {
+      if (path.parentPath === methodPath) {
+        if (path.parentKey === "decorators" || path.parentKey === "key") {
+          return true;
+        }
+      }
+    };
+    (0, _helperMemberExpressionToFunctions.default)(methodPath, visitor, Object.assign({
+      file: this.file,
+      scope: this.methodPath.scope,
+      isDerivedConstructor: this.isDerivedConstructor,
+      isStatic: this.isStatic,
+      isPrivateMethod: this.isPrivateMethod,
+      getObjectRef: this.getObjectRef.bind(this),
+      getSuperRef: this.getSuperRef.bind(this),
+      boundGet: handler.get
+    }, handler));
+  }
+}
+exports.default = ReplaceSupers;
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-replace-supers/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-replace-supers/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-replace-supers/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperMemberExpressionToFunctions","require","_helperOptimiseCallExpression","_core","_traverse","assignmentExpression","callExpression","cloneNode","identifier","memberExpression","sequenceExpression","stringLiteral","thisExpression","t","exports","environmentVisitor","visitors","skipAllButComputedKey","path","skip","node","computed","context","maybeQueue","get","visitor","Super","state","parentPath","isMemberExpression","object","handle","unshadowSuperBindingVisitor","Scopable","refName","binding","scope","getOwnBinding","name","rename","specHandlers","memoise","superMember","count","property","memo","maybeGenerateMemoised","memoiser","set","prop","has","_getPrototypeOfExpression","objectRef","getObjectRef","targetRef","isStatic","isPrivateMethod","file","addHelper","isDerivedConstructor","numericLiteral","_call","args","optional","argsNode","length","isSpreadElement","isIdentifier","argument","isArrayExpression","arrayExpression","call","optionalCallExpression","value","isInStrictMode","destructureSet","buildCodeFrameError","optionalCall","delete","template","expression","ast","specHandlers_old","_get","proto","booleanLiteral","optimiseCall","looseHandlers","Object","assign","getSuperRef","_getSuperRef","_getSuperRef2","ReplaceSupers","constructor","opts","_opts$constantSuper","methodPath","isClassMethod","kind","superRef","isObjectMethod","static","isStaticBlock","isPrivate","isMethod","constantSuper","isLoose","replace","refToPreserve","traverse","handler","availableHelper","shouldSkip","parentKey","memberExpressionToFunctions","bind","boundGet","default"],"sources":["../src/index.ts"],"sourcesContent":["import type { File, NodePath, Scope } from \"@babel/core\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type { HandlerState } from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport { template, types as t } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nconst {\n  assignmentExpression,\n  callExpression,\n  cloneNode,\n  identifier,\n  memberExpression,\n  sequenceExpression,\n  stringLiteral,\n  thisExpression,\n} = t;\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.environmentVisitor = visitors.environmentVisitor({});\n  // eslint-disable-next-line no-restricted-globals\n  exports.skipAllButComputedKey = function skipAllButComputedKey(\n    path: NodePath<t.Method | t.ClassProperty>,\n  ) {\n    path.skip();\n    if (path.node.computed) {\n      path.context.maybeQueue(path.get(\"key\"));\n    }\n  };\n}\n\nconst visitor = visitors.environmentVisitor<\n  HandlerState<ReplaceState> & ReplaceState\n>({\n  Super(path, state) {\n    const { node, parentPath } = path;\n    if (!parentPath.isMemberExpression({ object: node })) return;\n    state.handle(parentPath);\n  },\n});\n\nconst unshadowSuperBindingVisitor = visitors.environmentVisitor<{\n  refName: string;\n}>({\n  Scopable(path, { refName }) {\n    // https://github.com/Zzzen/babel/pull/1#pullrequestreview-564833183\n    const binding = path.scope.getOwnBinding(refName);\n    if (binding && binding.identifier.name === refName) {\n      path.scope.rename(refName);\n    }\n  },\n});\n\ntype SharedState = {\n  file: File;\n  scope: Scope;\n  isDerivedConstructor: boolean;\n  isStatic: boolean;\n  isPrivateMethod: boolean;\n  getObjectRef: () => t.Identifier;\n  getSuperRef: () => t.Identifier;\n  // we dont need boundGet here, but memberExpressionToFunctions handler needs it.\n  boundGet: HandlerState[\"get\"];\n};\n\ntype Handler = HandlerState<SharedState> & SharedState;\ntype SuperMember = NodePath<\n  t.MemberExpression & {\n    object: t.Super;\n    property: Exclude<t.MemberExpression[\"property\"], t.PrivateName>;\n  }\n>;\n\nconst enum Flags {\n  Prototype = 0b1,\n  Call = 0b10,\n}\n\ninterface SpecHandler\n  extends Pick<\n    Handler,\n    | \"memoise\"\n    | \"get\"\n    | \"set\"\n    | \"destructureSet\"\n    | \"call\"\n    | \"optionalCall\"\n    | \"delete\"\n  > {\n  _get?(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n  ): t.CallExpression;\n  _call?(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n    optional: boolean,\n  ): t.CallExpression | t.OptionalCallExpression;\n  _getPrototypeOfExpression(this: Handler & SpecHandler): t.CallExpression;\n  prop(this: Handler & SpecHandler, superMember: SuperMember): t.Expression;\n}\n\nconst specHandlers: SpecHandler = {\n  memoise(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    count: number,\n  ) {\n    const { scope, node } = superMember;\n    const { computed, property } = node;\n    if (!computed) {\n      return;\n    }\n\n    const memo = scope.maybeGenerateMemoised(property);\n    if (!memo) {\n      return;\n    }\n\n    this.memoiser.set(property, memo, count);\n  },\n\n  prop(this: Handler & SpecHandler, superMember: SuperMember) {\n    const { computed, property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    if (computed) {\n      return cloneNode(property);\n    }\n\n    return stringLiteral((property as t.Identifier).name);\n  },\n\n  /**\n   * Creates an expression which result is the proto of objectRef.\n   *\n   * @example <caption>isStatic === true</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS)\n   *\n   * @example <caption>isStatic === false</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS.prototype)\n   */\n  _getPrototypeOfExpression(this: Handler & SpecHandler) {\n    const objectRef = cloneNode(this.getObjectRef());\n    const targetRef =\n      this.isStatic || this.isPrivateMethod\n        ? objectRef\n        : memberExpression(objectRef, identifier(\"prototype\"));\n\n    return callExpression(this.file.addHelper(\"getPrototypeOf\"), [targetRef]);\n  },\n\n  get(this: Handler & SpecHandler, superMember: SuperMember) {\n    const objectRef = cloneNode(this.getObjectRef());\n    return callExpression(this.file.addHelper(\"superPropGet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      thisExpression(),\n      ...(this.isStatic || this.isPrivateMethod\n        ? []\n        : [t.numericLiteral(Flags.Prototype)]),\n    ]);\n  },\n\n  _call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n    optional: boolean,\n  ): t.CallExpression | t.OptionalCallExpression {\n    const objectRef = cloneNode(this.getObjectRef());\n    let argsNode: t.ArrayExpression | t.Identifier;\n    if (\n      args.length === 1 &&\n      t.isSpreadElement(args[0]) &&\n      (t.isIdentifier(args[0].argument) ||\n        t.isArrayExpression(args[0].argument))\n    ) {\n      argsNode = args[0].argument;\n    } else {\n      argsNode = t.arrayExpression(args as t.Expression[]);\n    }\n\n    const call = t.callExpression(this.file.addHelper(\"superPropGet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      thisExpression(),\n      t.numericLiteral(\n        Flags.Call |\n          (this.isStatic || this.isPrivateMethod ? 0 : Flags.Prototype),\n      ),\n    ]);\n    if (optional) {\n      return t.optionalCallExpression(call, [argsNode], true);\n    }\n    return callExpression(call, [argsNode]);\n  },\n\n  set(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const objectRef = cloneNode(this.getObjectRef());\n\n    return callExpression(this.file.addHelper(\"superPropSet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      value,\n      thisExpression(),\n      t.numericLiteral(superMember.isInStrictMode() ? 1 : 0),\n      ...(this.isStatic || this.isPrivateMethod ? [] : [t.numericLiteral(1)]),\n    ]);\n  },\n\n  destructureSet(this: Handler & SpecHandler, superMember: SuperMember) {\n    throw superMember.buildCodeFrameError(\n      `Destructuring to a super field is not supported yet.`,\n    );\n  },\n\n  call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return this._call(superMember, args, false);\n  },\n\n  optionalCall(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return this._call(superMember, args, true);\n  },\n\n  delete(this: Handler & SpecHandler, superMember: SuperMember) {\n    if (superMember.node.computed) {\n      return sequenceExpression([\n        callExpression(this.file.addHelper(\"toPropertyKey\"), [\n          cloneNode(superMember.node.property),\n        ]),\n        template.expression.ast`\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        `,\n      ]);\n    } else {\n      return template.expression.ast`\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      `;\n    }\n  },\n};\n\nconst specHandlers_old: SpecHandler = {\n  memoise(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    count: number,\n  ) {\n    const { scope, node } = superMember;\n    const { computed, property } = node;\n    if (!computed) {\n      return;\n    }\n\n    const memo = scope.maybeGenerateMemoised(property);\n    if (!memo) {\n      return;\n    }\n\n    this.memoiser.set(property, memo, count);\n  },\n\n  prop(this: Handler & SpecHandler, superMember: SuperMember) {\n    const { computed, property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    if (computed) {\n      return cloneNode(property);\n    }\n\n    return stringLiteral((property as t.Identifier).name);\n  },\n\n  /**\n   * Creates an expression which result is the proto of objectRef.\n   *\n   * @example <caption>isStatic === true</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS)\n   *\n   * @example <caption>isStatic === false</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS.prototype)\n   */\n  _getPrototypeOfExpression(this: Handler & SpecHandler) {\n    const objectRef = cloneNode(this.getObjectRef());\n    const targetRef =\n      this.isStatic || this.isPrivateMethod\n        ? objectRef\n        : memberExpression(objectRef, identifier(\"prototype\"));\n\n    return callExpression(this.file.addHelper(\"getPrototypeOf\"), [targetRef]);\n  },\n\n  get(this: Handler & SpecHandler, superMember: SuperMember) {\n    return this._get(superMember);\n  },\n\n  _get(this: Handler & SpecHandler, superMember: SuperMember) {\n    const proto = this._getPrototypeOfExpression();\n    return callExpression(this.file.addHelper(\"get\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), proto])\n        : proto,\n      this.prop(superMember),\n      thisExpression(),\n    ]);\n  },\n\n  set(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const proto = this._getPrototypeOfExpression();\n\n    return callExpression(this.file.addHelper(\"set\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), proto])\n        : proto,\n      this.prop(superMember),\n      value,\n      thisExpression(),\n      t.booleanLiteral(superMember.isInStrictMode()),\n    ]);\n  },\n\n  destructureSet(this: Handler & SpecHandler, superMember: SuperMember) {\n    throw superMember.buildCodeFrameError(\n      `Destructuring to a super field is not supported yet.`,\n    );\n  },\n\n  call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this._get(superMember), thisExpression(), args, false);\n  },\n\n  optionalCall(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(\n      this._get(superMember),\n      cloneNode(thisExpression()),\n      args,\n      true,\n    );\n  },\n\n  delete(this: Handler & SpecHandler, superMember: SuperMember) {\n    if (superMember.node.computed) {\n      return sequenceExpression([\n        callExpression(this.file.addHelper(\"toPropertyKey\"), [\n          cloneNode(superMember.node.property),\n        ]),\n        template.expression.ast`\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        `,\n      ]);\n    } else {\n      return template.expression.ast`\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      `;\n    }\n  },\n};\n\nconst looseHandlers = {\n  ...specHandlers,\n\n  prop(this: Handler & typeof specHandlers, superMember: SuperMember) {\n    const { property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    return cloneNode(property);\n  },\n\n  get(this: Handler & typeof specHandlers, superMember: SuperMember) {\n    const { isStatic, getSuperRef } = this;\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    let object;\n    if (isStatic) {\n      object =\n        getSuperRef() ??\n        memberExpression(identifier(\"Function\"), identifier(\"prototype\"));\n    } else {\n      object = memberExpression(\n        getSuperRef() ?? identifier(\"Object\"),\n        identifier(\"prototype\"),\n      );\n    }\n\n    return memberExpression(object, prop, computed);\n  },\n\n  set(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    return assignmentExpression(\n      \"=\",\n      memberExpression(thisExpression(), prop, computed),\n      value,\n    );\n  },\n\n  destructureSet(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n  ) {\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    return memberExpression(thisExpression(), prop, computed);\n  },\n\n  call(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this.get(superMember), thisExpression(), args, false);\n  },\n\n  optionalCall(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this.get(superMember), thisExpression(), args, true);\n  },\n};\n\ntype ReplaceSupersOptionsBase = {\n  methodPath: NodePath<\n    | t.ClassMethod\n    | t.ClassProperty\n    | t.ObjectMethod\n    | t.ClassPrivateMethod\n    | t.ClassPrivateProperty\n    | t.StaticBlock\n  >;\n  constantSuper?: boolean;\n  file: File;\n  // objectRef might have been shadowed in child scopes,\n  // in that case, we need to rename related variables.\n  refToPreserve?: t.Identifier;\n};\n\ntype ReplaceSupersOptions = ReplaceSupersOptionsBase &\n  (\n    | { objectRef?: undefined; getObjectRef: () => t.Node }\n    | { objectRef: t.Node; getObjectRef?: undefined }\n  ) &\n  (\n    | { superRef?: undefined; getSuperRef: () => t.Node }\n    | { superRef: t.Node; getSuperRef?: undefined }\n  );\n\ninterface ReplaceState {\n  file: File;\n  scope: Scope;\n  isDerivedConstructor: boolean;\n  isStatic: boolean;\n  isPrivateMethod: boolean;\n  getObjectRef: ReplaceSupers[\"getObjectRef\"];\n  getSuperRef: ReplaceSupers[\"getSuperRef\"];\n}\n\nexport default class ReplaceSupers {\n  constructor(opts: ReplaceSupersOptions) {\n    const path = opts.methodPath;\n\n    this.methodPath = path;\n    this.isDerivedConstructor =\n      path.isClassMethod({ kind: \"constructor\" }) && !!opts.superRef;\n    this.isStatic =\n      path.isObjectMethod() ||\n      // @ts-expect-error static is not in ClassPrivateMethod\n      path.node.static ||\n      path.isStaticBlock?.();\n    this.isPrivateMethod = path.isPrivate() && path.isMethod();\n\n    this.file = opts.file;\n    this.constantSuper = process.env.BABEL_8_BREAKING\n      ? opts.constantSuper\n      : // Fallback to isLoose for backward compatibility\n        (opts.constantSuper ?? (opts as any).isLoose);\n    this.opts = opts;\n  }\n\n  declare file: File;\n  declare isDerivedConstructor: boolean;\n  declare constantSuper: boolean;\n  declare isPrivateMethod: boolean;\n  declare isStatic: boolean;\n  declare methodPath: NodePath;\n  declare opts: ReplaceSupersOptions;\n\n  getObjectRef() {\n    return cloneNode(this.opts.objectRef || this.opts.getObjectRef());\n  }\n\n  getSuperRef() {\n    if (this.opts.superRef) return cloneNode(this.opts.superRef);\n    if (this.opts.getSuperRef) {\n      return cloneNode(this.opts.getSuperRef());\n    }\n  }\n\n  replace() {\n    const { methodPath } = this;\n    // https://github.com/babel/babel/issues/11994\n    if (this.opts.refToPreserve) {\n      methodPath.traverse(unshadowSuperBindingVisitor, {\n        refName: this.opts.refToPreserve.name,\n      });\n    }\n\n    const handler = this.constantSuper\n      ? looseHandlers\n      : process.env.BABEL_8_BREAKING ||\n          this.file.availableHelper(\"superPropSet\")\n        ? specHandlers\n        : specHandlers_old;\n\n    // todo: this should have been handled by the environmentVisitor,\n    // consider add visitSelf support for the path.traverse\n    // @ts-expect-error: Refine typings in packages/babel-traverse/src/types.ts\n    // shouldSkip is accepted in traverseNode\n    visitor.shouldSkip = (path: NodePath) => {\n      if (path.parentPath === methodPath) {\n        if (path.parentKey === \"decorators\" || path.parentKey === \"key\") {\n          return true;\n        }\n      }\n    };\n\n    memberExpressionToFunctions<ReplaceState>(methodPath, visitor, {\n      file: this.file,\n      scope: this.methodPath.scope,\n      isDerivedConstructor: this.isDerivedConstructor,\n      isStatic: this.isStatic,\n      isPrivateMethod: this.isPrivateMethod,\n      getObjectRef: this.getObjectRef.bind(this),\n      getSuperRef: this.getSuperRef.bind(this),\n      // we dont need boundGet here, but memberExpressionToFunctions handler needs it.\n      boundGet: handler.get,\n      ...handler,\n    });\n  }\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-replace-supers/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-replace-supers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-replace-supers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,32 @@
+{
+  "name": "@babel/helper-replace-supers",
+  "version": "7.26.5",
+  "description": "Helper function to replace supers",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-replace-supers"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-replace-supers",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-member-expression-to-functions": "^7.25.9",
+    "@babel/helper-optimise-call-expression": "^7.25.9",
+    "@babel/traverse": "^7.26.5"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-skip-transparent-expression-wrappers
+
+> Helper which skips types and parentheses
+
+See our website [@babel/helper-skip-transparent-expression-wrappers](https://babeljs.io/docs/babel-helper-skip-transparent-expression-wrappers) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-skip-transparent-expression-wrappers
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-skip-transparent-expression-wrappers
+```
Index: imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.isTransparentExprWrapper = isTransparentExprWrapper;
+exports.skipTransparentExprWrapperNodes = skipTransparentExprWrapperNodes;
+exports.skipTransparentExprWrappers = skipTransparentExprWrappers;
+var _t = require("@babel/types");
+const {
+  isParenthesizedExpression,
+  isTSAsExpression,
+  isTSNonNullExpression,
+  isTSSatisfiesExpression,
+  isTSTypeAssertion,
+  isTypeCastExpression
+} = _t;
+function isTransparentExprWrapper(node) {
+  return isTSAsExpression(node) || isTSSatisfiesExpression(node) || isTSTypeAssertion(node) || isTSNonNullExpression(node) || isTypeCastExpression(node) || isParenthesizedExpression(node);
+}
+function skipTransparentExprWrappers(path) {
+  while (isTransparentExprWrapper(path.node)) {
+    path = path.get("expression");
+  }
+  return path;
+}
+function skipTransparentExprWrapperNodes(node) {
+  while (isTransparentExprWrapper(node)) {
+    node = node.expression;
+  }
+  return node;
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_t","require","isParenthesizedExpression","isTSAsExpression","isTSNonNullExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTypeCastExpression","isTransparentExprWrapper","node","skipTransparentExprWrappers","path","get","skipTransparentExprWrapperNodes","expression"],"sources":["../src/index.ts"],"sourcesContent":["import {\n  isParenthesizedExpression,\n  isTSAsExpression,\n  isTSNonNullExpression,\n  isTSSatisfiesExpression,\n  isTSTypeAssertion,\n  isTypeCastExpression,\n} from \"@babel/types\";\n\nimport type * as t from \"@babel/types\";\nimport type { NodePath } from \"@babel/traverse\";\n\nexport type TransparentExprWrapper =\n  | t.TSAsExpression\n  | t.TSSatisfiesExpression\n  | t.TSTypeAssertion\n  | t.TSNonNullExpression\n  | t.TypeCastExpression\n  | t.ParenthesizedExpression;\n\n// A transparent expression wrapper is an AST node that most plugins will wish\n// to skip, as its presence does not affect the behaviour of the code. This\n// includes expressions used for types, and extra parenthesis. For example, in\n// (a as any)(), this helper can be used to skip the TSAsExpression when\n// determining the callee.\nexport function isTransparentExprWrapper(\n  node: t.Node,\n): node is TransparentExprWrapper {\n  return (\n    isTSAsExpression(node) ||\n    isTSSatisfiesExpression(node) ||\n    isTSTypeAssertion(node) ||\n    isTSNonNullExpression(node) ||\n    isTypeCastExpression(node) ||\n    isParenthesizedExpression(node)\n  );\n}\n\nexport function skipTransparentExprWrappers(\n  path: NodePath<t.Expression>,\n): NodePath<t.Expression> {\n  while (isTransparentExprWrapper(path.node)) {\n    path = path.get(\"expression\");\n  }\n  return path;\n}\n\nexport function skipTransparentExprWrapperNodes(\n  node: t.Expression | t.Super,\n): t.Expression | t.Super {\n  while (isTransparentExprWrapper(node)) {\n    node = node.expression;\n  }\n  return node;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,EAAA,GAAAC,OAAA;AAOsB;EANpBC,yBAAyB;EACzBC,gBAAgB;EAChBC,qBAAqB;EACrBC,uBAAuB;EACvBC,iBAAiB;EACjBC;AAAoB,IAAAP,EAAA;AAmBf,SAASQ,wBAAwBA,CACtCC,IAAY,EACoB;EAChC,OACEN,gBAAgB,CAACM,IAAI,CAAC,IACtBJ,uBAAuB,CAACI,IAAI,CAAC,IAC7BH,iBAAiB,CAACG,IAAI,CAAC,IACvBL,qBAAqB,CAACK,IAAI,CAAC,IAC3BF,oBAAoB,CAACE,IAAI,CAAC,IAC1BP,yBAAyB,CAACO,IAAI,CAAC;AAEnC;AAEO,SAASC,2BAA2BA,CACzCC,IAA4B,EACJ;EACxB,OAAOH,wBAAwB,CAACG,IAAI,CAACF,IAAI,CAAC,EAAE;IAC1CE,IAAI,GAAGA,IAAI,CAACC,GAAG,CAAC,YAAY,CAAC;EAC/B;EACA,OAAOD,IAAI;AACb;AAEO,SAASE,+BAA+BA,CAC7CJ,IAA4B,EACJ;EACxB,OAAOD,wBAAwB,CAACC,IAAI,CAAC,EAAE;IACrCA,IAAI,GAAGA,IAAI,CAACK,UAAU;EACxB;EACA,OAAOL,IAAI;AACb","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-skip-transparent-expression-wrappers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,31 @@
+{
+  "name": "@babel/helper-skip-transparent-expression-wrappers",
+  "version": "7.25.9",
+  "description": "Helper which skips types and parentheses",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-skip-transparent-expression-wrappers"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "dependencies": {
+    "@babel/traverse": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helper-string-parser/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-string-parser/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-string-parser/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,17 +1,37 @@
 {
-  "name": "@babel/helper-string-parser",
-  "version": "7.25.9",
+  "_from": "@babel/helper-string-parser@^7.25.9",
+  "_id": "@babel/helper-string-parser@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+  "_location": "/@babel/helper-string-parser",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helper-string-parser@^7.25.9",
+    "name": "@babel/helper-string-parser",
+    "escapedName": "@babel%2fhelper-string-parser",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
+  },
+  "_requiredBy": [
+    "/@babel/types"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+  "_shasum": "1aabb72ee72ed35789b4bbcad3ca2862ce614e8c",
+  "_spec": "@babel/helper-string-parser@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/types",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "A utility package to parse strings",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-string-parser"
-  },
-  "homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "./lib/index.js",
   "devDependencies": {
     "charcodes": "^0.2.0"
@@ -20,5 +40,4 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)",
   "exports": {
     ".": {
@@ -28,4 +47,17 @@
     "./package.json": "./package.json"
   },
-  "type": "commonjs"
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-string-parser",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-string-parser"
+  },
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/helper-validator-identifier/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-validator-identifier/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-validator-identifier/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,16 +1,46 @@
 {
-  "name": "@babel/helper-validator-identifier",
-  "version": "7.25.9",
+  "_from": "@babel/helper-validator-identifier@^7.25.9",
+  "_id": "@babel/helper-validator-identifier@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+  "_location": "/@babel/helper-validator-identifier",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helper-validator-identifier@^7.25.9",
+    "name": "@babel/helper-validator-identifier",
+    "escapedName": "@babel%2fhelper-validator-identifier",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
+  },
+  "_requiredBy": [
+    "/@babel/code-frame",
+    "/@babel/helper-module-transforms",
+    "/@babel/types"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+  "_shasum": "24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7",
+  "_spec": "@babel/helper-validator-identifier@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/code-frame",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "Validate identifier/keywords name",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-validator-identifier"
+  "devDependencies": {
+    "@unicode/unicode-16.0.0": "^1.0.0",
+    "charcodes": "^0.2.0"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "engines": {
+    "node": ">=6.9.0"
   },
-  "main": "./lib/index.js",
   "exports": {
     ".": {
@@ -20,12 +50,17 @@
     "./package.json": "./package.json"
   },
-  "devDependencies": {
-    "@unicode/unicode-16.0.0": "^1.0.0",
-    "charcodes": "^0.2.0"
+  "homepage": "https://github.com/babel/babel#readme",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-validator-identifier",
+  "publishConfig": {
+    "access": "public"
   },
-  "engines": {
-    "node": ">=6.9.0"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-validator-identifier"
   },
-  "author": "The Babel Team (https://babel.dev/team)",
-  "type": "commonjs"
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/helper-validator-option/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-validator-option/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helper-validator-option/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,16 +1,40 @@
 {
-  "name": "@babel/helper-validator-option",
-  "version": "7.25.9",
+  "_from": "@babel/helper-validator-option@^7.25.9",
+  "_id": "@babel/helper-validator-option@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+  "_location": "/@babel/helper-validator-option",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helper-validator-option@^7.25.9",
+    "name": "@babel/helper-validator-option",
+    "escapedName": "@babel%2fhelper-validator-option",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
+  },
+  "_requiredBy": [
+    "/@babel/helper-compilation-targets"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+  "_shasum": "86e45bd8a49ab7e03f276577f96179653d41da72",
+  "_spec": "@babel/helper-validator-option@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/helper-compilation-targets",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
   "description": "Validate plugin/preset options",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helper-validator-option"
+  "engines": {
+    "node": ">=6.9.0"
   },
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
-  },
-  "main": "./lib/index.js",
   "exports": {
     ".": {
@@ -20,8 +44,17 @@
     "./package.json": "./package.json"
   },
-  "engines": {
-    "node": ">=6.9.0"
+  "homepage": "https://github.com/babel/babel#readme",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helper-validator-option",
+  "publishConfig": {
+    "access": "public"
   },
-  "author": "The Babel Team (https://babel.dev/team)",
-  "type": "commonjs"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-validator-option"
+  },
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/helper-wrap-function/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/helper-wrap-function/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-wrap-function/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/helper-wrap-function/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/helper-wrap-function/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-wrap-function/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/helper-wrap-function
+
+> Helper to wrap functions inside a function call.
+
+See our website [@babel/helper-wrap-function](https://babeljs.io/docs/babel-helper-wrap-function) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/helper-wrap-function
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-wrap-function
+```
Index: imaps-frontend/node_modules/@babel/helper-wrap-function/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/helper-wrap-function/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-wrap-function/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,121 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = wrapFunction;
+var _template = require("@babel/template");
+var _t = require("@babel/types");
+const {
+  blockStatement,
+  callExpression,
+  functionExpression,
+  isAssignmentPattern,
+  isFunctionDeclaration,
+  isRestElement,
+  returnStatement,
+  isCallExpression
+} = _t;
+const buildAnonymousExpressionWrapper = _template.default.expression(`
+  (function () {
+    var REF = FUNCTION;
+    return function NAME(PARAMS) {
+      return REF.apply(this, arguments);
+    };
+  })()
+`);
+const buildNamedExpressionWrapper = _template.default.expression(`
+  (function () {
+    var REF = FUNCTION;
+    function NAME(PARAMS) {
+      return REF.apply(this, arguments);
+    }
+    return NAME;
+  })()
+`);
+const buildDeclarationWrapper = _template.default.statements(`
+  function NAME(PARAMS) { return REF.apply(this, arguments); }
+  function REF() {
+    REF = FUNCTION;
+    return REF.apply(this, arguments);
+  }
+`);
+function classOrObjectMethod(path, callId) {
+  const node = path.node;
+  const body = node.body;
+  const container = functionExpression(null, [], blockStatement(body.body), true);
+  body.body = [returnStatement(callExpression(callExpression(callId, [container]), []))];
+  node.async = false;
+  node.generator = false;
+  path.get("body.body.0.argument.callee.arguments.0").unwrapFunctionEnvironment();
+}
+function plainFunction(inPath, callId, noNewArrows, ignoreFunctionLength, hadName) {
+  let path = inPath;
+  let node;
+  let functionId = null;
+  const nodeParams = inPath.node.params;
+  if (path.isArrowFunctionExpression()) {
+    {
+      var _path$arrowFunctionTo;
+      path = (_path$arrowFunctionTo = path.arrowFunctionToExpression({
+        noNewArrows
+      })) != null ? _path$arrowFunctionTo : path;
+    }
+    node = path.node;
+  } else {
+    node = path.node;
+  }
+  const isDeclaration = isFunctionDeclaration(node);
+  let built = node;
+  if (!isCallExpression(node)) {
+    functionId = node.id;
+    node.id = null;
+    node.type = "FunctionExpression";
+    built = callExpression(callId, [node]);
+  }
+  const params = [];
+  for (const param of nodeParams) {
+    if (isAssignmentPattern(param) || isRestElement(param)) {
+      break;
+    }
+    params.push(path.scope.generateUidIdentifier("x"));
+  }
+  const wrapperArgs = {
+    NAME: functionId || null,
+    REF: path.scope.generateUidIdentifier(hadName ? functionId.name : "ref"),
+    FUNCTION: built,
+    PARAMS: params
+  };
+  if (isDeclaration) {
+    const container = buildDeclarationWrapper(wrapperArgs);
+    path.replaceWith(container[0]);
+    path.insertAfter(container[1]);
+  } else {
+    let container;
+    if (hadName) {
+      container = buildNamedExpressionWrapper(wrapperArgs);
+    } else {
+      container = buildAnonymousExpressionWrapper(wrapperArgs);
+    }
+    if (functionId || !ignoreFunctionLength && params.length) {
+      path.replaceWith(container);
+    } else {
+      path.replaceWith(built);
+    }
+  }
+}
+function wrapFunction(path, callId, noNewArrows = true, ignoreFunctionLength = false) {
+  if (path.isMethod()) {
+    classOrObjectMethod(path, callId);
+  } else {
+    const hadName = "id" in path.node && !!path.node.id;
+    {
+      var _path, _path$ensureFunctionN;
+      (_path$ensureFunctionN = (_path = path).ensureFunctionName) != null ? _path$ensureFunctionN : _path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+    }
+    path = path.ensureFunctionName(false);
+    plainFunction(path, callId, noNewArrows, ignoreFunctionLength, hadName);
+  }
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/helper-wrap-function/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/helper-wrap-function/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-wrap-function/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_template","require","_t","blockStatement","callExpression","functionExpression","isAssignmentPattern","isFunctionDeclaration","isRestElement","returnStatement","isCallExpression","buildAnonymousExpressionWrapper","template","expression","buildNamedExpressionWrapper","buildDeclarationWrapper","statements","classOrObjectMethod","path","callId","node","body","container","async","generator","get","unwrapFunctionEnvironment","plainFunction","inPath","noNewArrows","ignoreFunctionLength","hadName","functionId","nodeParams","params","isArrowFunctionExpression","_path$arrowFunctionTo","arrowFunctionToExpression","isDeclaration","built","id","type","param","push","scope","generateUidIdentifier","wrapperArgs","NAME","REF","name","FUNCTION","PARAMS","replaceWith","insertAfter","length","wrapFunction","isMethod","_path","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype"],"sources":["../src/index.ts"],"sourcesContent":["import type { NodePath } from \"@babel/traverse\";\nimport template from \"@babel/template\";\nimport {\n  blockStatement,\n  callExpression,\n  functionExpression,\n  isAssignmentPattern,\n  isFunctionDeclaration,\n  isRestElement,\n  returnStatement,\n  isCallExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\ntype ExpressionWrapperBuilder<ExtraBody extends t.Node[]> = (\n  replacements?: Parameters<ReturnType<typeof template.expression>>[0],\n) => t.CallExpression & {\n  callee: t.FunctionExpression & {\n    body: {\n      body: [\n        t.VariableDeclaration & {\n          declarations: [\n            { init: t.FunctionExpression | t.ArrowFunctionExpression },\n          ];\n        },\n        ...ExtraBody,\n      ];\n    };\n  };\n};\n\nconst buildAnonymousExpressionWrapper = template.expression(`\n  (function () {\n    var REF = FUNCTION;\n    return function NAME(PARAMS) {\n      return REF.apply(this, arguments);\n    };\n  })()\n`) as ExpressionWrapperBuilder<\n  [t.ReturnStatement & { argument: t.FunctionExpression }]\n>;\n\nconst buildNamedExpressionWrapper = template.expression(`\n  (function () {\n    var REF = FUNCTION;\n    function NAME(PARAMS) {\n      return REF.apply(this, arguments);\n    }\n    return NAME;\n  })()\n`) as ExpressionWrapperBuilder<\n  [t.FunctionDeclaration, t.ReturnStatement & { argument: t.Identifier }]\n>;\n\nconst buildDeclarationWrapper = template.statements(`\n  function NAME(PARAMS) { return REF.apply(this, arguments); }\n  function REF() {\n    REF = FUNCTION;\n    return REF.apply(this, arguments);\n  }\n`);\n\nfunction classOrObjectMethod(\n  path: NodePath<t.ClassMethod | t.ClassPrivateMethod | t.ObjectMethod>,\n  callId: t.Expression,\n) {\n  const node = path.node;\n  const body = node.body;\n\n  const container = functionExpression(\n    null,\n    [],\n    blockStatement(body.body),\n    true,\n  );\n  body.body = [\n    returnStatement(callExpression(callExpression(callId, [container]), [])),\n  ];\n\n  // Regardless of whether or not the wrapped function is a an async method\n  // or generator the outer function should not be\n  node.async = false;\n  node.generator = false;\n\n  // Unwrap the wrapper IIFE's environment so super and this and such still work.\n  (\n    path.get(\"body.body.0.argument.callee.arguments.0\") as NodePath\n  ).unwrapFunctionEnvironment();\n}\n\nfunction plainFunction(\n  inPath: NodePath<Exclude<t.Function, t.Method>>,\n  callId: t.Expression,\n  noNewArrows: boolean,\n  ignoreFunctionLength: boolean,\n  hadName: boolean,\n) {\n  let path: NodePath<\n    | t.FunctionDeclaration\n    | t.FunctionExpression\n    | t.CallExpression\n    | t.ArrowFunctionExpression\n  > = inPath;\n  let node;\n  let functionId = null;\n  const nodeParams = inPath.node.params;\n\n  if (path.isArrowFunctionExpression()) {\n    if (process.env.BABEL_8_BREAKING) {\n      path = path.arrowFunctionToExpression({ noNewArrows });\n    } else {\n      // arrowFunctionToExpression returns undefined in @babel/traverse < 7.18.10\n      path = path.arrowFunctionToExpression({ noNewArrows }) ?? path;\n    }\n    node = path.node as\n      | t.FunctionDeclaration\n      | t.FunctionExpression\n      | t.CallExpression;\n  } else {\n    node = path.node;\n  }\n\n  const isDeclaration = isFunctionDeclaration(node);\n\n  let built = node;\n  if (!isCallExpression(node)) {\n    functionId = node.id;\n    node.id = null;\n    node.type = \"FunctionExpression\";\n    built = callExpression(callId, [\n      node as Exclude<typeof node, t.FunctionDeclaration>,\n    ]);\n  }\n\n  const params: t.Identifier[] = [];\n  for (const param of nodeParams) {\n    if (isAssignmentPattern(param) || isRestElement(param)) {\n      break;\n    }\n    params.push(path.scope.generateUidIdentifier(\"x\"));\n  }\n\n  const wrapperArgs = {\n    NAME: functionId || null,\n    // TODO: Use `functionId` rather than `hadName` for the condition\n    REF: path.scope.generateUidIdentifier(hadName ? functionId.name : \"ref\"),\n    FUNCTION: built,\n    PARAMS: params,\n  };\n\n  if (isDeclaration) {\n    const container = buildDeclarationWrapper(wrapperArgs);\n    path.replaceWith(container[0]);\n    path.insertAfter(container[1]);\n  } else {\n    let container;\n\n    if (hadName) {\n      container = buildNamedExpressionWrapper(wrapperArgs);\n    } else {\n      container = buildAnonymousExpressionWrapper(wrapperArgs);\n    }\n\n    if (functionId || (!ignoreFunctionLength && params.length)) {\n      path.replaceWith(container);\n    } else {\n      // we can omit this wrapper as the conditions it protects for do not apply\n      path.replaceWith(built);\n    }\n  }\n}\n\nexport default function wrapFunction(\n  path: NodePath<t.Function>,\n  callId: t.Expression,\n  // TODO(Babel 8): Consider defaulting to false for spec compliance\n  noNewArrows: boolean = true,\n  ignoreFunctionLength: boolean = false,\n) {\n  if (path.isMethod()) {\n    classOrObjectMethod(path, callId);\n  } else {\n    const hadName = \"id\" in path.node && !!path.node.id;\n    if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n      // polyfill when being run by an older Babel version\n      path.ensureFunctionName ??=\n        // eslint-disable-next-line no-restricted-globals\n        require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n    }\n    // @ts-expect-error It is invalid to call this on an arrow expression,\n    // but we'll convert it to a function expression anyway.\n    path = path.ensureFunctionName(false);\n    plainFunction(\n      path as NodePath<Exclude<t.Function, t.Method>>,\n      callId,\n      noNewArrows,\n      ignoreFunctionLength,\n      hadName,\n    );\n  }\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/helper-wrap-function/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helper-wrap-function/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/helper-wrap-function/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,26 @@
+{
+  "name": "@babel/helper-wrap-function",
+  "version": "7.25.9",
+  "description": "Helper to wrap functions inside a function call.",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-helper-wrap-function"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-helper-wrap-function",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/template": "^7.25.9",
+    "@babel/traverse": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/helpers/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/helpers/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/helpers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,22 +1,41 @@
 {
-  "name": "@babel/helpers",
-  "version": "7.26.0",
-  "description": "Collection of helper functions used by Babel transforms.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-helpers",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_from": "@babel/helpers@^7.26.0",
+  "_id": "@babel/helpers@7.26.0",
+  "_inBundle": false,
+  "_integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==",
+  "_location": "/@babel/helpers",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/helpers@^7.26.0",
+    "name": "@babel/helpers",
+    "escapedName": "@babel%2fhelpers",
+    "scope": "@babel",
+    "rawSpec": "^7.26.0",
+    "saveSpec": null,
+    "fetchSpec": "^7.26.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-helpers"
+  "_requiredBy": [
+    "/@babel/core"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz",
+  "_shasum": "30e621f1eba5aa45fe6f4868d2e9154d884119a4",
+  "_spec": "@babel/helpers@^7.26.0",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/core",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "@babel/template": "^7.25.9",
     "@babel/types": "^7.26.0"
   },
+  "deprecated": false,
+  "description": "Collection of helper functions used by Babel transforms.",
   "devDependencies": {
     "@babel/generator": "^7.26.0",
@@ -28,4 +47,17 @@
     "node": ">=6.9.0"
   },
-  "type": "commonjs"
+  "homepage": "https://babel.dev/docs/en/next/babel-helpers",
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/helpers",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-helpers"
+  },
+  "type": "commonjs",
+  "version": "7.26.0"
 }
Index: imaps-frontend/node_modules/@babel/parser/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/parser/lib/index.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/parser/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -421,4 +421,52 @@
 }
 const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));
+function createDefaultOptions() {
+  return {
+    sourceType: "script",
+    sourceFilename: undefined,
+    startIndex: 0,
+    startColumn: 0,
+    startLine: 1,
+    allowAwaitOutsideFunction: false,
+    allowReturnOutsideFunction: false,
+    allowNewTargetOutsideFunction: false,
+    allowImportExportEverywhere: false,
+    allowSuperOutsideMethod: false,
+    allowUndeclaredExports: false,
+    plugins: [],
+    strictMode: null,
+    ranges: false,
+    tokens: false,
+    createImportExpressions: false,
+    createParenthesizedExpressions: false,
+    errorRecovery: false,
+    attachComment: true,
+    annexB: true
+  };
+}
+function getOptions(opts) {
+  const options = createDefaultOptions();
+  if (opts == null) {
+    return options;
+  }
+  if (opts.annexB != null && opts.annexB !== false) {
+    throw new Error("The `annexB` option can only be set to `false`.");
+  }
+  for (const key of Object.keys(options)) {
+    if (opts[key] != null) options[key] = opts[key];
+  }
+  if (options.startLine === 1) {
+    if (opts.startIndex == null && options.startColumn > 0) {
+      options.startIndex = options.startColumn;
+    } else if (opts.startColumn == null && options.startIndex > 0) {
+      options.startColumn = options.startIndex;
+    }
+  } else if (opts.startColumn == null || opts.startIndex == null) {
+    if (opts.startIndex != null) {
+      throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`.");
+    }
+  }
+  return options;
+}
 const {
   defineProperty
@@ -440,5 +488,5 @@
   parse() {
     const file = toESTreeLocation(super.parse());
-    if (this.options.tokens) {
+    if (this.optionFlags & 128) {
       file.tokens = file.tokens.map(toESTreeLocation);
     }
@@ -529,12 +577,4 @@
     delete node.directives;
   }
-  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
-    this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);
-    if (method.typeParameters) {
-      method.value.typeParameters = method.typeParameters;
-      delete method.typeParameters;
-    }
-    classBody.body.push(method);
-  }
   parsePrivateName() {
     const node = super.parsePrivateName();
@@ -587,4 +627,13 @@
     delete funcNode.kind;
     node.value = funcNode;
+    const {
+      typeParameters
+    } = node;
+    if (typeParameters) {
+      delete node.typeParameters;
+      funcNode.typeParameters = typeParameters;
+      funcNode.start = typeParameters.start;
+      funcNode.loc.start = typeParameters.loc.start;
+    }
     if (type === "ClassPrivateMethod") {
       node.computed = false;
@@ -603,5 +652,7 @@
       }
     }
-    propertyNode.type = "PropertyDefinition";
+    {
+      propertyNode.type = "PropertyDefinition";
+    }
     return propertyNode;
   }
@@ -613,5 +664,7 @@
       }
     }
-    propertyNode.type = "PropertyDefinition";
+    {
+      propertyNode.type = "PropertyDefinition";
+    }
     propertyNode.computed = false;
     return propertyNode;
@@ -1735,4 +1788,12 @@
             adjustInnerComments(node, node.specifiers, commentWS);
             break;
+          case "TSEnumDeclaration":
+            {
+              adjustInnerComments(node, node.members, commentWS);
+            }
+            break;
+          case "TSEnumBody":
+            adjustInnerComments(node, node.members, commentWS);
+            break;
           default:
             {
@@ -2314,5 +2375,5 @@
     this.errorHandlers_readInt = {
       invalidDigit: (pos, lineStart, curLine, radix) => {
-        if (!this.options.errorRecovery) return false;
+        if (!(this.optionFlags & 1024)) return false;
         this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {
           radix
@@ -2355,5 +2416,5 @@
   next() {
     this.checkKeywordEscapes();
-    if (this.options.tokens) {
+    if (this.optionFlags & 128) {
       this.pushToken(new Token(this.state));
     }
@@ -2471,5 +2532,5 @@
       loc: new SourceLocation(startLoc, this.state.curPosition())
     };
-    if (this.options.tokens) this.pushToken(comment);
+    if (this.optionFlags & 128) this.pushToken(comment);
     return comment;
   }
@@ -2494,10 +2555,10 @@
       loc: new SourceLocation(startLoc, this.state.curPosition())
     };
-    if (this.options.tokens) this.pushToken(comment);
+    if (this.optionFlags & 128) this.pushToken(comment);
     return comment;
   }
   skipSpace() {
     const spaceStart = this.state.pos;
-    const comments = [];
+    const comments = this.optionFlags & 2048 ? [] : null;
     loop: while (this.state.pos < this.length) {
       const ch = this.input.charCodeAt(this.state.pos);
@@ -2526,5 +2587,5 @@
                 if (comment !== undefined) {
                   this.addComment(comment);
-                  if (this.options.attachComment) comments.push(comment);
+                  comments == null || comments.push(comment);
                 }
                 break;
@@ -2535,5 +2596,5 @@
                 if (comment !== undefined) {
                   this.addComment(comment);
-                  if (this.options.attachComment) comments.push(comment);
+                  comments == null || comments.push(comment);
                 }
                 break;
@@ -2546,5 +2607,5 @@
           if (isWhitespace(ch)) {
             ++this.state.pos;
-          } else if (ch === 45 && !this.inModule && this.options.annexB) {
+          } else if (ch === 45 && !this.inModule && this.optionFlags & 4096) {
             const pos = this.state.pos;
             if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {
@@ -2552,10 +2613,10 @@
               if (comment !== undefined) {
                 this.addComment(comment);
-                if (this.options.attachComment) comments.push(comment);
+                comments == null || comments.push(comment);
               }
             } else {
               break loop;
             }
-          } else if (ch === 60 && !this.inModule && this.options.annexB) {
+          } else if (ch === 60 && !this.inModule && this.optionFlags & 4096) {
             const pos = this.state.pos;
             if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {
@@ -2563,5 +2624,5 @@
               if (comment !== undefined) {
                 this.addComment(comment);
-                if (this.options.attachComment) comments.push(comment);
+                comments == null || comments.push(comment);
               }
             } else {
@@ -2573,5 +2634,5 @@
       }
     }
-    if (comments.length > 0) {
+    if ((comments == null ? void 0 : comments.length) > 0) {
       const end = this.state.pos;
       const commentWhitespace = {
@@ -3265,5 +3326,5 @@
     const loc = at instanceof Position ? at : at.loc.start;
     const error = toParseError(loc, details);
-    if (!this.options.errorRecovery) throw error;
+    if (!(this.optionFlags & 1024)) throw error;
     if (!this.isLookahead) this.state.errors.push(error);
     return error;
@@ -3749,5 +3810,5 @@
     this.end = 0;
     this.loc = new SourceLocation(loc);
-    if (parser != null && parser.options.ranges) this.range = [pos, 0];
+    if ((parser == null ? void 0 : parser.optionFlags) & 64) this.range = [pos, 0];
     if (parser != null && parser.filename) this.loc.filename = parser.filename;
   }
@@ -3837,6 +3898,8 @@
     node.end = endLoc.index;
     node.loc.end = endLoc;
-    if (this.options.ranges) node.range[1] = endLoc.index;
-    if (this.options.attachComment) this.processComment(node);
+    if (this.optionFlags & 64) node.range[1] = endLoc.index;
+    if (this.optionFlags & 2048) {
+      this.processComment(node);
+    }
     return node;
   }
@@ -3844,10 +3907,10 @@
     node.start = startLoc.index;
     node.loc.start = startLoc;
-    if (this.options.ranges) node.range[0] = startLoc.index;
+    if (this.optionFlags & 64) node.range[0] = startLoc.index;
   }
   resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
     node.end = endLoc.index;
     node.loc.end = endLoc;
-    if (this.options.ranges) node.range[1] = endLoc.index;
+    if (this.optionFlags & 64) node.range[1] = endLoc.index;
   }
   resetStartLocationFromNode(node, locationNode) {
@@ -4357,24 +4420,47 @@
     return this.finishNode(node, "TypeParameterDeclaration");
   }
+  flowInTopLevelContext(cb) {
+    if (this.curContext() !== types.brace) {
+      const oldContext = this.state.context;
+      this.state.context = [oldContext[0]];
+      try {
+        return cb();
+      } finally {
+        this.state.context = oldContext;
+      }
+    } else {
+      return cb();
+    }
+  }
+  flowParseTypeParameterInstantiationInExpression() {
+    if (this.reScan_lt() !== 47) return;
+    return this.flowParseTypeParameterInstantiation();
+  }
   flowParseTypeParameterInstantiation() {
     const node = this.startNode();
     const oldInType = this.state.inType;
+    this.state.inType = true;
     node.params = [];
-    this.state.inType = true;
-    this.expect(47);
-    const oldNoAnonFunctionType = this.state.noAnonFunctionType;
-    this.state.noAnonFunctionType = false;
-    while (!this.match(48)) {
-      node.params.push(this.flowParseType());
-      if (!this.match(48)) {
-        this.expect(12);
-      }
-    }
-    this.state.noAnonFunctionType = oldNoAnonFunctionType;
+    this.flowInTopLevelContext(() => {
+      this.expect(47);
+      const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+      this.state.noAnonFunctionType = false;
+      while (!this.match(48)) {
+        node.params.push(this.flowParseType());
+        if (!this.match(48)) {
+          this.expect(12);
+        }
+      }
+      this.state.noAnonFunctionType = oldNoAnonFunctionType;
+    });
+    this.state.inType = oldInType;
+    if (!this.state.inType && this.curContext() === types.brace) {
+      this.reScan_lt_gt();
+    }
     this.expect(48);
-    this.state.inType = oldInType;
     return this.finishNode(node, "TypeParameterInstantiation");
   }
   flowParseTypeParameterInstantiationCallOrNew() {
+    if (this.reScan_lt() !== 47) return;
     const node = this.startNode();
     const oldInType = this.state.inType;
@@ -5430,6 +5516,8 @@
   parseClassSuper(node) {
     super.parseClassSuper(node);
-    if (node.superClass && this.match(47)) {
-      node.superTypeParameters = this.flowParseTypeParameterInstantiation();
+    if (node.superClass && (this.match(47) || this.match(51))) {
+      {
+        node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression();
+      }
     }
     if (this.isContextual(113)) {
@@ -5762,10 +5850,10 @@
       const node = this.startNodeAt(startLoc);
       node.callee = base;
-      node.typeArguments = this.flowParseTypeParameterInstantiation();
+      node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();
       this.expect(10);
       node.arguments = this.parseCallExpressionArguments(11);
       node.optional = true;
       return this.finishCallExpression(node, true);
-    } else if (!noCalls && this.shouldParseTypes() && this.match(47)) {
+    } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) {
       const node = this.startNodeAt(startLoc);
       node.callee = base;
@@ -6196,4 +6284,12 @@
     return this.finishNode(node, "EnumDeclaration");
   }
+  jsxParseOpeningElementAfterName(node) {
+    if (this.shouldParseTypes()) {
+      if (this.match(47) || this.match(51)) {
+        node.typeArguments = this.flowParseTypeParameterInstantiationInExpression();
+      }
+    }
+    return super.jsxParseOpeningElementAfterName(node);
+  }
   isLookaheadToken_lt() {
     const next = this.nextTokenStart();
@@ -6203,4 +6299,27 @@
     }
     return false;
+  }
+  reScan_lt_gt() {
+    const {
+      type
+    } = this.state;
+    if (type === 47) {
+      this.state.pos -= 1;
+      this.readToken_lt();
+    } else if (type === 48) {
+      this.state.pos -= 1;
+      this.readToken_gt();
+    }
+  }
+  reScan_lt() {
+    const {
+      type
+    } = this.state;
+    if (type === 51) {
+      this.state.pos -= 2;
+      this.finishOp(47, 1);
+      return 47;
+    }
+    return type;
   }
   maybeUnwrapTypeCastExpression(node) {
@@ -7715,6 +7834,12 @@
     if (!this.match(134)) {
       this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);
-    }
-    node.argument = super.parseExprAtom();
+      {
+        node.argument = super.parseExprAtom();
+      }
+    } else {
+      {
+        node.argument = this.parseStringLiteral(this.state.value);
+      }
+    }
     if (this.eat(12) && !this.match(11)) {
       node.options = super.parseMaybeAssignAllowIn();
@@ -7728,5 +7853,7 @@
     }
     if (this.match(47)) {
-      node.typeParameters = this.tsParseTypeArguments();
+      {
+        node.typeParameters = this.tsParseTypeArguments();
+      }
     }
     return this.finishNode(node, "TSImportType");
@@ -7746,5 +7873,7 @@
     node.typeName = this.tsParseEntityName();
     if (!this.hasPrecedingLineBreak() && this.match(47)) {
-      node.typeParameters = this.tsParseTypeArguments();
+      {
+        node.typeParameters = this.tsParseTypeArguments();
+      }
     }
     return this.finishNode(node, "TSTypeReference");
@@ -7772,5 +7901,7 @@
     }
     if (!this.hasPrecedingLineBreak() && this.match(47)) {
-      node.typeParameters = this.tsParseTypeArguments();
+      {
+        node.typeParameters = this.tsParseTypeArguments();
+      }
     }
     return this.finishNode(node, "TSTypeQuery");
@@ -8459,8 +8590,10 @@
       const node = this.startNode();
       node.expression = this.tsParseEntityName();
-      if (this.match(47)) {
-        node.typeParameters = this.tsParseTypeArguments();
-      }
-      return this.finishNode(node, "TSExpressionWithTypeArguments");
+      {
+        if (this.match(47)) {
+          node.typeParameters = this.tsParseTypeArguments();
+        }
+        return this.finishNode(node, "TSExpressionWithTypeArguments");
+      }
     });
     if (!delimitedList.length) {
@@ -8507,11 +8640,15 @@
     return this.finishNode(node, "TSTypeAliasDeclaration");
   }
-  tsInNoContext(cb) {
-    const oldContext = this.state.context;
-    this.state.context = [oldContext[0]];
-    try {
+  tsInTopLevelContext(cb) {
+    if (this.curContext() !== types.brace) {
+      const oldContext = this.state.context;
+      this.state.context = [oldContext[0]];
+      try {
+        return cb();
+      } finally {
+        this.state.context = oldContext;
+      }
+    } else {
       return cb();
-    } finally {
-      this.state.context = oldContext;
     }
   }
@@ -8574,8 +8711,17 @@
     node.id = this.parseIdentifier();
     this.checkIdentifier(node.id, node.const ? 8971 : 8459);
+    {
+      this.expect(5);
+      node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
+      this.expect(8);
+    }
+    return this.finishNode(node, "TSEnumDeclaration");
+  }
+  tsParseEnumBody() {
+    const node = this.startNode();
     this.expect(5);
     node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
     this.expect(8);
-    return this.finishNode(node, "TSEnumDeclaration");
+    return this.finishNode(node, "TSEnumBody");
   }
   tsParseModuleBlock() {
@@ -8608,5 +8754,7 @@
     if (this.isContextual(112)) {
       node.kind = "global";
-      node.global = true;
+      {
+        node.global = true;
+      }
       node.id = this.parseIdentifier();
     } else if (this.match(134)) {
@@ -8746,5 +8894,7 @@
           const mod = node;
           mod.kind = "global";
-          mod.global = true;
+          {
+            node.global = true;
+          }
           mod.id = expr;
           mod.body = this.tsParseModuleBlock();
@@ -8818,5 +8968,5 @@
   tsParseTypeArguments() {
     const node = this.startNode();
-    node.params = this.tsInType(() => this.tsInNoContext(() => {
+    node.params = this.tsInType(() => this.tsInTopLevelContext(() => {
       this.expect(47);
       return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));
@@ -8963,5 +9113,7 @@
         if (tokenIsTemplate(this.state.type)) {
           const result = super.parseTaggedTemplateExpression(base, startLoc, state);
-          result.typeParameters = typeArguments;
+          {
+            result.typeParameters = typeArguments;
+          }
           return result;
         }
@@ -8971,5 +9123,7 @@
           node.arguments = this.parseCallExpressionArguments(11);
           this.tsCheckForInvalidTypeCasts(node.arguments);
-          node.typeParameters = typeArguments;
+          {
+            node.typeParameters = typeArguments;
+          }
           if (state.optionalChainMember) {
             node.optional = isOptionalCall;
@@ -8983,5 +9137,7 @@
         const node = this.startNodeAt(startLoc);
         node.expression = base;
-        node.typeParameters = typeArguments;
+        {
+          node.typeParameters = typeArguments;
+        }
         return this.finishNode(node, "TSInstantiationExpression");
       });
@@ -9005,5 +9161,7 @@
     } = node;
     if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {
-      node.typeParameters = callee.typeParameters;
+      {
+        node.typeParameters = callee.typeParameters;
+      }
       node.callee = callee.expression;
     }
@@ -9385,5 +9543,7 @@
     super.parseClassSuper(node);
     if (node.superClass && (this.match(47) || this.match(51))) {
-      node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
+      {
+        node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
+      }
     }
     if (this.eatContextual(113)) {
@@ -9595,15 +9755,17 @@
     return super.parseBindingAtom();
   }
-  parseMaybeDecoratorArguments(expr) {
+  parseMaybeDecoratorArguments(expr, startLoc) {
     if (this.match(47) || this.match(51)) {
       const typeArguments = this.tsParseTypeArgumentsInExpression();
       if (this.match(10)) {
-        const call = super.parseMaybeDecoratorArguments(expr);
-        call.typeParameters = typeArguments;
+        const call = super.parseMaybeDecoratorArguments(expr, startLoc);
+        {
+          call.typeParameters = typeArguments;
+        }
         return call;
       }
       this.unexpected(null, 10);
     }
-    return super.parseMaybeDecoratorArguments(expr);
+    return super.parseMaybeDecoratorArguments(expr, startLoc);
   }
   checkCommaAfterRest(close) {
@@ -9692,5 +9854,9 @@
     if (this.match(47) || this.match(51)) {
       const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression());
-      if (typeArguments) node.typeParameters = typeArguments;
+      if (typeArguments) {
+        {
+          node.typeParameters = typeArguments;
+        }
+      }
     }
     return super.jsxParseOpeningElementAfterName(node);
@@ -9752,6 +9918,7 @@
     const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
     if (method.abstract) {
-      const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body;
-      if (hasBody) {
+      const hasEstreePlugin = this.hasPlugin("estree");
+      const methodFn = hasEstreePlugin ? method.value : method;
+      if (methodFn.body) {
         const {
           key
@@ -10233,52 +10400,4 @@
 };
 const mixinPluginNames = Object.keys(mixinPlugins);
-function createDefaultOptions() {
-  return {
-    sourceType: "script",
-    sourceFilename: undefined,
-    startIndex: 0,
-    startColumn: 0,
-    startLine: 1,
-    allowAwaitOutsideFunction: false,
-    allowReturnOutsideFunction: false,
-    allowNewTargetOutsideFunction: false,
-    allowImportExportEverywhere: false,
-    allowSuperOutsideMethod: false,
-    allowUndeclaredExports: false,
-    plugins: [],
-    strictMode: null,
-    ranges: false,
-    tokens: false,
-    createImportExpressions: false,
-    createParenthesizedExpressions: false,
-    errorRecovery: false,
-    attachComment: true,
-    annexB: true
-  };
-}
-function getOptions(opts) {
-  const options = createDefaultOptions();
-  if (opts == null) {
-    return options;
-  }
-  if (opts.annexB != null && opts.annexB !== false) {
-    throw new Error("The `annexB` option can only be set to `false`.");
-  }
-  for (const key of Object.keys(options)) {
-    if (opts[key] != null) options[key] = opts[key];
-  }
-  if (options.startLine === 1) {
-    if (opts.startIndex == null && options.startColumn > 0) {
-      options.startIndex = options.startColumn;
-    } else if (opts.startColumn == null && options.startIndex > 0) {
-      options.startColumn = options.startIndex;
-    }
-  } else if (opts.startColumn == null || opts.startIndex == null) {
-    if (opts.startIndex != null) {
-      throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`.");
-    }
-  }
-  return options;
-}
 class ExpressionParser extends LValParser {
   checkProto(prop, isRecord, protoRef, refExpressionErrors) {
@@ -10318,5 +10437,5 @@
     expr.comments = this.comments;
     expr.errors = this.state.errors;
-    if (this.options.tokens) {
+    if (this.optionFlags & 128) {
       expr.tokens = this.tokens;
     }
@@ -10823,5 +10942,5 @@
         }
         if (this.match(10)) {
-          if (this.options.createImportExpressions) {
+          if (this.optionFlags & 256) {
             return this.parseImportCall(node);
           } else {
@@ -11065,7 +11184,7 @@
     const node = this.startNode();
     this.next();
-    if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
+    if (this.match(10) && !this.scope.allowDirectSuper && !(this.optionFlags & 16)) {
       this.raise(Errors.SuperNotAllowed, node);
-    } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
+    } else if (!this.scope.allowSuper && !(this.optionFlags & 16)) {
       this.raise(Errors.UnexpectedSuper, node);
     }
@@ -11120,7 +11239,6 @@
     } else if (this.isContextual(105) || this.isContextual(97)) {
       const isSource = this.isContextual(105);
-      if (!isSource) this.unexpected();
       this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation");
-      if (!this.options.createImportExpressions) {
+      if (!(this.optionFlags & 256)) {
         throw this.raise(Errors.DynamicImportPhaseRequiresImportExpressions, this.state.startLoc, {
           phase: this.state.value
@@ -11242,5 +11360,5 @@
   }
   wrapParenthesis(startLoc, expression) {
-    if (!this.options.createParenthesizedExpressions) {
+    if (!(this.optionFlags & 512)) {
       this.addExtra(expression, "parenthesized", true);
       this.addExtra(expression, "parenStart", startLoc.index);
@@ -11270,5 +11388,5 @@
       this.next();
       const metaProp = this.parseMetaProperty(node, meta, "target");
-      if (!this.scope.inNonArrowFunction && !this.scope.inClass && !this.options.allowNewTargetOutsideFunction) {
+      if (!this.scope.inNonArrowFunction && !this.scope.inClass && !(this.optionFlags & 4)) {
         this.raise(Errors.UnexpectedNewTarget, metaProp);
       }
@@ -11785,5 +11903,5 @@
   }
   recordAwaitIfAllowed() {
-    const isAwaitAllowed = this.prodParam.hasAwait || this.options.allowAwaitOutsideFunction && !this.scope.inFunction;
+    const isAwaitAllowed = this.prodParam.hasAwait || this.optionFlags & 1 && !this.scope.inFunction;
     if (isAwaitAllowed && !this.scope.inFunction) {
       this.state.hasTopLevelAwait = true;
@@ -11797,5 +11915,5 @@
       this.raise(Errors.ObsoleteAwaitStar, node);
     }
-    if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
+    if (!this.scope.inFunction && !(this.optionFlags & 1)) {
       if (this.isAmbiguousAwait()) {
         this.ambiguousScriptDifferentAst = true;
@@ -12121,5 +12239,5 @@
     file.program = this.parseProgram(program);
     file.comments = this.comments;
-    if (this.options.tokens) {
+    if (this.optionFlags & 128) {
       file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex);
     }
@@ -12131,5 +12249,5 @@
     this.parseBlockBody(program, true, true, end);
     if (this.inModule) {
-      if (!this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {
+      if (!(this.optionFlags & 32) && this.scope.undefinedExports.size > 0) {
         for (const [localName, at] of Array.from(this.scope.undefinedExports)) {
           this.raise(Errors.ModuleExportUndefined, at, {
@@ -12357,5 +12475,5 @@
       case 82:
         {
-          if (!this.options.allowImportExportEverywhere && !topLevel) {
+          if (!(this.optionFlags & 8) && !topLevel) {
             this.raise(Errors.UnexpectedImportExport, this.state.startLoc);
           }
@@ -12396,5 +12514,5 @@
   }
   assertModuleNodeAllowed(node) {
-    if (!this.options.allowImportExportEverywhere && !this.inModule) {
+    if (!(this.optionFlags & 8) && !this.inModule) {
       this.raise(Errors.ImportOutsideModule, node);
     }
@@ -12406,5 +12524,6 @@
   maybeTakeDecorators(maybeDecorators, classNode, exportNode) {
     if (maybeDecorators) {
-      if (classNode.decorators && classNode.decorators.length > 0) {
+      var _classNode$decorators;
+      if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) {
         if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") {
           this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]);
@@ -12453,5 +12572,5 @@
         expr = this.wrapParenthesis(startLoc, expr);
         const paramsStartLoc = this.state.startLoc;
-        node.expression = this.parseMaybeDecoratorArguments(expr);
+        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);
         if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) {
           this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc);
@@ -12471,5 +12590,5 @@
           expr = this.finishNode(node, "MemberExpression");
         }
-        node.expression = this.parseMaybeDecoratorArguments(expr);
+        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);
       }
     } else {
@@ -12478,7 +12597,7 @@
     return this.finishNode(node, "Decorator");
   }
-  parseMaybeDecoratorArguments(expr) {
+  parseMaybeDecoratorArguments(expr, startLoc) {
     if (this.eat(10)) {
-      const node = this.startNodeAtNode(expr);
+      const node = this.startNodeAt(startLoc);
       node.callee = expr;
       node.arguments = this.parseCallExpressionArguments(11);
@@ -12627,5 +12746,5 @@
   }
   parseReturnStatement(node) {
-    if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {
+    if (!this.prodParam.hasReturn && !(this.optionFlags & 2)) {
       this.raise(Errors.IllegalReturn, this.state.startLoc);
     }
@@ -13917,4 +14036,45 @@
     this.filename = options.sourceFilename;
     this.startIndex = options.startIndex;
+    let optionFlags = 0;
+    if (options.allowAwaitOutsideFunction) {
+      optionFlags |= 1;
+    }
+    if (options.allowReturnOutsideFunction) {
+      optionFlags |= 2;
+    }
+    if (options.allowImportExportEverywhere) {
+      optionFlags |= 8;
+    }
+    if (options.allowSuperOutsideMethod) {
+      optionFlags |= 16;
+    }
+    if (options.allowUndeclaredExports) {
+      optionFlags |= 32;
+    }
+    if (options.allowNewTargetOutsideFunction) {
+      optionFlags |= 4;
+    }
+    if (options.ranges) {
+      optionFlags |= 64;
+    }
+    if (options.tokens) {
+      optionFlags |= 128;
+    }
+    if (options.createImportExpressions) {
+      optionFlags |= 256;
+    }
+    if (options.createParenthesizedExpressions) {
+      optionFlags |= 512;
+    }
+    if (options.errorRecovery) {
+      optionFlags |= 1024;
+    }
+    if (options.attachComment) {
+      optionFlags |= 2048;
+    }
+    if (options.annexB) {
+      optionFlags |= 4096;
+    }
+    this.optionFlags = optionFlags;
   }
   getScopeHandler() {
Index: imaps-frontend/node_modules/@babel/parser/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/parser/lib/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/parser/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","sources":["../src/util/location.ts","../src/parse-error/module-errors.ts","../src/parse-error/to-node-description.ts","../src/parse-error/standard-errors.ts","../src/parse-error/strict-mode-errors.ts","../src/parse-error/pipeline-operator-errors.ts","../src/parse-error.ts","../src/plugins/estree.ts","../src/tokenizer/context.ts","../src/tokenizer/types.ts","../../babel-helper-validator-identifier/src/identifier.ts","../../babel-helper-validator-identifier/src/keyword.ts","../src/util/identifier.ts","../src/util/scope.ts","../src/plugins/flow/scope.ts","../src/parser/base.ts","../src/parser/comments.ts","../src/util/whitespace.ts","../src/tokenizer/state.ts","../../babel-helper-string-parser/src/index.ts","../src/tokenizer/index.ts","../src/util/class-scope.ts","../src/util/expression-scope.ts","../src/util/production-parameter.ts","../src/parser/util.ts","../src/parser/node.ts","../src/plugins/flow/index.ts","../src/plugins/jsx/xhtml.ts","../src/plugins/jsx/index.ts","../src/plugins/typescript/scope.ts","../src/parser/lval.ts","../src/plugins/typescript/index.ts","../src/plugins/placeholders.ts","../src/plugins/v8intrinsic.ts","../src/plugin-utils.ts","../src/options.ts","../src/parser/expression.ts","../src/parser/statement.ts","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["export type Pos = {\n  start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n  line: number;\n  column: number;\n  index: number;\n\n  constructor(line: number, col: number, index: number) {\n    this.line = line;\n    this.column = col;\n    this.index = index;\n  }\n}\n\nexport class SourceLocation {\n  start: Position;\n  end: Position;\n  filename: string;\n  identifierName: string | undefined | null;\n\n  constructor(start: Position, end?: Position) {\n    this.start = start;\n    // (may start as null, but initialized later)\n    this.end = end;\n  }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n  position: Position,\n  columnOffset: number,\n) {\n  const { line, column, index } = position;\n  return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n  ImportMetaOutsideModule: {\n    message: `import.meta may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n  ImportOutsideModule: {\n    message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n  ArrayPattern: \"array destructuring pattern\",\n  AssignmentExpression: \"assignment expression\",\n  AssignmentPattern: \"assignment expression\",\n  ArrowFunctionExpression: \"arrow function expression\",\n  ConditionalExpression: \"conditional expression\",\n  CatchClause: \"catch clause\",\n  ForOfStatement: \"for-of statement\",\n  ForInStatement: \"for-in statement\",\n  ForStatement: \"for-loop\",\n  FormalParameters: \"function parameter list\",\n  Identifier: \"identifier\",\n  ImportSpecifier: \"import specifier\",\n  ImportDefaultSpecifier: \"import default specifier\",\n  ImportNamespaceSpecifier: \"import namespace specifier\",\n  ObjectPattern: \"object destructuring pattern\",\n  ParenthesizedExpression: \"parenthesized expression\",\n  RestElement: \"rest element\",\n  UpdateExpression: {\n    true: \"prefix operation\",\n    false: \"postfix operation\",\n  },\n  VariableDeclarator: \"variable declaration\",\n  YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n  typeof NodeDescriptions,\n  \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n  | {\n      type: \"UpdateExpression\";\n      prefix: boolean;\n    }\n  | {\n      type: NodeTypesWithDescriptions;\n    };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n  node.type === \"UpdateExpression\"\n    ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n    : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n  | { type: \"UpdateExpression\"; prefix: boolean }\n  | {\n      type:\n        | \"ArrayPattern\"\n        | \"AssignmentExpression\"\n        | \"CatchClause\"\n        | \"ForOfStatement\"\n        | \"FormalParameters\"\n        | \"ForInStatement\"\n        | \"ForStatement\"\n        | \"ImportSpecifier\"\n        | \"ImportNamespaceSpecifier\"\n        | \"ImportDefaultSpecifier\"\n        | \"ParenthesizedExpression\"\n        | \"ObjectPattern\"\n        | \"RestElement\"\n        | \"VariableDeclarator\";\n    };\n\nexport default {\n  AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `A ${kind}ter cannot be a generator.`,\n  ArgumentsInClass:\n    \"'arguments' is only allowed in functions and class methods.\",\n  AsyncFunctionInSingleStatementContext:\n    \"Async functions can only be declared at the top level or inside a block.\",\n  AwaitBindingIdentifier:\n    \"Can not use 'await' as identifier inside an async function.\",\n  AwaitBindingIdentifierInStaticBlock:\n    \"Can not use 'await' as identifier inside a static block.\",\n  AwaitExpressionFormalParameter:\n    \"'await' is not allowed in async function parameters.\",\n  AwaitUsingNotInAsyncContext:\n    \"'await using' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncContext:\n    \"'await' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncFunction: \"'await' is only allowed within async functions.\",\n  BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n  BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n  BadSetterRestParameter:\n    \"A 'set' accessor function argument must not be a rest parameter.\",\n  ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n  ConstructorClassPrivateField:\n    \"Classes may not have a private field named '#constructor'.\",\n  ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n  ConstructorIsAsync: \"Constructor can't be an async function.\",\n  ConstructorIsGenerator: \"Constructor can't be a generator.\",\n  DeclarationMissingInitializer: ({\n    kind,\n  }: {\n    kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n  }) => `Missing initializer in ${kind} declaration.`,\n  DecoratorArgumentsOutsideParentheses:\n    \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n  DecoratorBeforeExport:\n    \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n  DecoratorsBeforeAfterExport:\n    \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n  DecoratorConstructor:\n    \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n  DecoratorExportClass:\n    \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n  DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n  DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n  DeferImportRequiresNamespace:\n    'Only `import defer * as x from \"./module\"` is valid.',\n  DeletePrivateField: \"Deleting a private field is not allowed.\",\n  DestructureNamedImport:\n    \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n  DuplicateConstructor: \"Duplicate constructor in the same class.\",\n  DuplicateDefaultExport: \"Only one default export allowed per module.\",\n  DuplicateExport: ({ exportName }: { exportName: string }) =>\n    `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n  DuplicateProto: \"Redefinition of __proto__ property.\",\n  DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n  DynamicImportPhaseRequiresImportExpressions: ({ phase }: { phase: string }) =>\n    `'import.${phase}(...)' can only be parsed when using the 'createImportExpressions' option.`,\n  ElementAfterRest: \"Rest element must be last element.\",\n  EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n  ExportBindingIsString: ({\n    localName,\n    exportName,\n  }: {\n    localName: string;\n    exportName: string;\n  }) =>\n    `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n  ExportDefaultFromAsIdentifier:\n    \"'from' is not allowed as an identifier after 'export default'.\",\n\n  ForInOfLoopInitializer: ({\n    type,\n  }: {\n    type: \"ForInStatement\" | \"ForOfStatement\";\n  }) =>\n    `'${\n      type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n    }' loop variable declaration may not have an initializer.`,\n  ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n  ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n  ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n  GeneratorInSingleStatementContext:\n    \"Generators can only be declared at the top level or inside a block.\",\n\n  IllegalBreakContinue: ({\n    type,\n  }: {\n    type: \"BreakStatement\" | \"ContinueStatement\";\n  }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n  IllegalLanguageModeDirective:\n    \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n  IllegalReturn: \"'return' outside of function.\",\n  ImportAttributesUseAssert:\n    \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n  ImportBindingIsString: ({ importName }: { importName: string }) =>\n    `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n  ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n  ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n  ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n  ImportJSONBindingNotDefault:\n    \"A JSON module can only be imported with `default`.\",\n  ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n  ImportReflectionNotBinding:\n    'Only `import module x from \"./module\"` is valid.',\n  IncompatibleRegExpUVFlags:\n    \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n  InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n  InvalidCodePoint: \"Code point out of bounds.\",\n  InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n  InvalidDecimal: \"Invalid decimal.\",\n  InvalidDigit: ({ radix }: { radix: number }) =>\n    `Expected number in radix ${radix}.`,\n  InvalidEscapeSequence: \"Bad character escape sequence.\",\n  InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n  InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Escape sequence in keyword ${reservedWord}.`,\n  InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n    `Invalid identifier ${identifierName}.`,\n  InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n      ancestor,\n    )}.`,\n  InvalidNumber: \"Invalid number.\",\n  InvalidOrMissingExponent:\n    \"Floating-point numbers require a valid exponent after the 'e'.\",\n  InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n    `Unexpected character '${unexpected}'.`,\n  InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n  InvalidPrivateFieldResolution: ({\n    identifierName,\n  }: {\n    identifierName: string;\n  }) => `Private name #${identifierName} is not defined.`,\n  InvalidPropertyBindingPattern: \"Binding member expression.\",\n  InvalidRecordProperty:\n    \"Only properties and spread elements are allowed in record definitions.\",\n  InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n  LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n    `Label '${labelName}' is already declared.`,\n  LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n  LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n  MalformedRegExpFlags: \"Invalid regular expression flag.\",\n  MissingClassName: \"A class name is required.\",\n  MissingEqInAssignment:\n    \"Only '=' operator can be used for specifying default value.\",\n  MissingSemicolon: \"Missing semicolon.\",\n  MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n    `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  // FIXME: Would be nice to make this \"missingPlugins\" instead.\n  // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n  MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n    `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n  MixingCoalesceWithLogical:\n    \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n  ModuleAttributeDifferentFromType:\n    \"The only accepted module attribute is `type`.\",\n  ModuleAttributeInvalidValue:\n    \"Only string literals are allowed as module attribute values.\",\n  ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n    `Duplicate key \"${key}\" is not allowed in module attributes.`,\n  ModuleExportNameHasLoneSurrogate: ({\n    surrogateCharCode,\n  }: {\n    surrogateCharCode: number;\n  }) =>\n    `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n      16,\n    )}'.`,\n  ModuleExportUndefined: ({ localName }: { localName: string }) =>\n    `Export '${localName}' is not defined.`,\n  MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n  NewlineAfterThrow: \"Illegal newline after throw.\",\n  NoCatchOrFinally: \"Missing catch or finally clause.\",\n  NumberIdentifier: \"Identifier directly after number.\",\n  NumericSeparatorInEscapeSequence:\n    \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n  ObsoleteAwaitStar:\n    \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n  OptionalChainingNoNew:\n    \"Constructors in/after an Optional Chain are not allowed.\",\n  OptionalChainingNoTemplate:\n    \"Tagged Template Literals are not allowed in optionalChain.\",\n  OverrideOnConstructor:\n    \"'override' modifier cannot appear on a constructor declaration.\",\n  ParamDupe: \"Argument name clash.\",\n  PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n  PatternHasMethod: \"Object pattern can't contain methods.\",\n  PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n    `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n  PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Duplicate private name #${identifierName}.`,\n  RecordExpressionBarIncorrectEndSyntaxType:\n    \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionBarIncorrectStartSyntaxType:\n    \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionHashIncorrectStartSyntaxType:\n    \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n  RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n  SloppyFunction:\n    \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n  SloppyFunctionAnnexB:\n    \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n  SourcePhaseImportRequiresDefault:\n    'Only `import source x from \"./module\"` is valid.',\n  StaticPrototype: \"Classes may not have static property named prototype.\",\n  SuperNotAllowed:\n    \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n  SuperPrivateField: \"Private fields can't be accessed on super.\",\n  TrailingDecorator: \"Decorators must be attached to a class element.\",\n  TupleExpressionBarIncorrectEndSyntaxType:\n    \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionBarIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionHashIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n  UnexpectedAwaitAfterPipelineBody:\n    'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n  UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n  UnexpectedImportExport:\n    \"'import' and 'export' may only appear at the top level.\",\n  UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n    `Unexpected keyword '${keyword}'.`,\n  UnexpectedLeadingDecorator:\n    \"Leading decorators must be attached to a class declaration.\",\n  UnexpectedLexicalDeclaration:\n    \"Lexical declaration cannot appear in a single-statement context.\",\n  UnexpectedNewTarget:\n    \"`new.target` can only be used in functions or class properties.\",\n  UnexpectedNumericSeparator:\n    \"A numeric separator is only allowed between two digits.\",\n  UnexpectedPrivateField: \"Unexpected private name.\",\n  UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Unexpected reserved word '${reservedWord}'.`,\n  UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n  UnexpectedToken: ({\n    expected,\n    unexpected,\n  }: {\n    expected?: string | null;\n    unexpected?: string | null;\n  }) =>\n    `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n      expected ? `, expected \"${expected}\"` : \"\"\n    }`,\n  UnexpectedTokenUnaryExponentiation:\n    \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n  UnexpectedUsingDeclaration:\n    \"Using declaration cannot appear in the top level when source type is `script`.\",\n  UnsupportedBind: \"Binding should be performed on object property.\",\n  UnsupportedDecoratorExport:\n    \"A decorated export must export a class declaration.\",\n  UnsupportedDefaultExport:\n    \"Only expressions, functions or classes are allowed as the `default` export.\",\n  UnsupportedImport:\n    \"`import` can only be used in `import()` or `import.meta`.\",\n  UnsupportedMetaProperty: ({\n    target,\n    onlyValidPropertyName,\n  }: {\n    target: string;\n    onlyValidPropertyName: string;\n  }) =>\n    `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n  UnsupportedParameterDecorator:\n    \"Decorators cannot be used to decorate parameters.\",\n  UnsupportedPropertyDecorator:\n    \"Decorators cannot be used to decorate object literal properties.\",\n  UnsupportedSuper:\n    \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n  UnterminatedComment: \"Unterminated comment.\",\n  UnterminatedRegExp: \"Unterminated regular expression.\",\n  UnterminatedString: \"Unterminated string constant.\",\n  UnterminatedTemplate: \"Unterminated template.\",\n  UsingDeclarationExport: \"Using declaration cannot be exported.\",\n  UsingDeclarationHasBindingPattern:\n    \"Using declaration cannot have destructuring patterns.\",\n  VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Identifier '${identifierName}' has already been declared.`,\n  YieldBindingIdentifier:\n    \"Can not use 'yield' as identifier inside a generator.\",\n  YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n  ZeroDigitNumericSeparator:\n    \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n  StrictDelete: \"Deleting local variable in strict mode.\",\n\n  // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n  // is represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n    `Assigning to '${referenceName}' in strict mode.`,\n\n  // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n  // represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n    `Binding '${bindingName}' in strict mode.`,\n\n  StrictFunction:\n    \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n  StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n  StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n  StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n  \"ArrowFunctionExpression\",\n  \"AssignmentExpression\",\n  \"ConditionalExpression\",\n  \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType<T extends Set<any>> =\n  T extends Set<infer M> ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n  typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n  // This error is only used by the smart-mix proposal\n  PipeBodyIsTighter:\n    \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n  PipeTopicRequiresHackPipes:\n    'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n  PipeTopicUnbound:\n    \"Topic reference is unbound; it must be inside a pipe body.\",\n  PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n    `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n  PipeTopicUnused:\n    \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n  PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n    `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n      type,\n    })}; please wrap it in parentheses.`,\n\n  // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n  // are retained for backwards compatibility\n  // with the deprecated smart-mix pipe operator proposal plugin.\n  // They are subject to removal in a future major version.\n  PipelineBodyNoArrow:\n    'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n  PipelineBodySequenceExpression:\n    \"Pipeline body may not be a comma-separated sequence expression.\",\n  PipelineHeadSequenceExpression:\n    \"Pipeline head should not be a comma-separated sequence expression.\",\n  PipelineTopicUnused:\n    \"Pipeline is in topic style but does not use topic reference.\",\n  PrimaryTopicNotAllowed:\n    \"Topic reference was used in a lexical context without topic binding.\",\n  PrimaryTopicRequiresSmartPipeline:\n    'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n  | \"flow\"\n  | \"typescript\"\n  | \"jsx\"\n  | \"pipelineOperator\"\n  | \"placeholders\";\n\ntype ParseErrorCode =\n  | \"BABEL_PARSER_SYNTAX_ERROR\"\n  | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification<ErrorDetails> {\n  // Look, these *could* be readonly, but then Flow complains when we initially\n  // set them. We could do a whole dance and make a special interface that's not\n  // readonly for when we create the error, then cast it to the readonly\n  // interface for public use, but the previous implementation didn't have them\n  // as readonly, so let's just not worry about it for now.\n  code: ParseErrorCode;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  missingPlugin?: string | string[];\n  loc: Position;\n  details: ErrorDetails;\n\n  // We should consider removing this as it now just contains the same\n  // information as `loc.index`.\n  pos: number;\n}\n\nexport type ParseError<ErrorDetails> = SyntaxError &\n  ParseErrorSpecification<ErrorDetails>;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor<ErrorDetails> = (\n  loc: Position,\n  details: ErrorDetails,\n) => ParseError<ErrorDetails>;\n\ntype ToMessage<ErrorDetails> = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials<ErrorDetails> = {\n  code: string;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  toMessage: ToMessage<ErrorDetails>;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n  Object.defineProperty(obj, key, {\n    enumerable: false,\n    configurable: true,\n    value,\n  });\n}\n\nfunction toParseErrorConstructor<ErrorDetails extends object>({\n  toMessage,\n  code,\n  reasonCode,\n  syntaxPlugin,\n}: ParseErrorCredentials<ErrorDetails>): ParseErrorConstructor<ErrorDetails> {\n  const hasMissingPlugin =\n    reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n  if (!process.env.BABEL_8_BREAKING) {\n    const oldReasonCodes: Record<string, string> = {\n      AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n      AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n      ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n        \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n      SetAccessorCannotHaveOptionalParameter:\n        \"SetAccesorCannotHaveOptionalParameter\",\n      SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n      SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n    };\n    if (oldReasonCodes[reasonCode]) {\n      reasonCode = oldReasonCodes[reasonCode];\n    }\n  }\n\n  return function constructor(loc: Position, details: ErrorDetails) {\n    const error: ParseError<ErrorDetails> = new SyntaxError() as any;\n\n    error.code = code as ParseErrorCode;\n    error.reasonCode = reasonCode;\n    error.loc = loc;\n    error.pos = loc.index;\n\n    error.syntaxPlugin = syntaxPlugin;\n    if (hasMissingPlugin) {\n      error.missingPlugin = (details as any).missingPlugin;\n    }\n\n    type Overrides = {\n      loc?: Position;\n      details?: ErrorDetails;\n    };\n    defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n      const { line, column, index } = overrides.loc ?? loc;\n      return constructor(new Position(line, column, index), {\n        ...details,\n        ...overrides.details,\n      });\n    });\n\n    defineHidden(error, \"details\", details);\n\n    Object.defineProperty(error, \"message\", {\n      configurable: true,\n      get(this: ParseError<ErrorDetails>): string {\n        const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n        this.message = message;\n        return message;\n      },\n      set(value: string) {\n        Object.defineProperty(this, \"message\", { value, writable: true });\n      },\n    });\n\n    return error;\n  };\n}\n\ntype ParseErrorTemplate =\n  | string\n  | ToMessage<any>\n  | { message: string | ToMessage<any>; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = { [reasonCode: string]: ParseErrorTemplate };\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor<T extends ParseErrorTemplates>`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n  T extends ParseErrorTemplates,\n>(\n  parseErrorTemplates: T,\n) => {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\nexport function ParseErrorEnum<T extends ParseErrorTemplates>(\n  parseErrorTemplates: T,\n  syntaxPlugin?: SyntaxPlugin,\n): {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n//    the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n//    and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n//   ErrorWithStaticMessage: \"message\",\n//   ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n//   ErrorWithOverriddenCodeAndOrReasonCode: {\n//     message: ({ type }: { type: string }) => `${type}`),\n//     code: \"AN_ERROR_CODE\",\n//     ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n//   }\n// });\n//\nexport function ParseErrorEnum(\n  argument: TemplateStringsArray | ParseErrorTemplates,\n  syntaxPlugin?: SyntaxPlugin,\n) {\n  // If the first parameter is an array, that means we were called with a tagged\n  // template literal. Extract the syntaxPlugin from this, and call again in\n  // the \"normalized\" form.\n  if (Array.isArray(argument)) {\n    return (parseErrorTemplates: ParseErrorTemplates) =>\n      ParseErrorEnum(parseErrorTemplates, argument[0]);\n  }\n\n  const ParseErrorConstructors = {} as Record<\n    string,\n    ParseErrorConstructor<unknown>\n  >;\n\n  for (const reasonCode of Object.keys(argument)) {\n    const template = (argument as ParseErrorTemplates)[reasonCode];\n    const { message, ...rest } =\n      typeof template === \"string\"\n        ? { message: () => template }\n        : typeof template === \"function\"\n          ? { message: template }\n          : template;\n    const toMessage = typeof message === \"string\" ? () => message : message;\n\n    ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n      code: \"BABEL_PARSER_SYNTAX_ERROR\",\n      reasonCode,\n      toMessage,\n      ...(syntaxPlugin ? { syntaxPlugin } : {}),\n      ...rest,\n    });\n  }\n\n  return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n  ...ParseErrorEnum(ModuleErrors),\n  ...ParseErrorEnum(StandardErrors),\n  ...ParseErrorEnum(StrictModeErrors),\n  ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase, File } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n  if (object) {\n    defineProperty(object, key, { enumerable: false, value: object[key] });\n  }\n};\n\nfunction toESTreeLocation(node: any) {\n  toUnenumerable(node.loc.start, \"index\");\n  toUnenumerable(node.loc.end, \"index\");\n\n  return node;\n}\n\nexport default (superClass: typeof Parser) =>\n  class ESTreeParserMixin extends superClass implements Parser {\n    parse(): File {\n      const file = toESTreeLocation(super.parse());\n\n      if (this.options.tokens) {\n        file.tokens = file.tokens.map(toESTreeLocation);\n      }\n\n      return file;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n      let regex: RegExp | null = null;\n      try {\n        regex = new RegExp(pattern, flags);\n      } catch (_) {\n        // In environments that don't support these flags value will\n        // be null as the regex can't be represented natively.\n      }\n      const node = this.estreeParseLiteral<N.EstreeRegExpLiteral>(regex);\n      node.regex = { pattern, flags };\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseBigIntLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n      let bigInt: bigint | null;\n      try {\n        bigInt = BigInt(value);\n      } catch {\n        bigInt = null;\n      }\n      const node = this.estreeParseLiteral<N.EstreeBigIntLiteral>(bigInt);\n      node.bigint = String(node.value || value);\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseDecimalLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/experimental/decimal.md\n      // todo: use BigDecimal when node supports it.\n      const decimal: null = null;\n      const node = this.estreeParseLiteral(decimal);\n      node.decimal = String(node.value || value);\n\n      return node;\n    }\n\n    estreeParseLiteral<T extends N.EstreeLiteral>(value: any) {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.parseLiteral<T>(value, \"Literal\");\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseStringLiteral(value: any): N.Node {\n      return this.estreeParseLiteral(value);\n    }\n\n    parseNumericLiteral(value: any): any {\n      return this.estreeParseLiteral(value);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseNullLiteral(): N.Node {\n      return this.estreeParseLiteral(null);\n    }\n\n    parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.estreeParseLiteral(value);\n    }\n\n    // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n    directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n      const expression = directive.value as any as N.EstreeLiteral;\n      delete directive.value;\n\n      expression.type = \"Literal\";\n      // @ts-expect-error N.EstreeLiteral.raw is not defined.\n      expression.raw = expression.extra.raw;\n      expression.value = expression.extra.expressionValue;\n\n      const stmt = directive as any as N.ExpressionStatement;\n      stmt.type = \"ExpressionStatement\";\n      stmt.expression = expression;\n      // @ts-expect-error N.ExpressionStatement.directive is not defined\n      stmt.directive = expression.extra.rawValue;\n\n      delete expression.extra;\n\n      return stmt;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n      super.initFunction(node, isAsync);\n      node.expression = false;\n    }\n\n    checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n      if (node != null && this.isObjectProperty(node)) {\n        // @ts-expect-error plugin typings\n        this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n      } else {\n        super.checkDeclaration(node);\n      }\n    }\n\n    getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n      return (method as unknown as N.EstreeMethodDefinition).value.params;\n    }\n\n    isValidDirective(stmt: N.Statement): boolean {\n      return (\n        stmt.type === \"ExpressionStatement\" &&\n        stmt.expression.type === \"Literal\" &&\n        typeof stmt.expression.value === \"string\" &&\n        !stmt.expression.extra?.parenthesized\n      );\n    }\n\n    parseBlockBody(\n      node: N.BlockStatementLike,\n      allowDirectives: boolean | undefined | null,\n      topLevel: boolean,\n      end: TokenType,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): void {\n      super.parseBlockBody(\n        node,\n        allowDirectives,\n        topLevel,\n        end,\n        afterBlockParse,\n      );\n\n      const directiveStatements = node.directives.map(d =>\n        this.directiveToStmt(d),\n      );\n      // @ts-expect-error estree plugin typings\n      node.body = directiveStatements.concat(node.body);\n      delete node.directives;\n    }\n\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      this.parseMethod(\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n        \"ClassMethod\",\n        true,\n      );\n      if (method.typeParameters) {\n        // @ts-expect-error mutate AST types\n        method.value.typeParameters = method.typeParameters;\n        delete method.typeParameters;\n      }\n      classBody.body.push(method);\n    }\n\n    parsePrivateName(): any {\n      const node = super.parsePrivateName();\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return node;\n        }\n      }\n      return this.convertPrivateNameToPrivateIdentifier(node);\n    }\n\n    convertPrivateNameToPrivateIdentifier(\n      node: N.PrivateName,\n    ): N.EstreePrivateIdentifier {\n      const name = super.getPrivateNameSV(node);\n      node = node as any;\n      delete node.id;\n      // @ts-expect-error mutate AST types\n      node.name = name;\n      // @ts-expect-error mutate AST types\n      node.type = \"PrivateIdentifier\";\n      return node as unknown as N.EstreePrivateIdentifier;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.isPrivateName(node);\n        }\n      }\n      return node.type === \"PrivateIdentifier\";\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.getPrivateNameSV(node as unknown as N.PrivateName);\n        }\n      }\n      return node.name;\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseLiteral<T extends N.Literal>(value: any, type: T[\"type\"]): T {\n      const node = super.parseLiteral<T>(value, type);\n      // @ts-expect-error mutating AST types\n      node.raw = node.extra.raw;\n      delete node.extra;\n\n      return node;\n    }\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpression?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      super.parseFunctionBody(node, allowExpression, isMethod);\n      node.expression = node.body.type !== \"BlockStatement\";\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseMethod<\n      T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope: boolean = false,\n    ): N.EstreeMethodDefinition {\n      let funcNode = this.startNode<N.MethodLike>();\n      funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n      funcNode = super.parseMethod(\n        // @ts-expect-error todo(flow->ts)\n        funcNode,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error mutate AST types\n      funcNode.type = \"FunctionExpression\";\n      delete funcNode.kind;\n      // @ts-expect-error mutate AST types\n      node.value = funcNode;\n      if (type === \"ClassPrivateMethod\") {\n        node.computed = false;\n      }\n      return this.finishNode(\n        // @ts-expect-error cast methods to estree types\n        node as Undone<N.EstreeMethodDefinition>,\n        \"MethodDefinition\",\n      );\n    }\n\n    nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n      if (key.type === \"Literal\") return key.value === \"constructor\";\n      return super.nameIsConstructor(key);\n    }\n\n    parseClassProperty(...args: [N.ClassProperty]): any {\n      const propertyNode = super.parseClassProperty(...args) as any;\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as N.EstreePropertyDefinition;\n        }\n      }\n      propertyNode.type = \"PropertyDefinition\";\n      return propertyNode as N.EstreePropertyDefinition;\n    }\n\n    parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n      const propertyNode = super.parseClassPrivateProperty(...args) as any;\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as N.EstreePropertyDefinition;\n        }\n      }\n      propertyNode.type = \"PropertyDefinition\";\n      propertyNode.computed = false;\n      return propertyNode as N.EstreePropertyDefinition;\n    }\n\n    parseObjectMethod(\n      prop: N.ObjectMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n    ): N.ObjectMethod | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n      ) as any;\n\n      if (node) {\n        node.type = \"Property\";\n        if ((node as any as N.ClassMethod).kind === \"method\") {\n          node.kind = \"init\";\n        }\n        node.shorthand = false;\n      }\n\n      return node as any;\n    }\n\n    parseObjectProperty(\n      prop: N.ObjectProperty,\n      startLoc: Position | undefined | null,\n      isPattern: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ObjectProperty | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectProperty(\n        prop,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      ) as any;\n\n      if (node) {\n        node.kind = \"init\";\n        node.type = \"Property\";\n      }\n\n      return node as any;\n    }\n\n    isValidLVal(\n      type: string,\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      return type === \"Property\"\n        ? \"value\"\n        : super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node != null && this.isObjectProperty(node)) {\n        return this.isAssignable(node.value, isBinding);\n      }\n      return super.isAssignable(node, isBinding);\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (node != null && this.isObjectProperty(node)) {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableObjectExpressionProp(\n      prop: N.Node,\n      isLast: boolean,\n      isLHS: boolean,\n    ) {\n      if (\n        prop.type === \"Property\" &&\n        (prop.kind === \"get\" || prop.kind === \"set\")\n      ) {\n        this.raise(Errors.PatternHasAccessor, prop.key);\n      } else if (prop.type === \"Property\" && prop.method) {\n        this.raise(Errors.PatternHasMethod, prop.key);\n      } else {\n        super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n      }\n    }\n\n    finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n      unfinished: Undone<T>,\n      optional: boolean,\n    ): T {\n      const node = super.finishCallExpression(unfinished, optional);\n\n      if (node.callee.type === \"Import\") {\n        (node as N.Node as N.EstreeImportExpression).type = \"ImportExpression\";\n        (node as N.Node as N.EstreeImportExpression).source = node\n          .arguments[0] as N.Expression;\n        (node as N.Node as N.EstreeImportExpression).options =\n          (node.arguments[1] as N.Expression) ?? null;\n        // compatibility with previous ESTree AST\n        // TODO(Babel 8): Remove this\n        (node as N.Node as N.EstreeImportExpression).attributes =\n          (node.arguments[1] as N.Expression) ?? null;\n        // arguments isn't optional in the type definition\n        delete node.arguments;\n        // callee isn't optional in the type definition\n        delete node.callee;\n      }\n\n      return node;\n    }\n\n    toReferencedArguments(\n      node:\n        | N.CallExpression\n        | N.OptionalCallExpression\n        | N.EstreeImportExpression,\n      /* isParenthesizedExpr?: boolean, */\n    ) {\n      // ImportExpressions do not have an arguments array.\n      if (node.type === \"ImportExpression\") {\n        return;\n      }\n\n      super.toReferencedArguments(node);\n    }\n\n    parseExport(\n      unfinished: Undone<N.AnyExport>,\n      decorators: N.Decorator[] | null,\n    ) {\n      const exportStartLoc = this.state.lastTokStartLoc;\n      const node = super.parseExport(unfinished, decorators);\n\n      switch (node.type) {\n        case \"ExportAllDeclaration\":\n          // @ts-expect-error mutating AST types\n          node.exported = null;\n          break;\n\n        case \"ExportNamedDeclaration\":\n          if (\n            node.specifiers.length === 1 &&\n            node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n          ) {\n            // @ts-expect-error mutating AST types\n            node.type = \"ExportAllDeclaration\";\n            // @ts-expect-error mutating AST types\n            node.exported = node.specifiers[0].exported;\n            delete node.specifiers;\n          }\n\n        // fallthrough\n        case \"ExportDefaultDeclaration\":\n          {\n            const { declaration } = node;\n            if (\n              declaration?.type === \"ClassDeclaration\" &&\n              declaration.decorators?.length > 0 &&\n              // decorator comes before export\n              declaration.start === node.start\n            ) {\n              this.resetStartLocation(\n                node,\n                // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n                // export declaration must start with export.\n                // https://github.com/babel/babel/issues/15085\n                // Here we reset export declaration's start to be the start of the export token\n                exportStartLoc,\n              );\n            }\n          }\n\n          break;\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      const node = super.parseSubscript(base, startLoc, noCalls, state);\n\n      if (state.optionalChainMember) {\n        // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n        if (\n          node.type === \"OptionalMemberExpression\" ||\n          node.type === \"OptionalCallExpression\"\n        ) {\n          // strip Optional prefix\n          (node as unknown as N.CallExpression | N.MemberExpression).type =\n            node.type.substring(8) as \"CallExpression\" | \"MemberExpression\";\n        }\n        if (state.stop) {\n          const chain = this.startNodeAtNode<N.EstreeChainExpression>(node);\n          chain.expression = node;\n          return this.finishNode(chain, \"ChainExpression\");\n        }\n      } else if (\n        node.type === \"MemberExpression\" ||\n        node.type === \"CallExpression\"\n      ) {\n        // @ts-expect-error not in the type definitions\n        node.optional = false;\n      }\n\n      return node;\n    }\n\n    isOptionalMemberExpression(node: N.Node) {\n      if (node.type === \"ChainExpression\") {\n        return node.expression.type === \"MemberExpression\";\n      }\n      return super.isOptionalMemberExpression(node);\n    }\n\n    hasPropertyAsPrivateName(node: N.Node): boolean {\n      if (node.type === \"ChainExpression\") {\n        node = node.expression;\n      }\n      return super.hasPropertyAsPrivateName(node);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectProperty(node: N.Node): node is N.EstreeProperty {\n      return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectMethod(node: N.Node): node is N.EstreeProperty {\n      return (\n        node.type === \"Property\" &&\n        (node.method || node.kind === \"get\" || node.kind === \"set\")\n      );\n    }\n\n    finishNodeAt<T extends NodeType>(\n      node: Undone<T>,\n      type: T[\"type\"],\n      endLoc: Position,\n    ): T {\n      return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n    }\n\n    resetStartLocation(node: N.Node, startLoc: Position) {\n      super.resetStartLocation(node, startLoc);\n      toESTreeLocation(node);\n    }\n\n    resetEndLocation(\n      node: NodeBase,\n      endLoc: Position = this.state.lastTokEndLoc,\n    ): void {\n      super.resetEndLocation(node, endLoc);\n      toESTreeLocation(node);\n    }\n  };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n  constructor(token: string, preserveSpace?: boolean) {\n    this.token = token;\n    this.preserveSpace = !!preserveSpace;\n  }\n\n  token: string;\n  preserveSpace: boolean;\n}\n\nconst types: {\n  [key: string]: TokContext;\n} = {\n  brace: new TokContext(\"{\"), // normal JavaScript expression\n  j_oTag: new TokContext(\"<tag\"), // JSX opening tag\n  j_cTag: new TokContext(\"</tag\"), // JSX closing tag\n  j_expr: new TokContext(\"<tag>...</tag>\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (<name>); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n  keyword?: string;\n  beforeExpr?: boolean;\n  startsExpr?: boolean;\n  rightAssociative?: boolean;\n  isLoop?: boolean;\n  isAssign?: boolean;\n  prefix?: boolean;\n  postfix?: boolean;\n  binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n  label: string;\n  keyword: string | undefined | null;\n  beforeExpr: boolean;\n  startsExpr: boolean;\n  rightAssociative: boolean;\n  isLoop: boolean;\n  isAssign: boolean;\n  prefix: boolean;\n  postfix: boolean;\n  binop: number | undefined | null;\n  // todo(Babel 8): remove updateContext from exposed token layout\n  declare updateContext:\n    | ((context: Array<TokContext>) => void)\n    | undefined\n    | null;\n\n  constructor(label: string, conf: TokenOptions = {}) {\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.rightAssociative = !!conf.rightAssociative;\n    this.isLoop = !!conf.isLoop;\n    this.isAssign = !!conf.isAssign;\n    this.prefix = !!conf.prefix;\n    this.postfix = !!conf.postfix;\n    this.binop = conf.binop != null ? conf.binop : null;\n    if (!process.env.BABEL_8_BREAKING) {\n      this.updateContext = null;\n    }\n  }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n  options.keyword = name;\n  const token = createToken(name, options);\n  keywords.set(name, token);\n  return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n  return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n  ++tokenTypeCounter;\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  tokenTypes.push(new ExportedTokenType(name, options));\n\n  return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n  name: string,\n  options: TokenOptions = {},\n): TokenType {\n  ++tokenTypeCounter;\n  keywords.set(name, tokenTypeCounter);\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n  tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n  return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n  // Punctuation token types.\n  bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n  bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n  bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n  bracketR: createToken(\"]\"),\n  bracketBarR: createToken(\"|]\"),\n  braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n  braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n  braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n  braceR: createToken(\"}\"),\n  braceBarR: createToken(\"|}\"),\n  parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n  parenR: createToken(\")\"),\n  comma: createToken(\",\", { beforeExpr }),\n  semi: createToken(\";\", { beforeExpr }),\n  colon: createToken(\":\", { beforeExpr }),\n  doubleColon: createToken(\"::\", { beforeExpr }),\n  dot: createToken(\".\"),\n  question: createToken(\"?\", { beforeExpr }),\n  questionDot: createToken(\"?.\"),\n  arrow: createToken(\"=>\", { beforeExpr }),\n  template: createToken(\"template\"),\n  ellipsis: createToken(\"...\", { beforeExpr }),\n  backQuote: createToken(\"`\", { startsExpr }),\n  dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n  // start: isTemplate\n  templateTail: createToken(\"...`\", { startsExpr }),\n  templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n  // end: isTemplate\n  at: createToken(\"@\"),\n  hash: createToken(\"#\", { startsExpr }),\n\n  // Special hashbang token.\n  interpreterDirective: createToken(\"#!...\"),\n\n  // Operators. These carry several kinds of properties to help the\n  // parser use them properly (the presence of these properties is\n  // what categorizes them as operators).\n  //\n  // `binop`, when present, specifies that this operator is a binary\n  // operator, and will refer to its precedence.\n  //\n  // `prefix` and `postfix` mark the operator as a prefix or postfix\n  // unary operator.\n  //\n  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n  // binary operators with a very low precedence, that should result\n  // in AssignmentExpression nodes.\n\n  // start: isAssign\n  eq: createToken(\"=\", { beforeExpr, isAssign }),\n  assign: createToken(\"_=\", { beforeExpr, isAssign }),\n  slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // These are only needed to support % and ^ as a Hack-pipe topic token.\n  // When the proposal settles on a token, the others can be merged with\n  // tt.assign.\n  xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // end: isAssign\n\n  incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n  bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n  tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n  // More possible topic tokens.\n  // When the proposal settles on a token, at least one of these may be removed.\n  doubleCaret: createToken(\"^^\", { startsExpr }),\n  doubleAt: createToken(\"@@\", { startsExpr }),\n\n  // start: isBinop\n  pipeline: createBinop(\"|>\", 0),\n  nullishCoalescing: createBinop(\"??\", 1),\n  logicalOR: createBinop(\"||\", 1),\n  logicalAND: createBinop(\"&&\", 2),\n  bitwiseOR: createBinop(\"|\", 3),\n  bitwiseXOR: createBinop(\"^\", 4),\n  bitwiseAND: createBinop(\"&\", 5),\n  equality: createBinop(\"==/!=/===/!==\", 6),\n  lt: createBinop(\"</>/<=/>=\", 7),\n  gt: createBinop(\"</>/<=/>=\", 7),\n  relational: createBinop(\"</>/<=/>=\", 7),\n  bitShift: createBinop(\"<</>>/>>>\", 8),\n  bitShiftL: createBinop(\"<</>>/>>>\", 8),\n  bitShiftR: createBinop(\"<</>>/>>>\", 8),\n  plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n  // startsExpr: required by v8intrinsic plugin\n  modulo: createToken(\"%\", { binop: 10, startsExpr }),\n  // unset `beforeExpr` as it can be `function *`\n  star: createToken(\"*\", { binop: 10 }),\n  slash: createBinop(\"/\", 10),\n  exponent: createToken(\"**\", {\n    beforeExpr,\n    binop: 11,\n    rightAssociative: true,\n  }),\n\n  // Keywords\n  // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n  // when new keywords are added\n  // start: isLiteralPropertyName\n  // start: isKeyword\n  _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n  _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n  // end: isBinop\n  _break: createKeyword(\"break\"),\n  _case: createKeyword(\"case\", { beforeExpr }),\n  _catch: createKeyword(\"catch\"),\n  _continue: createKeyword(\"continue\"),\n  _debugger: createKeyword(\"debugger\"),\n  _default: createKeyword(\"default\", { beforeExpr }),\n  _else: createKeyword(\"else\", { beforeExpr }),\n  _finally: createKeyword(\"finally\"),\n  _function: createKeyword(\"function\", { startsExpr }),\n  _if: createKeyword(\"if\"),\n  _return: createKeyword(\"return\", { beforeExpr }),\n  _switch: createKeyword(\"switch\"),\n  _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n  _try: createKeyword(\"try\"),\n  _var: createKeyword(\"var\"),\n  _const: createKeyword(\"const\"),\n  _with: createKeyword(\"with\"),\n  _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n  _this: createKeyword(\"this\", { startsExpr }),\n  _super: createKeyword(\"super\", { startsExpr }),\n  _class: createKeyword(\"class\", { startsExpr }),\n  _extends: createKeyword(\"extends\", { beforeExpr }),\n  _export: createKeyword(\"export\"),\n  _import: createKeyword(\"import\", { startsExpr }),\n  _null: createKeyword(\"null\", { startsExpr }),\n  _true: createKeyword(\"true\", { startsExpr }),\n  _false: createKeyword(\"false\", { startsExpr }),\n  _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n  _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n  _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n  // start: isLoop\n  _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n  _for: createKeyword(\"for\", { isLoop }),\n  _while: createKeyword(\"while\", { isLoop }),\n  // end: isLoop\n  // end: isKeyword\n\n  // Primary literals\n  // start: isIdentifier\n  _as: createKeywordLike(\"as\", { startsExpr }),\n  _assert: createKeywordLike(\"assert\", { startsExpr }),\n  _async: createKeywordLike(\"async\", { startsExpr }),\n  _await: createKeywordLike(\"await\", { startsExpr }),\n  _defer: createKeywordLike(\"defer\", { startsExpr }),\n  _from: createKeywordLike(\"from\", { startsExpr }),\n  _get: createKeywordLike(\"get\", { startsExpr }),\n  _let: createKeywordLike(\"let\", { startsExpr }),\n  _meta: createKeywordLike(\"meta\", { startsExpr }),\n  _of: createKeywordLike(\"of\", { startsExpr }),\n  _sent: createKeywordLike(\"sent\", { startsExpr }),\n  _set: createKeywordLike(\"set\", { startsExpr }),\n  _source: createKeywordLike(\"source\", { startsExpr }),\n  _static: createKeywordLike(\"static\", { startsExpr }),\n  _using: createKeywordLike(\"using\", { startsExpr }),\n  _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n  // Flow and TypeScript Keywordlike\n  _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n  _checks: createKeywordLike(\"checks\", { startsExpr }),\n  _exports: createKeywordLike(\"exports\", { startsExpr }),\n  _global: createKeywordLike(\"global\", { startsExpr }),\n  _implements: createKeywordLike(\"implements\", { startsExpr }),\n  _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n  _infer: createKeywordLike(\"infer\", { startsExpr }),\n  _is: createKeywordLike(\"is\", { startsExpr }),\n  _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n  _proto: createKeywordLike(\"proto\", { startsExpr }),\n  _require: createKeywordLike(\"require\", { startsExpr }),\n  _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n  // start: isTSTypeOperator\n  _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n  _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n  _unique: createKeywordLike(\"unique\", { startsExpr }),\n  // end: isTSTypeOperator\n  // start: isTSDeclarationStart\n  _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n  _declare: createKeywordLike(\"declare\", { startsExpr }),\n  _enum: createKeywordLike(\"enum\", { startsExpr }),\n  _module: createKeywordLike(\"module\", { startsExpr }),\n  _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n  // start: isFlowInterfaceOrTypeOrOpaque\n  _interface: createKeywordLike(\"interface\", { startsExpr }),\n  _type: createKeywordLike(\"type\", { startsExpr }),\n  // end: isTSDeclarationStart\n  _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n  // end: isFlowInterfaceOrTypeOrOpaque\n  name: createToken(\"name\", { startsExpr }),\n\n  // placeholder plugin\n  placeholder: createToken(\"%%\", { startsExpr: true }),\n  // end: isIdentifier\n\n  string: createToken(\"string\", { startsExpr }),\n  num: createToken(\"num\", { startsExpr }),\n  bigint: createToken(\"bigint\", { startsExpr }),\n  // TODO: Remove this in Babel 8\n  decimal: createToken(\"decimal\", { startsExpr }),\n  // end: isLiteralPropertyName\n  regexp: createToken(\"regexp\", { startsExpr }),\n  privateName: createToken(\"#name\", { startsExpr }),\n  eof: createToken(\"eof\"),\n\n  // jsx plugin\n  jsxName: createToken(\"jsxName\"),\n  jsxText: createToken(\"jsxText\", { beforeExpr: true }),\n  jsxTagStart: createToken(\"jsxTagStart\", { startsExpr: true }),\n  jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n  return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n  // we can remove the token >= tt._in check when we\n  // know a token is either keyword or identifier\n  return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n  return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n  return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n  return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n  return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n  return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n  return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n  return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n  return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n  return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n  return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n  return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n  return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n  return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n  return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n  return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n  return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n  return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n  return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  tokenTypes[tt.braceR].updateContext = context => {\n    context.pop();\n  };\n\n  tokenTypes[tt.braceL].updateContext =\n    tokenTypes[tt.braceHashL].updateContext =\n    tokenTypes[tt.dollarBraceL].updateContext =\n      context => {\n        context.push(tc.brace);\n      };\n\n  tokenTypes[tt.backQuote].updateContext = context => {\n    if (context[context.length - 1] === tc.template) {\n      context.pop();\n    } else {\n      context.push(tc.template);\n    }\n  };\n\n  tokenTypes[tt.jsxTagStart].updateContext = context => {\n    context.push(tc.j_expr, tc.j_oTag);\n  };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n  let pos = 0x10000;\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n\n    pos += set[i + 1];\n    if (pos >= code) return true;\n  }\n  return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n  if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return (\n      code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n    );\n  }\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n  if (code < charCodes.digit0) return code === charCodes.dollarSign;\n  if (code < charCodes.colon) return true;\n  if (code < charCodes.uppercaseA) return false;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n  return (\n    isInAstralSet(code, astralIdentifierStartCodes) ||\n    isInAstralSet(code, astralIdentifierCodes)\n  );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n  let isFirst = true;\n  for (let i = 0; i < name.length; i++) {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = name.charCodeAt(i);\n    if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n      const trail = name.charCodeAt(++i);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    if (isFirst) {\n      isFirst = false;\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n  return !isFirst;\n}\n","const reservedWords = {\n  keyword: [\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"continue\",\n    \"debugger\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"finally\",\n    \"for\",\n    \"function\",\n    \"if\",\n    \"return\",\n    \"switch\",\n    \"throw\",\n    \"try\",\n    \"var\",\n    \"const\",\n    \"while\",\n    \"with\",\n    \"new\",\n    \"this\",\n    \"super\",\n    \"class\",\n    \"extends\",\n    \"export\",\n    \"import\",\n    \"null\",\n    \"true\",\n    \"false\",\n    \"in\",\n    \"instanceof\",\n    \"typeof\",\n    \"void\",\n    \"delete\",\n  ],\n  strict: [\n    \"implements\",\n    \"interface\",\n    \"let\",\n    \"package\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"static\",\n    \"yield\",\n  ],\n  strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n  return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n  return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n  word: string,\n  inModule: boolean,\n): boolean {\n  return (\n    isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n  );\n}\n\nexport function isKeyword(word: string): boolean {\n  return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n  isIdentifierStart,\n  isIdentifierChar,\n  isReservedWord,\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n  current: number,\n  next: number,\n  next2: number,\n): boolean {\n  return (\n    current === charCodes.atSign &&\n    next === charCodes.atSign &&\n    isIdentifierStart(next2)\n  );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n  \"break\",\n  \"case\",\n  \"catch\",\n  \"continue\",\n  \"debugger\",\n  \"default\",\n  \"do\",\n  \"else\",\n  \"finally\",\n  \"for\",\n  \"function\",\n  \"if\",\n  \"return\",\n  \"switch\",\n  \"throw\",\n  \"try\",\n  \"var\",\n  \"const\",\n  \"while\",\n  \"with\",\n  \"new\",\n  \"this\",\n  \"super\",\n  \"class\",\n  \"extends\",\n  \"export\",\n  \"import\",\n  \"null\",\n  \"true\",\n  \"false\",\n  \"in\",\n  \"instanceof\",\n  \"typeof\",\n  \"void\",\n  \"delete\",\n  // strict\n  \"implements\",\n  \"interface\",\n  \"let\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"static\",\n  \"yield\",\n  // strictBind\n  \"eval\",\n  \"arguments\",\n  // reservedWorkLike\n  \"enum\",\n  \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n  return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n  // var-declared names in the current lexical scope\n  Var = 1 << 0,\n  // lexically-declared names in the current lexical scope\n  Lexical = 1 << 1,\n  // lexically-declared FunctionDeclaration names in the current lexical scope\n  Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n  flags: ScopeFlag = 0;\n  names: Map<string, NameType> = new Map();\n  firstLexicalName = \"\";\n\n  constructor(flags: ScopeFlag) {\n    this.flags = flags;\n  }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope extends Scope = Scope> {\n  parser: Tokenizer;\n  scopeStack: Array<IScope> = [];\n  inModule: boolean;\n  undefinedExports: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer, inModule: boolean) {\n    this.parser = parser;\n    this.inModule = inModule;\n  }\n\n  get inTopLevel() {\n    return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n  }\n  get inFunction() {\n    return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION) > 0;\n  }\n  get allowSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n  }\n  get allowDirectSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n  }\n  get inClass() {\n    return (this.currentThisScopeFlags() & ScopeFlag.CLASS) > 0;\n  }\n  get inClassAndNotInNonArrowFunction() {\n    const flags = this.currentThisScopeFlags();\n    return (flags & ScopeFlag.CLASS) > 0 && (flags & ScopeFlag.FUNCTION) === 0;\n  }\n  get inStaticBlock() {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.STATIC_BLOCK) {\n        return true;\n      }\n      if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS)) {\n        // function body, module body, class property initializers\n        return false;\n      }\n    }\n  }\n  get inNonArrowFunction() {\n    return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION) > 0;\n  }\n  get treatFunctionsAsVar() {\n    return this.treatFunctionsAsVarInScope(this.currentScope());\n  }\n\n  createScope(flags: ScopeFlag): Scope {\n    return new Scope(flags);\n  }\n\n  enter(flags: ScopeFlag) {\n    /*:: +createScope: (flags:ScopeFlag) => IScope; */\n    // @ts-expect-error This method will be overwritten by subclasses\n    this.scopeStack.push(this.createScope(flags));\n  }\n\n  exit(): ScopeFlag {\n    const scope = this.scopeStack.pop();\n    return scope.flags;\n  }\n\n  // The spec says:\n  // > At the top level of a function, or script, function declarations are\n  // > treated like var declarations rather than like lexical declarations.\n  treatFunctionsAsVarInScope(scope: IScope): boolean {\n    return !!(\n      scope.flags & (ScopeFlag.FUNCTION | ScopeFlag.STATIC_BLOCK) ||\n      (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n    );\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    let scope = this.currentScope();\n    if (\n      bindingType & BindingFlag.SCOPE_LEXICAL ||\n      bindingType & BindingFlag.SCOPE_FUNCTION\n    ) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n      let type = scope.names.get(name) || 0;\n\n      if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n        type = type | NameType.Function;\n      } else {\n        if (!scope.firstLexicalName) {\n          scope.firstLexicalName = name;\n        }\n        type = type | NameType.Lexical;\n      }\n\n      scope.names.set(name, type);\n\n      if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n        this.maybeExportDefined(scope, name);\n      }\n    } else if (bindingType & BindingFlag.SCOPE_VAR) {\n      for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n        scope = this.scopeStack[i];\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n        this.maybeExportDefined(scope, name);\n\n        if (scope.flags & ScopeFlag.VAR) break;\n      }\n    }\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  maybeExportDefined(scope: IScope, name: string) {\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  checkRedeclarationInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n    loc: Position,\n  ) {\n    if (this.isRedeclaredInScope(scope, name, bindingType)) {\n      this.parser.raise(Errors.VarRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n  }\n\n  isRedeclaredInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n    if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n      return scope.names.has(name);\n    }\n\n    const type = scope.names.get(name);\n\n    if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n      return (\n        (type & NameType.Lexical) > 0 ||\n        (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n      );\n    }\n\n    return (\n      ((type & NameType.Lexical) > 0 &&\n        // Annex B.3.4\n        // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n        !(\n          scope.flags & ScopeFlag.SIMPLE_CATCH &&\n          scope.firstLexicalName === name\n        )) ||\n      (!this.treatFunctionsAsVarInScope(scope) &&\n        (type & NameType.Function) > 0)\n    );\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n    const topLevelScope = this.scopeStack[0];\n    if (!topLevelScope.names.has(name)) {\n      this.undefinedExports.set(name, id.loc.start);\n    }\n  }\n\n  currentScope(): IScope {\n    return this.scopeStack[this.scopeStack.length - 1];\n  }\n\n  currentVarScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.VAR) {\n        return flags;\n      }\n    }\n  }\n\n  // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n  currentThisScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (\n        flags & (ScopeFlag.VAR | ScopeFlag.CLASS) &&\n        !(flags & ScopeFlag.ARROW)\n      ) {\n        return flags;\n      }\n    }\n  }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n  // declare function foo(): type;\n  declareFunctions: Set<string> = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler<FlowScope> {\n  createScope(flags: ScopeFlag): FlowScope {\n    return new FlowScope(flags);\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    const scope = this.currentScope();\n    if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n      this.maybeExportDefined(scope, name);\n      scope.declareFunctions.add(name);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n  }\n\n  isRedeclaredInScope(\n    scope: FlowScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n    if (\n      bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n      !scope.declareFunctions.has(name)\n    ) {\n      const type = scope.names.get(name);\n      return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n    }\n\n    return false;\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n      super.checkLocalExport(id);\n    }\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n  ParserPluginWithOptions,\n  PluginConfig,\n  PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n  // Properties set by constructor in index.js\n  declare options: Options;\n  declare inModule: boolean;\n  declare scope: ScopeHandler<any>;\n  declare classScope: ClassScopeHandler;\n  declare prodParam: ProductionParameterHandler;\n  declare expressionScope: ExpressionScopeHandler;\n  declare plugins: PluginsMap;\n  declare filename: string | undefined | null;\n  declare startIndex: number;\n  // Names of exports store. `default` is stored as a name for both\n  // `export default foo;` and `export { foo as default };`.\n  declare exportedIdentifiers: Set<string>;\n  sawUnambiguousESM: boolean = false;\n  ambiguousScriptDifferentAst: boolean = false;\n\n  // Initialized by Tokenizer\n  declare state: State;\n  // input and length are not in state as they are constant and we do\n  // not want to ever copy them, which happens if state gets cloned\n  declare input: string;\n  declare length: number;\n  // Comment store for Program.comments\n  declare comments: Array<N.Comment>;\n\n  sourceToOffsetPos(sourcePos: number) {\n    return sourcePos + this.startIndex;\n  }\n\n  offsetToSourcePos(offsetPos: number) {\n    return offsetPos - this.startIndex;\n  }\n\n  // This method accepts either a string (plugin name) or an array pair\n  // (plugin name and options object). If an options object is given,\n  // then each value is non-recursively checked for identity with that\n  // plugin’s actual option value.\n  hasPlugin(pluginConfig: PluginConfig): boolean {\n    if (typeof pluginConfig === \"string\") {\n      return this.plugins.has(pluginConfig);\n    } else {\n      const [pluginName, pluginOptions] = pluginConfig;\n      if (!this.hasPlugin(pluginName)) {\n        return false;\n      }\n      const actualOptions = this.plugins.get(pluginName);\n      for (const key of Object.keys(\n        pluginOptions,\n      ) as (keyof typeof pluginOptions)[]) {\n        if (actualOptions?.[key] !== pluginOptions[key]) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  getPluginOption<\n    PluginName extends ParserPluginWithOptions[0],\n    OptionName extends keyof PluginOptions<PluginName>,\n  >(plugin: PluginName, name: OptionName) {\n    return (this.plugins.get(plugin) as null | PluginOptions<PluginName>)?.[\n      name\n    ];\n  }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node, Identifier } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n  /**\n   * the start of the whitespace token.\n   */\n  start: number;\n  /**\n   * the end of the whitespace token.\n   */\n  end: number;\n  /**\n   * the containing comments\n   */\n  comments: Array<Comment>;\n  /**\n   * the immediately preceding AST node of the whitespace token\n   */\n  leadingNode: Node | null;\n  /**\n   * the immediately following AST node of the whitespace token\n   */\n  trailingNode: Node | null;\n  /**\n   * the innermost AST node containing the whitespace with minimal size (|end - start|)\n   */\n  containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.trailingComments === undefined) {\n    node.trailingComments = comments;\n  } else {\n    node.trailingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.leadingComments === undefined) {\n    node.leadingComments = comments;\n  } else {\n    node.leadingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(\n  node: Undone<Node>,\n  comments?: Array<Comment>,\n) {\n  if (node.innerComments === undefined) {\n    node.innerComments = comments;\n  } else {\n    node.innerComments.unshift(...comments);\n  }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n  node: Undone<Node>,\n  elements: Array<Node>,\n  commentWS: CommentWhitespace,\n) {\n  let lastElement = null;\n  let i = elements.length;\n  while (lastElement === null && i > 0) {\n    lastElement = elements[--i];\n  }\n  if (lastElement === null || lastElement.start > commentWS.start) {\n    setInnerComments(node, commentWS.comments);\n  } else {\n    setTrailingComments(lastElement, commentWS.comments);\n  }\n}\n\nexport default class CommentsParser extends BaseParser {\n  addComment(comment: Comment): void {\n    if (this.filename) comment.loc.filename = this.filename;\n    const { commentsLen } = this.state;\n    if (this.comments.length !== commentsLen) {\n      this.comments.length = commentsLen;\n    }\n    this.comments.push(comment);\n    this.state.commentsLen++;\n  }\n\n  /**\n   * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n   * {@see {@link CommentWhitespace}}\n   */\n  processComment(node: Node): void {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n    const lastCommentWS = commentStack[i];\n\n    if (lastCommentWS.start === node.end) {\n      lastCommentWS.leadingNode = node;\n      i--;\n    }\n\n    const { start: nodeStart } = node;\n    // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      if (commentEnd > nodeStart) {\n        // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n        // so node can be a containingNode candidate. At this time we can finalize the comment\n        // whitespace, because\n        // 1) its leadingNode or trailingNode, if exists, will not change\n        // 2) its containingNode have been assigned and will not change because it is the\n        //    innermost minimal-sized AST node\n        commentWS.containingNode = node;\n        this.finalizeComment(commentWS);\n        commentStack.splice(i, 1);\n      } else {\n        if (commentEnd === nodeStart) {\n          commentWS.trailingNode = node;\n        }\n        // stop the loop when commentEnd <= nodeStart\n        break;\n      }\n    }\n  }\n\n  /**\n   * Assign the comments of comment whitespaces to related AST nodes.\n   * Also adjust innerComments following trailing comma.\n   */\n  finalizeComment(commentWS: CommentWhitespace) {\n    const { comments } = commentWS;\n    if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n      if (commentWS.leadingNode !== null) {\n        setTrailingComments(commentWS.leadingNode, comments);\n      }\n      if (commentWS.trailingNode !== null) {\n        setLeadingComments(commentWS.trailingNode, comments);\n      }\n    } else {\n      /*:: invariant(commentWS.containingNode !== null) */\n      const { containingNode: node, start: commentStart } = commentWS;\n      if (\n        this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n        charCodes.comma\n      ) {\n        // If a commentWhitespace follows a comma and the containingNode allows\n        // list structures with trailing comma, merge it to the trailingComment\n        // of the last non-null list element\n        switch (node.type) {\n          case \"ObjectExpression\":\n          case \"ObjectPattern\":\n          case \"RecordExpression\":\n            adjustInnerComments(node, node.properties, commentWS);\n            break;\n          case \"CallExpression\":\n          case \"OptionalCallExpression\":\n            adjustInnerComments(node, node.arguments, commentWS);\n            break;\n          case \"FunctionDeclaration\":\n          case \"FunctionExpression\":\n          case \"ArrowFunctionExpression\":\n          case \"ObjectMethod\":\n          case \"ClassMethod\":\n          case \"ClassPrivateMethod\":\n            adjustInnerComments(node, node.params, commentWS);\n            break;\n          case \"ArrayExpression\":\n          case \"ArrayPattern\":\n          case \"TupleExpression\":\n            adjustInnerComments(node, node.elements, commentWS);\n            break;\n          case \"ExportNamedDeclaration\":\n          case \"ImportDeclaration\":\n            adjustInnerComments(node, node.specifiers, commentWS);\n            break;\n          default: {\n            setInnerComments(node, comments);\n          }\n        }\n      } else {\n        setInnerComments(node, comments);\n      }\n    }\n  }\n\n  /**\n   * Drains remaining commentStack and applies finalizeComment\n   * to each comment whitespace. Used only in parseExpression\n   * where the top level AST node is _not_ Program\n   * {@see {@link CommentsParser#finalizeComment}}\n   */\n  finalizeRemainingComments() {\n    const { commentStack } = this.state;\n    for (let i = commentStack.length - 1; i >= 0; i--) {\n      this.finalizeComment(commentStack[i]);\n    }\n    this.state.commentStack = [];\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node trailing comments. Used in object / class\n   * property parsing. We parse `async`, `static`, `set` and `get`\n   * as an identifier but may reinterpret it into an async/static/accessor\n   * method later. In this case the identifier is not part of the AST and we\n   * should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * async /* 1 *​/ function f() {}\n   * ```\n   * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n   * we see the function token, we create a Function node and mark `/* 1 *​/` as\n   * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousNodeTrailingComments(node: Node) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n    const commentWS = commentStack[length - 1];\n    if (commentWS.leadingNode === node) {\n      commentWS.leadingNode = null;\n    }\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node leading comments, assuming that `node` is a\n   * single-token node. Used in import phase modifiers parsing. We parse\n   * `module` in `import module foo from ...` as an identifier but may\n   * reinterpret it into a phase modifier later. In this case the identifier is\n   * not part of the AST and we should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * import /* 1 *​/ module a from \"a\";\n   * ```\n   * the comment whitespace `/* 1 *​/` has trailing node Identifier(module). When\n   * we see that `module` is not a default import binding, we mark `/* 1 *​/` as\n   * inner comments of the ImportDeclaration. So `/* 1 *​/` should be detached from\n   * the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousIdentifierLeadingComments(node: Identifier) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n\n    if (commentStack[length - 1].trailingNode === node) {\n      commentStack[length - 1].trailingNode = null;\n    } else if (length >= 2 && commentStack[length - 2].trailingNode === node) {\n      commentStack[length - 2].trailingNode = null;\n    }\n  }\n\n  /**\n   * Attach a node to the comment whitespaces right before/after\n   * the given range.\n   *\n   * This is used to properly attach comments around parenthesized\n   * expressions as leading/trailing comments of the inner expression.\n   */\n  takeSurroundingComments(node: Node, start: number, end: number) {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      const commentStart = commentWS.start;\n\n      if (commentStart === end) {\n        commentWS.leadingNode = node;\n      } else if (commentEnd === start) {\n        commentWS.trailingNode = node;\n      } else if (commentEnd < start) {\n        break;\n      }\n    }\n  }\n}\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n  switch (code) {\n    case charCodes.lineFeed:\n    case charCodes.carriageReturn:\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n  for (let i = start; i < end; i++) {\n    if (isNewLine(input.charCodeAt(i))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n  /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n  switch (code) {\n    case 0x0009: // CHARACTER TABULATION\n    case 0x000b: // LINE TABULATION\n    case 0x000c: // FORM FEED\n    case charCodes.space:\n    case charCodes.nonBreakingSpace:\n    case charCodes.oghamSpaceMark:\n    case 0x2000: // EN QUAD\n    case 0x2001: // EM QUAD\n    case 0x2002: // EN SPACE\n    case 0x2003: // EM SPACE\n    case 0x2004: // THREE-PER-EM SPACE\n    case 0x2005: // FOUR-PER-EM SPACE\n    case 0x2006: // SIX-PER-EM SPACE\n    case 0x2007: // FIGURE SPACE\n    case 0x2008: // PUNCTUATION SPACE\n    case 0x2009: // THIN SPACE\n    case 0x200a: // HAIR SPACE\n    case 0x202f: // NARROW NO-BREAK SPACE\n    case 0x205f: // MEDIUM MATHEMATICAL SPACE\n    case 0x3000: // IDEOGRAPHIC SPACE\n    case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n      return true;\n\n    default:\n      return false;\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n  | typeof Errors.StrictNumericEscape\n  | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n  // When a topic binding has been currently established,\n  // then this is 1. Otherwise, it is 0. This is forwards compatible\n  // with a future plugin for multiple lexical topics.\n  maxNumOfResolvableTopics: number;\n  // When a topic binding has been currently established, and if that binding\n  // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n  // `null`. This is forwards compatible with a future plugin for multiple\n  // lexical topics.\n  maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n  Loop = 1,\n  Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<State>;\n\nexport default class State {\n  @bit.storage flags: number;\n\n  @bit accessor strict = false;\n\n  startIndex: number;\n  curLine: number;\n  lineStart: number;\n\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  startLoc: Position;\n  endLoc: Position;\n\n  init({\n    strictMode,\n    sourceType,\n    startIndex,\n    startLine,\n    startColumn,\n  }: Options): void {\n    this.strict =\n      strictMode === false\n        ? false\n        : strictMode === true\n          ? true\n          : sourceType === \"module\";\n\n    this.startIndex = startIndex;\n    this.curLine = startLine;\n    this.lineStart = -startColumn;\n    this.startLoc = this.endLoc = new Position(\n      startLine,\n      startColumn,\n      startIndex,\n    );\n  }\n\n  errors: ParseError<any>[] = [];\n\n  // Used to signify the start of a potential arrow function\n  potentialArrowAt: number = -1;\n\n  // Used to signify the start of an expression which looks like a\n  // typed arrow function, but it isn't\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowAt: number[] = [];\n\n  // Used to signify the start of an expression whose params, if it looks like\n  // an arrow function, shouldn't be converted to assignable nodes.\n  // This is used to defer the validation of typed arrow functions inside\n  // conditional expressions.\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowParamsConversionAt: number[] = [];\n\n  // Flags to track\n  @bit accessor maybeInArrowParameters = false;\n  @bit accessor inType = false;\n  @bit accessor noAnonFunctionType = false;\n  @bit accessor hasFlowComment = false;\n  @bit accessor isAmbientContext = false;\n  @bit accessor inAbstractClass = false;\n  @bit accessor inDisallowConditionalTypesContext = false;\n\n  // For the Hack-style pipelines plugin\n  topicContext: TopicContextState = {\n    maxNumOfResolvableTopics: 0,\n    maxTopicIndex: null,\n  };\n\n  // For the F#-style pipelines plugin\n  @bit accessor soloAwait = false;\n  @bit accessor inFSharpPipelineDirectBody = false;\n\n  // Labels in scope.\n  labels: Array<{\n    kind: LoopLabelKind;\n    name?: string | null;\n    statementStart?: number;\n  }> = [];\n\n  commentsLen = 0;\n  // Comment attachment store\n  commentStack: Array<CommentWhitespace> = [];\n\n  // The current position of the tokenizer in the input.\n  pos: number = 0;\n\n  // Properties of the current token:\n  // Its type\n  type: TokenType = tt.eof;\n\n  // For tokens that include more information than their type, the value\n  value: any = null;\n\n  // Its start and end offset\n  start: number = 0;\n  end: number = 0;\n\n  // Position information for the previous token\n  // this is initialized when generating the second token.\n  lastTokEndLoc: Position = null;\n  // this is initialized when generating the second token.\n  lastTokStartLoc: Position = null;\n\n  // The context stack is used to track whether the apostrophe \"`\" starts\n  // or ends a string template\n  context: Array<TokContext> = [ct.brace];\n\n  // Used to track whether a JSX element is allowed to form\n  @bit accessor canStartJSXElement = true;\n\n  // Used to signal to callers of `readWord1` whether the word\n  // contained any escape sequences. This is needed because words with\n  // escape sequences must not be interpreted as keywords.\n  @bit accessor containsEsc = false;\n\n  // Used to track invalid escape sequences in template literals,\n  // that must be reported if the template is not tagged.\n  firstInvalidTemplateEscapePos: null | Position = null;\n\n  @bit accessor hasTopLevelAwait = false;\n\n  // This property is used to track the following errors\n  // - StrictNumericEscape\n  // - StrictOctalLiteral\n  //\n  // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n  // todo(JLHwung): set strictErrors to null and avoid recording string errors\n  // after a non-directive is parsed\n  strictErrors: Map<number, [DeferredStrictError, Position]> = new Map();\n\n  // Tokens length in token store\n  tokensLength: number = 0;\n\n  /**\n   * When we add a new property, we must manually update the `clone` method\n   * @see State#clone\n   */\n\n  curPosition(): Position {\n    return new Position(\n      this.curLine,\n      this.pos - this.lineStart,\n      this.pos + this.startIndex,\n    );\n  }\n\n  clone(): State {\n    const state = new State();\n    state.flags = this.flags;\n    state.startIndex = this.startIndex;\n    state.curLine = this.curLine;\n    state.lineStart = this.lineStart;\n    state.startLoc = this.startLoc;\n    state.endLoc = this.endLoc;\n    state.errors = this.errors.slice();\n    state.potentialArrowAt = this.potentialArrowAt;\n    state.noArrowAt = this.noArrowAt.slice();\n    state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n    state.topicContext = this.topicContext;\n    state.labels = this.labels.slice();\n    state.commentsLen = this.commentsLen;\n    state.commentStack = this.commentStack.slice();\n    state.pos = this.pos;\n    state.type = this.type;\n    state.value = this.value;\n    state.start = this.start;\n    state.end = this.end;\n    state.lastTokEndLoc = this.lastTokEndLoc;\n    state.lastTokStartLoc = this.lastTokStartLoc;\n    state.context = this.context.slice();\n    state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n    state.strictErrors = this.strictErrors;\n    state.tokensLength = this.tokensLength;\n\n    return state;\n  }\n}\n\nexport type LookaheadState = {\n  pos: number;\n  value: any;\n  type: TokenType;\n  start: number;\n  end: number;\n  context: TokContext[];\n  startLoc: Position;\n  lastTokEndLoc: Position;\n  curLine: number;\n  lineStart: number;\n  curPosition: State[\"curPosition\"];\n  /* Used only in readToken_mult_modulo */\n  inType: boolean;\n  // These boolean properties are not initialized in createLookaheadState()\n  // instead they will only be set by the tokenizer\n  containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n  decBinOct: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseB,\n    charCodes.uppercaseE,\n    charCodes.uppercaseO,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseB,\n    charCodes.lowercaseE,\n    charCodes.lowercaseO,\n  ]),\n  hex: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseX,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseX,\n  ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n  // 0 - 1\n  bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n  // 0 - 7\n  oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n  // 0 - 9\n  dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n  // 0 - 9, A - F, a - f,\n  hex: (ch: number) =>\n    (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n    (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n    (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n  unterminated(\n    initialPos: number,\n    initialLineStart: number,\n    initialCurLine: number,\n  ): void;\n};\n\nexport function readStringContents(\n  type: \"single\" | \"double\" | \"template\",\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  errors: StringContentsErrorHandlers,\n) {\n  const initialPos = pos;\n  const initialLineStart = lineStart;\n  const initialCurLine = curLine;\n\n  let out = \"\";\n  let firstInvalidLoc = null;\n  let chunkStart = pos;\n  const { length } = input;\n  for (;;) {\n    if (pos >= length) {\n      errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    const ch = input.charCodeAt(pos);\n    if (isStringEnd(type, ch, input, pos)) {\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    if (ch === charCodes.backslash) {\n      out += input.slice(chunkStart, pos);\n      const res = readEscapedChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        type === \"template\",\n        errors,\n      );\n      if (res.ch === null && !firstInvalidLoc) {\n        firstInvalidLoc = { pos, lineStart, curLine };\n      } else {\n        out += res.ch;\n      }\n      ({ pos, lineStart, curLine } = res);\n      chunkStart = pos;\n    } else if (\n      ch === charCodes.lineSeparator ||\n      ch === charCodes.paragraphSeparator\n    ) {\n      ++pos;\n      ++curLine;\n      lineStart = pos;\n    } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n      if (type === \"template\") {\n        out += input.slice(chunkStart, pos) + \"\\n\";\n        ++pos;\n        if (\n          ch === charCodes.carriageReturn &&\n          input.charCodeAt(pos) === charCodes.lineFeed\n        ) {\n          ++pos;\n        }\n        ++curLine;\n        chunkStart = lineStart = pos;\n      } else {\n        errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      }\n    } else {\n      ++pos;\n    }\n  }\n  return process.env.BABEL_8_BREAKING\n    ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n    : {\n        pos,\n        str: out,\n        firstInvalidLoc,\n        lineStart,\n        curLine,\n        containsInvalid: !!firstInvalidLoc,\n      };\n}\n\nfunction isStringEnd(\n  type: \"single\" | \"double\" | \"template\",\n  ch: number,\n  input: string,\n  pos: number,\n) {\n  if (type === \"template\") {\n    return (\n      ch === charCodes.graveAccent ||\n      (ch === charCodes.dollarSign &&\n        input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n    );\n  }\n  return (\n    ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n  );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n  CodePointErrorHandlers & {\n    strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n  };\n\nfunction readEscapedChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  inTemplate: boolean,\n  errors: EscapedCharErrorHandlers,\n) {\n  const throwOnInvalid = !inTemplate;\n  pos++; // skip '\\'\n\n  const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n  const ch = input.charCodeAt(pos++);\n  switch (ch) {\n    case charCodes.lowercaseN:\n      return res(\"\\n\");\n    case charCodes.lowercaseR:\n      return res(\"\\r\");\n    case charCodes.lowercaseX: {\n      let code;\n      ({ code, pos } = readHexChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        2,\n        false,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCharCode(code));\n    }\n    case charCodes.lowercaseU: {\n      let code;\n      ({ code, pos } = readCodePoint(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCodePoint(code));\n    }\n    case charCodes.lowercaseT:\n      return res(\"\\t\");\n    case charCodes.lowercaseB:\n      return res(\"\\b\");\n    case charCodes.lowercaseV:\n      return res(\"\\u000b\");\n    case charCodes.lowercaseF:\n      return res(\"\\f\");\n    case charCodes.carriageReturn:\n      if (input.charCodeAt(pos) === charCodes.lineFeed) {\n        ++pos;\n      }\n    // fall through\n    case charCodes.lineFeed:\n      lineStart = pos;\n      ++curLine;\n    // fall through\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return res(\"\");\n    case charCodes.digit8:\n    case charCodes.digit9:\n      if (inTemplate) {\n        return res(null);\n      } else {\n        errors.strictNumericEscape(pos - 1, lineStart, curLine);\n      }\n    // fall through\n    default:\n      if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n        const startPos = pos - 1;\n        const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n        let octalStr = match[0];\n\n        let octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        pos += octalStr.length - 1;\n        const next = input.charCodeAt(pos);\n        if (\n          octalStr !== \"0\" ||\n          next === charCodes.digit8 ||\n          next === charCodes.digit9\n        ) {\n          if (inTemplate) {\n            return res(null);\n          } else {\n            errors.strictNumericEscape(startPos, lineStart, curLine);\n          }\n        }\n\n        return res(String.fromCharCode(octal));\n      }\n\n      return res(String.fromCharCode(ch));\n  }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n  invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  len: number,\n  forceLen: boolean,\n  throwOnInvalid: boolean,\n  errors: HexCharErrorHandlers,\n) {\n  const initialPos = pos;\n  let n;\n  ({ n, pos } = readInt(\n    input,\n    pos,\n    lineStart,\n    curLine,\n    16,\n    len,\n    forceLen,\n    false,\n    errors,\n    /* bailOnError */ !throwOnInvalid,\n  ));\n  if (n === null) {\n    if (throwOnInvalid) {\n      errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n    } else {\n      pos = initialPos - 1;\n    }\n  }\n  return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n  numericSeparatorInEscapeSequence(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  unexpectedNumericSeparator(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  // It can return \"true\" to indicate that the error was handled\n  // and the int parsing should continue.\n  invalidDigit(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n    radix: number,\n  ): boolean;\n};\n\nexport function readInt(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  radix: number,\n  len: number | undefined,\n  forceLen: boolean,\n  allowNumSeparator: boolean | \"bail\",\n  errors: IntErrorHandlers,\n  bailOnError: boolean,\n) {\n  const start = pos;\n  const forbiddenSiblings =\n    radix === 16\n      ? forbiddenNumericSeparatorSiblings.hex\n      : forbiddenNumericSeparatorSiblings.decBinOct;\n  const isAllowedSibling =\n    radix === 16\n      ? isAllowedNumericSeparatorSibling.hex\n      : radix === 10\n        ? isAllowedNumericSeparatorSibling.dec\n        : radix === 8\n          ? isAllowedNumericSeparatorSibling.oct\n          : isAllowedNumericSeparatorSibling.bin;\n\n  let invalid = false;\n  let total = 0;\n\n  for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n    const code = input.charCodeAt(pos);\n    let val;\n\n    if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n      const prev = input.charCodeAt(pos - 1);\n      const next = input.charCodeAt(pos + 1);\n\n      if (!allowNumSeparator) {\n        if (bailOnError) return { n: null, pos };\n        errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n      } else if (\n        Number.isNaN(next) ||\n        !isAllowedSibling(next) ||\n        forbiddenSiblings.has(prev) ||\n        forbiddenSiblings.has(next)\n      ) {\n        if (bailOnError) return { n: null, pos };\n        errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n      }\n\n      // Ignore this _ character\n      ++pos;\n      continue;\n    }\n\n    if (code >= charCodes.lowercaseA) {\n      val = code - charCodes.lowercaseA + charCodes.lineFeed;\n    } else if (code >= charCodes.uppercaseA) {\n      val = code - charCodes.uppercaseA + charCodes.lineFeed;\n    } else if (charCodes.isDigit(code)) {\n      val = code - charCodes.digit0; // 0-9\n    } else {\n      val = Infinity;\n    }\n    if (val >= radix) {\n      // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n      // breaking the loop (this is used for error recovery).\n      if (val <= 9 && bailOnError) {\n        return { n: null, pos };\n      } else if (\n        val <= 9 &&\n        errors.invalidDigit(pos, lineStart, curLine, radix)\n      ) {\n        val = 0;\n      } else if (forceLen) {\n        val = 0;\n        invalid = true;\n      } else {\n        break;\n      }\n    }\n    ++pos;\n    total = total * radix + val;\n  }\n  if (pos === start || (len != null && pos - start !== len) || invalid) {\n    return { n: null, pos };\n  }\n\n  return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n  invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  throwOnInvalid: boolean,\n  errors: CodePointErrorHandlers,\n) {\n  const ch = input.charCodeAt(pos);\n  let code;\n\n  if (ch === charCodes.leftCurlyBrace) {\n    ++pos;\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      input.indexOf(\"}\", pos) - pos,\n      true,\n      throwOnInvalid,\n      errors,\n    ));\n    ++pos;\n    if (code !== null && code > 0x10ffff) {\n      if (throwOnInvalid) {\n        errors.invalidCodePoint(pos, lineStart, curLine);\n      } else {\n        return { code: null, pos };\n      }\n    }\n  } else {\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      4,\n      false,\n      throwOnInvalid,\n      errors,\n    ));\n  }\n  return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport type { Options } from \"../options.ts\";\nimport {\n  Position,\n  SourceLocation,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n  tokenIsKeyword,\n  tokenLabelName,\n  tt,\n  keywords as keywordTypes,\n  type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n  lineBreakG,\n  isNewLine,\n  isWhitespace,\n  skipWhiteSpace,\n  skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n  readInt,\n  readCodePoint,\n  readStringContents,\n  type IntErrorHandlers,\n  type CodePointErrorHandlers,\n  type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n  return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n  charCodes.lowercaseG,\n  charCodes.lowercaseM,\n  charCodes.lowercaseS,\n  charCodes.lowercaseI,\n  charCodes.lowercaseY,\n  charCodes.lowercaseU,\n  charCodes.lowercaseD,\n  charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n  constructor(state: State) {\n    const startIndex = state.startIndex || 0;\n    this.type = state.type;\n    this.value = state.value;\n    this.start = startIndex + state.start;\n    this.end = startIndex + state.end;\n    this.loc = new SourceLocation(state.startLoc, state.endLoc);\n  }\n\n  declare type: TokenType;\n  declare value: any;\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n  isLookahead: boolean;\n\n  // Token store.\n  tokens: Array<Token | N.Comment> = [];\n\n  constructor(options: Options, input: string) {\n    super();\n    this.state = new State();\n    this.state.init(options);\n    this.input = input;\n    this.length = input.length;\n    this.comments = [];\n    this.isLookahead = false;\n  }\n\n  pushToken(token: Token | N.Comment) {\n    // Pop out invalid tokens trapped by try-catch parsing.\n    // Those parsing branches are mainly created by typescript and flow plugins.\n    this.tokens.length = this.state.tokensLength;\n    this.tokens.push(token);\n    ++this.state.tokensLength;\n  }\n\n  // Move to the next token\n\n  next(): void {\n    this.checkKeywordEscapes();\n    if (this.options.tokens) {\n      this.pushToken(new Token(this.state));\n    }\n\n    this.state.lastTokEndLoc = this.state.endLoc;\n    this.state.lastTokStartLoc = this.state.startLoc;\n    this.nextToken();\n  }\n\n  eat(type: TokenType): boolean {\n    if (this.match(type)) {\n      this.next();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Whether current token matches given type\n   */\n  match(type: TokenType): boolean {\n    return this.state.type === type;\n  }\n\n  /**\n   * Create a LookaheadState from current parser state\n   */\n  createLookaheadState(state: State): LookaheadState {\n    return {\n      pos: state.pos,\n      value: null,\n      type: state.type,\n      start: state.start,\n      end: state.end,\n      context: [this.curContext()],\n      inType: state.inType,\n      startLoc: state.startLoc,\n      lastTokEndLoc: state.lastTokEndLoc,\n      curLine: state.curLine,\n      lineStart: state.lineStart,\n      curPosition: state.curPosition,\n    };\n  }\n\n  /**\n   * lookahead peeks the next token, skipping changes to token context and\n   * comment stack. For performance it returns a limited LookaheadState\n   * instead of full parser state.\n   *\n   * The { column, line } Loc info is not included in lookahead since such usage\n   * is rare. Although it may return other location properties e.g. `curLine` and\n   * `lineStart`, these properties are not listed in the LookaheadState interface\n   * and thus the returned value is _NOT_ reliable.\n   *\n   * The tokenizer should make best efforts to avoid using any parser state\n   * other than those defined in LookaheadState\n   */\n  lookahead(): LookaheadState {\n    const old = this.state;\n    // @ts-expect-error For performance we use a simplified tokenizer state structure\n    this.state = this.createLookaheadState(old);\n\n    this.isLookahead = true;\n    this.nextToken();\n    this.isLookahead = false;\n\n    const curr = this.state;\n    this.state = old;\n    return curr;\n  }\n\n  nextTokenStart(): number {\n    return this.nextTokenStartSince(this.state.pos);\n  }\n\n  nextTokenStartSince(pos: number): number {\n    skipWhiteSpace.lastIndex = pos;\n    return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n  }\n\n  lookaheadCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenStart());\n  }\n\n  /**\n   * Similar to nextToken, but it will stop at line break when it is seen before the next token\n   *\n   * @returns {number} position of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  nextTokenInLineStart(): number {\n    return this.nextTokenInLineStartSince(this.state.pos);\n  }\n\n  nextTokenInLineStartSince(pos: number): number {\n    skipWhiteSpaceInLine.lastIndex = pos;\n    return skipWhiteSpaceInLine.test(this.input)\n      ? skipWhiteSpaceInLine.lastIndex\n      : pos;\n  }\n\n  /**\n   * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n   * seen before the next token\n   *\n   * @returns {number} char code of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  lookaheadInLineCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenInLineStart());\n  }\n\n  codePointAtPos(pos: number): number {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = this.input.charCodeAt(pos);\n    if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n      const trail = this.input.charCodeAt(pos);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    return cp;\n  }\n\n  // Toggle strict mode. Re-reads the next number or string to please\n  // pedantic tests (`\"use strict\"; 010;` should fail).\n\n  setStrict(strict: boolean): void {\n    this.state.strict = strict;\n    if (strict) {\n      // Throw an error for any string decimal escape found before/immediately\n      // after a \"use strict\" directive. Strict mode will be set at parse\n      // time for any literals that occur after the next node of the strict\n      // directive.\n      this.state.strictErrors.forEach(([toParseError, at]) =>\n        this.raise(toParseError, at),\n      );\n      this.state.strictErrors.clear();\n    }\n  }\n\n  curContext(): TokContext {\n    return this.state.context[this.state.context.length - 1];\n  }\n\n  // Read a single token, updating the parser object's token-related properties.\n  nextToken(): void {\n    this.skipSpace();\n    this.state.start = this.state.pos;\n    if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n    if (this.state.pos >= this.length) {\n      this.finishToken(tt.eof);\n      return;\n    }\n\n    this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n  }\n\n  // Skips a block comment, whose end is marked by commentEnd.\n  // *-/ is used by the Flow plugin, when parsing block comments nested\n  // inside Flow comments.\n  skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    const start = this.state.pos;\n    const end = this.input.indexOf(commentEnd, start + 2);\n    if (end === -1) {\n      // We have to call this again here because startLoc may not be set...\n      // This seems to be for performance reasons:\n      // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n      throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n    }\n\n    this.state.pos = end + commentEnd.length;\n    lineBreakG.lastIndex = start + 2;\n    while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n      ++this.state.curLine;\n      this.state.lineStart = lineBreakG.lastIndex;\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n    /*:: invariant(startLoc) */\n\n    const comment: N.CommentBlock = {\n      type: \"CommentBlock\",\n      value: this.input.slice(start + 2, end),\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end + commentEnd.length),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.options.tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  skipLineComment(startSkip: number): N.CommentLine | undefined {\n    const start = this.state.pos;\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    let ch = this.input.charCodeAt((this.state.pos += startSkip));\n    if (this.state.pos < this.length) {\n      while (!isNewLine(ch) && ++this.state.pos < this.length) {\n        ch = this.input.charCodeAt(this.state.pos);\n      }\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n\n    const end = this.state.pos;\n    const value = this.input.slice(start + startSkip, end);\n\n    const comment: N.CommentLine = {\n      type: \"CommentLine\",\n      value,\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.options.tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  // Called at the start of the parse and after every token. Skips\n  // whitespace and comments, and.\n\n  skipSpace(): void {\n    const spaceStart = this.state.pos;\n    const comments = [];\n    loop: while (this.state.pos < this.length) {\n      const ch = this.input.charCodeAt(this.state.pos);\n      switch (ch) {\n        case charCodes.space:\n        case charCodes.nonBreakingSpace:\n        case charCodes.tab:\n          ++this.state.pos;\n          break;\n        case charCodes.carriageReturn:\n          if (\n            this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n          ) {\n            ++this.state.pos;\n          }\n        // fall through\n        case charCodes.lineFeed:\n        case charCodes.lineSeparator:\n        case charCodes.paragraphSeparator:\n          ++this.state.pos;\n          ++this.state.curLine;\n          this.state.lineStart = this.state.pos;\n          break;\n\n        case charCodes.slash:\n          switch (this.input.charCodeAt(this.state.pos + 1)) {\n            case charCodes.asterisk: {\n              const comment = this.skipBlockComment(\"*/\");\n              if (comment !== undefined) {\n                this.addComment(comment);\n                if (this.options.attachComment) comments.push(comment);\n              }\n              break;\n            }\n\n            case charCodes.slash: {\n              const comment = this.skipLineComment(2);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                if (this.options.attachComment) comments.push(comment);\n              }\n              break;\n            }\n\n            default:\n              break loop;\n          }\n          break;\n\n        default:\n          if (isWhitespace(ch)) {\n            ++this.state.pos;\n          } else if (\n            ch === charCodes.dash &&\n            !this.inModule &&\n            this.options.annexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.dash &&\n              this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n              (spaceStart === 0 || this.state.lineStart > spaceStart)\n            ) {\n              // A `-->` line comment\n              const comment = this.skipLineComment(3);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                if (this.options.attachComment) comments.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else if (\n            ch === charCodes.lessThan &&\n            !this.inModule &&\n            this.options.annexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n              this.input.charCodeAt(pos + 2) === charCodes.dash &&\n              this.input.charCodeAt(pos + 3) === charCodes.dash\n            ) {\n              // `<!--`, an XML-style comment that should be interpreted as a line comment\n              const comment = this.skipLineComment(4);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                if (this.options.attachComment) comments.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else {\n            break loop;\n          }\n      }\n    }\n\n    if (comments.length > 0) {\n      const end = this.state.pos;\n      const commentWhitespace: CommentWhitespace = {\n        start: this.sourceToOffsetPos(spaceStart),\n        end: this.sourceToOffsetPos(end),\n        comments,\n        leadingNode: null,\n        trailingNode: null,\n        containingNode: null,\n      };\n      this.state.commentStack.push(commentWhitespace);\n    }\n  }\n\n  // Called at the end of every token. Sets `end`, `val`, and\n  // maintains `context` and `canStartJSXElement`, and skips the space after\n  // the token, so that the next one's `start` will point at the\n  // right position.\n\n  finishToken(type: TokenType, val?: any): void {\n    this.state.end = this.state.pos;\n    this.state.endLoc = this.state.curPosition();\n    const prevType = this.state.type;\n    this.state.type = type;\n    this.state.value = val;\n\n    if (!this.isLookahead) {\n      this.updateContext(prevType);\n    }\n  }\n\n  replaceToken(type: TokenType): void {\n    this.state.type = type;\n    // @ts-expect-error the prevType of updateContext is required\n    // only when the new type is tt.slash/tt.jsxTagEnd\n    this.updateContext();\n  }\n\n  // ### Token reading\n\n  // This is the function that is called to fetch the next token. It\n  // is somewhat obscure, because it works in character codes rather\n  // than characters, and because operator parsing has been inlined\n  // into it.\n  //\n  // All in the name of speed.\n\n  // number sign is \"#\"\n  readToken_numberSign(): void {\n    if (this.state.pos === 0 && this.readToken_interpreter()) {\n      return;\n    }\n\n    const nextPos = this.state.pos + 1;\n    const next = this.codePointAtPos(nextPos);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      throw this.raise(\n        Errors.UnexpectedDigitAfterHash,\n        this.state.curPosition(),\n      );\n    }\n\n    if (\n      next === charCodes.leftCurlyBrace ||\n      (next === charCodes.leftSquareBracket && this.hasPlugin(\"recordAndTuple\"))\n    ) {\n      // When we see `#{`, it is likely to be a hash record.\n      // However we don't yell at `#[` since users may intend to use \"computed private fields\",\n      // which is not allowed in the spec. Throwing expecting recordAndTuple is\n      // misleading\n      this.expectPlugin(\"recordAndTuple\");\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.getPluginOption(\"recordAndTuple\", \"syntaxType\") === \"bar\"\n      ) {\n        throw this.raise(\n          next === charCodes.leftCurlyBrace\n            ? Errors.RecordExpressionHashIncorrectStartSyntaxType\n            : Errors.TupleExpressionHashIncorrectStartSyntaxType,\n          this.state.curPosition(),\n        );\n      }\n\n      this.state.pos += 2;\n      if (next === charCodes.leftCurlyBrace) {\n        // #{\n        this.finishToken(tt.braceHashL);\n      } else {\n        // #[\n        this.finishToken(tt.bracketHashL);\n      }\n    } else if (isIdentifierStart(next)) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1(next));\n    } else if (next === charCodes.backslash) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1());\n    } else {\n      this.finishOp(tt.hash, 1);\n    }\n  }\n\n  readToken_dot(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      this.readNumber(true);\n      return;\n    }\n\n    if (\n      next === charCodes.dot &&\n      this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n    ) {\n      this.state.pos += 3;\n      this.finishToken(tt.ellipsis);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.dot);\n    }\n  }\n\n  readToken_slash(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.slashAssign, 2);\n    } else {\n      this.finishOp(tt.slash, 1);\n    }\n  }\n\n  readToken_interpreter(): boolean {\n    if (this.state.pos !== 0 || this.length < 2) return false;\n\n    let ch = this.input.charCodeAt(this.state.pos + 1);\n    if (ch !== charCodes.exclamationMark) return false;\n\n    const start = this.state.pos;\n    this.state.pos += 1;\n\n    while (!isNewLine(ch) && ++this.state.pos < this.length) {\n      ch = this.input.charCodeAt(this.state.pos);\n    }\n\n    const value = this.input.slice(start + 2, this.state.pos);\n\n    this.finishToken(tt.interpreterDirective, value);\n\n    return true;\n  }\n\n  readToken_mult_modulo(code: number): void {\n    // '%' or '*'\n    let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n    let width = 1;\n    let next = this.input.charCodeAt(this.state.pos + 1);\n\n    // Exponentiation operator '**'\n    if (code === charCodes.asterisk && next === charCodes.asterisk) {\n      width++;\n      next = this.input.charCodeAt(this.state.pos + 2);\n      type = tt.exponent;\n    }\n\n    // '%=' or '*='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      width++;\n      // `tt.moduloAssign` is only needed to support % as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      type = code === charCodes.percentSign ? tt.moduloAssign : tt.assign;\n    }\n\n    this.finishOp(type, width);\n  }\n\n  readToken_pipe_amp(code: number): void {\n    // '||' '&&' '||=' '&&='\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n      } else {\n        this.finishOp(\n          code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n          2,\n        );\n      }\n      return;\n    }\n\n    if (code === charCodes.verticalBar) {\n      // '|>'\n      if (next === charCodes.greaterThan) {\n        this.finishOp(tt.pipeline, 2);\n        return;\n      }\n      // '|}'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.RecordExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.braceBarR);\n        return;\n      }\n\n      // '|]'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightSquareBracket\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.TupleExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.bracketBarR);\n        return;\n      }\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n      return;\n    }\n\n    this.finishOp(\n      code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n      1,\n    );\n  }\n\n  readToken_caret(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '^='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      // `tt.xorAssign` is only needed to support ^ as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      this.finishOp(tt.xorAssign, 2);\n    }\n    // '^^'\n    else if (\n      next === charCodes.caret &&\n      // If the ^^ token is not enabled, we don't throw but parse two single ^s\n      // because it could be a ^ hack token followed by a ^ binary operator.\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"^^\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleCaret, 2);\n\n      // `^^^` is forbidden and must be separated by a space.\n      const lookaheadCh = this.input.codePointAt(this.state.pos);\n      if (lookaheadCh === charCodes.caret) {\n        this.unexpected();\n      }\n    }\n    // '^'\n    else {\n      this.finishOp(tt.bitwiseXOR, 1);\n    }\n  }\n\n  readToken_atSign(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '@@'\n    if (\n      next === charCodes.atSign &&\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"@@\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleAt, 2);\n    }\n    // '@'\n    else {\n      this.finishOp(tt.at, 1);\n    }\n  }\n\n  readToken_plus_min(code: number): void {\n    // '+-'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      this.finishOp(tt.incDec, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n    } else {\n      this.finishOp(tt.plusMin, 1);\n    }\n  }\n\n  readToken_lt(): void {\n    // '<'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.lessThan) {\n      if (this.input.charCodeAt(pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n        return;\n      }\n      this.finishOp(tt.bitShiftL, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.lt, 1);\n  }\n\n  readToken_gt(): void {\n    // '>'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.greaterThan) {\n      const size =\n        this.input.charCodeAt(pos + 2) === charCodes.greaterThan ? 3 : 2;\n      if (this.input.charCodeAt(pos + size) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, size + 1);\n        return;\n      }\n      this.finishOp(tt.bitShiftR, size);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <= | >=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.gt, 1);\n  }\n\n  readToken_eq_excl(code: number): void {\n    // '=!'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(\n        tt.equality,\n        this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n          ? 3\n          : 2,\n      );\n      return;\n    }\n    if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n      // '=>'\n      this.state.pos += 2;\n      this.finishToken(tt.arrow);\n      return;\n    }\n    this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n  }\n\n  readToken_question(): void {\n    // '?'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    const next2 = this.input.charCodeAt(this.state.pos + 2);\n    if (next === charCodes.questionMark) {\n      if (next2 === charCodes.equalsTo) {\n        // '??='\n        this.finishOp(tt.assign, 3);\n      } else {\n        // '??'\n        this.finishOp(tt.nullishCoalescing, 2);\n      }\n    } else if (\n      next === charCodes.dot &&\n      !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n    ) {\n      // '.' not followed by a number\n      this.state.pos += 2;\n      this.finishToken(tt.questionDot);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.question);\n    }\n  }\n\n  getTokenFromCode(code: number): void {\n    switch (code) {\n      // The interpretation of a dot depends on whether it is followed\n      // by a digit or another two dots.\n\n      case charCodes.dot:\n        this.readToken_dot();\n        return;\n      // Punctuation tokens.\n      case charCodes.leftParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenL);\n        return;\n      case charCodes.rightParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenR);\n        return;\n      case charCodes.semicolon:\n        ++this.state.pos;\n        this.finishToken(tt.semi);\n        return;\n      case charCodes.comma:\n        ++this.state.pos;\n        this.finishToken(tt.comma);\n        return;\n      case charCodes.leftSquareBracket:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.TupleExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // [|\n          this.state.pos += 2;\n          this.finishToken(tt.bracketBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.bracketL);\n        }\n        return;\n      case charCodes.rightSquareBracket:\n        ++this.state.pos;\n        this.finishToken(tt.bracketR);\n        return;\n      case charCodes.leftCurlyBrace:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.RecordExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // {|\n          this.state.pos += 2;\n          this.finishToken(tt.braceBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.braceL);\n        }\n        return;\n      case charCodes.rightCurlyBrace:\n        ++this.state.pos;\n        this.finishToken(tt.braceR);\n        return;\n\n      case charCodes.colon:\n        if (\n          this.hasPlugin(\"functionBind\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n        ) {\n          this.finishOp(tt.doubleColon, 2);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.colon);\n        }\n        return;\n\n      case charCodes.questionMark:\n        this.readToken_question();\n        return;\n\n      case charCodes.graveAccent:\n        this.readTemplateToken();\n        return;\n\n      case charCodes.digit0: {\n        const next = this.input.charCodeAt(this.state.pos + 1);\n        // '0x', '0X' - hex number\n        if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n          this.readRadixNumber(16);\n          return;\n        }\n        // '0o', '0O' - octal number\n        if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n          this.readRadixNumber(8);\n          return;\n        }\n        // '0b', '0B' - binary number\n        if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n          this.readRadixNumber(2);\n          return;\n        }\n      }\n      // Anything else beginning with a digit is an integer, octal\n      // number, or float. (fall through)\n      case charCodes.digit1:\n      case charCodes.digit2:\n      case charCodes.digit3:\n      case charCodes.digit4:\n      case charCodes.digit5:\n      case charCodes.digit6:\n      case charCodes.digit7:\n      case charCodes.digit8:\n      case charCodes.digit9:\n        this.readNumber(false);\n        return;\n\n      // Quotes produce strings.\n      case charCodes.quotationMark:\n      case charCodes.apostrophe:\n        this.readString(code);\n        return;\n\n      // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n      // often referred to. `finishOp` simply skips the amount of\n      // characters it is given as second argument, and returns a token\n      // of the type given by its first argument.\n\n      case charCodes.slash:\n        this.readToken_slash();\n        return;\n\n      case charCodes.percentSign:\n      case charCodes.asterisk:\n        this.readToken_mult_modulo(code);\n        return;\n\n      case charCodes.verticalBar:\n      case charCodes.ampersand:\n        this.readToken_pipe_amp(code);\n        return;\n\n      case charCodes.caret:\n        this.readToken_caret();\n        return;\n\n      case charCodes.plusSign:\n      case charCodes.dash:\n        this.readToken_plus_min(code);\n        return;\n\n      case charCodes.lessThan:\n        this.readToken_lt();\n        return;\n\n      case charCodes.greaterThan:\n        this.readToken_gt();\n        return;\n\n      case charCodes.equalsTo:\n      case charCodes.exclamationMark:\n        this.readToken_eq_excl(code);\n        return;\n\n      case charCodes.tilde:\n        this.finishOp(tt.tilde, 1);\n        return;\n\n      case charCodes.atSign:\n        this.readToken_atSign();\n        return;\n\n      case charCodes.numberSign:\n        this.readToken_numberSign();\n        return;\n\n      case charCodes.backslash:\n        this.readWord();\n        return;\n\n      default:\n        if (isIdentifierStart(code)) {\n          this.readWord(code);\n          return;\n        }\n    }\n\n    throw this.raise(\n      Errors.InvalidOrUnexpectedToken,\n      this.state.curPosition(),\n      {\n        unexpected: String.fromCodePoint(code),\n      },\n    );\n  }\n\n  finishOp(type: TokenType, size: number): void {\n    const str = this.input.slice(this.state.pos, this.state.pos + size);\n    this.state.pos += size;\n    this.finishToken(type, str);\n  }\n\n  readRegexp(): void {\n    const startLoc = this.state.startLoc;\n    const start = this.state.start + 1;\n    let escaped, inClass;\n    let { pos } = this.state;\n    for (; ; ++pos) {\n      if (pos >= this.length) {\n        // FIXME: explain\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      const ch = this.input.charCodeAt(pos);\n      if (isNewLine(ch)) {\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      if (escaped) {\n        escaped = false;\n      } else {\n        if (ch === charCodes.leftSquareBracket) {\n          inClass = true;\n        } else if (ch === charCodes.rightSquareBracket && inClass) {\n          inClass = false;\n        } else if (ch === charCodes.slash && !inClass) {\n          break;\n        }\n        escaped = ch === charCodes.backslash;\n      }\n    }\n    const content = this.input.slice(start, pos);\n    ++pos;\n\n    let mods = \"\";\n\n    const nextPos = () =>\n      // (pos + 1) + 1 - start\n      createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n    while (pos < this.length) {\n      const cp = this.codePointAtPos(pos);\n      // It doesn't matter if cp > 0xffff, the loop will either throw or break because we check on cp\n      const char = String.fromCharCode(cp);\n\n      // @ts-expect-error VALID_REGEX_FLAGS.has should accept expanded type: number\n      if (VALID_REGEX_FLAGS.has(cp)) {\n        if (cp === charCodes.lowercaseV) {\n          if (mods.includes(\"u\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        } else if (cp === charCodes.lowercaseU) {\n          if (mods.includes(\"v\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        }\n        if (mods.includes(char)) {\n          this.raise(Errors.DuplicateRegExpFlags, nextPos());\n        }\n      } else if (isIdentifierChar(cp) || cp === charCodes.backslash) {\n        this.raise(Errors.MalformedRegExpFlags, nextPos());\n      } else {\n        break;\n      }\n\n      ++pos;\n      mods += char;\n    }\n    this.state.pos = pos;\n\n    this.finishToken(tt.regexp, {\n      pattern: content,\n      flags: mods,\n    });\n  }\n\n  // Read an integer in the given radix. Return null if zero digits\n  // were read, the integer value otherwise. When `len` is given, this\n  // will return `null` unless the integer has exactly `len` digits.\n  // When `forceLen` is `true`, it means that we already know that in case\n  // of a malformed number we have to skip `len` characters anyway, instead\n  // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n  // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n  // characters (and thus the closing quote).\n\n  readInt(\n    radix: number,\n    len?: number,\n    forceLen: boolean = false,\n    allowNumSeparator: boolean | \"bail\" = true,\n  ): number | null {\n    const { n, pos } = readInt(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      radix,\n      len,\n      forceLen,\n      allowNumSeparator,\n      this.errorHandlers_readInt,\n      /* bailOnError */ false,\n    );\n    this.state.pos = pos;\n    return n;\n  }\n\n  readRadixNumber(radix: number): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isBigInt = false;\n\n    this.state.pos += 2; // 0x\n    const val = this.readInt(radix);\n    if (val == null) {\n      this.raise(\n        Errors.InvalidDigit,\n        // Numeric literals can't have newlines, so this is safe to do.\n        createPositionWithColumnOffset(startLoc, 2),\n        {\n          radix,\n        },\n      );\n    }\n    const next = this.input.charCodeAt(this.state.pos);\n\n    if (next === charCodes.lowercaseN) {\n      ++this.state.pos;\n      isBigInt = true;\n    } else if (next === charCodes.lowercaseM) {\n      throw this.raise(Errors.InvalidDecimal, startLoc);\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    if (isBigInt) {\n      const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    this.finishToken(tt.num, val);\n  }\n\n  // Read an integer, octal integer, or floating-point number.\n\n  readNumber(startsWithDot: boolean): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isFloat = false;\n    let isBigInt = false;\n    let hasExponent = false;\n    let isOctal = false;\n\n    if (!startsWithDot && this.readInt(10) === null) {\n      this.raise(Errors.InvalidNumber, this.state.curPosition());\n    }\n    const hasLeadingZero =\n      this.state.pos - start >= 2 &&\n      this.input.charCodeAt(start) === charCodes.digit0;\n\n    if (hasLeadingZero) {\n      const integer = this.input.slice(start, this.state.pos);\n      this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n      if (!this.state.strict) {\n        // disallow numeric separators in non octal decimals and legacy octal likes\n        const underscorePos = integer.indexOf(\"_\");\n        if (underscorePos > 0) {\n          // Numeric literals can't have newlines, so this is safe to do.\n          this.raise(\n            Errors.ZeroDigitNumericSeparator,\n            createPositionWithColumnOffset(startLoc, underscorePos),\n          );\n        }\n      }\n      isOctal = hasLeadingZero && !/[89]/.test(integer);\n    }\n\n    let next = this.input.charCodeAt(this.state.pos);\n    if (next === charCodes.dot && !isOctal) {\n      ++this.state.pos;\n      this.readInt(10);\n      isFloat = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (\n      (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n      !isOctal\n    ) {\n      next = this.input.charCodeAt(++this.state.pos);\n      if (next === charCodes.plusSign || next === charCodes.dash) {\n        ++this.state.pos;\n      }\n      if (this.readInt(10) === null) {\n        this.raise(Errors.InvalidOrMissingExponent, startLoc);\n      }\n      isFloat = true;\n      hasExponent = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (next === charCodes.lowercaseN) {\n      // disallow floats, legacy octal syntax and non octal decimals\n      // new style octal (\"0o\") is handled in this.readRadixNumber\n      if (isFloat || hasLeadingZero) {\n        this.raise(Errors.InvalidBigIntLiteral, startLoc);\n      }\n      ++this.state.pos;\n      isBigInt = true;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && next === charCodes.lowercaseM) {\n      this.expectPlugin(\"decimal\", this.state.curPosition());\n      if (hasExponent || hasLeadingZero) {\n        this.raise(Errors.InvalidDecimal, startLoc);\n      }\n      ++this.state.pos;\n      // eslint-disable-next-line no-var\n      var isDecimal = true;\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    // remove \"_\" for numeric literal separator, and trailing `m` or `n`\n    const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n    if (isBigInt) {\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && isDecimal) {\n      this.finishToken(tt.decimal, str);\n      return;\n    }\n\n    const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n    this.finishToken(tt.num, val);\n  }\n\n  // Read a string value, interpreting backslash-escapes.\n\n  readCodePoint(throwOnInvalid: boolean): number | null {\n    const { code, pos } = readCodePoint(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      throwOnInvalid,\n      this.errorHandlers_readCodePoint,\n    );\n    this.state.pos = pos;\n    return code;\n  }\n\n  readString(quote: number): void {\n    const { str, pos, curLine, lineStart } = readStringContents(\n      quote === charCodes.quotationMark ? \"double\" : \"single\",\n      this.input,\n      this.state.pos + 1, // skip the quote\n      this.state.lineStart,\n      this.state.curLine,\n      this.errorHandlers_readStringContents_string,\n    );\n    this.state.pos = pos + 1; // skip the quote\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n    this.finishToken(tt.string, str);\n  }\n\n  // Reads template continuation `}...`\n  readTemplateContinuation(): void {\n    if (!this.match(tt.braceR)) {\n      this.unexpected(null, tt.braceR);\n    }\n    // rewind pos to `}`\n    this.state.pos--;\n    this.readTemplateToken();\n  }\n\n  // Reads template string tokens.\n  readTemplateToken(): void {\n    const opening = this.input[this.state.pos];\n    const { str, firstInvalidLoc, pos, curLine, lineStart } =\n      readStringContents(\n        \"template\",\n        this.input,\n        this.state.pos + 1, // skip '`' or `}`\n        this.state.lineStart,\n        this.state.curLine,\n        this.errorHandlers_readStringContents_template,\n      );\n    this.state.pos = pos + 1; // skip '`' or `$`\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n\n    if (firstInvalidLoc) {\n      this.state.firstInvalidTemplateEscapePos = new Position(\n        firstInvalidLoc.curLine,\n        firstInvalidLoc.pos - firstInvalidLoc.lineStart,\n        this.sourceToOffsetPos(firstInvalidLoc.pos),\n      );\n    }\n\n    if (this.input.codePointAt(pos) === charCodes.graveAccent) {\n      this.finishToken(\n        tt.templateTail,\n        firstInvalidLoc ? null : opening + str + \"`\",\n      );\n    } else {\n      this.state.pos++; // skip '{'\n      this.finishToken(\n        tt.templateNonTail,\n        firstInvalidLoc ? null : opening + str + \"${\",\n      );\n    }\n  }\n\n  recordStrictModeErrors(toParseError: DeferredStrictError, at: Position) {\n    const index = at.index;\n\n    if (this.state.strict && !this.state.strictErrors.has(index)) {\n      this.raise(toParseError, at);\n    } else {\n      this.state.strictErrors.set(index, [toParseError, at]);\n    }\n  }\n\n  // Read an identifier, and return it as a string. Sets `this.state.containsEsc`\n  // to whether the word contained a '\\u' escape.\n  //\n  // Incrementally adds only escaped chars, adding other chunks as-is\n  // as a micro-optimization.\n  //\n  // When `firstCode` is given, it assumes it is always an identifier start and\n  // will skip reading start position again\n\n  readWord1(firstCode?: number): string {\n    this.state.containsEsc = false;\n    let word = \"\";\n    const start = this.state.pos;\n    let chunkStart = this.state.pos;\n    if (firstCode !== undefined) {\n      this.state.pos += firstCode <= 0xffff ? 1 : 2;\n    }\n\n    while (this.state.pos < this.length) {\n      const ch = this.codePointAtPos(this.state.pos);\n      if (isIdentifierChar(ch)) {\n        this.state.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === charCodes.backslash) {\n        this.state.containsEsc = true;\n\n        word += this.input.slice(chunkStart, this.state.pos);\n        const escStart = this.state.curPosition();\n        const identifierCheck =\n          this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n        if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n          this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n          chunkStart = this.state.pos - 1;\n          continue;\n        }\n\n        ++this.state.pos;\n        const esc = this.readCodePoint(true);\n        if (esc !== null) {\n          if (!identifierCheck(esc)) {\n            this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n          }\n\n          word += String.fromCodePoint(esc);\n        }\n        chunkStart = this.state.pos;\n      } else {\n        break;\n      }\n    }\n    return word + this.input.slice(chunkStart, this.state.pos);\n  }\n\n  // Read an identifier or keyword token. Will check for reserved\n  // words when necessary.\n\n  readWord(firstCode?: number): void {\n    const word = this.readWord1(firstCode);\n    const type = keywordTypes.get(word);\n    if (type !== undefined) {\n      // We don't use word as state.value here because word is a dynamic string\n      // while token label is a shared constant string\n      this.finishToken(type, tokenLabelName(type));\n    } else {\n      this.finishToken(tt.name, word);\n    }\n  }\n\n  checkKeywordEscapes(): void {\n    const { type } = this.state;\n    if (tokenIsKeyword(type) && this.state.containsEsc) {\n      this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n        reservedWord: tokenLabelName(type),\n      });\n    }\n  }\n\n  /**\n   * Raise a `ParseError` given the appropriate properties. If passed a\n   * `Position` for the `at` property, raises the `ParseError` at that location.\n   * Otherwise, if passed a `Node`, raises the `ParseError` at the start\n   * location of that `Node`.\n   *\n   * If `errorRecovery` is `true`, the error is pushed to the errors array and\n   * returned. If `errorRecovery` is `false`, the error is instead thrown.\n   *\n   * The return type is marked as `never` for simplicity, as error recovery\n   * will create types in an invalid AST shape.\n   */\n  raise<ErrorDetails = object>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const error = toParseError(loc, details);\n\n    if (!this.options.errorRecovery) throw error;\n    if (!this.isLookahead) this.state.errors.push(error);\n\n    return error;\n  }\n\n  /**\n   * If `errorRecovery` is `false`, this method behaves identically to `raise`.\n   * If `errorRecovery` is `true`, this method will first see if there is\n   * already an error stored at the same `Position`, and replaces it with the\n   * one generated here.\n   */\n  raiseOverwrite<ErrorDetails>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> | never {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const pos = loc.index;\n    const errors = this.state.errors;\n\n    for (let i = errors.length - 1; i >= 0; i--) {\n      const error = errors[i];\n      if (error.loc.index === pos) {\n        return (errors[i] = toParseError(loc, details));\n      }\n      if (error.loc.index < pos) break;\n    }\n\n    return this.raise(toParseError, at, details);\n  }\n\n  // updateContext is used by the jsx plugin\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  updateContext(prevType: TokenType): void {}\n\n  // Raise an unexpected token error. Can take the expected token type.\n  unexpected(loc?: Position | null, type?: TokenType): void {\n    throw this.raise(\n      Errors.UnexpectedToken,\n      loc != null ? loc : this.state.startLoc,\n      {\n        expected: type ? tokenLabelName(type) : null,\n      },\n    );\n  }\n\n  expectPlugin(pluginName: Plugin, loc?: Position): true {\n    if (this.hasPlugin(pluginName)) {\n      return true;\n    }\n\n    throw this.raise(\n      Errors.MissingPlugin,\n      loc != null ? loc : this.state.startLoc,\n      {\n        missingPlugin: [pluginName],\n      },\n    );\n  }\n\n  expectOnePlugin(pluginNames: Plugin[]): void {\n    if (!pluginNames.some(name => this.hasPlugin(name))) {\n      throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n        missingPlugin: pluginNames,\n      });\n    }\n  }\n\n  errorBuilder(error: ParseErrorConstructor<object>) {\n    return (pos: number, lineStart: number, curLine: number) => {\n      this.raise(error, buildPosition(pos, lineStart, curLine));\n    };\n  }\n\n  errorHandlers_readInt: IntErrorHandlers = {\n    invalidDigit: (pos, lineStart, curLine, radix) => {\n      if (!this.options.errorRecovery) return false;\n\n      this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n        radix,\n      });\n      // Continue parsing the number as if there was no invalid digit.\n      return true;\n    },\n    numericSeparatorInEscapeSequence: this.errorBuilder(\n      Errors.NumericSeparatorInEscapeSequence,\n    ),\n    unexpectedNumericSeparator: this.errorBuilder(\n      Errors.UnexpectedNumericSeparator,\n    ),\n  };\n\n  errorHandlers_readCodePoint: CodePointErrorHandlers = {\n    ...this.errorHandlers_readInt,\n    invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n    invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint),\n  };\n\n  errorHandlers_readStringContents_string: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: (pos, lineStart, curLine) => {\n      this.recordStrictModeErrors(\n        Errors.StrictNumericEscape,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedString, // Report the error at the string quote\n        buildPosition(pos - 1, lineStart, curLine),\n      );\n    },\n  };\n\n  errorHandlers_readStringContents_template: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedTemplate,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n  };\n}\n","import { ClassElementType } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport class ClassScope {\n  // A list of private named declared in the current class\n  privateNames: Set<string> = new Set();\n\n  // A list of private getters of setters without their counterpart\n  loneAccessors: Map<string, ClassElementType> = new Map();\n\n  // A list of private names used before being defined, mapping to\n  // their position.\n  undefinedPrivateNames: Map<string, Position> = new Map();\n}\n\nexport default class ClassScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ClassScope> = [];\n  undefinedPrivateNames: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n\n  current(): ClassScope {\n    return this.stack[this.stack.length - 1];\n  }\n\n  enter() {\n    this.stack.push(new ClassScope());\n  }\n\n  exit() {\n    const oldClassScope = this.stack.pop();\n\n    // Migrate the usage of not yet defined private names to the outer\n    // class scope, or raise an error if we reached the top-level scope.\n\n    const current = this.current();\n\n    // Array.from is needed because this is compiled to an array-like for loop\n    for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n      if (current) {\n        if (!current.undefinedPrivateNames.has(name)) {\n          current.undefinedPrivateNames.set(name, loc);\n        }\n      } else {\n        this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n          identifierName: name,\n        });\n      }\n    }\n  }\n\n  declarePrivateName(\n    name: string,\n    elementType: ClassElementType,\n    loc: Position,\n  ) {\n    const { privateNames, loneAccessors, undefinedPrivateNames } =\n      this.current();\n    let redefined = privateNames.has(name);\n\n    if (elementType & ClassElementType.KIND_ACCESSOR) {\n      const accessor = redefined && loneAccessors.get(name);\n      if (accessor) {\n        const oldStatic = accessor & ClassElementType.FLAG_STATIC;\n        const newStatic = elementType & ClassElementType.FLAG_STATIC;\n\n        const oldKind = accessor & ClassElementType.KIND_ACCESSOR;\n        const newKind = elementType & ClassElementType.KIND_ACCESSOR;\n\n        // The private name can be duplicated only if it is used by\n        // two accessors with different kind (get and set), and if\n        // they have the same placement (static or not).\n        redefined = oldKind === newKind || oldStatic !== newStatic;\n\n        if (!redefined) loneAccessors.delete(name);\n      } else if (!redefined) {\n        loneAccessors.set(name, elementType);\n      }\n    }\n\n    if (redefined) {\n      this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n\n    privateNames.add(name);\n    undefinedPrivateNames.delete(name);\n  }\n\n  usePrivateName(name: string, loc: Position) {\n    let classScope;\n    for (classScope of this.stack) {\n      if (classScope.privateNames.has(name)) return;\n    }\n\n    if (classScope) {\n      classScope.undefinedPrivateNames.set(name, loc);\n    } else {\n      // top-level\n      this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n        identifierName: name,\n      });\n    }\n  }\n}\n","import { Errors, type ParseErrorConstructor } from \"../parse-error.ts\";\nimport type { Position } from \"./location.ts\";\nimport type { Node } from \"../types.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\n/**\n * @module util/expression-scope\n\nExpressionScope is used to track declaration errors in these ambiguous patterns:\n\n- CoverParenthesizedExpressionAndArrowParameterList\n  e.g. we don't know if `({ x })` is an parenthesized expression or an\n  arrow function parameters until we see an `=>` after `)`.\n\n- CoverCallExpressionAndAsyncArrowHead\n  e.g. we don't know if `async({ x })` is a call expression or an async arrow\n  function parameters until we see an `=>` after `)`\n\nThe following declaration errors (@see parser-errors/standard) will be recorded in\nsome expression scopes and thrown later when we know what the ambiguous pattern is\n\n- AwaitBindingIdentifier\n- AwaitExpressionFormalParameter\n- YieldInParameter\n- InvalidParenthesizedAssignment when parenthesized is an identifier\n\nThere are four different expression scope\n- Expression\n  A general scope that represents program / function body / static block. No errors\n  will be recorded nor thrown in this scope.\n\n- MaybeArrowParameterDeclaration\n  A scope that represents ambiguous arrow head e.g. `(x)`. Errors will be recorded\n  alongside parent scopes and thrown when `ExpressionScopeHandler#validateAsPattern`\n  is called.\n\n- MaybeAsyncArrowParameterDeclaration\n  A scope that represents ambiguous async arrow head e.g. `async(x)`. Errors will\n  be recorded alongside parent scopes and thrown when\n  `ExpressionScopeHandler#validateAsPattern` is called.\n\n- ParameterDeclaration\n  A scope that represents unambiguous function parameters `function(x)`. Errors\n  recorded in this scope will be thrown immediately. No errors will be recorded in\n  this scope.\n\n// @see {@link https://docs.google.com/document/d/1FAvEp9EUK-G8kHfDIEo_385Hs2SUBCYbJ5H-NnLvq8M|V8 Expression Scope design docs}\n */\n\nconst enum ExpressionScopeType {\n  kExpression = 0,\n  kMaybeArrowParameterDeclaration = 1,\n  kMaybeAsyncArrowParameterDeclaration = 2,\n  kParameterDeclaration = 3,\n}\n\nclass ExpressionScope {\n  declare type: ExpressionScopeType;\n\n  constructor(type: ExpressionScopeType = ExpressionScopeType.kExpression) {\n    this.type = type;\n  }\n\n  canBeArrowParameterDeclaration(): this is ArrowHeadParsingScope {\n    return (\n      this.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration ||\n      this.type === ExpressionScopeType.kMaybeArrowParameterDeclaration\n    );\n  }\n\n  isCertainlyParameterDeclaration() {\n    return this.type === ExpressionScopeType.kParameterDeclaration;\n  }\n}\n\ntype ArrowHeadParsingParameterInitializerError =\n  | typeof Errors.AwaitExpressionFormalParameter\n  | typeof Errors.YieldInParameter;\ntype ArrowHeadParsingDeclarationError =\n  | ArrowHeadParsingParameterInitializerError\n  | typeof Errors.InvalidParenthesizedAssignment\n  | typeof Errors.AwaitBindingIdentifier;\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n  declarationErrors: Map<number, [ParseErrorConstructor<object>, Position]> =\n    new Map();\n  constructor(\n    type:\n      | ExpressionScopeType.kMaybeArrowParameterDeclaration\n      | ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  ) {\n    super(type);\n  }\n  recordDeclarationError(\n    ParsingErrorClass: ParseErrorConstructor<object>,\n    at: Position,\n  ) {\n    const index = at.index;\n\n    this.declarationErrors.set(index, [ParsingErrorClass, at]);\n  }\n  clearDeclarationError(index: number) {\n    this.declarationErrors.delete(index);\n  }\n  iterateErrors(\n    iterator: (a: [ArrowHeadParsingDeclarationError, Position]) => void,\n  ) {\n    this.declarationErrors.forEach(iterator);\n  }\n}\n\nexport default class ExpressionScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ExpressionScope> = [new ExpressionScope()];\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n  enter(scope: ExpressionScope) {\n    this.stack.push(scope);\n  }\n\n  exit() {\n    this.stack.pop();\n  }\n\n  /**\n   * Record likely parameter initializer errors\n   *\n   * When current scope is a ParameterDeclaration, the error will be thrown immediately,\n   * otherwise it will be recorded to any ancestry MaybeArrowParameterDeclaration and\n   * MaybeAsyncArrowParameterDeclaration scope until an Expression scope is seen.\n   */\n  recordParameterInitializerError(\n    toParseError: ArrowHeadParsingParameterInitializerError,\n    node: Node,\n  ): void {\n    const origin = node.loc.start;\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (!scope.isCertainlyParameterDeclaration()) {\n      if (scope.canBeArrowParameterDeclaration()) {\n        scope.recordDeclarationError(toParseError, origin);\n      } else {\n        /*:: invariant(scope.type == ExpressionScopeType.kExpression) */\n        // Type-Expression is the boundary where initializer error can populate to\n        return;\n      }\n      scope = stack[--i];\n    }\n    this.parser.raise(toParseError, origin);\n  }\n\n  /**\n   * Record errors that must be thrown if the current pattern ends up being an arrow\n   * function parameter. This is used to record parenthesized identifiers, and to record\n   * \"a as T\" and \"<T> a\" type assertions when parsing typescript.\n   *\n   * A parenthesized identifier (or type assertion) in LHS can be ambiguous because the assignment\n   * can be transformed to an assignable later, but not vice versa:\n   * For example, in `([(a) = []] = []) => {}`, we think `(a) = []` is an LHS in `[(a) = []]`,\n   * an LHS within `[(a) = []] = []`. However the LHS chain is then transformed by toAssignable,\n   * and we should throw assignment `(a)`, which is only valid in LHS. Hence we record the\n   * location of parenthesized `(a)` to current scope if it is one of MaybeArrowParameterDeclaration\n   * and MaybeAsyncArrowParameterDeclaration\n   *\n   * Unlike `recordParameterInitializerError`, we don't record to ancestry scope because we\n   * validate arrow head parsing scope before exit, and then the LHS will be unambiguous:\n   * For example, in `( x = ( [(a) = []] = [] ) ) => {}`, we should not record `(a)` in `( x = ... ) =>`\n   * arrow scope because when we finish parsing `( [(a) = []] = [] )`, it is an unambiguous assignment\n   * expression and can not be cast to pattern\n   */\n  recordArrowParameterBindingError(\n    error: ParseErrorConstructor<object>,\n    node: Node,\n  ): void {\n    const { stack } = this;\n    const scope: ExpressionScope = stack[stack.length - 1];\n    const origin = node.loc.start;\n    if (scope.isCertainlyParameterDeclaration()) {\n      this.parser.raise(error, origin);\n    } else if (scope.canBeArrowParameterDeclaration()) {\n      scope.recordDeclarationError(error, origin);\n    } else {\n      return;\n    }\n  }\n\n  /**\n   * Record likely async arrow parameter errors\n   *\n   * Errors will be recorded to any ancestry MaybeAsyncArrowParameterDeclaration\n   * scope until an Expression scope is seen.\n   */\n  recordAsyncArrowParametersError(at: Position): void {\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (scope.canBeArrowParameterDeclaration()) {\n      if (\n        scope.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration\n      ) {\n        scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n      }\n      scope = stack[--i];\n    }\n  }\n\n  validateAsPattern(): void {\n    const { stack } = this;\n    const currentScope = stack[stack.length - 1];\n    if (!currentScope.canBeArrowParameterDeclaration()) return;\n    currentScope.iterateErrors(([toParseError, loc]) => {\n      this.parser.raise(toParseError, loc);\n      // iterate from parent scope\n      let i = stack.length - 2;\n      let scope = stack[i];\n      while (scope.canBeArrowParameterDeclaration()) {\n        scope.clearDeclarationError(loc.index);\n        scope = stack[--i];\n      }\n    });\n  }\n}\n\nexport function newParameterDeclarationScope() {\n  return new ExpressionScope(ExpressionScopeType.kParameterDeclaration);\n}\n\nexport function newArrowHeadScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeArrowParameterDeclaration,\n  );\n}\n\nexport function newAsyncArrowScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  );\n}\n\nexport function newExpressionScope() {\n  return new ExpressionScope();\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n//   async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n//     ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n  // Initial Parameter flags\n  PARAM = 0b0000,\n  // track [Yield] production parameter\n  PARAM_YIELD = 0b0001,\n  // track [Await] production parameter\n  PARAM_AWAIT = 0b0010,\n  // track [Return] production parameter\n  PARAM_RETURN = 0b0100,\n  // track [In] production parameter\n  PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n//  type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n//   | typeof PARAM\n//   | typeof PARAM_AWAIT\n//   | typeof PARAM_IN\n//   | typeof PARAM_RETURN\n//   | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n  stacks: Array<ParamKind> = [];\n  enter(flags: ParamKind) {\n    this.stacks.push(flags);\n  }\n\n  exit() {\n    this.stacks.pop();\n  }\n\n  currentFlags(): ParamKind {\n    return this.stacks[this.stacks.length - 1];\n  }\n\n  get hasAwait(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n  }\n\n  get hasYield(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n  }\n\n  get hasReturn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n  }\n\n  get hasIn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n  }\n}\n\nexport function functionFlags(\n  isAsync: boolean,\n  isGenerator: boolean,\n): ParamKind {\n  return (\n    (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n    (isGenerator ? ParamKind.PARAM_YIELD : 0)\n  );\n}\n","import type { Position } from \"../util/location.ts\";\nimport {\n  tokenIsLiteralPropertyName,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport Tokenizer from \"../tokenizer/index.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type {\n  EstreePropertyDefinition,\n  Node,\n  ObjectMethod,\n  ObjectProperty,\n  PrivateName,\n} from \"../types.d.ts\";\nimport { hasNewLine } from \"../util/whitespace.ts\";\nimport { isIdentifierChar } from \"../util/identifier.ts\";\nimport ClassScopeHandler from \"../util/class-scope.ts\";\nimport ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport { ScopeFlag } from \"../util/scopeflags.ts\";\nimport ProductionParameterHandler, {\n  ParamKind,\n} from \"../util/production-parameter.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nimport type ScopeHandler from \"../util/scope.ts\";\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n  node: Node;\n  error: Error;\n  thrown: Thrown;\n  aborted: Aborted;\n  failState: FailState;\n};\n\n// ## Parser utilities\n\nexport default abstract class UtilParser extends Tokenizer {\n  // Forward-declaration: defined in parser/index.js\n  abstract getScopeHandler(): new (...args: any) => ScopeHandler;\n\n  addExtra(\n    node: Partial<Node>,\n    key: string,\n    value: any,\n    enumerable: boolean = true,\n  ): void {\n    if (!node) return;\n\n    let { extra } = node;\n    if (extra == null) {\n      extra = {};\n      node.extra = extra;\n    }\n\n    if (enumerable) {\n      extra[key] = value;\n    } else {\n      Object.defineProperty(extra, key, { enumerable, value });\n    }\n  }\n\n  // Tests whether parsed token is a contextual keyword.\n\n  isContextual(token: TokenType): boolean {\n    return this.state.type === token && !this.state.containsEsc;\n  }\n\n  isUnparsedContextual(nameStart: number, name: string): boolean {\n    const nameEnd = nameStart + name.length;\n    if (this.input.slice(nameStart, nameEnd) === name) {\n      const nextCh = this.input.charCodeAt(nameEnd);\n      return !(\n        isIdentifierChar(nextCh) ||\n        // check if `nextCh is between 0xd800 - 0xdbff,\n        // if `nextCh` is NaN, `NaN & 0xfc00` is 0, the function\n        // returns true\n        (nextCh & 0xfc00) === 0xd800\n      );\n    }\n    return false;\n  }\n\n  isLookaheadContextual(name: string): boolean {\n    const next = this.nextTokenStart();\n    return this.isUnparsedContextual(next, name);\n  }\n\n  // Consumes contextual keyword if possible.\n\n  eatContextual(token: TokenType): boolean {\n    if (this.isContextual(token)) {\n      this.next();\n      return true;\n    }\n    return false;\n  }\n\n  // Asserts that following token is given contextual keyword.\n\n  expectContextual(\n    token: TokenType,\n    toParseError?: ParseErrorConstructor<any>,\n  ): void {\n    if (!this.eatContextual(token)) {\n      if (toParseError != null) {\n        throw this.raise(toParseError, this.state.startLoc);\n      }\n      this.unexpected(null, token);\n    }\n  }\n\n  // Test whether a semicolon can be inserted at the current position.\n\n  canInsertSemicolon(): boolean {\n    return (\n      this.match(tt.eof) ||\n      this.match(tt.braceR) ||\n      this.hasPrecedingLineBreak()\n    );\n  }\n\n  hasPrecedingLineBreak(): boolean {\n    return hasNewLine(\n      this.input,\n      this.offsetToSourcePos(this.state.lastTokEndLoc.index),\n      this.state.start,\n    );\n  }\n\n  hasFollowingLineBreak(): boolean {\n    return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n  }\n\n  isLineTerminator(): boolean {\n    return this.eat(tt.semi) || this.canInsertSemicolon();\n  }\n\n  // Consume a semicolon, or, failing that, see if we are allowed to\n  // pretend that there is a semicolon at this position.\n\n  semicolon(allowAsi: boolean = true): void {\n    if (allowAsi ? this.isLineTerminator() : this.eat(tt.semi)) return;\n    this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);\n  }\n\n  // Expect a token of a given type. If found, consume it, otherwise,\n  // raise an unexpected token error at given pos.\n\n  expect(type: TokenType, loc?: Position | null): void {\n    if (!this.eat(type)) {\n      this.unexpected(loc, type);\n    }\n  }\n\n  // tryParse will clone parser state.\n  // It is expensive and should be used with cautions\n  tryParse<T extends Node | ReadonlyArray<Node>>(\n    fn: (abort: (node?: T) => never) => T,\n    oldState: State = this.state.clone(),\n  ):\n    | TryParse<T, null, false, false, null>\n    | TryParse<T | null, ParseError<any>, boolean, false, State>\n    | TryParse<T | null, null, false, true, State> {\n    const abortSignal: {\n      node: T | null;\n    } = { node: null };\n    try {\n      const node = fn((node = null) => {\n        abortSignal.node = node;\n        // eslint-disable-next-line @typescript-eslint/only-throw-error\n        throw abortSignal;\n      });\n      if (this.state.errors.length > oldState.errors.length) {\n        const failState = this.state;\n        this.state = oldState;\n        // tokensLength should be preserved during error recovery mode\n        // since the parser does not halt and will instead parse the\n        // remaining tokens\n        this.state.tokensLength = failState.tokensLength;\n        return {\n          node,\n          error: failState.errors[oldState.errors.length],\n          thrown: false,\n          aborted: false,\n          failState,\n        };\n      }\n\n      return {\n        node,\n        error: null,\n        thrown: false,\n        aborted: false,\n        failState: null,\n      };\n    } catch (error) {\n      const failState = this.state;\n      this.state = oldState;\n      if (error instanceof SyntaxError) {\n        // @ts-expect-error casting general syntax error to parse error\n        return { node: null, error, thrown: true, aborted: false, failState };\n      }\n      if (error === abortSignal) {\n        return {\n          node: abortSignal.node,\n          error: null,\n          thrown: false,\n          aborted: true,\n          failState,\n        };\n      }\n\n      throw error;\n    }\n  }\n\n  checkExpressionErrors(\n    refExpressionErrors: ExpressionErrors | undefined | null,\n    andThrow: boolean,\n  ) {\n    if (!refExpressionErrors) return false;\n    const {\n      shorthandAssignLoc,\n      doubleProtoLoc,\n      privateKeyLoc,\n      optionalParametersLoc,\n    } = refExpressionErrors;\n\n    const hasErrors =\n      !!shorthandAssignLoc ||\n      !!doubleProtoLoc ||\n      !!optionalParametersLoc ||\n      !!privateKeyLoc;\n\n    if (!andThrow) {\n      return hasErrors;\n    }\n\n    if (shorthandAssignLoc != null) {\n      this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n    }\n\n    if (doubleProtoLoc != null) {\n      this.raise(Errors.DuplicateProto, doubleProtoLoc);\n    }\n\n    if (privateKeyLoc != null) {\n      this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n    }\n\n    if (optionalParametersLoc != null) {\n      this.unexpected(optionalParametersLoc);\n    }\n  }\n\n  /**\n   * Test if current token is a literal property name\n   * https://tc39.es/ecma262/#prod-LiteralPropertyName\n   * LiteralPropertyName:\n   *   IdentifierName\n   *   StringLiteral\n   *   NumericLiteral\n   *   BigIntLiteral\n   */\n  isLiteralPropertyName(): boolean {\n    return tokenIsLiteralPropertyName(this.state.type);\n  }\n\n  /**\n   * Test if given node is a PrivateName\n   * will be overridden in ESTree plugin\n   */\n  isPrivateName(node: Node): node is PrivateName {\n    return node.type === \"PrivateName\";\n  }\n\n  /**\n   * Return the string value of a given private name\n   * WITHOUT `#`\n   * @see {@link https://tc39.es/ecma262/#sec-static-semantics-stringvalue}\n   */\n  getPrivateNameSV(node: PrivateName): string {\n    return node.id.name;\n  }\n\n  /**\n   * Return whether the given node is a member/optional chain that\n   * contains a private name as its property\n   * It is overridden in ESTree plugin\n   */\n  hasPropertyAsPrivateName(node: Node): boolean {\n    return (\n      (node.type === \"MemberExpression\" ||\n        node.type === \"OptionalMemberExpression\") &&\n      this.isPrivateName(node.property)\n    );\n  }\n\n  isObjectProperty(\n    node: Node,\n  ): node is ObjectProperty | EstreePropertyDefinition {\n    return node.type === \"ObjectProperty\";\n  }\n\n  isObjectMethod(node: Node): node is ObjectMethod {\n    return node.type === \"ObjectMethod\";\n  }\n\n  initializeScopes(\n    this: Parser,\n    inModule: boolean = this.options.sourceType === \"module\",\n  ): () => void {\n    // Initialize state\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n\n    const oldExportedIdentifiers = this.exportedIdentifiers;\n    this.exportedIdentifiers = new Set();\n\n    // initialize scopes\n    const oldInModule = this.inModule;\n    this.inModule = inModule;\n\n    const oldScope = this.scope;\n    const ScopeHandler = this.getScopeHandler();\n    this.scope = new ScopeHandler(this, inModule);\n\n    const oldProdParam = this.prodParam;\n    this.prodParam = new ProductionParameterHandler();\n\n    const oldClassScope = this.classScope;\n    this.classScope = new ClassScopeHandler(this);\n\n    const oldExpressionScope = this.expressionScope;\n    this.expressionScope = new ExpressionScopeHandler(this);\n\n    return () => {\n      // Revert state\n      this.state.labels = oldLabels;\n      this.exportedIdentifiers = oldExportedIdentifiers;\n\n      // Revert scopes\n      this.inModule = oldInModule;\n      this.scope = oldScope;\n      this.prodParam = oldProdParam;\n      this.classScope = oldClassScope;\n      this.expressionScope = oldExpressionScope;\n    };\n  }\n\n  enterInitialScopes() {\n    let paramFlags = ParamKind.PARAM;\n    if (this.inModule) {\n      paramFlags |= ParamKind.PARAM_AWAIT;\n    }\n    this.scope.enter(ScopeFlag.PROGRAM);\n    this.prodParam.enter(paramFlags);\n  }\n\n  checkDestructuringPrivate(refExpressionErrors: ExpressionErrors) {\n    const { privateKeyLoc } = refExpressionErrors;\n    if (privateKeyLoc !== null) {\n      this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n    }\n  }\n}\n\n/**\n * The ExpressionErrors is a context struct used to track ambiguous patterns\n * When we are sure the parsed pattern is a RHS, which means it is not a pattern,\n * we will throw on this position on invalid assign syntax, otherwise it will be reset to -1\n *\n * Types of ExpressionErrors:\n *\n * - **shorthandAssignLoc**: track initializer `=` position\n * - **doubleProtoLoc**: track the duplicate `__proto__` key position\n * - **privateKey**: track private key `#p` position\n * - **optionalParametersLoc**: track the optional parameter (`?`).\n * It's only used by typescript and flow plugins\n */\nexport class ExpressionErrors {\n  shorthandAssignLoc: Position | undefined | null = null;\n  doubleProtoLoc: Position | undefined | null = null;\n  privateKeyLoc: Position | undefined | null = null;\n  optionalParametersLoc: Position | undefined | null = null;\n}\n","import UtilParser from \"./util.ts\";\nimport { SourceLocation, type Position } from \"../util/location.ts\";\nimport type { Comment, Node as NodeType, NodeBase } from \"../types.ts\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n  constructor(parser: UtilParser, pos: number, loc: Position) {\n    this.start = pos;\n    this.end = 0;\n    this.loc = new SourceLocation(loc);\n    if (parser?.options.ranges) this.range = [pos, 0];\n    if (parser?.filename) this.loc.filename = parser.filename;\n  }\n\n  type: string = \"\";\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n  declare range: [number, number];\n  declare leadingComments: Array<Comment>;\n  declare trailingComments: Array<Comment>;\n  declare innerComments: Array<Comment>;\n  declare extra: {\n    [key: string]: any;\n  };\n}\nconst NodePrototype = Node.prototype;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error __clone is not defined in Node prototype\n  NodePrototype.__clone = function (): Node {\n    const newNode = new Node(undefined, this.start, this.loc.start);\n    const keys = Object.keys(this) as (keyof Node)[];\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      // Do not clone comments that are already attached to the node\n      if (\n        key !== \"leadingComments\" &&\n        key !== \"trailingComments\" &&\n        key !== \"innerComments\"\n      ) {\n        // @ts-expect-error cloning this to newNode\n        newNode[key] = this[key];\n      }\n    }\n\n    return newNode;\n  };\n}\n\nfunction clonePlaceholder(node: any): any {\n  return cloneIdentifier(node);\n}\n\nexport function cloneIdentifier(node: any): any {\n  // We don't need to clone `typeAnnotations` and `optional`: because\n  // cloneIdentifier is only used in object shorthand and named import/export.\n  // Neither of them allow type annotations after the identifier or optional identifier\n  const { type, start, end, loc, range, extra, name } = node;\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  cloned.extra = extra;\n  cloned.name = name;\n  if (type === \"Placeholder\") {\n    cloned.expectedNode = node.expectedNode;\n  }\n  return cloned;\n}\n\nexport function cloneStringLiteral(node: any): any {\n  const { type, start, end, loc, range, extra } = node;\n  if (type === \"Placeholder\") {\n    return clonePlaceholder(node);\n  }\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  if (node.raw !== undefined) {\n    // estree set node.raw instead of node.extra\n    cloned.raw = node.raw;\n  } else {\n    cloned.extra = extra;\n  }\n  cloned.value = node.value;\n  return cloned;\n}\n\nexport type Undone<T extends NodeType> = Omit<T, \"type\">;\n\nexport abstract class NodeUtils extends UtilParser {\n  startNode<T extends NodeType = never>(): Undone<T> {\n    const loc = this.state.startLoc;\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  startNodeAt<T extends NodeType = never>(loc: Position): Undone<T> {\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  /** Start a new node with a previous node's location. */\n  startNodeAtNode<T extends NodeType = never>(\n    type: Undone<NodeType>,\n  ): Undone<T> {\n    return this.startNodeAt(type.loc.start);\n  }\n\n  // Finish an AST node, adding `type` and `end` properties.\n\n  finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n    return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n  }\n\n  // Finish node at given position\n\n  finishNodeAt<T extends NodeType>(\n    node: Omit<T, \"type\">,\n    type: T[\"type\"],\n    endLoc: Position,\n  ): T {\n    if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n      throw new Error(\n        \"Do not call finishNode*() twice on the same node.\" +\n          \" Instead use resetEndLocation() or change type directly.\",\n      );\n    }\n    (node as T).type = type;\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.options.ranges) node.range[1] = endLoc.index;\n    if (this.options.attachComment) this.processComment(node as T);\n    return node as T;\n  }\n\n  resetStartLocation(node: NodeBase, startLoc: Position): void {\n    node.start = startLoc.index;\n    node.loc.start = startLoc;\n    if (this.options.ranges) node.range[0] = startLoc.index;\n  }\n\n  resetEndLocation(\n    node: NodeBase,\n    endLoc: Position = this.state.lastTokEndLoc,\n  ): void {\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.options.ranges) node.range[1] = endLoc.index;\n  }\n\n  /**\n   * Reset the start location of node to the start location of locationNode\n   */\n  resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n    this.resetStartLocation(node, locationNode.loc.start);\n  }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeyword,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLiteralPropertyName,\n  tokenLabelName,\n  tt,\n  type TokenType,\n  tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport { cloneIdentifier, type Undone } from \"../../parser/node.ts\";\n\nconst reservedTypes = new Set([\n  \"_\",\n  \"any\",\n  \"bool\",\n  \"boolean\",\n  \"empty\",\n  \"extends\",\n  \"false\",\n  \"interface\",\n  \"mixed\",\n  \"null\",\n  \"number\",\n  \"static\",\n  \"string\",\n  \"true\",\n  \"typeof\",\n  \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n  AmbiguousConditionalArrow:\n    \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n  AmbiguousDeclareModuleKind:\n    \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n  // TODO: When we get proper string enums in typescript make this ReservedType.\n  // Not really worth it to do the whole $Values dance with reservedTypes set.\n  AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Cannot overwrite reserved type ${reservedType}.`,\n  DeclareClassElement:\n    \"The `declare` modifier can only appear on class fields.\",\n  DeclareClassFieldInitializer:\n    \"Initializers are not allowed in fields with the `declare` modifier.\",\n  DuplicateDeclareModuleExports:\n    \"Duplicate `declare module.exports` statement.\",\n  EnumBooleanMemberNotInitialized: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n  EnumDuplicateMemberName: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n  EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n    `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n  EnumInvalidExplicitType: ({\n    invalidEnumType,\n    enumName,\n  }: {\n    invalidEnumType: string;\n    enumName: string;\n  }) =>\n    `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidExplicitTypeUnknownSupplied: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n  // TODO: When moving to typescript, we should either have each of the\n  // following errors only accept the specific strings they want:\n  //\n  // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n  // ...SymbolType: explicitType: \"symbol\"\n  // ...UnknownType: explicitType: null\n  //\n  // Or, alternatively, merge these three errors together into one\n  // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n  // without alteration, and then just have its message change based on the\n  // explicitType.\n  EnumInvalidMemberInitializerPrimaryType: ({\n    enumName,\n    memberName,\n    explicitType,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n  EnumInvalidMemberInitializerSymbolType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberInitializerUnknownType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberName: ({\n    enumName,\n    memberName,\n    suggestion,\n  }: {\n    enumName: string;\n    memberName: string;\n    suggestion: string;\n  }) =>\n    `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n  EnumNumberMemberNotInitialized: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n  }) =>\n    `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n  EnumStringMemberInconsistentlyInitialized: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n  GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n  ImportTypeShorthandOnlyInPureImport:\n    \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n  InexactInsideExact:\n    \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n  InexactInsideNonObject:\n    \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n  InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n  InvalidNonTypeImportInDeclareModule:\n    \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n  MissingTypeParamDefault:\n    \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n  NestedDeclareModule:\n    \"`declare module` cannot be used inside another `declare module`.\",\n  NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n  PatternIsOptional: {\n    message:\n      \"A binding pattern parameter cannot be optional in an implementation signature.\",\n    // For consistency in TypeScript and Flow error codes\n    ...(!process.env.BABEL_8_BREAKING\n      ? { reasonCode: \"OptionalBindingPattern\" }\n      : {}),\n  },\n  SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n  SpreadVariance: \"Spread properties cannot have variance.\",\n  ThisParamAnnotationRequired:\n    \"A type annotation is required for the `this` parameter.\",\n  ThisParamBannedInConstructor:\n    \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n  ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n  ThisParamMustBeFirst:\n    \"The `this` parameter must be the first function parameter.\",\n  ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n  TypeBeforeInitializer:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeCastInPattern:\n    \"The type cast expression is expected to be wrapped with parenthesis.\",\n  UnexpectedExplicitInexactInObject:\n    \"Explicit inexact syntax must appear at the end of an inexact object.\",\n  UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Unexpected reserved type ${reservedType}.`,\n  UnexpectedReservedUnderscore:\n    \"`_` is only allowed as a type argument to call or new.\",\n  UnexpectedSpaceBetweenModuloChecks:\n    \"Spaces between `%` and `checks` are not allowed here.\",\n  UnexpectedSpreadType:\n    \"Spread operator cannot appear in class or interface definitions.\",\n  UnexpectedSubtractionOperand:\n    'Unexpected token, expected \"number\" or \"bigint\".',\n  UnexpectedTokenAfterTypeParameter:\n    \"Expected an arrow function after this type parameter declaration.\",\n  UnexpectedTypeParameterBeforeAsyncArrowFunction:\n    \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n  UnsupportedDeclareExportKind: ({\n    unsupportedExportKind,\n    suggestion,\n  }: {\n    unsupportedExportKind: string;\n    suggestion: string;\n  }) =>\n    `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n  UnsupportedStatementInDeclareModule:\n    \"Only declares and type imports are allowed inside declare module.\",\n  UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n  return (\n    bodyElement.type === \"DeclareExportAllDeclaration\" ||\n    (bodyElement.type === \"DeclareExportDeclaration\" &&\n      (!bodyElement.declaration ||\n        (bodyElement.declaration.type !== \"TypeAlias\" &&\n          bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n  );\n}\n\nfunction hasTypeImportKind(\n  node: Undone<N.ImportSpecifier | N.ImportDeclaration>,\n): boolean {\n  return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n  const: \"declare export var\",\n  let: \"declare export var\",\n  type: \"export type\",\n  interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n  list: T[],\n  test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n  const list1: T[] = [];\n  const list2: T[] = [];\n  for (let i = 0; i < list.length; i++) {\n    (test(list[i], i, list) ? list1 : list2).push(list[i]);\n  }\n  return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n  enumName: string;\n  explicitType: EnumExplicitType;\n  memberName: string;\n};\n\ntype EnumMemberInit =\n  | {\n      type: \"number\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"string\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"boolean\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"invalid\";\n      loc: Position;\n    }\n  | {\n      type: \"none\";\n      loc: Position;\n    };\n\nexport default (superClass: typeof Parser) =>\n  class FlowParserMixin extends superClass implements Parser {\n    // The value of the @flow/@noflow pragma. Initially undefined, transitions\n    // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n    // past the initial comment.\n    flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n    getScopeHandler(): new (...args: any) => FlowScopeHandler {\n      return FlowScopeHandler;\n    }\n\n    shouldParseTypes(): boolean {\n      return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n    }\n\n    finishToken(type: TokenType, val: any): void {\n      if (\n        type !== tt.string &&\n        type !== tt.semi &&\n        type !== tt.interpreterDirective\n      ) {\n        if (this.flowPragma === undefined) {\n          this.flowPragma = null;\n        }\n      }\n      super.finishToken(type, val);\n    }\n\n    addComment(comment: N.Comment): void {\n      if (this.flowPragma === undefined) {\n        // Try to parse a flow pragma.\n        const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n        if (!matches) {\n          // do nothing\n        } else if (matches[1] === \"flow\") {\n          this.flowPragma = \"flow\";\n        } else if (matches[1] === \"noflow\") {\n          this.flowPragma = \"noflow\";\n        } else {\n          throw new Error(\"Unexpected flow pragma\");\n        }\n      }\n      super.addComment(comment);\n    }\n\n    flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tok || tt.colon);\n\n      const type = this.flowParseType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParsePredicate(): N.FlowPredicate {\n      const node = this.startNode<N.FlowPredicate>();\n      const moduloLoc = this.state.startLoc;\n      this.next(); // eat `%`\n      this.expectContextual(tt._checks);\n      // Force '%' and 'checks' to be adjacent\n      if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n        this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n      }\n      if (this.eat(tt.parenL)) {\n        node.value = super.parseExpression();\n        this.expect(tt.parenR);\n        return this.finishNode(node, \"DeclaredPredicate\");\n      } else {\n        return this.finishNode(node, \"InferredPredicate\");\n      }\n    }\n\n    flowParseTypeAndPredicateInitialiser(): [\n      N.FlowType | undefined | null,\n      N.FlowPredicate | undefined | null,\n    ] {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tt.colon);\n      let type = null;\n      let predicate = null;\n      if (this.match(tt.modulo)) {\n        this.state.inType = oldInType;\n        predicate = this.flowParsePredicate();\n      } else {\n        type = this.flowParseType();\n        this.state.inType = oldInType;\n        if (this.match(tt.modulo)) {\n          predicate = this.flowParsePredicate();\n        }\n      }\n      return [type, predicate];\n    }\n\n    flowParseDeclareClass(\n      node: Undone<N.FlowDeclareClass>,\n    ): N.FlowDeclareClass {\n      this.next();\n      this.flowParseInterfaceish(node, /*isClass*/ true);\n      return this.finishNode(node, \"DeclareClass\");\n    }\n\n    flowParseDeclareFunction(\n      node: Undone<N.FlowDeclareFunction>,\n    ): N.FlowDeclareFunction {\n      this.next();\n\n      const id = (node.id = this.parseIdentifier());\n\n      const typeNode = this.startNode<N.FlowFunctionTypeAnnotation>();\n      const typeContainer = this.startNode<N.TypeAnnotation>();\n\n      if (this.match(tt.lt)) {\n        typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        typeNode.typeParameters = null;\n      }\n\n      this.expect(tt.parenL);\n      const tmp = this.flowParseFunctionTypeParams();\n      typeNode.params = tmp.params;\n      typeNode.rest = tmp.rest;\n      typeNode.this = tmp._this;\n      this.expect(tt.parenR);\n\n      [typeNode.returnType, node.predicate] =\n        this.flowParseTypeAndPredicateInitialiser();\n\n      typeContainer.typeAnnotation = this.finishNode(\n        typeNode,\n        \"FunctionTypeAnnotation\",\n      );\n\n      id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n      this.resetEndLocation(id);\n      this.semicolon();\n\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_FLOW_DECLARE_FN,\n        node.id.loc.start,\n      );\n\n      return this.finishNode(node, \"DeclareFunction\");\n    }\n\n    flowParseDeclare(\n      node: Undone<N.FlowDeclare>,\n      insideModule?: boolean,\n    ): N.FlowDeclare {\n      if (this.match(tt._class)) {\n        return this.flowParseDeclareClass(node);\n      } else if (this.match(tt._function)) {\n        return this.flowParseDeclareFunction(node);\n      } else if (this.match(tt._var)) {\n        return this.flowParseDeclareVariable(node);\n      } else if (this.eatContextual(tt._module)) {\n        if (this.match(tt.dot)) {\n          return this.flowParseDeclareModuleExports(node);\n        } else {\n          if (insideModule) {\n            this.raise(\n              FlowErrors.NestedDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          return this.flowParseDeclareModule(node);\n        }\n      } else if (this.isContextual(tt._type)) {\n        return this.flowParseDeclareTypeAlias(node);\n      } else if (this.isContextual(tt._opaque)) {\n        return this.flowParseDeclareOpaqueType(node);\n      } else if (this.isContextual(tt._interface)) {\n        return this.flowParseDeclareInterface(node);\n      } else if (this.match(tt._export)) {\n        return this.flowParseDeclareExportDeclaration(node, insideModule);\n      } else {\n        this.unexpected();\n      }\n    }\n\n    flowParseDeclareVariable(\n      node: Undone<N.FlowDeclareVariable>,\n    ): N.FlowDeclareVariable {\n      this.next();\n      node.id = this.flowParseTypeAnnotatableIdentifier(\n        /*allowPrimitiveOverride*/ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_VAR,\n        node.id.loc.start,\n      );\n      this.semicolon();\n      return this.finishNode(node, \"DeclareVariable\");\n    }\n\n    flowParseDeclareModule(\n      node: Undone<N.FlowDeclareModule>,\n    ): N.FlowDeclareModule {\n      this.scope.enter(ScopeFlag.OTHER);\n\n      if (this.match(tt.string)) {\n        node.id = super.parseExprAtom();\n      } else {\n        node.id = this.parseIdentifier();\n      }\n\n      const bodyNode = (node.body = this.startNode<N.BlockStatement>());\n      // @ts-expect-error refine typings\n      const body = (bodyNode.body = []);\n      this.expect(tt.braceL);\n      while (!this.match(tt.braceR)) {\n        let bodyNode = this.startNode<N.ImportDeclaration>();\n\n        if (this.match(tt._import)) {\n          this.next();\n          if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n            this.raise(\n              FlowErrors.InvalidNonTypeImportInDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          super.parseImport(bodyNode);\n        } else {\n          this.expectContextual(\n            tt._declare,\n            FlowErrors.UnsupportedStatementInDeclareModule,\n          );\n          // @ts-expect-error refine typings\n          bodyNode = this.flowParseDeclare(bodyNode, true);\n        }\n\n        body.push(bodyNode);\n      }\n\n      this.scope.exit();\n\n      this.expect(tt.braceR);\n\n      this.finishNode(bodyNode, \"BlockStatement\");\n\n      let kind: \"CommonJS\" | \"ES\" | null = null;\n      let hasModuleExport = false;\n      body.forEach(bodyElement => {\n        if (isEsModuleType(bodyElement)) {\n          if (kind === \"CommonJS\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"ES\";\n        } else if (bodyElement.type === \"DeclareModuleExports\") {\n          if (hasModuleExport) {\n            this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n          }\n          if (kind === \"ES\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"CommonJS\";\n          hasModuleExport = true;\n        }\n      });\n\n      node.kind = kind || \"CommonJS\";\n      return this.finishNode(node, \"DeclareModule\");\n    }\n\n    flowParseDeclareExportDeclaration(\n      node: Undone<N.FlowDeclareExportDeclaration>,\n      insideModule?: boolean | null,\n    ): N.FlowDeclareExportDeclaration {\n      this.expect(tt._export);\n\n      if (this.eat(tt._default)) {\n        if (this.match(tt._function) || this.match(tt._class)) {\n          // declare export default class ...\n          // declare export default function ...\n          node.declaration = this.flowParseDeclare(this.startNode());\n        } else {\n          // declare export default [type];\n          node.declaration = this.flowParseType();\n          this.semicolon();\n        }\n        node.default = true;\n\n        return this.finishNode(node, \"DeclareExportDeclaration\");\n      } else {\n        if (\n          this.match(tt._const) ||\n          this.isLet() ||\n          ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n            !insideModule)\n        ) {\n          const label = this.state.value as\n            | \"const\"\n            | \"let\"\n            | \"type\"\n            | \"interface\";\n          throw this.raise(\n            FlowErrors.UnsupportedDeclareExportKind,\n            this.state.startLoc,\n            {\n              unsupportedExportKind: label,\n              suggestion: exportSuggestions[label],\n            },\n          );\n        }\n\n        if (\n          this.match(tt._var) || // declare export var ...\n          this.match(tt._function) || // declare export function ...\n          this.match(tt._class) || // declare export class ...\n          this.isContextual(tt._opaque) // declare export opaque ..\n        ) {\n          node.declaration = this.flowParseDeclare(this.startNode());\n          node.default = false;\n\n          return this.finishNode(node, \"DeclareExportDeclaration\");\n        } else if (\n          this.match(tt.star) || // declare export * from ''\n          this.match(tt.braceL) || // declare export {} ...\n          this.isContextual(tt._interface) || // declare export interface ...\n          this.isContextual(tt._type) || // declare export type ...\n          this.isContextual(tt._opaque) // declare export opaque type ...\n        ) {\n          node = this.parseExport(\n            node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n            /* decorators */ null,\n          );\n          if (node.type === \"ExportNamedDeclaration\") {\n            node.type = \"ExportDeclaration\";\n            node.default = false;\n            delete node.exportKind;\n          }\n\n          node.type = \"Declare\" + node.type;\n\n          return node as N.FlowDeclareExportDeclaration;\n        }\n      }\n\n      this.unexpected();\n    }\n\n    flowParseDeclareModuleExports(\n      node: Undone<N.FlowDeclareModuleExports>,\n    ): N.FlowDeclareModuleExports {\n      this.next();\n      this.expectContextual(tt._exports);\n      node.typeAnnotation = this.flowParseTypeAnnotation();\n      this.semicolon();\n\n      return this.finishNode(node, \"DeclareModuleExports\");\n    }\n\n    flowParseDeclareTypeAlias(\n      node: Undone<N.FlowDeclareTypeAlias>,\n    ): N.FlowDeclareTypeAlias {\n      this.next();\n      const finished = this.flowParseTypeAlias(\n        node,\n      ) as unknown as N.FlowDeclareTypeAlias;\n      // Don't do finishNode as we don't want to process comments twice\n      finished.type = \"DeclareTypeAlias\";\n      return finished;\n    }\n\n    flowParseDeclareOpaqueType(\n      node: Undone<N.FlowDeclareOpaqueType>,\n    ): N.FlowDeclareOpaqueType {\n      this.next();\n      const finished = this.flowParseOpaqueType(\n        node,\n        true,\n      ) as unknown as N.FlowDeclareOpaqueType;\n      // Don't do finishNode as we don't want to process comments twice\n      finished.type = \"DeclareOpaqueType\";\n      return finished;\n    }\n\n    flowParseDeclareInterface(\n      node: Undone<N.FlowDeclareInterface>,\n    ): N.FlowDeclareInterface {\n      this.next();\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"DeclareInterface\");\n    }\n\n    // Interfaces\n\n    flowParseInterfaceish(node: Undone<N.FlowDeclare>, isClass: boolean): void {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ !isClass,\n        /* declaration */ true,\n      );\n\n      this.scope.declareName(\n        node.id.name,\n        isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.extends = [];\n\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (!isClass && this.eat(tt.comma));\n      }\n\n      if (isClass) {\n        node.implements = [];\n        node.mixins = [];\n\n        if (this.eatContextual(tt._mixins)) {\n          do {\n            node.mixins.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n\n        if (this.eatContextual(tt._implements)) {\n          do {\n            node.implements.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: isClass,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: isClass,\n        allowInexact: false,\n      });\n    }\n\n    flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n      const node = this.startNode<N.FlowInterfaceExtends>();\n\n      node.id = this.flowParseQualifiedTypeIdentifier();\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      } else {\n        node.typeParameters = null;\n      }\n\n      return this.finishNode(node, \"InterfaceExtends\");\n    }\n\n    flowParseInterface(node: Undone<N.FlowInterface>): N.FlowInterface {\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"InterfaceDeclaration\");\n    }\n\n    checkNotUnderscore(word: string) {\n      if (word === \"_\") {\n        this.raise(\n          FlowErrors.UnexpectedReservedUnderscore,\n          this.state.startLoc,\n        );\n      }\n    }\n\n    checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n      if (!reservedTypes.has(word)) return;\n\n      this.raise(\n        declaration\n          ? FlowErrors.AssignReservedType\n          : FlowErrors.UnexpectedReservedType,\n        startLoc,\n        {\n          reservedType: word,\n        },\n      );\n    }\n\n    flowParseRestrictedIdentifier(\n      liberal?: boolean,\n      declaration?: boolean,\n    ): N.Identifier {\n      this.checkReservedType(\n        this.state.value,\n        this.state.startLoc,\n        declaration,\n      );\n      return this.parseIdentifier(liberal);\n    }\n\n    // Type aliases\n\n    flowParseTypeAlias(node: Undone<N.FlowTypeAlias>): N.FlowTypeAlias {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ false,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.right = this.flowParseTypeInitialiser(tt.eq);\n      this.semicolon();\n\n      return this.finishNode(node, \"TypeAlias\");\n    }\n\n    flowParseOpaqueType(\n      node: Undone<N.FlowOpaqueType>,\n      declare: boolean,\n    ): N.FlowOpaqueType {\n      this.expectContextual(tt._type);\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ true,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      // Parse the supertype\n      node.supertype = null;\n      if (this.match(tt.colon)) {\n        node.supertype = this.flowParseTypeInitialiser(tt.colon);\n      }\n\n      node.impltype = null;\n      if (!declare) {\n        node.impltype = this.flowParseTypeInitialiser(tt.eq);\n      }\n      this.semicolon();\n\n      return this.finishNode(node, \"OpaqueType\");\n    }\n\n    // Type annotations\n\n    flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n      const nodeStartLoc = this.state.startLoc;\n\n      const node = this.startNode<N.TypeParameter>();\n\n      const variance = this.flowParseVariance();\n\n      const ident = this.flowParseTypeAnnotatableIdentifier();\n      node.name = ident.name;\n      // @ts-expect-error migrate to Babel types\n      node.variance = variance;\n      // @ts-expect-error migrate to Babel types\n      node.bound = ident.typeAnnotation;\n\n      if (this.match(tt.eq)) {\n        this.eat(tt.eq);\n        // @ts-expect-error migrate to Babel types\n        node.default = this.flowParseType();\n      } else {\n        if (requireDefault) {\n          this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n        }\n      }\n\n      return this.finishNode(node, \"TypeParameter\");\n    }\n\n    flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n      const oldInType = this.state.inType;\n      const node = this.startNode<N.TypeParameterDeclaration>();\n      node.params = [];\n\n      this.state.inType = true;\n\n      // istanbul ignore else: this condition is already checked at all call sites\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      let defaultRequired = false;\n\n      do {\n        const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n        node.params.push(typeParameter);\n\n        if (typeParameter.default) {\n          defaultRequired = true;\n        }\n\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      } while (!this.match(tt.gt));\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterDeclaration\");\n    }\n\n    flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n      node.params = [];\n\n      this.state.inType = true;\n\n      this.expect(tt.lt);\n      const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n      this.state.noAnonFunctionType = false;\n      while (!this.match(tt.gt)) {\n        node.params.push(this.flowParseType());\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      }\n      this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n      node.params = [];\n\n      this.state.inType = true;\n\n      this.expect(tt.lt);\n      while (!this.match(tt.gt)) {\n        node.params.push(this.flowParseTypeOrImplicitInstantiation());\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      }\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseInterfaceType(): N.FlowInterfaceType {\n      const node = this.startNode<N.FlowInterfaceType>();\n      this.expectContextual(tt._interface);\n\n      node.extends = [];\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (this.eat(tt.comma));\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: false,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: false,\n        allowInexact: false,\n      });\n\n      return this.finishNode(node, \"InterfaceTypeAnnotation\");\n    }\n\n    flowParseObjectPropertyKey(): N.Expression {\n      return this.match(tt.num) || this.match(tt.string)\n        ? super.parseExprAtom()\n        : this.parseIdentifier(true);\n    }\n\n    flowParseObjectTypeIndexer(\n      node: Undone<N.FlowObjectTypeIndexer>,\n      isStatic: boolean,\n      variance?: N.FlowVariance | null,\n    ): N.FlowObjectTypeIndexer {\n      node.static = isStatic;\n\n      // Note: bracketL has already been consumed\n      if (this.lookahead().type === tt.colon) {\n        node.id = this.flowParseObjectPropertyKey();\n        node.key = this.flowParseTypeInitialiser();\n      } else {\n        node.id = null;\n        node.key = this.flowParseType();\n      }\n      this.expect(tt.bracketR);\n      node.value = this.flowParseTypeInitialiser();\n      node.variance = variance;\n\n      return this.finishNode(node, \"ObjectTypeIndexer\");\n    }\n\n    flowParseObjectTypeInternalSlot(\n      node: Undone<N.FlowObjectTypeInternalSlot>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeInternalSlot {\n      node.static = isStatic;\n      // Note: both bracketL have already been consumed\n      node.id = this.flowParseObjectPropertyKey();\n      this.expect(tt.bracketR);\n      this.expect(tt.bracketR);\n      if (this.match(tt.lt) || this.match(tt.parenL)) {\n        node.method = true;\n        node.optional = false;\n        node.value = this.flowParseObjectTypeMethodish(\n          this.startNodeAt(node.loc.start),\n        );\n      } else {\n        node.method = false;\n        if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n        node.value = this.flowParseTypeInitialiser();\n      }\n      return this.finishNode(node, \"ObjectTypeInternalSlot\");\n    }\n\n    flowParseObjectTypeMethodish(\n      node: Undone<N.FlowFunctionTypeAnnotation>,\n    ): N.FlowFunctionTypeAnnotation {\n      node.params = [];\n      node.rest = null;\n      node.typeParameters = null;\n      node.this = null;\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      this.expect(tt.parenL);\n      if (this.match(tt._this)) {\n        node.this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        node.this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        node.params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n\n      if (this.eat(tt.ellipsis)) {\n        node.rest = this.flowParseFunctionTypeParam(false);\n      }\n      this.expect(tt.parenR);\n      node.returnType = this.flowParseTypeInitialiser();\n\n      return this.finishNode(node, \"FunctionTypeAnnotation\");\n    }\n\n    flowParseObjectTypeCallProperty(\n      node: Undone<N.FlowObjectTypeCallProperty>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeCallProperty {\n      const valueNode = this.startNode();\n      node.static = isStatic;\n      node.value = this.flowParseObjectTypeMethodish(valueNode);\n      return this.finishNode(node, \"ObjectTypeCallProperty\");\n    }\n\n    flowParseObjectType({\n      allowStatic,\n      allowExact,\n      allowSpread,\n      allowProto,\n      allowInexact,\n    }: {\n      allowStatic: boolean;\n      allowExact: boolean;\n      allowSpread: boolean;\n      allowProto: boolean;\n      allowInexact: boolean;\n    }): N.FlowObjectTypeAnnotation {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n\n      const nodeStart = this.startNode<N.FlowObjectTypeAnnotation>();\n\n      nodeStart.callProperties = [];\n      nodeStart.properties = [];\n      nodeStart.indexers = [];\n      nodeStart.internalSlots = [];\n\n      let endDelim;\n      let exact;\n      let inexact = false;\n      if (allowExact && this.match(tt.braceBarL)) {\n        this.expect(tt.braceBarL);\n        endDelim = tt.braceBarR;\n        exact = true;\n      } else {\n        this.expect(tt.braceL);\n        endDelim = tt.braceR;\n        exact = false;\n      }\n\n      nodeStart.exact = exact;\n\n      while (!this.match(endDelim)) {\n        let isStatic = false;\n        let protoStartLoc: Position | undefined | null = null;\n        let inexactStartLoc: Position | undefined | null = null;\n        const node = this.startNode();\n\n        if (allowProto && this.isContextual(tt._proto)) {\n          const lookahead = this.lookahead();\n\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            protoStartLoc = this.state.startLoc;\n            allowStatic = false;\n          }\n        }\n\n        if (allowStatic && this.isContextual(tt._static)) {\n          const lookahead = this.lookahead();\n\n          // static is a valid identifier name\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            isStatic = true;\n          }\n        }\n\n        const variance = this.flowParseVariance();\n\n        if (this.eat(tt.bracketL)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (this.eat(tt.bracketL)) {\n            if (variance) {\n              this.unexpected(variance.loc.start);\n            }\n            nodeStart.internalSlots.push(\n              this.flowParseObjectTypeInternalSlot(node, isStatic),\n            );\n          } else {\n            nodeStart.indexers.push(\n              this.flowParseObjectTypeIndexer(node, isStatic, variance),\n            );\n          }\n        } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n          nodeStart.callProperties.push(\n            this.flowParseObjectTypeCallProperty(node, isStatic),\n          );\n        } else {\n          let kind = \"init\";\n\n          if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n            const lookahead = this.lookahead();\n            if (tokenIsLiteralPropertyName(lookahead.type)) {\n              kind = this.state.value;\n              this.next();\n            }\n          }\n\n          const propOrInexact = this.flowParseObjectTypeProperty(\n            node,\n            isStatic,\n            protoStartLoc,\n            variance,\n            kind,\n            allowSpread,\n            allowInexact ?? !exact,\n          );\n\n          if (propOrInexact === null) {\n            inexact = true;\n            inexactStartLoc = this.state.lastTokStartLoc;\n          } else {\n            nodeStart.properties.push(propOrInexact);\n          }\n        }\n\n        this.flowObjectTypeSemicolon();\n\n        if (\n          inexactStartLoc &&\n          !this.match(tt.braceR) &&\n          !this.match(tt.braceBarR)\n        ) {\n          this.raise(\n            FlowErrors.UnexpectedExplicitInexactInObject,\n            inexactStartLoc,\n          );\n        }\n      }\n\n      this.expect(endDelim);\n\n      /* The inexact flag should only be added on ObjectTypeAnnotations that\n       * are not the body of an interface, declare interface, or declare class.\n       * Since spreads are only allowed in object types, checking that is\n       * sufficient here.\n       */\n      if (allowSpread) {\n        nodeStart.inexact = inexact;\n      }\n\n      const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n      this.state.inType = oldInType;\n\n      return out;\n    }\n\n    flowParseObjectTypeProperty(\n      node: Undone<N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty>,\n      isStatic: boolean,\n      protoStartLoc: Position | undefined | null,\n      variance: N.FlowVariance | undefined | null,\n      kind: string,\n      allowSpread: boolean,\n      allowInexact: boolean,\n    ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n      if (this.eat(tt.ellipsis)) {\n        const isInexactToken =\n          this.match(tt.comma) ||\n          this.match(tt.semi) ||\n          this.match(tt.braceR) ||\n          this.match(tt.braceBarR);\n\n        if (isInexactToken) {\n          if (!allowSpread) {\n            this.raise(\n              FlowErrors.InexactInsideNonObject,\n              this.state.lastTokStartLoc,\n            );\n          } else if (!allowInexact) {\n            this.raise(\n              FlowErrors.InexactInsideExact,\n              this.state.lastTokStartLoc,\n            );\n          }\n          if (variance) {\n            this.raise(FlowErrors.InexactVariance, variance);\n          }\n\n          return null;\n        }\n\n        if (!allowSpread) {\n          this.raise(\n            FlowErrors.UnexpectedSpreadType,\n            this.state.lastTokStartLoc,\n          );\n        }\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n        if (variance) {\n          this.raise(FlowErrors.SpreadVariance, variance);\n        }\n\n        node.argument = this.flowParseType();\n        return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n      } else {\n        node.key = this.flowParseObjectPropertyKey();\n        node.static = isStatic;\n        node.proto = protoStartLoc != null;\n        node.kind = kind;\n\n        let optional = false;\n        if (this.match(tt.lt) || this.match(tt.parenL)) {\n          // This is a method property\n          node.method = true;\n\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n\n          node.value = this.flowParseObjectTypeMethodish(\n            this.startNodeAt(node.loc.start),\n          );\n          if (kind === \"get\" || kind === \"set\") {\n            this.flowCheckGetterSetterParams(node);\n          }\n          /** Declared classes/interfaces do not allow spread */\n          if (\n            !allowSpread &&\n            node.key.name === \"constructor\" &&\n            node.value.this\n          ) {\n            this.raise(\n              FlowErrors.ThisParamBannedInConstructor,\n              node.value.this,\n            );\n          }\n        } else {\n          if (kind !== \"init\") this.unexpected();\n\n          node.method = false;\n\n          if (this.eat(tt.question)) {\n            optional = true;\n          }\n          node.value = this.flowParseTypeInitialiser();\n          node.variance = variance;\n        }\n\n        node.optional = optional;\n\n        return this.finishNode(node, \"ObjectTypeProperty\");\n      }\n    }\n\n    // This is similar to checkGetterSetterParams, but as\n    // @babel/parser uses non estree properties we cannot reuse it here\n    flowCheckGetterSetterParams(\n      property: Undone<\n        N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n      >,\n    ): void {\n      const paramCount = property.kind === \"get\" ? 0 : 1;\n      const length =\n        property.value.params.length + (property.value.rest ? 1 : 0);\n\n      if (property.value.this) {\n        this.raise(\n          property.kind === \"get\"\n            ? FlowErrors.GetterMayNotHaveThisParam\n            : FlowErrors.SetterMayNotHaveThisParam,\n          property.value.this,\n        );\n      }\n\n      if (length !== paramCount) {\n        this.raise(\n          property.kind === \"get\"\n            ? Errors.BadGetterArity\n            : Errors.BadSetterArity,\n          property,\n        );\n      }\n\n      if (property.kind === \"set\" && property.value.rest) {\n        this.raise(Errors.BadSetterRestParameter, property);\n      }\n    }\n\n    flowObjectTypeSemicolon(): void {\n      if (\n        !this.eat(tt.semi) &&\n        !this.eat(tt.comma) &&\n        !this.match(tt.braceR) &&\n        !this.match(tt.braceBarR)\n      ) {\n        this.unexpected();\n      }\n    }\n\n    flowParseQualifiedTypeIdentifier(\n      startLoc?: Position,\n      id?: N.Identifier,\n    ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n      startLoc ??= this.state.startLoc;\n      let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n        id || this.flowParseRestrictedIdentifier(true);\n\n      while (this.eat(tt.dot)) {\n        const node2 = this.startNodeAt<N.FlowQualifiedTypeIdentifier>(startLoc);\n        node2.qualification = node;\n        node2.id = this.flowParseRestrictedIdentifier(true);\n        node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n      }\n\n      return node;\n    }\n\n    flowParseGenericType(\n      startLoc: Position,\n      id: N.Identifier,\n    ): N.FlowGenericTypeAnnotation {\n      const node = this.startNodeAt<N.FlowGenericTypeAnnotation>(startLoc);\n\n      node.typeParameters = null;\n      node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      }\n\n      return this.finishNode(node, \"GenericTypeAnnotation\");\n    }\n\n    flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n      const node = this.startNode<N.FlowTypeofTypeAnnotation>();\n      this.expect(tt._typeof);\n      node.argument = this.flowParsePrimaryType();\n      return this.finishNode(node, \"TypeofTypeAnnotation\");\n    }\n\n    flowParseTupleType(): N.FlowTupleTypeAnnotation {\n      const node = this.startNode<N.FlowTupleTypeAnnotation>();\n      node.types = [];\n      this.expect(tt.bracketL);\n      // We allow trailing commas\n      while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n        node.types.push(this.flowParseType());\n        if (this.match(tt.bracketR)) break;\n        this.expect(tt.comma);\n      }\n      this.expect(tt.bracketR);\n      return this.finishNode(node, \"TupleTypeAnnotation\");\n    }\n\n    flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n      let name = null;\n      let optional = false;\n      let typeAnnotation = null;\n      const node = this.startNode<N.FlowFunctionTypeParam>();\n      const lh = this.lookahead();\n      const isThis = this.state.type === tt._this;\n\n      if (lh.type === tt.colon || lh.type === tt.question) {\n        if (isThis && !first) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node);\n        }\n        name = this.parseIdentifier(isThis);\n        if (this.eat(tt.question)) {\n          optional = true;\n          if (isThis) {\n            this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n          }\n        }\n        typeAnnotation = this.flowParseTypeInitialiser();\n      } else {\n        typeAnnotation = this.flowParseType();\n      }\n      node.name = name;\n      node.optional = optional;\n      node.typeAnnotation = typeAnnotation;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    reinterpretTypeAsFunctionTypeParam(\n      type: N.FlowType,\n    ): N.FlowFunctionTypeParam {\n      const node = this.startNodeAt<N.FlowFunctionTypeParam>(type.loc.start);\n      node.name = null;\n      node.optional = false;\n      node.typeAnnotation = type;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n      params: N.FlowFunctionTypeParam[];\n      rest: N.FlowFunctionTypeParam | undefined | null;\n      _this: N.FlowFunctionTypeParam | undefined | null;\n    } {\n      let rest: N.FlowFunctionTypeParam | undefined | null = null;\n      let _this: N.FlowFunctionTypeParam | undefined | null = null;\n      if (this.match(tt._this)) {\n        _this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        _this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      if (this.eat(tt.ellipsis)) {\n        rest = this.flowParseFunctionTypeParam(false);\n      }\n      return { params, rest, _this };\n    }\n\n    flowIdentToTypeAnnotation(\n      startLoc: Position,\n      node: Undone<N.FlowType>,\n      id: N.Identifier,\n    ): N.FlowType {\n      switch (id.name) {\n        case \"any\":\n          return this.finishNode(node, \"AnyTypeAnnotation\");\n\n        case \"bool\":\n        case \"boolean\":\n          return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n        case \"mixed\":\n          return this.finishNode(node, \"MixedTypeAnnotation\");\n\n        case \"empty\":\n          return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n        case \"number\":\n          return this.finishNode(node, \"NumberTypeAnnotation\");\n\n        case \"string\":\n          return this.finishNode(node, \"StringTypeAnnotation\");\n\n        case \"symbol\":\n          return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n        default:\n          this.checkNotUnderscore(id.name);\n          return this.flowParseGenericType(startLoc, id);\n      }\n    }\n\n    // The parsing of types roughly parallels the parsing of expressions, and\n    // primary types are kind of like primary expressions...they're the\n    // primitives with which other types are constructed.\n    flowParsePrimaryType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      let tmp;\n      let type;\n      let isGroupedType = false;\n      const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n      switch (this.state.type) {\n        case tt.braceL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: false,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: true,\n          });\n\n        case tt.braceBarL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: true,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: false,\n          });\n\n        case tt.bracketL:\n          this.state.noAnonFunctionType = false;\n          type = this.flowParseTupleType();\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n          return type;\n\n        case tt.lt: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          node.typeParameters = this.flowParseTypeParameterDeclaration();\n          this.expect(tt.parenL);\n          tmp = this.flowParseFunctionTypeParams();\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.parenL: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          this.next();\n\n          // Check to see if this is actually a grouped type\n          if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n            if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n              const token = this.lookahead().type;\n              isGroupedType = token !== tt.question && token !== tt.colon;\n            } else {\n              isGroupedType = true;\n            }\n          }\n\n          if (isGroupedType) {\n            this.state.noAnonFunctionType = false;\n            type = this.flowParseType();\n            this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n            // A `,` or a `) =>` means this is an anonymous function type\n            if (\n              this.state.noAnonFunctionType ||\n              !(\n                this.match(tt.comma) ||\n                (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n              )\n            ) {\n              this.expect(tt.parenR);\n              return type;\n            } else {\n              // Eat a comma if there is one\n              this.eat(tt.comma);\n            }\n          }\n\n          if (type) {\n            tmp = this.flowParseFunctionTypeParams([\n              this.reinterpretTypeAsFunctionTypeParam(type),\n            ]);\n          } else {\n            tmp = this.flowParseFunctionTypeParams();\n          }\n\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          node.typeParameters = null;\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.string:\n          return this.parseLiteral<N.StringLiteralTypeAnnotation>(\n            this.state.value,\n            \"StringLiteralTypeAnnotation\",\n          );\n\n        case tt._true:\n        case tt._false:\n          node.value = this.match(tt._true);\n          this.next();\n          return this.finishNode(\n            node as Undone<N.BooleanLiteralTypeAnnotation>,\n            \"BooleanLiteralTypeAnnotation\",\n          );\n\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            this.next();\n            if (this.match(tt.num)) {\n              return this.parseLiteralAtNode<N.NumberLiteralTypeAnnotation>(\n                -this.state.value,\n                \"NumberLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            if (this.match(tt.bigint)) {\n              return this.parseLiteralAtNode<N.BigIntLiteralTypeAnnotation>(\n                -this.state.value,\n                \"BigIntLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            throw this.raise(\n              FlowErrors.UnexpectedSubtractionOperand,\n              this.state.startLoc,\n            );\n          }\n          this.unexpected();\n          return;\n        case tt.num:\n          return this.parseLiteral(\n            this.state.value,\n            \"NumberLiteralTypeAnnotation\",\n          );\n\n        case tt.bigint:\n          return this.parseLiteral(\n            this.state.value,\n            \"BigIntLiteralTypeAnnotation\",\n          );\n\n        case tt._void:\n          this.next();\n          return this.finishNode(node, \"VoidTypeAnnotation\");\n\n        case tt._null:\n          this.next();\n          return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n        case tt._this:\n          this.next();\n          return this.finishNode(node, \"ThisTypeAnnotation\");\n\n        case tt.star:\n          this.next();\n          return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n        case tt._typeof:\n          return this.flowParseTypeofType();\n\n        default:\n          if (tokenIsKeyword(this.state.type)) {\n            const label = tokenLabelName(this.state.type);\n            this.next();\n            return super.createIdentifier(node as Undone<N.Identifier>, label);\n          } else if (tokenIsIdentifier(this.state.type)) {\n            if (this.isContextual(tt._interface)) {\n              return this.flowParseInterfaceType();\n            }\n\n            return this.flowIdentToTypeAnnotation(\n              startLoc,\n              node,\n              this.parseIdentifier(),\n            );\n          }\n      }\n\n      this.unexpected();\n    }\n\n    flowParsePostfixType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      let type = this.flowParsePrimaryType();\n      let seenOptionalIndexedAccess = false;\n      while (\n        (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n        !this.canInsertSemicolon()\n      ) {\n        const node = this.startNodeAt<N.FlowOtherTypeAnnotation>(startLoc);\n        const optional = this.eat(tt.questionDot);\n        seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n        this.expect(tt.bracketL);\n        if (!optional && this.match(tt.bracketR)) {\n          node.elementType = type;\n          this.next(); // eat `]`\n          type = this.finishNode(node, \"ArrayTypeAnnotation\");\n        } else {\n          node.objectType = type;\n          node.indexType = this.flowParseType();\n          this.expect(tt.bracketR);\n          if (seenOptionalIndexedAccess) {\n            node.optional = optional;\n            type = this.finishNode<N.FlowOptionalIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"OptionalIndexedAccessType\",\n            );\n          } else {\n            type = this.finishNode<N.FlowIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"IndexedAccessType\",\n            );\n          }\n        }\n      }\n      return type;\n    }\n\n    flowParsePrefixType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      if (this.eat(tt.question)) {\n        node.typeAnnotation = this.flowParsePrefixType();\n        return this.finishNode(node, \"NullableTypeAnnotation\");\n      } else {\n        return this.flowParsePostfixType();\n      }\n    }\n\n    flowParseAnonFunctionWithoutParens(): N.FlowType {\n      const param = this.flowParsePrefixType();\n      if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n        // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n        const node = this.startNodeAt<N.FlowFunctionTypeAnnotation>(\n          param.loc.start,\n        );\n        node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n        node.rest = null;\n        node.this = null;\n        node.returnType = this.flowParseType();\n        node.typeParameters = null;\n        return this.finishNode(node, \"FunctionTypeAnnotation\");\n      }\n      return param;\n    }\n\n    flowParseIntersectionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseAND);\n      const type = this.flowParseAnonFunctionWithoutParens();\n      node.types = [type];\n      while (this.eat(tt.bitwiseAND)) {\n        node.types.push(this.flowParseAnonFunctionWithoutParens());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"IntersectionTypeAnnotation\");\n    }\n\n    flowParseUnionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseOR);\n      const type = this.flowParseIntersectionType();\n      node.types = [type];\n      while (this.eat(tt.bitwiseOR)) {\n        node.types.push(this.flowParseIntersectionType());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"UnionTypeAnnotation\");\n    }\n\n    flowParseType(): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      const type = this.flowParseUnionType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParseTypeOrImplicitInstantiation(): N.FlowType {\n      if (this.state.type === tt.name && this.state.value === \"_\") {\n        const startLoc = this.state.startLoc;\n        const node = this.parseIdentifier();\n        return this.flowParseGenericType(startLoc, node);\n      } else {\n        return this.flowParseType();\n      }\n    }\n\n    flowParseTypeAnnotation(): N.TypeAnnotation {\n      const node = this.startNode<N.TypeAnnotation>();\n      node.typeAnnotation = this.flowParseTypeInitialiser();\n      return this.finishNode(node, \"TypeAnnotation\");\n    }\n\n    flowParseTypeAnnotatableIdentifier(\n      allowPrimitiveOverride?: boolean,\n    ): N.Identifier {\n      const ident = allowPrimitiveOverride\n        ? this.parseIdentifier()\n        : this.flowParseRestrictedIdentifier();\n      if (this.match(tt.colon)) {\n        ident.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(ident);\n      }\n      return ident;\n    }\n\n    typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    flowParseVariance(): N.FlowVariance | undefined | null {\n      let variance = null;\n      if (this.match(tt.plusMin)) {\n        variance = this.startNode<N.FlowVariance>();\n        if (this.state.value === \"+\") {\n          variance.kind = \"plus\";\n        } else {\n          variance.kind = \"minus\";\n        }\n        this.next();\n        return this.finishNode(variance, \"Variance\");\n      }\n      return variance;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpressionBody?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      if (allowExpressionBody) {\n        this.forwardNoArrowParamsConversionAt(node, () =>\n          super.parseFunctionBody(node, true, isMethod),\n        );\n        return;\n      }\n\n      super.parseFunctionBody(node, false, isMethod);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        const typeNode = this.startNode<N.TypeAnnotation>();\n\n        [\n          typeNode.typeAnnotation,\n          // @ts-expect-error predicate may not exist\n          node.predicate,\n        ] = this.flowParseTypeAndPredicateInitialiser();\n\n        node.returnType = typeNode.typeAnnotation\n          ? this.finishNode(typeNode, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    // interfaces and enums\n    parseStatementLike(flags: ParseStatementFlag): N.Statement {\n      // strict mode handling of `interface` since it's a reserved word\n      if (this.state.strict && this.isContextual(tt._interface)) {\n        const lookahead = this.lookahead();\n        if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n          const node = this.startNode<N.FlowInterface>();\n          this.next();\n          return this.flowParseInterface(node);\n        }\n      } else if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      const stmt = super.parseStatementLike(flags);\n      // We will parse a flow pragma in any comment before the first statement.\n      if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n        this.flowPragma = null;\n      }\n      return stmt;\n    }\n\n    // declares, interfaces and type aliases\n    parseExpressionStatement(\n      node: N.ExpressionStatement,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.ExpressionStatement {\n      if (expr.type === \"Identifier\") {\n        if (expr.name === \"declare\") {\n          if (\n            this.match(tt._class) ||\n            tokenIsIdentifier(this.state.type) ||\n            this.match(tt._function) ||\n            this.match(tt._var) ||\n            this.match(tt._export)\n          ) {\n            // @ts-expect-error: refine typings\n            return this.flowParseDeclare(node);\n          }\n        } else if (tokenIsIdentifier(this.state.type)) {\n          if (expr.name === \"interface\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseInterface(node);\n          } else if (expr.name === \"type\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseTypeAlias(node);\n          } else if (expr.name === \"opaque\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseOpaqueType(node, false);\n          }\n        }\n      }\n\n      return super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    shouldParseExportDeclaration(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return !this.state.containsEsc;\n      }\n      return super.shouldParseExportDeclaration();\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return this.state.containsEsc;\n      }\n\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseExportDefaultExpression() {\n      if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      return super.parseExportDefaultExpression();\n    }\n\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      if (!this.match(tt.question)) return expr;\n\n      if (this.state.maybeInArrowParameters) {\n        const nextCh = this.lookaheadCharCode();\n        // These tokens cannot start an expression, so if one of them follows\n        // ? then we are probably in an arrow function parameters list and we\n        // don't parse the conditional expression.\n        if (\n          nextCh === charCodes.comma || // (a?, b) => c\n          nextCh === charCodes.equalsTo || // (a? = b) => c\n          nextCh === charCodes.colon || // (a?: b) => c\n          nextCh === charCodes.rightParenthesis // (a?) => c\n        ) {\n          /*:: invariant(refExpressionErrors != null) */\n          this.setOptionalParametersError(refExpressionErrors);\n          return expr;\n        }\n      }\n\n      this.expect(tt.question);\n      const state = this.state.clone();\n      const originalNoArrowAt = this.state.noArrowAt;\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      let { consequent, failed } = this.tryParseConditionalConsequent();\n      let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n      if (failed || invalid.length > 0) {\n        const noArrowAt = [...originalNoArrowAt];\n\n        if (invalid.length > 0) {\n          this.state = state;\n          this.state.noArrowAt = noArrowAt;\n\n          for (let i = 0; i < invalid.length; i++) {\n            noArrowAt.push(invalid[i].start);\n          }\n\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n          [valid, invalid] = this.getArrowLikeExpressions(consequent);\n        }\n\n        if (failed && valid.length > 1) {\n          // if there are two or more possible correct ways of parsing, throw an\n          // error.\n          // e.g.   Source: a ? (b): c => (d): e => f\n          //      Result 1: a ? b : (c => ((d): e => f))\n          //      Result 2: a ? ((b): c => d) : (e => f)\n          this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n        }\n\n        if (failed && valid.length === 1) {\n          this.state = state;\n          noArrowAt.push(valid[0].start);\n          this.state.noArrowAt = noArrowAt;\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n        }\n      }\n\n      this.getArrowLikeExpressions(consequent, true);\n\n      this.state.noArrowAt = originalNoArrowAt;\n      this.expect(tt.colon);\n\n      node.test = expr;\n      node.consequent = consequent;\n      node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n        this.parseMaybeAssign(undefined, undefined),\n      );\n\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n\n    tryParseConditionalConsequent(): {\n      consequent: N.Expression;\n      failed: boolean;\n    } {\n      this.state.noArrowParamsConversionAt.push(this.state.start);\n\n      const consequent = this.parseMaybeAssignAllowIn();\n      const failed = !this.match(tt.colon);\n\n      this.state.noArrowParamsConversionAt.pop();\n\n      return { consequent, failed };\n    }\n\n    // Given an expression, walks through out its arrow functions whose body is\n    // an expression and through out conditional expressions. It returns every\n    // function which has been parsed with a return type but could have been\n    // parenthesized expressions.\n    // These functions are separated into two arrays: one containing the ones\n    // whose parameters can be converted to assignable lists, one containing the\n    // others.\n    getArrowLikeExpressions(\n      node: N.Expression,\n      disallowInvalid?: boolean,\n    ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n      const stack = [node];\n      const arrows: N.ArrowFunctionExpression[] = [];\n\n      while (stack.length !== 0) {\n        const node = stack.pop();\n        if (\n          node.type === \"ArrowFunctionExpression\" &&\n          node.body.type !== \"BlockStatement\"\n        ) {\n          if (node.typeParameters || !node.returnType) {\n            // This is an arrow expression without ambiguity, so check its parameters\n            this.finishArrowValidation(node);\n          } else {\n            arrows.push(node);\n          }\n          stack.push(node.body);\n        } else if (node.type === \"ConditionalExpression\") {\n          stack.push(node.consequent);\n          stack.push(node.alternate);\n        }\n      }\n\n      if (disallowInvalid) {\n        arrows.forEach(node => this.finishArrowValidation(node));\n        return [arrows, []];\n      }\n\n      return partition(arrows, node =>\n        node.params.every(param => this.isAssignable(param, true)),\n      );\n    }\n\n    finishArrowValidation(node: N.ArrowFunctionExpression) {\n      this.toAssignableList(\n        // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n        // has not been converted yet.\n        node.params as any as N.Expression[],\n        node.extra?.trailingCommaLoc,\n        /* isLHS */ false,\n      );\n      // Enter scope, as checkParams defines bindings\n      this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n      // Use super's method to force the parameters to be checked\n      super.checkParams(node, false, true);\n      this.scope.exit();\n    }\n\n    forwardNoArrowParamsConversionAt<T>(\n      node: Undone<N.Node>,\n      parse: () => T,\n    ): T {\n      let result: T;\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        this.state.noArrowParamsConversionAt.push(this.state.start);\n        result = parse();\n        this.state.noArrowParamsConversionAt.pop();\n      } else {\n        result = parse();\n      }\n\n      return result;\n    }\n\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TypeCastExpression>(startLoc);\n        typeCastNode.expression = newNode as N.Expression;\n        typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TypeCastExpression\");\n      }\n\n      return newNode;\n    }\n\n    assertModuleNodeAllowed(node: N.Node) {\n      if (\n        (node.type === \"ImportDeclaration\" &&\n          (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n        (node.type === \"ExportNamedDeclaration\" &&\n          node.exportKind === \"type\") ||\n        (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n      ) {\n        // Allow Flowtype imports and exports in all conditions because\n        // Flow itself does not care about 'sourceType'.\n        return;\n      }\n\n      super.assertModuleNodeAllowed(node);\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (this.isContextual(tt._type)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n\n        if (this.match(tt.braceL)) {\n          // export type { foo, bar };\n          node.specifiers = this.parseExportSpecifiers(\n            /* isInTypeExport */ true,\n          );\n          super.parseExportFrom(node);\n          return null;\n        } else {\n          // export type Foo = Bar;\n          // @ts-expect-error: refine typings\n          return this.flowParseTypeAlias(declarationNode);\n        }\n      } else if (this.isContextual(tt._opaque)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n        // export opaque type Foo = Bar;\n        // @ts-expect-error: refine typings\n        return this.flowParseOpaqueType(declarationNode, false);\n      } else if (this.isContextual(tt._interface)) {\n        node.exportKind = \"type\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseInterface(declarationNode);\n      } else if (this.isContextual(tt._enum)) {\n        node.exportKind = \"value\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseEnumDeclaration(declarationNode);\n      } else {\n        return super.parseExportDeclaration(node);\n      }\n    }\n\n    eatExportStar(\n      node: Undone<N.Node>,\n    ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n      if (super.eatExportStar(node)) return true;\n\n      if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n        (\n          node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>\n        ).exportKind = \"type\";\n        this.next();\n        this.next();\n        return true;\n      }\n\n      return false;\n    }\n\n    maybeParseExportNamespaceSpecifier(\n      node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      const { startLoc } = this.state;\n      const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n      if (hasNamespace && node.exportKind === \"type\") {\n        this.unexpected(startLoc);\n      }\n      return hasNamespace;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n    ) {\n      super.parseClassId(node, isStatement, optionalId);\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const { startLoc } = this.state;\n      if (this.isContextual(tt._declare)) {\n        if (super.parseClassMemberFromModifier(classBody, member)) {\n          // 'declare' is a class element name\n          return;\n        }\n\n        member.declare = true;\n      }\n\n      super.parseClassMember(classBody, member, state);\n\n      if (member.declare) {\n        if (\n          member.type !== \"ClassProperty\" &&\n          member.type !== \"ClassPrivateProperty\" &&\n          member.type !== \"PropertyDefinition\" // Used by estree plugin\n        ) {\n          this.raise(FlowErrors.DeclareClassElement, startLoc);\n        } else if (member.value) {\n          this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n        }\n      }\n    }\n\n    isIterator(word: string): boolean {\n      return word === \"iterator\" || word === \"asyncIterator\";\n    }\n\n    readIterator(): void {\n      const word = super.readWord1();\n      const fullWord = \"@@\" + word;\n\n      // Allow @@iterator and @@asyncIterator as a identifier only inside type\n      if (!this.isIterator(word) || !this.state.inType) {\n        this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n          identifierName: fullWord,\n        });\n      }\n\n      this.finishToken(tt.name, fullWord);\n    }\n\n    // ensure that inside flow types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n        this.finishOp(tt.braceBarL, 2);\n      } else if (\n        this.state.inType &&\n        (code === charCodes.greaterThan || code === charCodes.lessThan)\n      ) {\n        this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n      } else if (this.state.inType && code === charCodes.questionMark) {\n        if (next === charCodes.dot) {\n          this.finishOp(tt.questionDot, 2);\n        } else {\n          // allow double nullable types in Flow: ??string\n          this.finishOp(tt.question, 1);\n        }\n      } else if (\n        isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n      ) {\n        this.state.pos += 2; // eat \"@@\"\n        this.readIterator();\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node.type === \"TypeCastExpression\") {\n        return this.isAssignable(node.expression, isBinding);\n      } else {\n        return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (\n        !isLHS &&\n        node.type === \"AssignmentExpression\" &&\n        node.left.type === \"TypeCastExpression\"\n      ) {\n        node.left = this.typeCastToParameter(node.left) as N.Assignable;\n      }\n      super.toAssignable(node, isLHS);\n    }\n\n    // turn type casts that we found in function parameter head into type annotated params\n    toAssignableList(\n      exprList: N.Expression[],\n      trailingCommaLoc: Position | undefined | null,\n      isLHS: boolean,\n    ): void {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (expr?.type === \"TypeCastExpression\") {\n          exprList[i] = this.typeCastToParameter(expr);\n        }\n      }\n      super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n    }\n\n    // this is a list of nodes, from something like a call expression, we need to filter the\n    // type casts that we've found that are illegal in this context\n    toReferencedList(\n      exprList:\n        | ReadonlyArray<N.Expression | N.SpreadElement>\n        | ReadonlyArray<N.Expression | N.RestElement>,\n      isParenthesizedExpr?: boolean,\n    ):\n      | ReadonlyArray<N.Expression | N.SpreadElement>\n      | ReadonlyArray<N.Expression | N.RestElement> {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (\n          expr &&\n          expr.type === \"TypeCastExpression\" &&\n          !expr.extra?.parenthesized &&\n          (exprList.length > 1 || !isParenthesizedExpr)\n        ) {\n          this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n        }\n      }\n\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      // This could be an array pattern:\n      //   ([a: string, b: string]) => {}\n      // In this case, we don't have to call toReferencedList. We will\n      // call it, if needed, when we are sure that it is a parenthesized\n      // expression by calling toReferencedListDeep.\n      if (canBePattern && !this.state.maybeInArrowParameters) {\n        this.toReferencedList(node.elements);\n      }\n\n      return node;\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"TypeCastExpression\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    // parse class property type annotations\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassPrivateProperty(node);\n    }\n\n    // determine whether or not we're currently in the position where a class method would appear\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    // determine whether or not we're currently in the position where a class property would appear\n    isClassProperty(): boolean {\n      return this.match(tt.colon) || super.isClassProperty();\n    }\n\n    isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n      return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n    }\n\n    // parse type parameters for class methods\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n\n      if (method.params && isConstructor) {\n        const params = method.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n        // estree support\n      } else if (\n        // @ts-expect-error TS does not know about the face that estree can replace ClassMethod with MethodDefinition\n        method.type === \"MethodDefinition\" &&\n        isConstructor &&\n        // @ts-expect-error estree\n        method.value.params\n      ) {\n        // @ts-expect-error estree\n        const params = method.value.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n      }\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    // parse a the super class type parameters and implements\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      if (node.superClass && this.match(tt.lt)) {\n        node.superTypeParameters = this.flowParseTypeParameterInstantiation();\n      }\n      if (this.isContextual(tt._implements)) {\n        this.next();\n        const implemented: N.FlowClassImplements[] = (node.implements = []);\n        do {\n          const node = this.startNode<N.FlowClassImplements>();\n          node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n          if (this.match(tt.lt)) {\n            node.typeParameters = this.flowParseTypeParameterInstantiation();\n          } else {\n            node.typeParameters = null;\n          }\n          implemented.push(this.finishNode(node, \"ClassImplements\"));\n        } while (this.eat(tt.comma));\n      }\n    }\n\n    checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n      super.checkGetterSetterParams(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      if (params.length > 0) {\n        const param = params[0];\n        if (this.isThisParam(param) && method.kind === \"get\") {\n          this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n        } else if (this.isThisParam(param)) {\n          this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n        }\n      }\n    }\n\n    parsePropertyNamePrefixOperator(\n      node: N.ObjectOrClassMember | N.ClassMember,\n    ): void {\n      node.variance = this.flowParseVariance();\n    }\n\n    // parse type parameters for object method shorthand\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      if ((prop as any).variance) {\n        this.unexpected((prop as any).variance.loc.start);\n      }\n      delete (prop as any).variance;\n\n      let typeParameters;\n\n      // method shorthand\n      if (this.match(tt.lt) && !isAccessor) {\n        typeParameters = this.flowParseTypeParameterDeclaration();\n        if (!this.match(tt.parenL)) this.unexpected();\n      }\n\n      const result = super.parseObjPropValue(\n        prop,\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n\n      // add typeParameters if we found them\n      if (typeParameters) {\n        // @ts-expect-error: refine typings\n        (result.value || result).typeParameters = typeParameters;\n      }\n      return result;\n    }\n\n    parseFunctionParamType(param: N.Pattern): N.Pattern {\n      if (this.eat(tt.question)) {\n        if (param.type !== \"Identifier\") {\n          this.raise(FlowErrors.PatternIsOptional, param);\n        }\n        if (this.isThisParam(param)) {\n          this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n        }\n\n        (param as any as N.Identifier).optional = true;\n      }\n      if (this.match(tt.colon)) {\n        param.typeAnnotation = this.flowParseTypeAnnotation();\n      } else if (this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n      }\n\n      if (this.match(tt.eq) && this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamNoDefault, param);\n      }\n\n      this.resetEndLocation(param);\n      return param;\n    }\n\n    parseMaybeDefault(\n      startLoc?: Position | null,\n      left?: N.Pattern | null,\n    ): N.Pattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          FlowErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    parseImportSpecifierLocal<\n      T extends\n        | N.ImportSpecifier\n        | N.ImportDefaultSpecifier\n        | N.ImportNamespaceSpecifier,\n    >(node: N.ImportDeclaration, specifier: Undone<T>, type: T[\"type\"]): void {\n      specifier.local = hasTypeImportKind(node)\n        ? this.flowParseRestrictedIdentifier(\n            /* liberal */ true,\n            /* declaration */ true,\n          )\n        : this.parseIdentifier();\n\n      node.specifiers.push(this.finishImportSpecifier(specifier, type));\n    }\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        if (!isExport) return true;\n        const ch = this.lookaheadCharCode();\n        return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        if (!phase && this.match(tt._default)) {\n          // TODO: Align with our TS AST and always add .exportKind\n          return;\n        }\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? phase : \"value\";\n      } else {\n        if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    // parse import-type/typeof shorthand\n    parseImportSpecifier(\n      specifier: any,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      const firstIdent = specifier.imported;\n\n      let specifierTypeKind = null;\n      if (firstIdent.type === \"Identifier\") {\n        if (firstIdent.name === \"type\") {\n          specifierTypeKind = \"type\";\n        } else if (firstIdent.name === \"typeof\") {\n          specifierTypeKind = \"typeof\";\n        }\n      }\n\n      let isBinding = false;\n      if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n        const as_ident = this.parseIdentifier(true);\n        if (\n          specifierTypeKind !== null &&\n          !tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type as ,` or `import {type as }`\n          specifier.imported = as_ident;\n          specifier.importKind = specifierTypeKind;\n          specifier.local = cloneIdentifier(as_ident);\n        } else {\n          // `import {type as foo`\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n          specifier.local = this.parseIdentifier();\n        }\n      } else {\n        if (\n          specifierTypeKind !== null &&\n          tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type foo`\n          specifier.imported = this.parseIdentifier(true);\n          specifier.importKind = specifierTypeKind;\n        } else {\n          if (importedIsString) {\n            /*:: invariant(firstIdent instanceof N.StringLiteral) */\n            throw this.raise(Errors.ImportBindingIsString, specifier, {\n              importName: firstIdent.value,\n            });\n          }\n          /*:: invariant(firstIdent instanceof N.Node) */\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n        }\n\n        if (this.eatContextual(tt._as)) {\n          specifier.local = this.parseIdentifier();\n        } else {\n          isBinding = true;\n          specifier.local = cloneIdentifier(specifier.imported);\n        }\n      }\n\n      const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n      if (isInTypeOnlyImport && specifierIsTypeImport) {\n        this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n      }\n\n      if (isInTypeOnlyImport || specifierIsTypeImport) {\n        this.checkReservedType(\n          specifier.local.name,\n          specifier.local.loc.start,\n          /* declaration */ true,\n        );\n      }\n\n      if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n        this.checkReservedWord(\n          specifier.local.name,\n          specifier.loc.start,\n          true,\n          true,\n        );\n      }\n\n      return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n    }\n\n    parseBindingAtom(): N.Pattern {\n      switch (this.state.type) {\n        case tt._this:\n          // \"this\" may be the name of a parameter, so allow it.\n          return this.parseIdentifier(/* liberal */ true);\n        default:\n          return super.parseBindingAtom();\n      }\n    }\n\n    // parse function type parameters - function foo<T>() {}\n    parseFunctionParams(\n      node: Undone<N.Function>,\n      isConstructor: boolean,\n    ): void {\n      // @ts-expect-error kind may not index node\n      const kind = node.kind;\n      if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // parse flow type annotations on variable declarator heads - let foo: string = bar\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (this.match(tt.colon)) {\n        decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = true;\n        node.returnType = this.flowParseTypeAnnotation();\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      }\n\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    // todo description\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    // We need to support type parameter declarations for arrow functions. This\n    // is tricky. There are three situations we need to handle\n    //\n    // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n    //    fails, we'll try an arrow function. If that fails, we'll throw the JSX\n    //    error.\n    // 2. This is an arrow function. We'll parse the type parameter declaration,\n    //    parse the rest, make sure the rest is an arrow function, and go from\n    //    there\n    // 3. This is neither. Just call the super method\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      let state = null;\n\n      let jsx;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` and `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (jsx?.error || this.match(tt.lt)) {\n        state = state || this.state.clone();\n\n        let typeParameters: N.TypeParameterDeclaration;\n\n        const arrow = this.tryParse((abort: () => never) => {\n          typeParameters = this.flowParseTypeParameterDeclaration();\n\n          const arrowExpression = this.forwardNoArrowParamsConversionAt(\n            typeParameters,\n            () => {\n              const result = super.parseMaybeAssign(\n                refExpressionErrors,\n                afterLeftParse,\n              );\n\n              this.resetStartLocationFromNode(result, typeParameters);\n\n              return result;\n            },\n          );\n\n          // <T>(() => {});\n          // <T>(() => {}: any);\n          if (arrowExpression.extra?.parenthesized) abort();\n\n          // The above can return a TypeCastExpression when the arrow\n          // expression is not wrapped in parens. See also `this.parseParenItem`.\n          // (<T>() => {}: any);\n          const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n          if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n          expr.typeParameters = typeParameters;\n          this.resetStartLocationFromNode(expr, typeParameters);\n\n          return arrowExpression;\n        }, state);\n\n        let arrowExpression:\n          | N.ArrowFunctionExpression\n          | N.TypeCastExpression\n          | undefined\n          | null = null;\n\n        if (\n          arrow.node &&\n          this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n            \"ArrowFunctionExpression\"\n        ) {\n          if (!arrow.error && !arrow.aborted) {\n            // <T> async () => {}\n            // @ts-expect-error: refine tryParse typings\n            if (arrow.node.async) {\n              /*:: invariant(typeParameters) */\n              this.raise(\n                FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n                typeParameters,\n              );\n            }\n            return arrow.node;\n          }\n\n          // @ts-expect-error: refine typings\n          arrowExpression = arrow.node;\n        }\n\n        // If we are here, both JSX and Flow parsing attempts failed.\n        // Give the precedence to the JSX error, except if JSX had an\n        // unrecoverable error while Flow didn't.\n        // If the error is recoverable, we can only re-report it if there is\n        // a node we can return.\n\n        if (jsx?.node) {\n          /*:: invariant(jsx.failState) */\n          this.state = jsx.failState;\n          return jsx.node;\n        }\n\n        if (arrowExpression) {\n          /*:: invariant(arrow.failState) */\n          this.state = arrow.failState;\n          return arrowExpression;\n        }\n\n        if (jsx?.thrown) throw jsx.error;\n        if (arrow.thrown) throw arrow.error;\n\n        /*:: invariant(typeParameters) */\n        throw this.raise(\n          FlowErrors.UnexpectedTokenAfterTypeParameter,\n          typeParameters,\n        );\n      }\n\n      return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n    }\n\n    // handle return types for arrow functions\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // @ts-expect-error todo(flow->ts)\n        const result = this.tryParse<N.TypeAnnotation>(() => {\n          const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n          this.state.noAnonFunctionType = true;\n\n          const typeNode = this.startNode<N.TypeAnnotation>();\n\n          [\n            typeNode.typeAnnotation,\n            // @ts-expect-error (destructuring not supported yet)\n            node.predicate,\n          ] = this.flowParseTypeAndPredicateInitialiser();\n\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n          if (this.canInsertSemicolon()) this.unexpected();\n          if (!this.match(tt.arrow)) this.unexpected();\n\n          return typeNode;\n        });\n\n        if (result.thrown) return null;\n        /*:: invariant(result.node) */\n\n        if (result.error) this.state = result.failState;\n\n        // assign after it is clear it is an arrow\n        // @ts-expect-error todo(flow->ts)\n        node.returnType = result.node.typeAnnotation\n          ? this.finishNode(result.node, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseArrow(node);\n    }\n\n    shouldParseArrow(params: Array<N.Node>): boolean {\n      return this.match(tt.colon) || super.shouldParseArrow(params);\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params:\n        | Array<N.Expression | N.SpreadElement>\n        | Array<N.Expression | N.RestElement>,\n    ): void {\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        node.params = params as N.ArrowFunctionExpression[\"params\"];\n      } else {\n        super.setArrowFunctionParameters(node, params);\n      }\n    }\n\n    checkParams(\n      node: N.Function,\n      allowDuplicates: boolean,\n      isArrowFunction?: boolean | null,\n      strictModeChanged: boolean = true,\n    ): void {\n      if (\n        isArrowFunction &&\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        return;\n      }\n\n      // ensure the `this` param is first, if it exists\n      for (let i = 0; i < node.params.length; i++) {\n        if (this.isThisParam(node.params[i]) && i > 0) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n        }\n      }\n\n      super.checkParams(\n        node,\n        allowDuplicates,\n        isArrowFunction,\n        strictModeChanged,\n      );\n    }\n\n    parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n      return super.parseParenAndDistinguishExpression(\n        canBeArrow &&\n          !this.state.noArrowAt.includes(\n            this.sourceToOffsetPos(this.state.start),\n          ),\n      );\n    }\n\n    parseSubscripts(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls?: boolean | null,\n    ): N.Expression {\n      if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.state.noArrowAt.includes(startLoc.index)\n      ) {\n        this.next();\n\n        const node = this.startNodeAt<N.CallExpression>(startLoc);\n        node.callee = base;\n        node.arguments = super.parseCallExpressionArguments(tt.parenR);\n        base = this.finishNode(node, \"CallExpression\");\n      } else if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.match(tt.lt)\n      ) {\n        const state = this.state.clone();\n        const arrow = this.tryParse(\n          abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n          state,\n        );\n\n        /*:: invariant(arrow.node != null) */\n        // @ts-expect-error: refine tryParse typings\n        if (!arrow.error && !arrow.aborted) return arrow.node;\n\n        const result = this.tryParse(\n          () => super.parseSubscripts(base, startLoc, noCalls),\n          state,\n        );\n\n        if (result.node && !result.error) return result.node;\n\n        if (arrow.node) {\n          this.state = arrow.failState;\n          // @ts-expect-error: refine tryParse typings\n          return arrow.node;\n        }\n\n        if (result.node) {\n          this.state = result.failState;\n          return result.node;\n        }\n\n        throw arrow.error || result.error;\n      }\n\n      return super.parseSubscripts(base, startLoc, noCalls);\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      subscriptState: N.ParseSubscriptState,\n    ): N.Expression {\n      if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n        subscriptState.optionalChainMember = true;\n        if (noCalls) {\n          subscriptState.stop = true;\n          return base;\n        }\n        this.next();\n        const node = this.startNodeAt<N.OptionalCallExpression>(startLoc);\n        node.callee = base;\n        node.typeArguments = this.flowParseTypeParameterInstantiation();\n        this.expect(tt.parenL);\n        node.arguments = this.parseCallExpressionArguments(tt.parenR);\n        node.optional = true;\n        return this.finishCallExpression(node, /* optional */ true);\n      } else if (!noCalls && this.shouldParseTypes() && this.match(tt.lt)) {\n        const node = this.startNodeAt<\n          N.OptionalCallExpression | N.CallExpression\n        >(startLoc);\n        node.callee = base;\n\n        const result = this.tryParse(() => {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationCallOrNew();\n          this.expect(tt.parenL);\n          node.arguments = super.parseCallExpressionArguments(tt.parenR);\n          if (subscriptState.optionalChainMember) {\n            (node as Undone<N.OptionalCallExpression>).optional = false;\n          }\n          return this.finishCallExpression(\n            node,\n            subscriptState.optionalChainMember,\n          );\n        });\n\n        if (result.node) {\n          if (result.error) this.state = result.failState;\n          return result.node;\n        }\n      }\n\n      return super.parseSubscript(\n        base,\n\n        startLoc,\n        noCalls,\n        subscriptState,\n      );\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      let targs = null;\n      if (this.shouldParseTypes() && this.match(tt.lt)) {\n        targs = this.tryParse(() =>\n          this.flowParseTypeParameterInstantiationCallOrNew(),\n        ).node;\n      }\n      node.typeArguments = targs;\n    }\n\n    parseAsyncArrowWithTypeParameters(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined | null {\n      const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n      this.parseFunctionParams(node, false);\n      if (!this.parseArrow(node)) return;\n      return super.parseArrowExpression(\n        node,\n        /* params */ undefined,\n        /* isAsync */ true,\n      );\n    }\n\n    readToken_mult_modulo(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.asterisk &&\n        next === charCodes.slash &&\n        this.state.hasFlowComment\n      ) {\n        this.state.hasFlowComment = false;\n        this.state.pos += 2;\n        this.nextToken();\n        return;\n      }\n\n      super.readToken_mult_modulo(code);\n    }\n\n    readToken_pipe_amp(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.verticalBar &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        // '|}'\n        this.finishOp(tt.braceBarR, 2);\n        return;\n      }\n\n      super.readToken_pipe_amp(code);\n    }\n\n    parseTopLevel(file: N.File, program: N.Program): N.File {\n      const fileNode = super.parseTopLevel(file, program);\n      if (this.state.hasFlowComment) {\n        this.raise(\n          FlowErrors.UnterminatedFlowComment,\n          this.state.curPosition(),\n        );\n      }\n      return fileNode;\n    }\n\n    skipBlockComment(): N.CommentBlock | undefined {\n      if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n        if (this.state.hasFlowComment) {\n          throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n        }\n        this.hasFlowCommentCompletion();\n        const commentSkip = this.skipFlowComment();\n        if (commentSkip) {\n          this.state.pos += commentSkip;\n          this.state.hasFlowComment = true;\n        }\n        return;\n      }\n\n      return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n    }\n\n    skipFlowComment(): number | false {\n      const { pos } = this.state;\n      let shiftToFirstNonWhiteSpace = 2;\n      while (\n        [charCodes.space, charCodes.tab].includes(\n          // @ts-expect-error testing whether a number is included\n          this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n        )\n      ) {\n        shiftToFirstNonWhiteSpace++;\n      }\n\n      const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n      const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n      if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n        return shiftToFirstNonWhiteSpace + 2; // check for /*::\n      }\n      if (\n        this.input.slice(\n          shiftToFirstNonWhiteSpace + pos,\n          shiftToFirstNonWhiteSpace + pos + 12,\n        ) === \"flow-include\"\n      ) {\n        return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n      }\n      if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n        return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n      }\n      return false;\n    }\n\n    hasFlowCommentCompletion(): void {\n      const end = this.input.indexOf(\"*/\", this.state.pos);\n      if (end === -1) {\n        throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n      }\n    }\n\n    // Flow enum parsing\n\n    flowEnumErrorBooleanMemberNotInitialized(\n      loc: Position,\n      {\n        enumName,\n        memberName,\n      }: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n        memberName,\n        enumName,\n      });\n    }\n\n    flowEnumErrorInvalidMemberInitializer(\n      loc: Position,\n      enumContext: EnumContext,\n    ) {\n      return this.raise(\n        !enumContext.explicitType\n          ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n          : enumContext.explicitType === \"symbol\"\n            ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n            : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n        loc,\n        enumContext,\n      );\n    }\n\n    flowEnumErrorNumberMemberNotInitialized(\n      loc: Position,\n      details: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n    }\n\n    flowEnumErrorStringMemberInconsistentlyInitialized(\n      node: N.Node,\n      details: {\n        enumName: string;\n      },\n    ): void {\n      this.raise(\n        FlowErrors.EnumStringMemberInconsistentlyInitialized,\n        node,\n        details,\n      );\n    }\n\n    flowEnumMemberInit(): EnumMemberInit {\n      const startLoc = this.state.startLoc;\n      const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n      switch (this.state.type) {\n        case tt.num: {\n          const literal = this.parseNumericLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"number\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt.string: {\n          const literal = this.parseStringLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"string\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt._true:\n        case tt._false: {\n          const literal = this.parseBooleanLiteral(this.match(tt._true));\n          if (endOfInit()) {\n            return {\n              type: \"boolean\",\n              loc: literal.loc.start,\n              value: literal,\n            };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        default:\n          return { type: \"invalid\", loc: startLoc };\n      }\n    }\n\n    flowEnumMemberRaw(): {\n      id: N.Identifier;\n      init: EnumMemberInit;\n    } {\n      const loc = this.state.startLoc;\n      const id = this.parseIdentifier(true);\n      const init = this.eat(tt.eq)\n        ? this.flowEnumMemberInit()\n        : { type: \"none\" as const, loc };\n      return { id, init };\n    }\n\n    flowEnumCheckExplicitTypeMismatch(\n      loc: Position,\n      context: EnumContext,\n      expectedType: EnumExplicitType,\n    ): void {\n      const { explicitType } = context;\n      if (explicitType === null) {\n        return;\n      }\n      if (explicitType !== expectedType) {\n        this.flowEnumErrorInvalidMemberInitializer(loc, context);\n      }\n    }\n\n    flowEnumMembers({\n      enumName,\n      explicitType,\n    }: {\n      enumName: string;\n      explicitType: EnumExplicitType;\n    }): {\n      members: {\n        booleanMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumBooleanMember\" }\n        >[];\n        numberMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumNumberMember\" }\n        >[];\n        stringMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumStringMember\" }\n        >[];\n        defaultedMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumDefaultedMember\" }\n        >[];\n      };\n      hasUnknownMembers: boolean;\n    } {\n      const seenNames = new Set();\n      const members = {\n        // @ts-expect-error: migrate to Babel types\n        booleanMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        numberMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        stringMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        defaultedMembers: [],\n      };\n      let hasUnknownMembers = false;\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.ellipsis)) {\n          hasUnknownMembers = true;\n          break;\n        }\n        const memberNode = this.startNode<N.FlowEnumMember>();\n        const { id, init } = this.flowEnumMemberRaw();\n        const memberName = id.name;\n        if (memberName === \"\") {\n          continue;\n        }\n        if (/^[a-z]/.test(memberName)) {\n          this.raise(FlowErrors.EnumInvalidMemberName, id, {\n            memberName,\n            suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n            enumName,\n          });\n        }\n        if (seenNames.has(memberName)) {\n          this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n            memberName,\n            enumName,\n          });\n        }\n        seenNames.add(memberName);\n        const context = { enumName, explicitType, memberName };\n        memberNode.id = id;\n        switch (init.type) {\n          case \"boolean\": {\n            this.flowEnumCheckExplicitTypeMismatch(\n              init.loc,\n              context,\n              \"boolean\",\n            );\n            memberNode.init = init.value;\n            members.booleanMembers.push(\n              this.finishNode(memberNode, \"EnumBooleanMember\"),\n            );\n            break;\n          }\n          case \"number\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n            memberNode.init = init.value;\n            members.numberMembers.push(\n              this.finishNode(memberNode, \"EnumNumberMember\"),\n            );\n            break;\n          }\n          case \"string\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n            memberNode.init = init.value;\n            members.stringMembers.push(\n              this.finishNode(memberNode, \"EnumStringMember\"),\n            );\n            break;\n          }\n          case \"invalid\": {\n            throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n          }\n          case \"none\": {\n            switch (explicitType) {\n              case \"boolean\":\n                this.flowEnumErrorBooleanMemberNotInitialized(\n                  init.loc,\n                  context,\n                );\n                break;\n              case \"number\":\n                this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n                break;\n              default:\n                members.defaultedMembers.push(\n                  this.finishNode(memberNode, \"EnumDefaultedMember\"),\n                );\n            }\n          }\n        }\n\n        if (!this.match(tt.braceR)) {\n          this.expect(tt.comma);\n        }\n      }\n      return { members, hasUnknownMembers };\n    }\n\n    flowEnumStringMembers(\n      initializedMembers: Array<N.Node>,\n      defaultedMembers: Array<N.Node>,\n      {\n        enumName,\n      }: {\n        enumName: string;\n      },\n    ): Array<N.Node> {\n      if (initializedMembers.length === 0) {\n        return defaultedMembers;\n      } else if (defaultedMembers.length === 0) {\n        return initializedMembers;\n      } else if (defaultedMembers.length > initializedMembers.length) {\n        for (const member of initializedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return defaultedMembers;\n      } else {\n        for (const member of defaultedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return initializedMembers;\n      }\n    }\n\n    flowEnumParseExplicitType({\n      enumName,\n    }: {\n      enumName: string;\n    }): EnumExplicitType {\n      if (!this.eatContextual(tt._of)) return null;\n\n      if (!tokenIsIdentifier(this.state.type)) {\n        throw this.raise(\n          FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n          this.state.startLoc,\n          {\n            enumName,\n          },\n        );\n      }\n\n      const { value } = this.state;\n      this.next();\n\n      if (\n        value !== \"boolean\" &&\n        value !== \"number\" &&\n        value !== \"string\" &&\n        value !== \"symbol\"\n      ) {\n        this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n          enumName,\n          invalidEnumType: value,\n        });\n      }\n\n      return value;\n    }\n\n    flowEnumBody(node: Undone<N.FlowEnumBody>, id: N.Identifier): N.Node {\n      const enumName = id.name;\n      const nameLoc = id.loc.start;\n      const explicitType = this.flowEnumParseExplicitType({ enumName });\n      this.expect(tt.braceL);\n      const { members, hasUnknownMembers } = this.flowEnumMembers({\n        enumName,\n        explicitType,\n      });\n      node.hasUnknownMembers = hasUnknownMembers;\n\n      switch (explicitType) {\n        case \"boolean\":\n          node.explicitType = true;\n          node.members = members.booleanMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumBooleanBody\");\n        case \"number\":\n          node.explicitType = true;\n          node.members = members.numberMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumNumberBody\");\n        case \"string\":\n          node.explicitType = true;\n          node.members = this.flowEnumStringMembers(\n            members.stringMembers,\n            members.defaultedMembers,\n            { enumName },\n          );\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumStringBody\");\n        case \"symbol\":\n          node.members = members.defaultedMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumSymbolBody\");\n        default: {\n          // `explicitType` is `null`\n          const empty = () => {\n            node.members = [];\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          };\n          node.explicitType = false;\n\n          const boolsLen = members.booleanMembers.length;\n          const numsLen = members.numberMembers.length;\n          const strsLen = members.stringMembers.length;\n          const defaultedLen = members.defaultedMembers.length;\n\n          if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n            return empty();\n          } else if (!boolsLen && !numsLen) {\n            node.members = this.flowEnumStringMembers(\n              members.stringMembers,\n              members.defaultedMembers,\n              { enumName },\n            );\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.booleanMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumBooleanBody\");\n          } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.numberMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumNumberBody\");\n          } else {\n            this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n              enumName,\n            });\n            return empty();\n          }\n        }\n      }\n    }\n\n    flowParseEnumDeclaration(\n      node: Undone<N.FlowEnumDeclaration>,\n    ): N.FlowEnumDeclaration {\n      const id = this.parseIdentifier();\n      node.id = id;\n      node.body = this.flowEnumBody(this.startNode(), id);\n      return this.finishNode(node, \"EnumDeclaration\");\n    }\n\n    // check if the next token is a tt.lt\n    isLookaheadToken_lt(): boolean {\n      const next = this.nextTokenStart();\n      if (this.input.charCodeAt(next) === charCodes.lessThan) {\n        const afterNext = this.input.charCodeAt(next + 1);\n        return (\n          afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n        );\n      }\n      return false;\n    }\n\n    maybeUnwrapTypeCastExpression(node: N.Node) {\n      return node.type === \"TypeCastExpression\" ? node.expression : node;\n    }\n  };\n","const entities: {\n  __proto__: null;\n  [name: string]: string;\n} = {\n  __proto__: null,\n  quot: \"\\u0022\",\n  amp: \"&\",\n  apos: \"\\u0027\",\n  lt: \"<\",\n  gt: \">\",\n  nbsp: \"\\u00A0\",\n  iexcl: \"\\u00A1\",\n  cent: \"\\u00A2\",\n  pound: \"\\u00A3\",\n  curren: \"\\u00A4\",\n  yen: \"\\u00A5\",\n  brvbar: \"\\u00A6\",\n  sect: \"\\u00A7\",\n  uml: \"\\u00A8\",\n  copy: \"\\u00A9\",\n  ordf: \"\\u00AA\",\n  laquo: \"\\u00AB\",\n  not: \"\\u00AC\",\n  shy: \"\\u00AD\",\n  reg: \"\\u00AE\",\n  macr: \"\\u00AF\",\n  deg: \"\\u00B0\",\n  plusmn: \"\\u00B1\",\n  sup2: \"\\u00B2\",\n  sup3: \"\\u00B3\",\n  acute: \"\\u00B4\",\n  micro: \"\\u00B5\",\n  para: \"\\u00B6\",\n  middot: \"\\u00B7\",\n  cedil: \"\\u00B8\",\n  sup1: \"\\u00B9\",\n  ordm: \"\\u00BA\",\n  raquo: \"\\u00BB\",\n  frac14: \"\\u00BC\",\n  frac12: \"\\u00BD\",\n  frac34: \"\\u00BE\",\n  iquest: \"\\u00BF\",\n  Agrave: \"\\u00C0\",\n  Aacute: \"\\u00C1\",\n  Acirc: \"\\u00C2\",\n  Atilde: \"\\u00C3\",\n  Auml: \"\\u00C4\",\n  Aring: \"\\u00C5\",\n  AElig: \"\\u00C6\",\n  Ccedil: \"\\u00C7\",\n  Egrave: \"\\u00C8\",\n  Eacute: \"\\u00C9\",\n  Ecirc: \"\\u00CA\",\n  Euml: \"\\u00CB\",\n  Igrave: \"\\u00CC\",\n  Iacute: \"\\u00CD\",\n  Icirc: \"\\u00CE\",\n  Iuml: \"\\u00CF\",\n  ETH: \"\\u00D0\",\n  Ntilde: \"\\u00D1\",\n  Ograve: \"\\u00D2\",\n  Oacute: \"\\u00D3\",\n  Ocirc: \"\\u00D4\",\n  Otilde: \"\\u00D5\",\n  Ouml: \"\\u00D6\",\n  times: \"\\u00D7\",\n  Oslash: \"\\u00D8\",\n  Ugrave: \"\\u00D9\",\n  Uacute: \"\\u00DA\",\n  Ucirc: \"\\u00DB\",\n  Uuml: \"\\u00DC\",\n  Yacute: \"\\u00DD\",\n  THORN: \"\\u00DE\",\n  szlig: \"\\u00DF\",\n  agrave: \"\\u00E0\",\n  aacute: \"\\u00E1\",\n  acirc: \"\\u00E2\",\n  atilde: \"\\u00E3\",\n  auml: \"\\u00E4\",\n  aring: \"\\u00E5\",\n  aelig: \"\\u00E6\",\n  ccedil: \"\\u00E7\",\n  egrave: \"\\u00E8\",\n  eacute: \"\\u00E9\",\n  ecirc: \"\\u00EA\",\n  euml: \"\\u00EB\",\n  igrave: \"\\u00EC\",\n  iacute: \"\\u00ED\",\n  icirc: \"\\u00EE\",\n  iuml: \"\\u00EF\",\n  eth: \"\\u00F0\",\n  ntilde: \"\\u00F1\",\n  ograve: \"\\u00F2\",\n  oacute: \"\\u00F3\",\n  ocirc: \"\\u00F4\",\n  otilde: \"\\u00F5\",\n  ouml: \"\\u00F6\",\n  divide: \"\\u00F7\",\n  oslash: \"\\u00F8\",\n  ugrave: \"\\u00F9\",\n  uacute: \"\\u00FA\",\n  ucirc: \"\\u00FB\",\n  uuml: \"\\u00FC\",\n  yacute: \"\\u00FD\",\n  thorn: \"\\u00FE\",\n  yuml: \"\\u00FF\",\n  OElig: \"\\u0152\",\n  oelig: \"\\u0153\",\n  Scaron: \"\\u0160\",\n  scaron: \"\\u0161\",\n  Yuml: \"\\u0178\",\n  fnof: \"\\u0192\",\n  circ: \"\\u02C6\",\n  tilde: \"\\u02DC\",\n  Alpha: \"\\u0391\",\n  Beta: \"\\u0392\",\n  Gamma: \"\\u0393\",\n  Delta: \"\\u0394\",\n  Epsilon: \"\\u0395\",\n  Zeta: \"\\u0396\",\n  Eta: \"\\u0397\",\n  Theta: \"\\u0398\",\n  Iota: \"\\u0399\",\n  Kappa: \"\\u039A\",\n  Lambda: \"\\u039B\",\n  Mu: \"\\u039C\",\n  Nu: \"\\u039D\",\n  Xi: \"\\u039E\",\n  Omicron: \"\\u039F\",\n  Pi: \"\\u03A0\",\n  Rho: \"\\u03A1\",\n  Sigma: \"\\u03A3\",\n  Tau: \"\\u03A4\",\n  Upsilon: \"\\u03A5\",\n  Phi: \"\\u03A6\",\n  Chi: \"\\u03A7\",\n  Psi: \"\\u03A8\",\n  Omega: \"\\u03A9\",\n  alpha: \"\\u03B1\",\n  beta: \"\\u03B2\",\n  gamma: \"\\u03B3\",\n  delta: \"\\u03B4\",\n  epsilon: \"\\u03B5\",\n  zeta: \"\\u03B6\",\n  eta: \"\\u03B7\",\n  theta: \"\\u03B8\",\n  iota: \"\\u03B9\",\n  kappa: \"\\u03BA\",\n  lambda: \"\\u03BB\",\n  mu: \"\\u03BC\",\n  nu: \"\\u03BD\",\n  xi: \"\\u03BE\",\n  omicron: \"\\u03BF\",\n  pi: \"\\u03C0\",\n  rho: \"\\u03C1\",\n  sigmaf: \"\\u03C2\",\n  sigma: \"\\u03C3\",\n  tau: \"\\u03C4\",\n  upsilon: \"\\u03C5\",\n  phi: \"\\u03C6\",\n  chi: \"\\u03C7\",\n  psi: \"\\u03C8\",\n  omega: \"\\u03C9\",\n  thetasym: \"\\u03D1\",\n  upsih: \"\\u03D2\",\n  piv: \"\\u03D6\",\n  ensp: \"\\u2002\",\n  emsp: \"\\u2003\",\n  thinsp: \"\\u2009\",\n  zwnj: \"\\u200C\",\n  zwj: \"\\u200D\",\n  lrm: \"\\u200E\",\n  rlm: \"\\u200F\",\n  ndash: \"\\u2013\",\n  mdash: \"\\u2014\",\n  lsquo: \"\\u2018\",\n  rsquo: \"\\u2019\",\n  sbquo: \"\\u201A\",\n  ldquo: \"\\u201C\",\n  rdquo: \"\\u201D\",\n  bdquo: \"\\u201E\",\n  dagger: \"\\u2020\",\n  Dagger: \"\\u2021\",\n  bull: \"\\u2022\",\n  hellip: \"\\u2026\",\n  permil: \"\\u2030\",\n  prime: \"\\u2032\",\n  Prime: \"\\u2033\",\n  lsaquo: \"\\u2039\",\n  rsaquo: \"\\u203A\",\n  oline: \"\\u203E\",\n  frasl: \"\\u2044\",\n  euro: \"\\u20AC\",\n  image: \"\\u2111\",\n  weierp: \"\\u2118\",\n  real: \"\\u211C\",\n  trade: \"\\u2122\",\n  alefsym: \"\\u2135\",\n  larr: \"\\u2190\",\n  uarr: \"\\u2191\",\n  rarr: \"\\u2192\",\n  darr: \"\\u2193\",\n  harr: \"\\u2194\",\n  crarr: \"\\u21B5\",\n  lArr: \"\\u21D0\",\n  uArr: \"\\u21D1\",\n  rArr: \"\\u21D2\",\n  dArr: \"\\u21D3\",\n  hArr: \"\\u21D4\",\n  forall: \"\\u2200\",\n  part: \"\\u2202\",\n  exist: \"\\u2203\",\n  empty: \"\\u2205\",\n  nabla: \"\\u2207\",\n  isin: \"\\u2208\",\n  notin: \"\\u2209\",\n  ni: \"\\u220B\",\n  prod: \"\\u220F\",\n  sum: \"\\u2211\",\n  minus: \"\\u2212\",\n  lowast: \"\\u2217\",\n  radic: \"\\u221A\",\n  prop: \"\\u221D\",\n  infin: \"\\u221E\",\n  ang: \"\\u2220\",\n  and: \"\\u2227\",\n  or: \"\\u2228\",\n  cap: \"\\u2229\",\n  cup: \"\\u222A\",\n  int: \"\\u222B\",\n  there4: \"\\u2234\",\n  sim: \"\\u223C\",\n  cong: \"\\u2245\",\n  asymp: \"\\u2248\",\n  ne: \"\\u2260\",\n  equiv: \"\\u2261\",\n  le: \"\\u2264\",\n  ge: \"\\u2265\",\n  sub: \"\\u2282\",\n  sup: \"\\u2283\",\n  nsub: \"\\u2284\",\n  sube: \"\\u2286\",\n  supe: \"\\u2287\",\n  oplus: \"\\u2295\",\n  otimes: \"\\u2297\",\n  perp: \"\\u22A5\",\n  sdot: \"\\u22C5\",\n  lceil: \"\\u2308\",\n  rceil: \"\\u2309\",\n  lfloor: \"\\u230A\",\n  rfloor: \"\\u230B\",\n  lang: \"\\u2329\",\n  rang: \"\\u232A\",\n  loz: \"\\u25CA\",\n  spades: \"\\u2660\",\n  clubs: \"\\u2663\",\n  hearts: \"\\u2665\",\n  diams: \"\\u2666\",\n} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n  tokenComesBeforeExpression,\n  tokenIsKeyword,\n  tokenLabelName,\n  type TokenType,\n  tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n  AttributeIsEmpty:\n    \"JSX attributes must only be assigned a non-empty expression.\",\n  MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n    `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n  MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n  UnexpectedSequenceExpression:\n    \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n  // FIXME: Unify with Errors.UnexpectedToken\n  UnexpectedToken: ({\n    unexpected,\n    HTMLEntity,\n  }: {\n    unexpected: string;\n    HTMLEntity: string;\n  }) =>\n    `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n  UnsupportedJsxValue:\n    \"JSX value should be either an expression or a quoted JSX text.\",\n  UnterminatedJsxContent: \"Unterminated JSX contents.\",\n  UnwrappedAdjacentJSXElements:\n    \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n  return object\n    ? object.type === \"JSXOpeningFragment\" ||\n        object.type === \"JSXClosingFragment\"\n    : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n  object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n  if (object.type === \"JSXIdentifier\") {\n    return object.name;\n  }\n\n  if (object.type === \"JSXNamespacedName\") {\n    return object.namespace.name + \":\" + object.name.name;\n  }\n\n  if (object.type === \"JSXMemberExpression\") {\n    return (\n      getQualifiedJSXName(object.object) +\n      \".\" +\n      getQualifiedJSXName(object.property)\n    );\n  }\n\n  // istanbul ignore next\n  // @ts-expect-error - object is 'never'\n  throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n  jsxParseOpeningElementAfterName(\n    node: N.JSXOpeningElement,\n  ): N.JSXOpeningElement;\n}\n\nexport default (superClass: typeof Parser) =>\n  class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n    // Reads inline JSX contents token.\n\n    jsxReadToken(): void {\n      let out = \"\";\n      let chunkStart = this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(\n            JsxErrors.UnterminatedJsxContent,\n            this.state.startLoc,\n          );\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n\n        switch (ch) {\n          case charCodes.lessThan:\n          case charCodes.leftCurlyBrace:\n            if (this.state.pos === this.state.start) {\n              if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n                ++this.state.pos;\n                this.finishToken(tt.jsxTagStart);\n              } else {\n                super.getTokenFromCode(ch);\n              }\n              return;\n            }\n            out += this.input.slice(chunkStart, this.state.pos);\n            this.finishToken(tt.jsxText, out);\n            return;\n\n          case charCodes.ampersand:\n            out += this.input.slice(chunkStart, this.state.pos);\n            out += this.jsxReadEntity();\n            chunkStart = this.state.pos;\n            break;\n\n          case charCodes.greaterThan:\n          case charCodes.rightCurlyBrace:\n            if (process.env.BABEL_8_BREAKING) {\n              this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n                unexpected: this.input[this.state.pos],\n                HTMLEntity:\n                  ch === charCodes.rightCurlyBrace ? \"&rbrace;\" : \"&gt;\",\n              });\n            }\n          /* falls through */\n\n          default:\n            if (isNewLine(ch)) {\n              out += this.input.slice(chunkStart, this.state.pos);\n              out += this.jsxReadNewLine(true);\n              chunkStart = this.state.pos;\n            } else {\n              ++this.state.pos;\n            }\n        }\n      }\n    }\n\n    jsxReadNewLine(normalizeCRLF: boolean): string {\n      const ch = this.input.charCodeAt(this.state.pos);\n      let out;\n      ++this.state.pos;\n      if (\n        ch === charCodes.carriageReturn &&\n        this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n      ) {\n        ++this.state.pos;\n        out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      ++this.state.curLine;\n      this.state.lineStart = this.state.pos;\n\n      return out;\n    }\n\n    jsxReadString(quote: number): void {\n      let out = \"\";\n      let chunkStart = ++this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n        if (ch === quote) break;\n        if (ch === charCodes.ampersand) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadEntity();\n          chunkStart = this.state.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadNewLine(false);\n          chunkStart = this.state.pos;\n        } else {\n          ++this.state.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.state.pos++);\n      this.finishToken(tt.string, out);\n    }\n\n    jsxReadEntity(): string {\n      const startPos = ++this.state.pos;\n      if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n        ++this.state.pos;\n\n        let radix = 10;\n        if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n          radix = 16;\n          ++this.state.pos;\n        }\n\n        const codePoint = this.readInt(\n          radix,\n          /* len */ undefined,\n          /* forceLen */ false,\n          /* allowNumSeparator */ \"bail\",\n        );\n        if (\n          codePoint !== null &&\n          this.codePointAtPos(this.state.pos) === charCodes.semicolon\n        ) {\n          ++this.state.pos;\n          return String.fromCodePoint(codePoint);\n        }\n      } else {\n        let count = 0;\n        let semi = false;\n        while (\n          count++ < 10 &&\n          this.state.pos < this.length &&\n          !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n        ) {\n          ++this.state.pos;\n        }\n\n        if (semi) {\n          const desc = this.input.slice(startPos, this.state.pos);\n          const entity = XHTMLEntities[desc];\n          ++this.state.pos;\n\n          if (entity) {\n            return entity;\n          }\n        }\n      }\n\n      // Not a valid entity\n      this.state.pos = startPos;\n      return \"&\";\n    }\n\n    // Read a JSX identifier (valid tag or attribute name).\n    //\n    // Optimized version since JSX identifiers can\"t contain\n    // escape characters and so can be read as single slice.\n    // Also assumes that first character was already checked\n    // by isIdentifierStart in readToken.\n\n    jsxReadWord(): void {\n      let ch;\n      const start = this.state.pos;\n      do {\n        ch = this.input.charCodeAt(++this.state.pos);\n      } while (isIdentifierChar(ch) || ch === charCodes.dash);\n      this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsxParseIdentifier(): N.JSXIdentifier {\n      const node = this.startNode<N.JSXIdentifier>();\n      if (this.match(tt.jsxName)) {\n        node.name = this.state.value;\n      } else if (tokenIsKeyword(this.state.type)) {\n        node.name = tokenLabelName(this.state.type);\n      } else {\n        this.unexpected();\n      }\n      this.next();\n      return this.finishNode(node, \"JSXIdentifier\");\n    }\n\n    // Parse namespaced identifier.\n\n    jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n      const startLoc = this.state.startLoc;\n      const name = this.jsxParseIdentifier();\n      if (!this.eat(tt.colon)) return name;\n\n      const node = this.startNodeAt<N.JSXNamespacedName>(startLoc);\n      node.namespace = name;\n      node.name = this.jsxParseIdentifier();\n      return this.finishNode(node, \"JSXNamespacedName\");\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsxParseElementName():\n      | N.JSXIdentifier\n      | N.JSXNamespacedName\n      | N.JSXMemberExpression {\n      const startLoc = this.state.startLoc;\n      let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n        this.jsxParseNamespacedName();\n      if (node.type === \"JSXNamespacedName\") {\n        return node;\n      }\n      while (this.eat(tt.dot)) {\n        const newNode = this.startNodeAt<N.JSXMemberExpression>(startLoc);\n        newNode.object = node;\n        newNode.property = this.jsxParseIdentifier();\n        node = this.finishNode(newNode, \"JSXMemberExpression\");\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsxParseAttributeValue():\n      | N.JSXExpressionContainer\n      | N.JSXElement\n      | N.StringLiteral {\n      let node;\n      switch (this.state.type) {\n        case tt.braceL:\n          node = this.startNode();\n          this.setContext(tc.brace);\n          this.next();\n          node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n          if (node.expression.type === \"JSXEmptyExpression\") {\n            this.raise(JsxErrors.AttributeIsEmpty, node);\n          }\n          return node;\n\n        case tt.jsxTagStart:\n        case tt.string:\n          return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n        default:\n          throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n      }\n    }\n\n    // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n    // and so it should start at the end of last read token (left brace) and finish\n    // at the beginning of the next one (right brace).\n\n    jsxParseEmptyExpression(): N.JSXEmptyExpression {\n      const node = this.startNodeAt(this.state.lastTokEndLoc);\n      return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n    }\n\n    // Parse JSX spread child\n\n    jsxParseSpreadChild(node: Undone<N.JSXSpreadChild>): N.JSXSpreadChild {\n      this.next(); // ellipsis\n      node.expression = this.parseExpression();\n      this.setContext(tc.j_expr);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXSpreadChild\");\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsxParseExpressionContainer(\n      node: Undone<N.JSXExpressionContainer>,\n      previousContext: TokContext,\n    ): N.JSXExpressionContainer {\n      if (this.match(tt.braceR)) {\n        node.expression = this.jsxParseEmptyExpression();\n      } else {\n        const expression = this.parseExpression();\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            expression.type === \"SequenceExpression\" &&\n            !expression.extra?.parenthesized\n          ) {\n            this.raise(\n              JsxErrors.UnexpectedSequenceExpression,\n              expression.expressions[1],\n            );\n          }\n        }\n\n        node.expression = expression;\n      }\n      this.setContext(previousContext);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXExpressionContainer\");\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n      const node = this.startNode<N.JSXAttribute | N.JSXSpreadAttribute>();\n      if (this.match(tt.braceL)) {\n        this.setContext(tc.brace);\n        this.next();\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssignAllowIn();\n        this.setContext(tc.j_oTag);\n        this.state.canStartJSXElement = true;\n        this.expect(tt.braceR);\n        return this.finishNode(node, \"JSXSpreadAttribute\");\n      }\n      node.name = this.jsxParseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n      return this.finishNode(node, \"JSXAttribute\");\n    }\n\n    // Parses JSX opening tag starting after \"<\".\n\n    jsxParseOpeningElementAt(\n      startLoc: Position,\n    ): N.JSXOpeningElement | N.JSXOpeningFragment {\n      const node = this.startNodeAt<N.JSXOpeningElement | N.JSXOpeningFragment>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXOpeningFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      return this.jsxParseOpeningElementAfterName(\n        node as Undone<N.JSXOpeningElement>,\n      );\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: Undone<N.JSXOpeningElement>,\n    ): N.JSXOpeningElement {\n      const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n      while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n        attributes.push(this.jsxParseAttribute());\n      }\n      node.attributes = attributes;\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXOpeningElement\");\n    }\n\n    // Parses JSX closing tag starting after \"</\".\n\n    jsxParseClosingElementAt(\n      startLoc: Position,\n    ): N.JSXClosingElement | N.JSXClosingFragment {\n      const node = this.startNodeAt<N.JSXClosingFragment | N.JSXClosingElement>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXClosingFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXClosingElement\");\n    }\n\n    // Parses entire JSX element, including it\"s opening tag\n    // (starting after \"<\"), attributes, contents and closing tag.\n\n    jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n      const node = this.startNodeAt<N.JSXElement | N.JSXFragment>(startLoc);\n      const children = [];\n      const openingElement = this.jsxParseOpeningElementAt(startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.state.type) {\n            case tt.jsxTagStart:\n              startLoc = this.state.startLoc;\n              this.next();\n              if (this.eat(tt.slash)) {\n                closingElement = this.jsxParseClosingElementAt(startLoc);\n                break contents;\n              }\n              children.push(this.jsxParseElementAt(startLoc));\n              break;\n\n            case tt.jsxText:\n              children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n              break;\n\n            case tt.braceL: {\n              const node = this.startNode<\n                N.JSXSpreadChild | N.JSXExpressionContainer\n              >();\n              this.setContext(tc.brace);\n              this.next();\n              if (this.match(tt.ellipsis)) {\n                children.push(this.jsxParseSpreadChild(node));\n              } else {\n                children.push(\n                  this.jsxParseExpressionContainer(node, tc.j_expr),\n                );\n              }\n\n              break;\n            }\n            // istanbul ignore next - should never happen\n            default:\n              this.unexpected();\n          }\n        }\n\n        if (\n          isFragment(openingElement) &&\n          !isFragment(closingElement) &&\n          closingElement !== null\n        ) {\n          this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n        } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n          this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n            openingTagName: getQualifiedJSXName(openingElement.name),\n          });\n        } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n          if (\n            getQualifiedJSXName(closingElement.name) !==\n            getQualifiedJSXName(openingElement.name)\n          ) {\n            this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n              openingTagName: getQualifiedJSXName(openingElement.name),\n            });\n          }\n        }\n      }\n\n      if (isFragment(openingElement)) {\n        node.openingFragment = openingElement;\n        node.closingFragment = closingElement;\n      } else {\n        node.openingElement = openingElement;\n        node.closingElement = closingElement;\n      }\n      node.children = children;\n      if (this.match(tt.lt)) {\n        throw this.raise(\n          JsxErrors.UnwrappedAdjacentJSXElements,\n          this.state.startLoc,\n        );\n      }\n\n      return isFragment(openingElement)\n        ? this.finishNode(node, \"JSXFragment\")\n        : this.finishNode(node, \"JSXElement\");\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsxParseElement(): N.JSXElement | N.JSXFragment {\n      const startLoc = this.state.startLoc;\n      this.next();\n      return this.jsxParseElementAt(startLoc);\n    }\n\n    setContext(newContext: TokContext) {\n      const { context } = this.state;\n      context[context.length - 1] = newContext;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      if (this.match(tt.jsxTagStart)) {\n        return this.jsxParseElement();\n      } else if (\n        this.match(tt.lt) &&\n        this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n      ) {\n        // In case we encounter an lt token here it will always be the start of\n        // jsx as the lt sign is not allowed in places that expect an expression\n        this.replaceToken(tt.jsxTagStart);\n        return this.jsxParseElement();\n      } else {\n        return super.parseExprAtom(refExpressionErrors);\n      }\n    }\n\n    skipSpace() {\n      const curContext = this.curContext();\n      if (!curContext.preserveSpace) super.skipSpace();\n    }\n\n    getTokenFromCode(code: number): void {\n      const context = this.curContext();\n\n      if (context === tc.j_expr) {\n        this.jsxReadToken();\n        return;\n      }\n\n      if (context === tc.j_oTag || context === tc.j_cTag) {\n        if (isIdentifierStart(code)) {\n          this.jsxReadWord();\n          return;\n        }\n\n        if (code === charCodes.greaterThan) {\n          ++this.state.pos;\n          this.finishToken(tt.jsxTagEnd);\n          return;\n        }\n\n        if (\n          (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n          context === tc.j_oTag\n        ) {\n          this.jsxReadString(code);\n          return;\n        }\n      }\n\n      if (\n        code === charCodes.lessThan &&\n        this.state.canStartJSXElement &&\n        this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n      ) {\n        ++this.state.pos;\n        this.finishToken(tt.jsxTagStart);\n        return;\n      }\n\n      super.getTokenFromCode(code);\n    }\n\n    updateContext(prevType: TokenType): void {\n      const { context, type } = this.state;\n      if (type === tt.slash && prevType === tt.jsxTagStart) {\n        // do not consider JSX expr -> JSX open tag -> ... anymore\n        // reconsider as closing tag context\n        context.splice(-2, 2, tc.j_cTag);\n        this.state.canStartJSXElement = false;\n      } else if (type === tt.jsxTagStart) {\n        // start opening tag context\n        context.push(tc.j_oTag);\n      } else if (type === tt.jsxTagEnd) {\n        const out = context[context.length - 1];\n        if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n          context.pop();\n          this.state.canStartJSXElement =\n            context[context.length - 1] === tc.j_expr;\n        } else {\n          this.setContext(tc.j_expr);\n          this.state.canStartJSXElement = true;\n        }\n      } else {\n        this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n      }\n    }\n  };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n  Types = 1 << 0,\n  // enums (which are also in .types)\n  Enums = 1 << 1,\n  // const enums (which are also in .enums and .types)\n  ConstEnums = 1 << 2,\n  // classes (which are also in .lexical) and interface (which are also in .types)\n  Classes = 1 << 3,\n  // namespaces and ambient functions (or classes) are too difficult to track,\n  // especially without type analysis.\n  // We need to track them anyway, to avoid \"X is not defined\" errors\n  // when exporting them.\n  ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n  tsNames: Map<string, TsNameType> = new Map();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n  importsStack: Set<string>[] = [];\n\n  createScope(flags: ScopeFlag): TypeScriptScope {\n    this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n    return new TypeScriptScope(flags);\n  }\n\n  enter(flags: ScopeFlag): void {\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.push(new Set());\n    }\n\n    super.enter(flags);\n  }\n\n  exit() {\n    const flags = super.exit();\n\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.pop();\n    }\n\n    return flags;\n  }\n\n  hasImport(name: string, allowShadow?: boolean) {\n    const len = this.importsStack.length;\n    if (this.importsStack[len - 1].has(name)) {\n      return true;\n    }\n    if (!allowShadow && len > 1) {\n      for (let i = 0; i < len - 1; i++) {\n        if (this.importsStack[i].has(name)) return true;\n      }\n    }\n    return false;\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n      if (this.hasImport(name, true)) {\n        this.parser.raise(Errors.VarRedeclaration, loc, {\n          identifierName: name,\n        });\n      }\n      this.importsStack[this.importsStack.length - 1].add(name);\n      return;\n    }\n\n    const scope = this.currentScope();\n    let type = scope.tsNames.get(name) || 0;\n\n    if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n      this.maybeExportDefined(scope, name);\n      scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n\n    if (bindingType & BindingFlag.KIND_TYPE) {\n      if (!(bindingType & BindingFlag.KIND_VALUE)) {\n        // \"Value\" bindings have already been registered by the superclass.\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        this.maybeExportDefined(scope, name);\n      }\n      type = type | TsNameType.Types;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n      type = type | TsNameType.Enums;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n      type = type | TsNameType.ConstEnums;\n    }\n    if (bindingType & BindingFlag.FLAG_CLASS) {\n      type = type | TsNameType.Classes;\n    }\n    if (type) scope.tsNames.set(name, type);\n  }\n\n  isRedeclaredInScope(\n    scope: TypeScriptScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    const type = scope.tsNames.get(name);\n    if ((type & TsNameType.Enums) > 0) {\n      if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n        // Enums can be merged with other enums if they are both\n        //  const or both non-const.\n        const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n        const wasConst = (type & TsNameType.ConstEnums) > 0;\n        return isConst !== wasConst;\n      }\n      return true;\n    }\n    if (\n      bindingType & BindingFlag.FLAG_CLASS &&\n      (type & TsNameType.Classes) > 0\n    ) {\n      if (scope.names.get(name) & NameType.Lexical) {\n        // Classes can be merged with interfaces\n        return !!(bindingType & BindingFlag.KIND_VALUE);\n      } else {\n        // Interface can be merged with other classes or interfaces\n        return false;\n      }\n    }\n    if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n      return true;\n    }\n\n    return super.isRedeclaredInScope(scope, name, bindingType);\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n\n    if (this.hasImport(name)) return;\n\n    const len = this.scopeStack.length;\n    for (let i = len - 1; i >= 0; i--) {\n      const scope = this.scopeStack[i];\n      const type = scope.tsNames.get(name);\n      if (\n        (type & TsNameType.Types) > 0 ||\n        (type & TsNameType.ExportOnlyBindings) > 0\n      ) {\n        return;\n      }\n    }\n\n    super.checkLocalExport(id);\n  }\n}\n","import * as charCodes from \"charcodes\";\nimport { tt, type TokenType } from \"../tokenizer/types.ts\";\nimport type {\n  AssignmentPattern,\n  TSParameterProperty,\n  Decorator,\n  Expression,\n  Identifier,\n  Node,\n  Pattern,\n  RestElement,\n  SpreadElement,\n  ObjectOrClassMember,\n  ClassMember,\n  ObjectMember,\n  TsNamedTypeElementBase,\n  PrivateName,\n  ObjectExpression,\n  ObjectPattern,\n  ArrayPattern,\n  AssignmentProperty,\n  Assignable,\n} from \"../types.ts\";\nimport type { Pos, Position } from \"../util/location.ts\";\nimport {\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n} from \"../util/identifier.ts\";\nimport { NodeUtils, type Undone } from \"./node.ts\";\nimport { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"./util.ts\";\nimport { Errors, type LValAncestor } from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nconst unwrapParenthesizedExpression = (node: Node): Node => {\n  return node.type === \"ParenthesizedExpression\"\n    ? unwrapParenthesizedExpression(node.expression)\n    : node;\n};\n\nexport const enum ParseBindingListFlags {\n  ALLOW_EMPTY = 1 << 0,\n  IS_FUNCTION_PARAMS = 1 << 1,\n  IS_CONSTRUCTOR_PARAMS = 1 << 2,\n}\n\nexport default abstract class LValParser extends NodeUtils {\n  // Forward-declaration: defined in expression.js\n  abstract parseIdentifier(liberal?: boolean): Identifier;\n  abstract parseMaybeAssign(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n    refNeedsArrowPos?: Pos | null,\n  ): Expression;\n\n  abstract parseMaybeAssignAllowIn(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n    refNeedsArrowPos?: Pos | null,\n  ): Expression;\n\n  abstract parseObjectLike<T extends ObjectPattern | ObjectExpression>(\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): T;\n  abstract parseObjPropValue(\n    prop: any,\n    startLoc: Position | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void;\n  abstract parsePropertyName(\n    prop: ObjectOrClassMember | ClassMember | TsNamedTypeElementBase,\n  ): void;\n  abstract parsePrivateName(): PrivateName;\n  // Forward-declaration: defined in statement.js\n  abstract parseDecorator(): Decorator;\n\n  /**\n   * Convert existing expression atom to assignable pattern\n   * if possible. Also checks invalid destructuring targets:\n   *\n   * - Parenthesized Destructuring patterns\n   * - RestElement is not the last element\n   * - Missing `=` in assignment pattern\n   *\n   * NOTE: There is a corresponding \"isAssignable\" method.\n   * When this one is updated, please check if also that one needs to be updated.\n   *\n   * @param node The expression atom\n   * @param isLHS Whether we are parsing a LeftHandSideExpression.\n   *              If isLHS is `true`, the following cases are allowed: `[(a)] = [0]`, `[(a.b)] = [0]`\n   *              If isLHS is `false`, we are in an arrow function parameters list.\n   */\n  toAssignable(node: Node, isLHS: boolean = false): asserts node is Assignable {\n    let parenthesized = undefined;\n    if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n      parenthesized = unwrapParenthesizedExpression(node);\n      if (isLHS) {\n        // an LHS can be reinterpreted to a binding pattern but not vice versa.\n        // therefore a parenthesized identifier is ambiguous until we are sure it is an assignment expression\n        // i.e. `([(a) = []] = []) => {}`\n        // see also `recordArrowParameterBindingError` signature in packages/babel-parser/src/util/expression-scope.js\n        if (parenthesized.type === \"Identifier\") {\n          this.expressionScope.recordArrowParameterBindingError(\n            Errors.InvalidParenthesizedAssignment,\n            node,\n          );\n        } else if (\n          parenthesized.type !== \"MemberExpression\" &&\n          !this.isOptionalMemberExpression(parenthesized)\n        ) {\n          // A parenthesized member expression can be in LHS but not in pattern.\n          // If the LHS is later interpreted as a pattern, `checkLVal` will throw for member expression binding\n          // i.e. `([(a.b) = []] = []) => {}`\n          this.raise(Errors.InvalidParenthesizedAssignment, node);\n        }\n      } else {\n        this.raise(Errors.InvalidParenthesizedAssignment, node);\n      }\n    }\n\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        break;\n\n      case \"ObjectExpression\":\n        (node as Node).type = \"ObjectPattern\";\n        for (\n          let i = 0, length = node.properties.length, last = length - 1;\n          i < length;\n          i++\n        ) {\n          const prop = node.properties[i];\n          const isLast = i === last;\n          this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n          if (\n            isLast &&\n            (prop as Node).type === \"RestElement\" &&\n            node.extra?.trailingCommaLoc\n          ) {\n            this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n          }\n        }\n        break;\n\n      case \"ObjectProperty\": {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n        break;\n      }\n\n      case \"SpreadElement\": {\n        throw new Error(\n          \"Internal @babel/parser error (this is a bug, please report it).\" +\n            \" SpreadElement should be converted by .toAssignable's caller.\",\n        );\n      }\n\n      case \"ArrayExpression\":\n        (node as Node).type = \"ArrayPattern\";\n        this.toAssignableList(\n          node.elements,\n          node.extra?.trailingCommaLoc,\n          isLHS,\n        );\n        break;\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") {\n          this.raise(Errors.MissingEqInAssignment, node.left.loc.end);\n        }\n\n        (node as Node).type = \"AssignmentPattern\";\n        delete node.operator;\n        this.toAssignable(node.left, isLHS);\n        break;\n\n      case \"ParenthesizedExpression\":\n        /*::invariant (parenthesized !== undefined) */\n        this.toAssignable(parenthesized, isLHS);\n        break;\n\n      default:\n      // We don't know how to deal with this node. It will\n      // be reported by a later call to checkLVal\n    }\n  }\n\n  toAssignableObjectExpressionProp(\n    prop: Node,\n    isLast: boolean,\n    isLHS: boolean,\n  ) {\n    if (prop.type === \"ObjectMethod\") {\n      this.raise(\n        prop.kind === \"get\" || prop.kind === \"set\"\n          ? Errors.PatternHasAccessor\n          : Errors.PatternHasMethod,\n        prop.key,\n      );\n    } else if (prop.type === \"SpreadElement\") {\n      (prop as Node).type = \"RestElement\";\n      const arg = prop.argument;\n      this.checkToRestConversion(arg, /* allowPattern */ false);\n      this.toAssignable(arg, isLHS);\n\n      if (!isLast) {\n        this.raise(Errors.RestTrailingComma, prop);\n      }\n    } else {\n      this.toAssignable(prop, isLHS);\n    }\n  }\n\n  // Convert list of expression atoms to binding list.\n\n  toAssignableList(\n    exprList: (Expression | SpreadElement | RestElement)[],\n    trailingCommaLoc: Position | undefined | null,\n    isLHS: boolean,\n  ): void {\n    const end = exprList.length - 1;\n\n    for (let i = 0; i <= end; i++) {\n      const elt = exprList[i];\n      if (!elt) continue;\n\n      if (elt.type === \"SpreadElement\") {\n        (elt as unknown as RestElement).type = \"RestElement\";\n        const arg = elt.argument;\n        this.checkToRestConversion(arg, /* allowPattern */ true);\n        this.toAssignable(arg, isLHS);\n      } else {\n        this.toAssignable(elt, isLHS);\n      }\n\n      if (elt.type === \"RestElement\") {\n        if (i < end) {\n          this.raise(Errors.RestTrailingComma, elt);\n        } else if (trailingCommaLoc) {\n          this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n        }\n      }\n    }\n  }\n\n  isAssignable(node: Node, isBinding?: boolean): boolean {\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        return true;\n\n      case \"ObjectExpression\": {\n        const last = node.properties.length - 1;\n        return node.properties.every((prop, i) => {\n          return (\n            prop.type !== \"ObjectMethod\" &&\n            (i === last || prop.type !== \"SpreadElement\") &&\n            this.isAssignable(prop)\n          );\n        });\n      }\n\n      case \"ObjectProperty\":\n        return this.isAssignable(node.value);\n\n      case \"SpreadElement\":\n        return this.isAssignable(node.argument);\n\n      case \"ArrayExpression\":\n        return node.elements.every(\n          element => element === null || this.isAssignable(element),\n        );\n\n      case \"AssignmentExpression\":\n        return node.operator === \"=\";\n\n      case \"ParenthesizedExpression\":\n        return this.isAssignable(node.expression);\n\n      case \"MemberExpression\":\n      case \"OptionalMemberExpression\":\n        return !isBinding;\n\n      default:\n        return false;\n    }\n  }\n\n  // Convert list of expression atoms to a list of\n\n  toReferencedList(\n    exprList:\n      | ReadonlyArray<Expression | SpreadElement>\n      | ReadonlyArray<Expression | RestElement>,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isParenthesizedExpr?: boolean,\n  ):\n    | ReadonlyArray<Expression | SpreadElement>\n    | ReadonlyArray<Expression | RestElement> {\n    return exprList;\n  }\n\n  toReferencedListDeep(\n    exprList:\n      | ReadonlyArray<Expression | SpreadElement>\n      | ReadonlyArray<Expression | RestElement>,\n    isParenthesizedExpr?: boolean,\n  ): void {\n    this.toReferencedList(exprList, isParenthesizedExpr);\n\n    for (const expr of exprList) {\n      if (expr?.type === \"ArrayExpression\") {\n        this.toReferencedListDeep(expr.elements);\n      }\n    }\n  }\n\n  // Parses spread element.\n\n  parseSpread(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): SpreadElement {\n    const node = this.startNode<SpreadElement>();\n    this.next();\n    node.argument = this.parseMaybeAssignAllowIn(\n      refExpressionErrors,\n      undefined,\n    );\n    return this.finishNode(node, \"SpreadElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  // https://tc39.es/ecma262/#prod-BindingRestElement\n  parseRestBinding(this: Parser): RestElement {\n    const node = this.startNode<RestElement>();\n    this.next(); // eat `...`\n    node.argument = this.parseBindingAtom();\n    return this.finishNode(node, \"RestElement\");\n  }\n\n  // Parses lvalue (assignable) atom.\n  parseBindingAtom(this: Parser): Pattern {\n    // https://tc39.es/ecma262/#prod-BindingPattern\n    switch (this.state.type) {\n      case tt.bracketL: {\n        const node = this.startNode<ArrayPattern>();\n        this.next();\n        // @ts-expect-error: Fixme: TSParameterProperty can not be assigned to node.elements\n        node.elements = this.parseBindingList(\n          tt.bracketR,\n          charCodes.rightSquareBracket,\n          ParseBindingListFlags.ALLOW_EMPTY,\n        );\n        return this.finishNode(node, \"ArrayPattern\");\n      }\n\n      case tt.braceL:\n        return this.parseObjectLike(tt.braceR, true);\n    }\n\n    // https://tc39.es/ecma262/#prod-BindingIdentifier\n    return this.parseIdentifier();\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingElementList\n  parseBindingList(\n    this: Parser,\n    close: TokenType,\n    closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n    flags: ParseBindingListFlags,\n  ): Array<Pattern | TSParameterProperty> {\n    const allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;\n\n    const elts: Array<Pattern | TSParameterProperty> = [];\n    let first = true;\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n      }\n      if (allowEmpty && this.match(tt.comma)) {\n        elts.push(null);\n      } else if (this.eat(close)) {\n        break;\n      } else if (this.match(tt.ellipsis)) {\n        let rest: Pattern = this.parseRestBinding();\n        if (\n          (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n          flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n        ) {\n          rest = this.parseFunctionParamType(rest);\n        }\n        elts.push(rest);\n        if (!this.checkCommaAfterRest(closeCharCode)) {\n          this.expect(close);\n          break;\n        }\n      } else {\n        const decorators = [];\n        if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n          this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);\n        }\n        // invariant: hasPlugin(\"decorators-legacy\")\n        while (this.match(tt.at)) {\n          decorators.push(this.parseDecorator());\n        }\n        elts.push(this.parseAssignableListItem(flags, decorators));\n      }\n    }\n    return elts;\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  parseBindingRestProperty(\n    this: Parser,\n    prop: Undone<RestElement>,\n  ): RestElement {\n    this.next(); // eat '...'\n    // Don't use parseRestBinding() as we only allow Identifier here.\n    prop.argument = this.parseIdentifier();\n    this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n    return this.finishNode(prop, \"RestElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingProperty\n  parseBindingProperty(this: Parser): AssignmentProperty | RestElement {\n    const { type, startLoc } = this.state;\n    if (type === tt.ellipsis) {\n      return this.parseBindingRestProperty(this.startNode());\n    }\n\n    const prop = this.startNode<AssignmentProperty>();\n    if (type === tt.privateName) {\n      this.expectPlugin(\"destructuringPrivate\", startLoc);\n      this.classScope.usePrivateName(this.state.value, startLoc);\n      prop.key = this.parsePrivateName();\n    } else {\n      this.parsePropertyName(prop);\n    }\n    prop.method = false;\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      false /* isGenerator */,\n      false /* isAsync */,\n      true /* isPattern */,\n      false /* isAccessor */,\n    );\n  }\n\n  parseAssignableListItem(\n    this: Parser,\n    flags: ParseBindingListFlags,\n    decorators: Decorator[],\n  ): Pattern | TSParameterProperty {\n    const left = this.parseMaybeDefault();\n    if (\n      (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n      flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n    ) {\n      this.parseFunctionParamType(left);\n    }\n    const elt = this.parseMaybeDefault(left.loc.start, left);\n    if (decorators.length) {\n      left.decorators = decorators;\n    }\n    return elt;\n  }\n\n  // Used by flow/typescript plugin to add type annotations to binding elements\n  parseFunctionParamType(param: Pattern): Pattern {\n    return param;\n  }\n\n  // Parses assignment pattern around given atom if possible.\n  // https://tc39.es/ecma262/#prod-BindingElement\n  parseMaybeDefault(\n    this: Parser,\n    startLoc?: Position | null,\n    left?: Pattern | null,\n  ): Pattern {\n    startLoc ??= this.state.startLoc;\n    left = left ?? this.parseBindingAtom();\n    if (!this.eat(tt.eq)) return left;\n\n    const node = this.startNodeAt<AssignmentPattern>(startLoc);\n    node.left = left;\n    node.right = this.parseMaybeAssignAllowIn();\n    return this.finishNode(node, \"AssignmentPattern\");\n  }\n  /**\n   * Return information use in determining whether a Node of a given type is an LVal,\n   * possibly given certain additional context information.\n   *\n   * Subclasser notes: This method has kind of a lot of mixed, but related,\n   * responsibilities. If we can definitively determine with the information\n   * provided that this either *is* or *isn't* a valid `LVal`, then the return\n   * value is easy: just return `true` or `false`. However, if it is a valid\n   * LVal *ancestor*, and thus its descendants must be subsequently visited to\n   * continue the \"investigation\", then this method should return the relevant\n   * child key as a `string`. In some special cases, you additionally want to\n   * convey that this node should be treated as if it were parenthesized. In\n   * that case, a tuple of [key: string, parenthesized: boolean] is returned.\n   * The `string`-only return option is actually just a shorthand for:\n   * `[key: string, parenthesized: false]`.\n   *\n   * @param type A Node `type` string\n   * @param isUnparenthesizedInAssign\n   *        Whether the node in question is unparenthesized and its parent\n   *        is either an assignment pattern or an assignment expression.\n   * @param binding\n   *        The binding operation that is being considered for this potential\n   *        LVal.\n   * @returns `true` or `false` if we can immediately determine whether the node\n   *          type in question can be treated as an `LVal`.\n   *          A `string` key to traverse if we must check this child.\n   *          A `[string, boolean]` tuple if we need to check this child and\n   *          treat is as parenthesized.\n   */\n  isValidLVal(\n    type: string,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isUnparenthesizedInAssign: boolean,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    binding: BindingFlag,\n  ): string | boolean | [string, boolean] {\n    switch (type) {\n      case \"AssignmentPattern\":\n        return \"left\";\n      case \"RestElement\":\n        return \"argument\";\n      case \"ObjectProperty\":\n        return \"value\";\n      case \"ParenthesizedExpression\":\n        return \"expression\";\n      case \"ArrayPattern\":\n        return \"elements\";\n      case \"ObjectPattern\":\n        return \"properties\";\n    }\n    return false;\n  }\n\n  // Overridden by the estree plugin\n  isOptionalMemberExpression(expression: Node): boolean {\n    return expression.type === \"OptionalMemberExpression\";\n  }\n\n  /**\n   * Verify that a target expression is an lval (something that can be assigned to).\n   *\n   * @param expression The expression in question to check.\n   * @param ancestor\n   *        The relevant ancestor to provide context information for the error\n   *        if the check fails.\n   * @param binding\n   *        The desired binding type. If the given expression is an identifier\n   *        and `binding` is not `BindingFlag.TYPE_NONE`, `checkLVal` will register binding\n   *        to the parser scope See also `src/util/scopeflags.js`\n   * @param checkClashes\n   *        An optional string set to check if an identifier name is included.\n   *        `checkLVal` will add checked identifier name to `checkClashes` It is\n   *        used in tracking duplicates in function parameter lists. If it is\n   *        false, `checkLVal` will skip duplicate checks\n   * @param strictModeChanged\n   *        Whether an identifier has been parsed in a sloppy context but should\n   *        be reinterpreted as strict-mode. e.g. `(arguments) => { \"use strict \"}`\n   * @param hasParenthesizedAncestor\n   *        This is only used internally during recursive calls, and you should\n   *        not have to set it yourself.\n   */\n\n  checkLVal(\n    expression:\n      | Expression\n      | ObjectMember\n      | RestElement\n      | Pattern\n      | TSParameterProperty,\n    ancestor: LValAncestor,\n    binding: BindingFlag = BindingFlag.TYPE_NONE,\n    checkClashes: Set<string> | false = false,\n    strictModeChanged: boolean = false,\n    hasParenthesizedAncestor: boolean = false,\n  ): void {\n    const type = expression.type;\n\n    // If we find here an ObjectMethod, it's because this was originally\n    // an ObjectExpression which has then been converted.\n    // toAssignable already reported this error with a nicer message.\n    if (this.isObjectMethod(expression)) return;\n\n    const isOptionalMemberExpression =\n      this.isOptionalMemberExpression(expression);\n\n    if (isOptionalMemberExpression || type === \"MemberExpression\") {\n      if (isOptionalMemberExpression) {\n        this.expectPlugin(\"optionalChainingAssign\", expression.loc.start);\n        if (ancestor.type !== \"AssignmentExpression\") {\n          this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n            ancestor,\n          });\n        }\n      }\n\n      if (binding !== BindingFlag.TYPE_NONE) {\n        this.raise(Errors.InvalidPropertyBindingPattern, expression);\n      }\n      return;\n    }\n\n    if (type === \"Identifier\") {\n      this.checkIdentifier(expression, binding, strictModeChanged);\n\n      const { name } = expression;\n\n      if (checkClashes) {\n        if (checkClashes.has(name)) {\n          this.raise(Errors.ParamDupe, expression);\n        } else {\n          checkClashes.add(name);\n        }\n      }\n\n      return;\n    }\n\n    const validity = this.isValidLVal(\n      type,\n      !(hasParenthesizedAncestor || expression.extra?.parenthesized) &&\n        ancestor.type === \"AssignmentExpression\",\n      binding,\n    );\n\n    if (validity === true) return;\n    if (validity === false) {\n      const ParseErrorClass =\n        binding === BindingFlag.TYPE_NONE\n          ? Errors.InvalidLhs\n          : Errors.InvalidLhsBinding;\n\n      this.raise(ParseErrorClass, expression, { ancestor });\n      return;\n    }\n\n    let key: string, isParenthesizedExpression: boolean;\n    if (typeof validity === \"string\") {\n      key = validity;\n      isParenthesizedExpression = type === \"ParenthesizedExpression\";\n    } else {\n      [key, isParenthesizedExpression] = validity;\n    }\n\n    const nextAncestor =\n      type === \"ArrayPattern\" || type === \"ObjectPattern\"\n        ? ({ type } as const)\n        : ancestor;\n\n    // @ts-expect-error key may not index expression.\n    const val = expression[key];\n    if (Array.isArray(val)) {\n      for (const child of val) {\n        if (child) {\n          this.checkLVal(\n            child,\n            nextAncestor,\n            binding,\n            checkClashes,\n            strictModeChanged,\n            isParenthesizedExpression,\n          );\n        }\n      }\n    } else if (val) {\n      this.checkLVal(\n        val,\n        nextAncestor,\n        binding,\n        checkClashes,\n        strictModeChanged,\n        isParenthesizedExpression,\n      );\n    }\n  }\n\n  checkIdentifier(\n    at: Identifier,\n    bindingType: BindingFlag,\n    strictModeChanged: boolean = false,\n  ) {\n    if (\n      this.state.strict &&\n      (strictModeChanged\n        ? isStrictBindReservedWord(at.name, this.inModule)\n        : isStrictBindOnlyReservedWord(at.name))\n    ) {\n      if (bindingType === BindingFlag.TYPE_NONE) {\n        this.raise(Errors.StrictEvalArguments, at, { referenceName: at.name });\n      } else {\n        this.raise(Errors.StrictEvalArgumentsBinding, at, {\n          bindingName: at.name,\n        });\n      }\n    }\n\n    if (bindingType & BindingFlag.FLAG_NO_LET_IN_LEXICAL && at.name === \"let\") {\n      this.raise(Errors.LetInLexicalBinding, at);\n    }\n\n    if (!(bindingType & BindingFlag.TYPE_NONE)) {\n      this.declareNameFromIdentifier(at, bindingType);\n    }\n  }\n\n  declareNameFromIdentifier(identifier: Identifier, binding: BindingFlag) {\n    this.scope.declareName(identifier.name, binding, identifier.loc.start);\n  }\n\n  checkToRestConversion(node: Node, allowPattern: boolean): void {\n    switch (node.type) {\n      case \"ParenthesizedExpression\":\n        this.checkToRestConversion(node.expression, allowPattern);\n        break;\n      case \"Identifier\":\n      case \"MemberExpression\":\n        break;\n      case \"ArrayExpression\":\n      case \"ObjectExpression\":\n        if (allowPattern) break;\n      /* falls through */\n      default:\n        this.raise(Errors.InvalidRestAssignmentPattern, node);\n    }\n  }\n\n  checkCommaAfterRest(\n    close: (typeof charCodes)[keyof typeof charCodes],\n  ): boolean {\n    if (!this.match(tt.comma)) {\n      return false;\n    }\n\n    this.raise(\n      this.lookaheadCharCode() === close\n        ? Errors.RestTrailingComma\n        : Errors.ElementAfterRest,\n      this.state.startLoc,\n    );\n\n    return true;\n  }\n}\n","import type State from \"../../tokenizer/state.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsTSDeclarationStart,\n  tokenIsTSTypeOperator,\n  tokenOperatorPrecedence,\n  tokenIsKeywordOrIdentifier,\n  tt,\n  type TokenType,\n  tokenIsTemplate,\n  tokenCanStartExpression,\n} from \"../../tokenizer/types.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../../util/location.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport { ScopeFlag, BindingFlag } from \"../../util/scopeflags.ts\";\nimport TypeScriptScopeHandler from \"./scope.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { ParamKind } from \"../../util/production-parameter.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport { cloneIdentifier, type Undone } from \"../../parser/node.ts\";\nimport type { Pattern } from \"../../types.ts\";\nimport type { Expression } from \"../../types.ts\";\nimport type { IJSXParserMixin } from \"../jsx/index.ts\";\nimport { ParseBindingListFlags } from \"../../parser/lval.ts\";\n\ntype TsModifier =\n  | \"readonly\"\n  | \"abstract\"\n  | \"declare\"\n  | \"static\"\n  | \"override\"\n  | \"const\"\n  | N.Accessibility\n  | N.VarianceAnnotations;\n\nfunction nonNull<T>(x?: T | null): T {\n  if (x == null) {\n    throw new Error(`Unexpected ${x} value.`);\n  }\n  return x;\n}\n\nfunction assert(x: boolean): void {\n  if (!x) {\n    throw new Error(\"Assert fail\");\n  }\n}\n\ntype ParsingContext =\n  | \"EnumMembers\"\n  | \"HeritageClauseElement\"\n  | \"TupleElementTypes\"\n  | \"TypeMembers\"\n  | \"TypeParametersOrArguments\";\n\ntype ModifierBase = {\n  accessibility?: N.Accessibility;\n} & {\n  [key in TsModifier]?: boolean | undefined | null;\n};\n\n/* eslint sort-keys: \"error\" */\nconst TSErrors = ParseErrorEnum`typescript`({\n  AbstractMethodHasImplementation: ({ methodName }: { methodName: string }) =>\n    `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n  AbstractPropertyHasInitializer: ({\n    propertyName,\n  }: {\n    propertyName: string;\n  }) =>\n    `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n  AccessorCannotBeOptional:\n    \"An 'accessor' property cannot be declared optional.\",\n  AccessorCannotDeclareThisParameter:\n    \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n  AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n  ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n  ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n  ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n    \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n  ConstructorHasTypeParameters:\n    \"Type parameters cannot appear on a constructor declaration.\",\n  DeclareAccessor: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `'declare' is not allowed in ${kind}ters.`,\n  DeclareClassFieldHasInitializer:\n    \"Initializers are not allowed in ambient contexts.\",\n  DeclareFunctionHasImplementation:\n    \"An implementation cannot be declared in ambient contexts.\",\n  DuplicateAccessibilityModifier:\n    // `Accessibility modifier already seen: ${modifier}` would be more helpful.\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ({ modifier }: { modifier: N.Accessibility }) =>\n      `Accessibility modifier already seen.`,\n  DuplicateModifier: ({ modifier }: { modifier: TsModifier }) =>\n    `Duplicate modifier: '${modifier}'.`,\n  // `token` matches the terminology used by typescript:\n  // https://github.com/microsoft/TypeScript/blob/main/src/compiler/types.ts#L2915\n  EmptyHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n    `'${token}' list cannot be empty.`,\n  EmptyTypeArguments: \"Type argument list cannot be empty.\",\n  EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n  ExpectedAmbientAfterExportDeclare:\n    \"'export declare' must be followed by an ambient declaration.\",\n  ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` modifier\",\n  IncompatibleModifiers: ({\n    modifiers,\n  }: {\n    modifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n  IndexSignatureHasAbstract:\n    \"Index signatures cannot have the 'abstract' modifier.\",\n  IndexSignatureHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n  IndexSignatureHasDeclare:\n    \"Index signatures cannot have the 'declare' modifier.\",\n  IndexSignatureHasOverride:\n    \"'override' modifier cannot appear on an index signature.\",\n  IndexSignatureHasStatic:\n    \"Index signatures cannot have the 'static' modifier.\",\n  InitializerNotAllowedInAmbientContext:\n    \"Initializers are not allowed in ambient contexts.\",\n  InvalidModifierOnTypeMember: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type member.`,\n  InvalidModifierOnTypeParameter: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type parameter.`,\n  InvalidModifierOnTypeParameterPositions: ({\n    modifier,\n  }: {\n    modifier: TsModifier;\n  }) =>\n    `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n  InvalidModifiersOrder: ({\n    orderedModifiers,\n  }: {\n    orderedModifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n  InvalidPropertyAccessAfterInstantiationExpression:\n    \"Invalid property access after an instantiation expression. \" +\n    \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n  InvalidTupleMemberLabel:\n    \"Tuple members must be labeled with a simple identifier.\",\n  MissingInterfaceName:\n    \"'interface' declarations must be followed by an identifier.\",\n  NonAbstractClassHasAbstractMethod:\n    \"Abstract methods can only appear within an abstract class.\",\n  NonClassMethodPropertyHasAbstractModifer:\n    \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n  OptionalTypeBeforeRequired:\n    \"A required element cannot follow an optional element.\",\n  OverrideNotInSubClass:\n    \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n  PatternIsOptional:\n    \"A binding pattern parameter cannot be optional in an implementation signature.\",\n  PrivateElementHasAbstract:\n    \"Private elements cannot have the 'abstract' modifier.\",\n  PrivateElementHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Private elements cannot have an accessibility modifier ('${modifier}').`,\n  ReadonlyForMethodSignature:\n    \"'readonly' modifier can only appear on a property declaration or index signature.\",\n  ReservedArrowTypeParam:\n    \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n  ReservedTypeAssertion:\n    \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n  SetAccessorCannotHaveOptionalParameter:\n    \"A 'set' accessor cannot have an optional parameter.\",\n  SetAccessorCannotHaveRestParameter:\n    \"A 'set' accessor cannot have rest parameter.\",\n  SetAccessorCannotHaveReturnType:\n    \"A 'set' accessor cannot have a return type annotation.\",\n  SingleTypeParameterWithoutTrailingComma: ({\n    typeParameterName,\n  }: {\n    typeParameterName: string;\n  }) =>\n    `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n  StaticBlockCannotHaveModifier:\n    \"Static class blocks cannot have any modifier.\",\n  TupleOptionalAfterType:\n    \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n  TypeAnnotationAfterAssign:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeImportCannotSpecifyDefaultAndNamed:\n    \"A type-only import can specify a default import or named bindings, but not both.\",\n  TypeModifierIsUsedInTypeExports:\n    \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n  TypeModifierIsUsedInTypeImports:\n    \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n  UnexpectedParameterModifier:\n    \"A parameter property is only allowed in a constructor implementation.\",\n  UnexpectedReadonly:\n    \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n  UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n  UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n  UnsupportedImportTypeArgument:\n    \"Argument in a type import must be a string literal.\",\n  UnsupportedParameterPropertyKind:\n    \"A parameter property may not be declared using a binding pattern.\",\n  UnsupportedSignatureParameterKind: ({ type }: { type: string }) =>\n    `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n});\n\n/* eslint-disable sort-keys */\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\n// It also doesn't handle \"intrinsic\", since usually it's not a keyword.\nfunction keywordTypeFromName(value: string): N.TsKeywordTypeType | undefined {\n  switch (value) {\n    case \"any\":\n      return \"TSAnyKeyword\";\n    case \"boolean\":\n      return \"TSBooleanKeyword\";\n    case \"bigint\":\n      return \"TSBigIntKeyword\";\n    case \"never\":\n      return \"TSNeverKeyword\";\n    case \"number\":\n      return \"TSNumberKeyword\";\n    case \"object\":\n      return \"TSObjectKeyword\";\n    case \"string\":\n      return \"TSStringKeyword\";\n    case \"symbol\":\n      return \"TSSymbolKeyword\";\n    case \"undefined\":\n      return \"TSUndefinedKeyword\";\n    case \"unknown\":\n      return \"TSUnknownKeyword\";\n    default:\n      return undefined;\n  }\n}\n\nfunction tsIsAccessModifier(modifier: string): modifier is N.Accessibility {\n  return (\n    modifier === \"private\" || modifier === \"public\" || modifier === \"protected\"\n  );\n}\n\nfunction tsIsVarianceAnnotations(\n  modifier: string,\n): modifier is N.VarianceAnnotations {\n  return modifier === \"in\" || modifier === \"out\";\n}\n\ntype ClassWithMixin<\n  T extends new (...args: any) => any,\n  M extends object,\n> = T extends new (...args: infer P) => infer I\n  ? new (...args: P) => I & M\n  : never;\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class TypeScriptParserMixin extends superClass implements Parser {\n    getScopeHandler(): new (...args: any) => TypeScriptScopeHandler {\n      return TypeScriptScopeHandler;\n    }\n\n    tsIsIdentifier(): boolean {\n      // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n      // See https://github.com/Microsoft/TypeScript/issues/15008\n      return tokenIsIdentifier(this.state.type);\n    }\n\n    tsTokenCanFollowModifier() {\n      return (\n        this.match(tt.bracketL) ||\n        this.match(tt.braceL) ||\n        this.match(tt.star) ||\n        this.match(tt.ellipsis) ||\n        this.match(tt.privateName) ||\n        this.isLiteralPropertyName()\n      );\n    }\n\n    tsNextTokenOnSameLineAndCanFollowModifier() {\n      this.next();\n      if (this.hasPrecedingLineBreak()) {\n        return false;\n      }\n      return this.tsTokenCanFollowModifier();\n    }\n\n    tsNextTokenCanFollowModifier() {\n      // Note: TypeScript's implementation is much more complicated because\n      // more things are considered modifiers there.\n      // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n      if (this.match(tt._static)) {\n        this.next();\n        return this.tsTokenCanFollowModifier();\n      }\n      return this.tsNextTokenOnSameLineAndCanFollowModifier();\n    }\n\n    /** Parses a modifier matching one the given modifier names. */\n    tsParseModifier<T extends TsModifier>(\n      allowedModifiers: T[],\n      stopOnStartOfClassStaticBlock?: boolean,\n    ): T | undefined | null {\n      if (\n        !tokenIsIdentifier(this.state.type) &&\n        this.state.type !== tt._in &&\n        this.state.type !== tt._const\n      ) {\n        return undefined;\n      }\n\n      const modifier = this.state.value;\n      if (allowedModifiers.includes(modifier)) {\n        if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n          return undefined;\n        }\n        if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n          return modifier;\n        }\n      }\n      return undefined;\n    }\n\n    /** Parses a list of modifiers, in any order.\n     *  If you need a specific order, you must call this function multiple times:\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"public\"] });\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"abstract\", \"readonly\"] });\n     */\n    tsParseModifiers<N extends ModifierBase>(\n      {\n        allowedModifiers,\n        disallowedModifiers,\n        stopOnStartOfClassStaticBlock,\n        errorTemplate = TSErrors.InvalidModifierOnTypeMember,\n      }: {\n        allowedModifiers: readonly TsModifier[];\n        disallowedModifiers?: TsModifier[];\n        stopOnStartOfClassStaticBlock?: boolean;\n        errorTemplate?: typeof TSErrors.InvalidModifierOnTypeMember;\n      },\n      modified: N,\n    ): void {\n      const enforceOrder = (\n        loc: Position,\n        modifier: TsModifier,\n        before: TsModifier,\n        after: TsModifier,\n      ) => {\n        if (modifier === before && modified[after]) {\n          this.raise(TSErrors.InvalidModifiersOrder, loc, {\n            orderedModifiers: [before, after],\n          });\n        }\n      };\n      const incompatible = (\n        loc: Position,\n        modifier: TsModifier,\n        mod1: TsModifier,\n        mod2: TsModifier,\n      ) => {\n        if (\n          (modified[mod1] && modifier === mod2) ||\n          (modified[mod2] && modifier === mod1)\n        ) {\n          this.raise(TSErrors.IncompatibleModifiers, loc, {\n            modifiers: [mod1, mod2],\n          });\n        }\n      };\n\n      for (;;) {\n        const { startLoc } = this.state;\n        const modifier: TsModifier | undefined | null = this.tsParseModifier(\n          allowedModifiers.concat(disallowedModifiers ?? []),\n          stopOnStartOfClassStaticBlock,\n        );\n\n        if (!modifier) break;\n\n        if (tsIsAccessModifier(modifier)) {\n          if (modified.accessibility) {\n            this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n              modifier,\n            });\n          } else {\n            enforceOrder(startLoc, modifier, modifier, \"override\");\n            enforceOrder(startLoc, modifier, modifier, \"static\");\n            enforceOrder(startLoc, modifier, modifier, \"readonly\");\n\n            modified.accessibility = modifier;\n          }\n        } else if (tsIsVarianceAnnotations(modifier)) {\n          if (modified[modifier]) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          }\n          modified[modifier] = true;\n\n          enforceOrder(startLoc, modifier, \"in\", \"out\");\n        } else {\n          if (Object.hasOwn(modified, modifier)) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          } else {\n            enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"static\", \"override\");\n            enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n\n            incompatible(startLoc, modifier, \"declare\", \"override\");\n            incompatible(startLoc, modifier, \"static\", \"abstract\");\n          }\n          modified[modifier] = true;\n        }\n\n        if (disallowedModifiers?.includes(modifier)) {\n          this.raise(errorTemplate, startLoc, {\n            modifier,\n          });\n        }\n      }\n    }\n\n    tsIsListTerminator(kind: ParsingContext): boolean {\n      switch (kind) {\n        case \"EnumMembers\":\n        case \"TypeMembers\":\n          return this.match(tt.braceR);\n        case \"HeritageClauseElement\":\n          return this.match(tt.braceL);\n        case \"TupleElementTypes\":\n          return this.match(tt.bracketR);\n        case \"TypeParametersOrArguments\":\n          return this.match(tt.gt);\n      }\n    }\n\n    tsParseList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n    ): T[] {\n      const result: T[] = [];\n      while (!this.tsIsListTerminator(kind)) {\n        // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n        result.push(parseElement());\n      }\n      return result;\n    }\n\n    tsParseDelimitedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      return nonNull(\n        this.tsParseDelimitedListWorker(\n          kind,\n          parseElement,\n          /* expectSuccess */ true,\n          refTrailingCommaPos,\n        ),\n      );\n    }\n\n    /**\n     * If !expectSuccess, returns undefined instead of failing to parse.\n     * If expectSuccess, parseElement should always return a defined value.\n     */\n    tsParseDelimitedListWorker<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T | undefined,\n      expectSuccess: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] | undefined {\n      const result: T[] = [];\n      let trailingCommaPos = -1;\n\n      for (;;) {\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n        trailingCommaPos = -1;\n\n        const element = parseElement();\n        if (element == null) {\n          return undefined;\n        }\n        result.push(element);\n\n        if (this.eat(tt.comma)) {\n          trailingCommaPos = this.state.lastTokStartLoc.index;\n          continue;\n        }\n\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n\n        if (expectSuccess) {\n          // This will fail with an error about a missing comma\n          this.expect(tt.comma);\n        }\n        return undefined;\n      }\n\n      if (refTrailingCommaPos) {\n        refTrailingCommaPos.value = trailingCommaPos;\n      }\n\n      return result;\n    }\n\n    tsParseBracketedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      bracket: boolean,\n      skipFirstToken: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      if (!skipFirstToken) {\n        if (bracket) {\n          this.expect(tt.bracketL);\n        } else {\n          this.expect(tt.lt);\n        }\n      }\n\n      const result = this.tsParseDelimitedList(\n        kind,\n        parseElement,\n        refTrailingCommaPos,\n      );\n\n      if (bracket) {\n        this.expect(tt.bracketR);\n      } else {\n        this.expect(tt.gt);\n      }\n\n      return result;\n    }\n\n    tsParseImportType(): N.TsImportType {\n      const node = this.startNode<N.TsImportType>();\n      this.expect(tt._import);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n      }\n\n      // For compatibility to estree we cannot call parseLiteral directly here\n      node.argument = super.parseExprAtom() as N.StringLiteral;\n      if (this.eat(tt.comma) && !this.match(tt.parenR)) {\n        node.options = super.parseMaybeAssignAllowIn();\n        this.eat(tt.comma);\n      } else {\n        node.options = null;\n      }\n      this.expect(tt.parenR);\n\n      if (this.eat(tt.dot)) {\n        // In this instance, the entity name will actually itself be a\n        // qualifier, so allow it to be a reserved word as well.\n        node.qualifier = this.tsParseEntityName();\n      }\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.tsParseTypeArguments();\n      }\n      return this.finishNode(node, \"TSImportType\");\n    }\n\n    tsParseEntityName(allowReservedWords: boolean = true): N.TsEntityName {\n      let entity: N.TsEntityName = this.parseIdentifier(allowReservedWords);\n      while (this.eat(tt.dot)) {\n        const node: Undone<N.TsQualifiedName> =\n          this.startNodeAtNode<N.TsQualifiedName>(entity);\n        node.left = entity;\n        node.right = this.parseIdentifier(allowReservedWords);\n        entity = this.finishNode(node, \"TSQualifiedName\");\n      }\n      return entity;\n    }\n\n    tsParseTypeReference(): N.TsTypeReference {\n      const node = this.startNode<N.TsTypeReference>();\n      node.typeName = this.tsParseEntityName();\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        node.typeParameters = this.tsParseTypeArguments();\n      }\n      return this.finishNode(node, \"TSTypeReference\");\n    }\n\n    tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n      this.next();\n      const node = this.startNodeAtNode<N.TsTypePredicate>(lhs);\n      node.parameterName = lhs;\n      node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n      node.asserts = false;\n      return this.finishNode(node, \"TSTypePredicate\");\n    }\n\n    tsParseThisTypeNode(): N.TsThisType {\n      const node = this.startNode<N.TsThisType>();\n      this.next();\n      return this.finishNode(node, \"TSThisType\");\n    }\n\n    tsParseTypeQuery(): N.TsTypeQuery {\n      const node = this.startNode<N.TsTypeQuery>();\n      this.expect(tt._typeof);\n      if (this.match(tt._import)) {\n        node.exprName = this.tsParseImportType();\n      } else {\n        node.exprName = this.tsParseEntityName();\n      }\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        node.typeParameters = this.tsParseTypeArguments();\n      }\n      return this.finishNode(node, \"TSTypeQuery\");\n    }\n\n    tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\"],\n      disallowedModifiers: [\n        \"const\",\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseConstModifier = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"const\"],\n      // for better error recovery\n      disallowedModifiers: [\"in\", \"out\"],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n    });\n\n    tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\", \"const\"],\n      disallowedModifiers: [\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseTypeParameter(\n      parseModifiers: (node: Undone<N.TsTypeParameter>) => void,\n    ): N.TsTypeParameter {\n      const node = this.startNode<N.TsTypeParameter>();\n\n      parseModifiers(node);\n\n      node.name = this.tsParseTypeParameterName();\n      node.constraint = this.tsEatThenParseType(tt._extends);\n      node.default = this.tsEatThenParseType(tt.eq);\n      return this.finishNode(node, \"TSTypeParameter\");\n    }\n\n    tsTryParseTypeParameters(\n      parseModifiers: (node: N.TsTypeParameter) => void,\n    ): N.TsTypeParameterDeclaration | undefined | null {\n      if (this.match(tt.lt)) {\n        return this.tsParseTypeParameters(parseModifiers);\n      }\n    }\n\n    tsParseTypeParameters(parseModifiers: (node: N.TsTypeParameter) => void) {\n      const node = this.startNode<N.TsTypeParameterDeclaration>();\n\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      const refTrailingCommaPos = { value: -1 };\n\n      node.params = this.tsParseBracketedList(\n        \"TypeParametersOrArguments\",\n        this.tsParseTypeParameter.bind(this, parseModifiers),\n        /* bracket */ false,\n        /* skipFirstToken */ true,\n        refTrailingCommaPos,\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeParameters, node);\n      }\n      if (refTrailingCommaPos.value !== -1) {\n        this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n      }\n      return this.finishNode(node, \"TSTypeParameterDeclaration\");\n    }\n\n    // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n    // but here it's always false, because this is only used for types.\n    tsFillSignature(\n      returnToken: TokenType,\n      signature: Undone<N.TsSignatureDeclaration>,\n    ): void {\n      // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n      const returnTokenRequired = returnToken === tt.arrow;\n\n      // https://github.com/babel/babel/issues/9231\n      const paramsKey = process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\";\n      const returnTypeKey = process.env.BABEL_8_BREAKING\n        ? \"returnType\"\n        : \"typeAnnotation\";\n\n      signature.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      this.expect(tt.parenL);\n      signature[paramsKey] = this.tsParseBindingListForSignature();\n      if (returnTokenRequired) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      } else if (this.match(returnToken)) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      }\n    }\n\n    tsParseBindingListForSignature(): Array<\n      N.Identifier | N.RestElement | N.ObjectPattern | N.ArrayPattern\n    > {\n      const list = super.parseBindingList(\n        tt.parenR,\n        charCodes.rightParenthesis,\n        ParseBindingListFlags.IS_FUNCTION_PARAMS,\n      );\n      for (const pattern of list) {\n        const { type } = pattern;\n        if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n          this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n            type,\n          });\n        }\n      }\n      return list as Exclude<\n        (typeof list)[0],\n        N.AssignmentPattern | N.TSParameterProperty\n      >[];\n    }\n\n    tsParseTypeMemberSemicolon(): void {\n      if (!this.eat(tt.comma) && !this.isLineTerminator()) {\n        this.expect(tt.semi);\n      }\n    }\n\n    tsParseSignatureMember(\n      kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n      node: Undone<\n        N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration\n      >,\n    ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n      this.tsFillSignature(tt.colon, node);\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, kind);\n    }\n\n    tsIsUnambiguouslyIndexSignature() {\n      this.next(); // Skip '{'\n      if (tokenIsIdentifier(this.state.type)) {\n        this.next();\n        return this.match(tt.colon);\n      }\n      return false;\n    }\n\n    tsTryParseIndexSignature(\n      node: Undone<N.TsIndexSignature>,\n    ): N.TsIndexSignature | undefined {\n      if (\n        !(\n          this.match(tt.bracketL) &&\n          this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n        )\n      ) {\n        return;\n      }\n\n      this.expect(tt.bracketL);\n      const id = this.parseIdentifier();\n      id.typeAnnotation = this.tsParseTypeAnnotation();\n      this.resetEndLocation(id); // set end position to end of type\n\n      this.expect(tt.bracketR);\n      node.parameters = [id];\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, \"TSIndexSignature\");\n    }\n\n    tsParsePropertyOrMethodSignature(\n      node: N.TsPropertySignature | N.TsMethodSignature,\n      readonly: boolean,\n    ): N.TsPropertySignature | N.TsMethodSignature {\n      if (this.eat(tt.question)) node.optional = true;\n      const nodeAny: any = node;\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        if (readonly) {\n          this.raise(TSErrors.ReadonlyForMethodSignature, node);\n        }\n        const method: N.TsMethodSignature = nodeAny;\n        if (method.kind && this.match(tt.lt)) {\n          this.raise(\n            TSErrors.AccessorCannotHaveTypeParameters,\n            this.state.curPosition(),\n          );\n        }\n        this.tsFillSignature(tt.colon, method);\n        this.tsParseTypeMemberSemicolon();\n        const paramsKey = process.env.BABEL_8_BREAKING\n          ? \"params\"\n          : \"parameters\";\n        const returnTypeKey = process.env.BABEL_8_BREAKING\n          ? \"returnType\"\n          : \"typeAnnotation\";\n        if (method.kind === \"get\") {\n          if (method[paramsKey].length > 0) {\n            this.raise(Errors.BadGetterArity, this.state.curPosition());\n            if (this.isThisParam(method[paramsKey][0])) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n        } else if (method.kind === \"set\") {\n          if (method[paramsKey].length !== 1) {\n            this.raise(Errors.BadSetterArity, this.state.curPosition());\n          } else {\n            const firstParameter = method[paramsKey][0];\n            if (this.isThisParam(firstParameter)) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (\n              firstParameter.type === \"Identifier\" &&\n              firstParameter.optional\n            ) {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveOptionalParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (firstParameter.type === \"RestElement\") {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveRestParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n          if (method[returnTypeKey]) {\n            this.raise(\n              TSErrors.SetAccessorCannotHaveReturnType,\n              method[returnTypeKey],\n            );\n          }\n        } else {\n          method.kind = \"method\";\n        }\n        return this.finishNode(method, \"TSMethodSignature\");\n      } else {\n        const property: N.TsPropertySignature = nodeAny;\n        if (readonly) property.readonly = true;\n        const type = this.tsTryParseTypeAnnotation();\n        if (type) property.typeAnnotation = type;\n        this.tsParseTypeMemberSemicolon();\n        return this.finishNode(property, \"TSPropertySignature\");\n      }\n    }\n\n    tsParseTypeMember(): N.TsTypeElement {\n      const node: any = this.startNode();\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n      }\n\n      if (this.match(tt._new)) {\n        const id = this.startNode<N.Identifier>();\n        this.next();\n        if (this.match(tt.parenL) || this.match(tt.lt)) {\n          return this.tsParseSignatureMember(\n            \"TSConstructSignatureDeclaration\",\n            node,\n          );\n        } else {\n          node.key = this.createIdentifier(id, \"new\");\n          return this.tsParsePropertyOrMethodSignature(node, false);\n        }\n      }\n\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\"readonly\"],\n          disallowedModifiers: [\n            \"declare\",\n            \"abstract\",\n            \"private\",\n            \"protected\",\n            \"public\",\n            \"static\",\n            \"override\",\n          ],\n        },\n        node,\n      );\n\n      const idx = this.tsTryParseIndexSignature(node);\n      if (idx) {\n        return idx;\n      }\n\n      super.parsePropertyName(node);\n      if (\n        !node.computed &&\n        node.key.type === \"Identifier\" &&\n        (node.key.name === \"get\" || node.key.name === \"set\") &&\n        this.tsTokenCanFollowModifier()\n      ) {\n        node.kind = node.key.name;\n        super.parsePropertyName(node);\n      }\n      return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n    }\n\n    tsParseTypeLiteral(): N.TsTypeLiteral {\n      const node = this.startNode<N.TsTypeLiteral>();\n      node.members = this.tsParseObjectTypeMembers();\n      return this.finishNode(node, \"TSTypeLiteral\");\n    }\n\n    tsParseObjectTypeMembers(): Array<N.TsTypeElement> {\n      this.expect(tt.braceL);\n      const members = this.tsParseList(\n        \"TypeMembers\",\n        this.tsParseTypeMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return members;\n    }\n\n    tsIsStartOfMappedType(): boolean {\n      this.next();\n      if (this.eat(tt.plusMin)) {\n        return this.isContextual(tt._readonly);\n      }\n      if (this.isContextual(tt._readonly)) {\n        this.next();\n      }\n      if (!this.match(tt.bracketL)) {\n        return false;\n      }\n      this.next();\n      if (!this.tsIsIdentifier()) {\n        return false;\n      }\n      this.next();\n      return this.match(tt._in);\n    }\n\n    tsParseMappedType(): N.TsMappedType {\n      const node = this.startNode<N.TsMappedType>();\n\n      this.expect(tt.braceL);\n\n      if (this.match(tt.plusMin)) {\n        node.readonly = this.state.value;\n        this.next();\n        this.expectContextual(tt._readonly);\n      } else if (this.eatContextual(tt._readonly)) {\n        node.readonly = true;\n      }\n\n      this.expect(tt.bracketL);\n      if (process.env.BABEL_8_BREAKING) {\n        node.key = this.tsParseTypeParameterName() as N.Identifier;\n        node.constraint = this.tsExpectThenParseType(tt._in);\n      } else {\n        const typeParameter = this.startNode<N.TsTypeParameter>();\n        typeParameter.name = this.tsParseTypeParameterName();\n        typeParameter.constraint = this.tsExpectThenParseType(tt._in);\n        // @ts-expect-error for Babel 7\n        node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      }\n      node.nameType = this.eatContextual(tt._as) ? this.tsParseType() : null;\n\n      this.expect(tt.bracketR);\n\n      if (this.match(tt.plusMin)) {\n        node.optional = this.state.value;\n        this.next();\n        this.expect(tt.question);\n      } else if (this.eat(tt.question)) {\n        node.optional = true;\n      }\n\n      node.typeAnnotation = this.tsTryParseType();\n      this.semicolon();\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"TSMappedType\");\n    }\n\n    tsParseTupleType(): N.TsTupleType {\n      const node = this.startNode<N.TsTupleType>();\n      node.elementTypes = this.tsParseBracketedList(\n        \"TupleElementTypes\",\n        this.tsParseTupleElementType.bind(this),\n        /* bracket */ true,\n        /* skipFirstToken */ false,\n      );\n\n      // Validate the elementTypes to ensure that no mandatory elements\n      // follow optional elements\n      let seenOptionalElement = false;\n      node.elementTypes.forEach(elementNode => {\n        const { type } = elementNode;\n\n        if (\n          seenOptionalElement &&\n          type !== \"TSRestType\" &&\n          type !== \"TSOptionalType\" &&\n          !(type === \"TSNamedTupleMember\" && elementNode.optional)\n        ) {\n          this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n        }\n\n        seenOptionalElement ||=\n          (type === \"TSNamedTupleMember\" && elementNode.optional) ||\n          type === \"TSOptionalType\";\n      });\n\n      return this.finishNode(node, \"TSTupleType\");\n    }\n\n    tsParseTupleElementType(): N.TsNamedTupleMember | N.TsType {\n      // parses `...TsType[]`\n\n      const { startLoc } = this.state;\n\n      const rest = this.eat(tt.ellipsis);\n\n      let labeled: boolean;\n      let label: N.Identifier;\n      let optional: boolean;\n      let type: N.TsNamedTupleMember | N.TsType;\n\n      const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n      const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n      if (chAfterWord === charCodes.colon) {\n        labeled = true;\n        optional = false;\n        label = this.parseIdentifier(true);\n        this.expect(tt.colon);\n        type = this.tsParseType();\n      } else if (chAfterWord === charCodes.questionMark) {\n        optional = true;\n        const startLoc = this.state.startLoc;\n        const wordName = this.state.value;\n        const typeOrLabel = this.tsParseNonArrayType();\n\n        if (this.lookaheadCharCode() === charCodes.colon) {\n          labeled = true;\n          label = this.createIdentifier(\n            this.startNodeAt<N.Identifier>(startLoc),\n            wordName,\n          );\n          this.expect(tt.question);\n          this.expect(tt.colon);\n          type = this.tsParseType();\n        } else {\n          labeled = false;\n          type = typeOrLabel;\n          this.expect(tt.question);\n        }\n      } else {\n        type = this.tsParseType();\n        optional = this.eat(tt.question);\n        // In this case (labeled === true) could be only in invalid label.\n        // E.g. [x.y:type]\n        // An error is raised while processing node.\n        labeled = this.eat(tt.colon);\n      }\n\n      if (labeled) {\n        let labeledNode: Undone<N.TsNamedTupleMember>;\n        if (label) {\n          labeledNode = this.startNodeAtNode<N.TsNamedTupleMember>(label);\n          labeledNode.optional = optional;\n          labeledNode.label = label;\n          labeledNode.elementType = type;\n\n          if (this.eat(tt.question)) {\n            labeledNode.optional = true;\n            this.raise(\n              TSErrors.TupleOptionalAfterType,\n              this.state.lastTokStartLoc,\n            );\n          }\n        } else {\n          labeledNode = this.startNodeAtNode<N.TsNamedTupleMember>(type);\n          labeledNode.optional = optional;\n          this.raise(TSErrors.InvalidTupleMemberLabel, type);\n          // @ts-expect-error This produces an invalid AST, but at least we don't drop\n          // nodes representing the invalid source.\n          labeledNode.label = type;\n          labeledNode.elementType = this.tsParseType();\n        }\n        type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n      } else if (optional) {\n        const optionalTypeNode = this.startNodeAtNode<N.TsOptionalType>(type);\n        optionalTypeNode.typeAnnotation = type;\n        type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n      }\n\n      if (rest) {\n        const restNode = this.startNodeAt<N.TsRestType>(startLoc);\n        restNode.typeAnnotation = type;\n        type = this.finishNode(restNode, \"TSRestType\");\n      }\n\n      return type;\n    }\n\n    tsParseParenthesizedType(): N.TsParenthesizedType {\n      const node = this.startNode<N.TsParenthesizedType>();\n      this.expect(tt.parenL);\n      node.typeAnnotation = this.tsParseType();\n      this.expect(tt.parenR);\n      return this.finishNode(node, \"TSParenthesizedType\");\n    }\n\n    tsParseFunctionOrConstructorType(\n      type: \"TSFunctionType\" | \"TSConstructorType\",\n      abstract?: boolean,\n    ): N.TsFunctionOrConstructorType {\n      const node = this.startNode<\n        N.TsFunctionOrConstructorType | N.TsConstructorType\n      >();\n      if (type === \"TSConstructorType\") {\n        (node as Undone<N.TsConstructorType>).abstract = !!abstract;\n        if (abstract) this.next();\n        this.next(); // eat `new`\n      }\n      this.tsInAllowConditionalTypesContext(() =>\n        this.tsFillSignature(tt.arrow, node),\n      );\n      return this.finishNode(node, type);\n    }\n\n    tsParseLiteralTypeNode(): N.TsLiteralType {\n      const node = this.startNode<N.TsLiteralType>();\n      switch (this.state.type) {\n        case tt.num:\n        case tt.bigint:\n        case tt.string:\n        case tt._true:\n        case tt._false:\n          // For compatibility to estree we cannot call parseLiteral directly here\n          // @ts-expect-error refine typings\n          node.literal = super.parseExprAtom();\n          break;\n        default:\n          this.unexpected();\n      }\n      return this.finishNode(node, \"TSLiteralType\");\n    }\n\n    tsParseTemplateLiteralType(): N.TsType {\n      const node = this.startNode<N.TsLiteralType>();\n      node.literal = super.parseTemplate(false);\n      return this.finishNode(node, \"TSLiteralType\");\n    }\n\n    parseTemplateSubstitution(): N.TsType | N.Expression {\n      if (this.state.inType) return this.tsParseType();\n      return super.parseTemplateSubstitution();\n    }\n\n    tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n      const thisKeyword = this.tsParseThisTypeNode();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        return this.tsParseThisTypePredicate(thisKeyword);\n      } else {\n        return thisKeyword;\n      }\n    }\n\n    tsParseNonArrayType(): N.TsType {\n      switch (this.state.type) {\n        case tt.string:\n        case tt.num:\n        case tt.bigint:\n        case tt._true:\n        case tt._false:\n          return this.tsParseLiteralTypeNode();\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            const node = this.startNode<N.TsLiteralType>();\n            const nextToken = this.lookahead();\n            if (nextToken.type !== tt.num && nextToken.type !== tt.bigint) {\n              this.unexpected();\n            }\n            // @ts-expect-error: parseMaybeUnary must returns unary expression\n            node.literal = this.parseMaybeUnary();\n            return this.finishNode(node, \"TSLiteralType\");\n          }\n          break;\n        case tt._this:\n          return this.tsParseThisTypeOrThisTypePredicate();\n        case tt._typeof:\n          return this.tsParseTypeQuery();\n        case tt._import:\n          return this.tsParseImportType();\n        case tt.braceL:\n          return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n            ? this.tsParseMappedType()\n            : this.tsParseTypeLiteral();\n        case tt.bracketL:\n          return this.tsParseTupleType();\n        case tt.parenL:\n          if (process.env.BABEL_8_BREAKING) {\n            if (!this.options.createParenthesizedExpressions) {\n              const startLoc = this.state.startLoc;\n              this.next();\n              const type = this.tsParseType();\n              this.expect(tt.parenR);\n              this.addExtra(type, \"parenthesized\", true);\n              this.addExtra(type, \"parenStart\", startLoc.index);\n              return type;\n            }\n          }\n\n          return this.tsParseParenthesizedType();\n        case tt.templateNonTail:\n        case tt.templateTail:\n          return this.tsParseTemplateLiteralType();\n        default: {\n          const { type } = this.state;\n          if (\n            tokenIsIdentifier(type) ||\n            type === tt._void ||\n            type === tt._null\n          ) {\n            const nodeType =\n              type === tt._void\n                ? \"TSVoidKeyword\"\n                : type === tt._null\n                  ? \"TSNullKeyword\"\n                  : keywordTypeFromName(this.state.value);\n            if (\n              nodeType !== undefined &&\n              this.lookaheadCharCode() !== charCodes.dot\n            ) {\n              const node = this.startNode<N.TsKeywordType>();\n              this.next();\n              return this.finishNode(node, nodeType);\n            }\n            return this.tsParseTypeReference();\n          }\n        }\n      }\n\n      this.unexpected();\n    }\n\n    tsParseArrayTypeOrHigher(): N.TsType {\n      let type = this.tsParseNonArrayType();\n      while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n        if (this.match(tt.bracketR)) {\n          const node = this.startNodeAtNode<N.TsArrayType>(type);\n          node.elementType = type;\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSArrayType\");\n        } else {\n          const node = this.startNodeAtNode<N.TsIndexedAccessType>(type);\n          node.objectType = type;\n          node.indexType = this.tsParseType();\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSIndexedAccessType\");\n        }\n      }\n      return type;\n    }\n\n    tsParseTypeOperator(): N.TsTypeOperator {\n      const node = this.startNode<N.TsTypeOperator>();\n      const operator = this.state.value;\n      this.next(); // eat operator\n      node.operator = operator;\n      node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n      if (operator === \"readonly\") {\n        this.tsCheckTypeAnnotationForReadOnly(node);\n      }\n\n      return this.finishNode(node, \"TSTypeOperator\");\n    }\n\n    tsCheckTypeAnnotationForReadOnly(node: Undone<N.TsTypeOperator>) {\n      switch (node.typeAnnotation.type) {\n        case \"TSTupleType\":\n        case \"TSArrayType\":\n          return;\n        default:\n          this.raise(TSErrors.UnexpectedReadonly, node);\n      }\n    }\n\n    tsParseInferType(): N.TsInferType {\n      const node = this.startNode<N.TsInferType>();\n      this.expectContextual(tt._infer);\n      const typeParameter = this.startNode<N.TsTypeParameter>();\n      typeParameter.name = this.tsParseTypeParameterName();\n      typeParameter.constraint = this.tsTryParse(() =>\n        this.tsParseConstraintForInferType(),\n      );\n      node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      return this.finishNode(node, \"TSInferType\");\n    }\n\n    tsParseConstraintForInferType() {\n      if (this.eat(tt._extends)) {\n        const constraint = this.tsInDisallowConditionalTypesContext(() =>\n          this.tsParseType(),\n        );\n        if (\n          this.state.inDisallowConditionalTypesContext ||\n          !this.match(tt.question)\n        ) {\n          return constraint;\n        }\n      }\n    }\n\n    tsParseTypeOperatorOrHigher(): N.TsType {\n      const isTypeOperator =\n        tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n      return isTypeOperator\n        ? this.tsParseTypeOperator()\n        : this.isContextual(tt._infer)\n          ? this.tsParseInferType()\n          : this.tsInAllowConditionalTypesContext(() =>\n              this.tsParseArrayTypeOrHigher(),\n            );\n    }\n\n    tsParseUnionOrIntersectionType(\n      kind: \"TSUnionType\" | \"TSIntersectionType\",\n      parseConstituentType: () => N.TsType,\n      operator: TokenType,\n    ): N.TsType {\n      const node = this.startNode<N.TsUnionType | N.TsIntersectionType>();\n      const hasLeadingOperator = this.eat(operator);\n      const types = [];\n      do {\n        types.push(parseConstituentType());\n      } while (this.eat(operator));\n      if (types.length === 1 && !hasLeadingOperator) {\n        return types[0];\n      }\n      node.types = types;\n      return this.finishNode(node, kind);\n    }\n\n    tsParseIntersectionTypeOrHigher(): N.TsType {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSIntersectionType\",\n        this.tsParseTypeOperatorOrHigher.bind(this),\n        tt.bitwiseAND,\n      );\n    }\n\n    tsParseUnionTypeOrHigher() {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSUnionType\",\n        this.tsParseIntersectionTypeOrHigher.bind(this),\n        tt.bitwiseOR,\n      );\n    }\n\n    tsIsStartOfFunctionType() {\n      if (this.match(tt.lt)) {\n        return true;\n      }\n      return (\n        this.match(tt.parenL) &&\n        this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n      );\n    }\n\n    tsSkipParameterStart(): boolean {\n      if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n        this.next();\n        return true;\n      }\n\n      if (this.match(tt.braceL)) {\n        // Return true if we can parse an object pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          this.parseObjectLike(tt.braceR, true);\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      if (this.match(tt.bracketL)) {\n        this.next();\n        // Return true if we can parse an array pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          super.parseBindingList(\n            tt.bracketR,\n            charCodes.rightSquareBracket,\n            ParseBindingListFlags.ALLOW_EMPTY,\n          );\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      return false;\n    }\n\n    tsIsUnambiguouslyStartOfFunctionType(): boolean {\n      this.next();\n      if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n        // ( )\n        // ( ...\n        return true;\n      }\n      if (this.tsSkipParameterStart()) {\n        if (\n          this.match(tt.colon) ||\n          this.match(tt.comma) ||\n          this.match(tt.question) ||\n          this.match(tt.eq)\n        ) {\n          // ( xxx :\n          // ( xxx ,\n          // ( xxx ?\n          // ( xxx =\n          return true;\n        }\n        if (this.match(tt.parenR)) {\n          this.next();\n          if (this.match(tt.arrow)) {\n            // ( xxx ) =>\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n\n    tsParseTypeOrTypePredicateAnnotation(\n      returnToken: TokenType,\n    ): N.TsTypeAnnotation {\n      return this.tsInType(() => {\n        const t = this.startNode<N.TsTypeAnnotation>();\n        this.expect(returnToken);\n\n        const node = this.startNode<N.TsTypePredicate>();\n\n        const asserts = !!this.tsTryParse(\n          this.tsParseTypePredicateAsserts.bind(this),\n        );\n\n        if (asserts && this.match(tt._this)) {\n          // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n          // : asserts this is type\n          let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n          // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n          // : asserts this\n          if (thisTypePredicate.type === \"TSThisType\") {\n            node.parameterName = thisTypePredicate;\n            node.asserts = true;\n            (node as N.TsTypePredicate).typeAnnotation = null;\n            thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n          } else {\n            this.resetStartLocationFromNode(thisTypePredicate, node);\n            thisTypePredicate.asserts = true;\n          }\n          t.typeAnnotation = thisTypePredicate;\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        const typePredicateVariable =\n          this.tsIsIdentifier() &&\n          this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n        if (!typePredicateVariable) {\n          if (!asserts) {\n            // : type\n            return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n          }\n\n          // : asserts foo\n          node.parameterName = this.parseIdentifier();\n          node.asserts = asserts;\n          (node as N.TsTypePredicate).typeAnnotation = null;\n          t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        // : asserts foo is type\n        const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n        node.parameterName = typePredicateVariable;\n        node.typeAnnotation = type;\n        node.asserts = asserts;\n        t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n        return this.finishNode(t, \"TSTypeAnnotation\");\n      });\n    }\n\n    tsTryParseTypeOrTypePredicateAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n    }\n\n    tsTryParseTypeAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeAnnotation();\n      }\n    }\n\n    tsTryParseType(): N.TsType | undefined {\n      return this.tsEatThenParseType(tt.colon);\n    }\n\n    tsParseTypePredicatePrefix(): N.Identifier | undefined {\n      const id = this.parseIdentifier();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        this.next();\n        return id;\n      }\n    }\n\n    tsParseTypePredicateAsserts(): boolean {\n      if (this.state.type !== tt._asserts) {\n        return false;\n      }\n      const containsEsc = this.state.containsEsc;\n      this.next();\n      if (!tokenIsIdentifier(this.state.type) && !this.match(tt._this)) {\n        return false;\n      }\n\n      if (containsEsc) {\n        this.raise(\n          Errors.InvalidEscapedReservedWord,\n          this.state.lastTokStartLoc,\n          {\n            reservedWord: \"asserts\",\n          },\n        );\n      }\n\n      return true;\n    }\n\n    tsParseTypeAnnotation(\n      eatColon = true,\n      t: Undone<N.TsTypeAnnotation> = this.startNode<N.TsTypeAnnotation>(),\n    ): N.TsTypeAnnotation {\n      this.tsInType(() => {\n        if (eatColon) this.expect(tt.colon);\n        t.typeAnnotation = this.tsParseType();\n      });\n      return this.finishNode(t, \"TSTypeAnnotation\");\n    }\n\n    /** Be sure to be in a type context before calling this, using `tsInType`. */\n    tsParseType(): N.TsType {\n      // Need to set `state.inType` so that we don't parse JSX in a type context.\n      assert(this.state.inType);\n      const type = this.tsParseNonConditionalType();\n\n      if (\n        this.state.inDisallowConditionalTypesContext ||\n        this.hasPrecedingLineBreak() ||\n        !this.eat(tt._extends)\n      ) {\n        return type;\n      }\n      const node = this.startNodeAtNode<N.TsConditionalType>(type);\n      node.checkType = type;\n\n      node.extendsType = this.tsInDisallowConditionalTypesContext(() =>\n        this.tsParseNonConditionalType(),\n      );\n\n      this.expect(tt.question);\n      node.trueType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      this.expect(tt.colon);\n      node.falseType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      return this.finishNode(node, \"TSConditionalType\");\n    }\n\n    isAbstractConstructorSignature(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.lookahead().type === tt._new\n      );\n    }\n\n    tsParseNonConditionalType(): N.TsType {\n      if (this.tsIsStartOfFunctionType()) {\n        return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n      }\n      if (this.match(tt._new)) {\n        // As in `new () => Date`\n        return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n      } else if (this.isAbstractConstructorSignature()) {\n        // As in `abstract new () => Date`\n        return this.tsParseFunctionOrConstructorType(\n          \"TSConstructorType\",\n          /* abstract */ true,\n        );\n      }\n      return this.tsParseUnionTypeOrHigher();\n    }\n\n    tsParseTypeAssertion(): N.TsTypeAssertion {\n      if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n        this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n      }\n\n      const node = this.startNode<N.TsTypeAssertion>();\n      node.typeAnnotation = this.tsInType(() => {\n        this.next(); // \"<\"\n        return this.match(tt._const)\n          ? this.tsParseTypeReference()\n          : this.tsParseType();\n      });\n      this.expect(tt.gt);\n      node.expression = this.parseMaybeUnary();\n      return this.finishNode(node, \"TSTypeAssertion\");\n    }\n\n    tsParseHeritageClause(token: \"extends\"): Array<N.TSInterfaceHeritage>;\n    tsParseHeritageClause(token: \"implements\"): Array<N.TSClassImplements>;\n    tsParseHeritageClause(\n      token: \"extends\" | \"implements\",\n    ): Array<N.TSClassImplements> | Array<N.TSInterfaceHeritage> {\n      const originalStartLoc = this.state.startLoc;\n\n      const delimitedList = this.tsParseDelimitedList(\n        \"HeritageClauseElement\",\n        () => {\n          const node = this.startNode<\n            N.TSClassImplements | N.TSInterfaceHeritage\n          >();\n          node.expression = this.tsParseEntityName();\n          if (this.match(tt.lt)) {\n            node.typeParameters = this.tsParseTypeArguments();\n          }\n\n          return this.finishNode(\n            node,\n            // @ts-expect-error Babel 7 vs Babel 8\n            process.env.BABEL_8_BREAKING\n              ? token === \"extends\"\n                ? \"TSInterfaceHeritage\"\n                : \"TSClassImplements\"\n              : \"TSExpressionWithTypeArguments\",\n          );\n        },\n      );\n\n      if (!delimitedList.length) {\n        this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n          token,\n        });\n      }\n\n      return delimitedList as\n        | Array<N.TSClassImplements>\n        | Array<N.TSInterfaceHeritage>;\n    }\n\n    tsParseInterfaceDeclaration(\n      node: Undone<N.TsInterfaceDeclaration>,\n      properties: {\n        declare?: true;\n      } = {},\n    ): N.TsInterfaceDeclaration | null {\n      if (this.hasFollowingLineBreak()) return null;\n      this.expectContextual(tt._interface);\n      if (properties.declare) node.declare = true;\n      if (tokenIsIdentifier(this.state.type)) {\n        node.id = this.parseIdentifier();\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_INTERFACE);\n      } else {\n        node.id = null;\n        this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n      }\n\n      node.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (this.eat(tt._extends)) {\n        node.extends = this.tsParseHeritageClause(\"extends\");\n      }\n      const body = this.startNode<N.TSInterfaceBody>();\n      body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n      node.body = this.finishNode(body, \"TSInterfaceBody\");\n      return this.finishNode(node, \"TSInterfaceDeclaration\");\n    }\n\n    tsParseTypeAliasDeclaration(\n      node: N.TsTypeAliasDeclaration,\n    ): N.TsTypeAliasDeclaration {\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_TYPE);\n\n      node.typeAnnotation = this.tsInType(() => {\n        node.typeParameters = this.tsTryParseTypeParameters(\n          this.tsParseInOutModifiers,\n        );\n\n        this.expect(tt.eq);\n\n        if (\n          this.isContextual(tt._intrinsic) &&\n          this.lookahead().type !== tt.dot\n        ) {\n          const node = this.startNode<N.TsKeywordType>();\n          this.next();\n          return this.finishNode(node, \"TSIntrinsicKeyword\");\n        }\n\n        return this.tsParseType();\n      });\n\n      this.semicolon();\n      return this.finishNode(node, \"TSTypeAliasDeclaration\");\n    }\n\n    tsInNoContext<T>(cb: () => T): T {\n      const oldContext = this.state.context;\n      this.state.context = [oldContext[0]];\n      try {\n        return cb();\n      } finally {\n        this.state.context = oldContext;\n      }\n    }\n\n    /**\n     * Runs `cb` in a type context.\n     * This should be called one token *before* the first type token,\n     * so that the call to `next()` is run in type context.\n     */\n    tsInType<T>(cb: () => T): T {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inType = oldInType;\n      }\n    }\n\n    tsInDisallowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsInAllowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = false;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsEatThenParseType(token: TokenType): N.TsType | undefined {\n      if (this.match(token)) {\n        return this.tsNextThenParseType();\n      }\n    }\n\n    tsExpectThenParseType(token: TokenType): N.TsType {\n      return this.tsInType(() => {\n        this.expect(token);\n        return this.tsParseType();\n      });\n    }\n\n    tsNextThenParseType(): N.TsType {\n      return this.tsInType(() => {\n        this.next();\n        return this.tsParseType();\n      });\n    }\n\n    tsParseEnumMember(): N.TsEnumMember {\n      const node = this.startNode<N.TsEnumMember>();\n      // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n      node.id = this.match(tt.string)\n        ? super.parseStringLiteral(this.state.value)\n        : this.parseIdentifier(/* liberal */ true);\n      if (this.eat(tt.eq)) {\n        node.initializer = super.parseMaybeAssignAllowIn();\n      }\n      return this.finishNode(node, \"TSEnumMember\");\n    }\n\n    tsParseEnumDeclaration(\n      node: Undone<N.TsEnumDeclaration>,\n      properties: {\n        const?: true;\n        declare?: true;\n      } = {},\n    ): N.TsEnumDeclaration {\n      if (properties.const) node.const = true;\n      if (properties.declare) node.declare = true;\n      this.expectContextual(tt._enum);\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(\n        node.id,\n        node.const ? BindingFlag.TYPE_TS_CONST_ENUM : BindingFlag.TYPE_TS_ENUM,\n      );\n\n      this.expect(tt.braceL);\n      node.members = this.tsParseDelimitedList(\n        \"EnumMembers\",\n        this.tsParseEnumMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return this.finishNode(node, \"TSEnumDeclaration\");\n    }\n\n    tsParseModuleBlock(): N.TsModuleBlock {\n      const node = this.startNode<N.TsModuleBlock>();\n      this.scope.enter(ScopeFlag.OTHER);\n\n      this.expect(tt.braceL);\n      // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n      super.parseBlockOrModuleBlockBody(\n        (node.body = []),\n        /* directives */ undefined,\n        /* topLevel */ true,\n        /* end */ tt.braceR,\n      );\n      this.scope.exit();\n      return this.finishNode(node, \"TSModuleBlock\");\n    }\n\n    tsParseModuleOrNamespaceDeclaration(\n      node: Undone<N.TsModuleDeclaration>,\n      nested: boolean = false,\n    ): N.TsModuleDeclaration {\n      node.id = this.parseIdentifier();\n\n      if (!nested) {\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_NAMESPACE);\n      }\n\n      if (this.eat(tt.dot)) {\n        const inner = this.startNode<N.TsModuleDeclaration>();\n        this.tsParseModuleOrNamespaceDeclaration(inner, true);\n        // @ts-expect-error Fixme: refine typings\n        node.body = inner;\n      } else {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      }\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseAmbientExternalModuleDeclaration(\n      node: N.TsModuleDeclaration,\n    ): N.TsModuleDeclaration {\n      if (this.isContextual(tt._global)) {\n        node.kind = \"global\";\n        node.global = true;\n        node.id = this.parseIdentifier();\n      } else if (this.match(tt.string)) {\n        node.kind = \"module\";\n        node.id = super.parseStringLiteral(this.state.value);\n      } else {\n        this.unexpected();\n      }\n      if (this.match(tt.braceL)) {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      } else {\n        this.semicolon();\n      }\n\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseImportEqualsDeclaration(\n      node: Undone<N.TsImportEqualsDeclaration>,\n      maybeDefaultIdentifier?: N.Identifier | null,\n      isExport?: boolean,\n    ): N.TsImportEqualsDeclaration {\n      node.isExport = isExport || false;\n      node.id = maybeDefaultIdentifier || this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_VALUE_IMPORT);\n      this.expect(tt.eq);\n      const moduleReference = this.tsParseModuleReference();\n      if (\n        node.importKind === \"type\" &&\n        moduleReference.type !== \"TSExternalModuleReference\"\n      ) {\n        this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n      }\n      node.moduleReference = moduleReference;\n      this.semicolon();\n      return this.finishNode(node, \"TSImportEqualsDeclaration\");\n    }\n\n    tsIsExternalModuleReference(): boolean {\n      return (\n        this.isContextual(tt._require) &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      );\n    }\n\n    tsParseModuleReference(): N.TsModuleReference {\n      return this.tsIsExternalModuleReference()\n        ? this.tsParseExternalModuleReference()\n        : this.tsParseEntityName(/* allowReservedWords */ false);\n    }\n\n    tsParseExternalModuleReference(): N.TsExternalModuleReference {\n      const node = this.startNode<N.TsExternalModuleReference>();\n      this.expectContextual(tt._require);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.unexpected();\n      }\n      // For compatibility to estree we cannot call parseLiteral directly here\n      node.expression = super.parseExprAtom() as N.StringLiteral;\n      this.expect(tt.parenR);\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node, \"TSExternalModuleReference\");\n    }\n\n    // Utilities\n\n    tsLookAhead<T>(f: () => T): T {\n      const state = this.state.clone();\n      const res = f();\n      this.state = state;\n      return res;\n    }\n\n    tsTryParseAndCatch<T extends N.NodeBase | undefined | null>(\n      f: () => T,\n    ): T | undefined | null {\n      const result = this.tryParse(\n        abort =>\n          // @ts-expect-error todo(flow->ts)\n          f() || abort(),\n      );\n\n      if (result.aborted || !result.node) return;\n      if (result.error) this.state = result.failState;\n      // @ts-expect-error refine typings\n      return result.node;\n    }\n\n    tsTryParse<T>(f: () => T | undefined | false): T | undefined {\n      const state = this.state.clone();\n      const result = f();\n      if (result !== undefined && result !== false) {\n        return result;\n      }\n      this.state = state;\n    }\n\n    tsTryParseDeclare(nany: any): N.Declaration | undefined {\n      if (this.isLineTerminator()) {\n        return;\n      }\n      let startType = this.state.type;\n      let kind: \"let\" | null;\n\n      if (this.isContextual(tt._let)) {\n        startType = tt._var;\n        kind = \"let\";\n      }\n\n      // @ts-expect-error refine typings\n      return this.tsInAmbientContext(() => {\n        switch (startType) {\n          case tt._function:\n            nany.declare = true;\n            return super.parseFunctionStatement(\n              nany,\n              /* async */ false,\n              /* isHangingDeclaration */ false,\n            );\n          case tt._class:\n            // While this is also set by tsParseExpressionStatement, we need to set it\n            // before parsing the class declaration to know how to register it in the scope.\n            nany.declare = true;\n            return this.parseClass(\n              nany,\n              /* isStatement */ true,\n              /* optionalId */ false,\n            );\n          case tt._enum:\n            return this.tsParseEnumDeclaration(nany, { declare: true });\n          case tt._global:\n            return this.tsParseAmbientExternalModuleDeclaration(nany);\n          case tt._const:\n          case tt._var:\n            if (!this.match(tt._const) || !this.isLookaheadContextual(\"enum\")) {\n              nany.declare = true;\n              return this.parseVarStatement(\n                nany,\n                kind || this.state.value,\n                true,\n              );\n            }\n\n            // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n            this.expect(tt._const);\n            return this.tsParseEnumDeclaration(nany, {\n              const: true,\n              declare: true,\n            });\n          case tt._interface: {\n            const result = this.tsParseInterfaceDeclaration(nany, {\n              declare: true,\n            });\n            if (result) return result;\n          }\n          // fallthrough\n          default:\n            if (tokenIsIdentifier(startType)) {\n              return this.tsParseDeclaration(\n                nany,\n                this.state.value,\n                /* next */ true,\n                /* decorators */ null,\n              );\n            }\n        }\n      });\n    }\n\n    // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n    tsTryParseExportDeclaration(): N.Declaration | undefined {\n      return this.tsParseDeclaration(\n        this.startNode(),\n        this.state.value,\n        /* next */ true,\n        /* decorators */ null,\n      );\n    }\n\n    tsParseExpressionStatement(\n      node: Undone<N.TsModuleDeclaration>,\n      expr: N.Identifier,\n      decorators: N.Decorator[] | null,\n    ): N.Declaration | undefined {\n      switch (expr.name) {\n        case \"declare\": {\n          const declaration = this.tsTryParseDeclare(node);\n          if (declaration) {\n            declaration.declare = true;\n          }\n          return declaration;\n        }\n        case \"global\":\n          // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n          // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n          if (this.match(tt.braceL)) {\n            this.scope.enter(ScopeFlag.TS_MODULE);\n            this.prodParam.enter(ParamKind.PARAM);\n            const mod = node;\n            mod.kind = \"global\";\n            mod.global = true;\n            mod.id = expr;\n            mod.body = this.tsParseModuleBlock();\n            this.scope.exit();\n            this.prodParam.exit();\n            return this.finishNode(mod, \"TSModuleDeclaration\");\n          }\n          break;\n\n        default:\n          return this.tsParseDeclaration(\n            node,\n            expr.name,\n            /* next */ false,\n            decorators,\n          );\n      }\n    }\n\n    // Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n    tsParseDeclaration(\n      node: any,\n      value: string,\n      next: boolean,\n      decorators: N.Decorator[] | null,\n    ): N.Declaration | undefined | null {\n      // no declaration apart from enum can be followed by a line break.\n      switch (value) {\n        case \"abstract\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            (this.match(tt._class) || tokenIsIdentifier(this.state.type))\n          ) {\n            return this.tsParseAbstractDeclaration(node, decorators);\n          }\n          break;\n\n        case \"module\":\n          if (this.tsCheckLineTerminator(next)) {\n            if (this.match(tt.string)) {\n              return this.tsParseAmbientExternalModuleDeclaration(node);\n            } else if (tokenIsIdentifier(this.state.type)) {\n              node.kind = \"module\";\n              return this.tsParseModuleOrNamespaceDeclaration(node);\n            }\n          }\n          break;\n\n        case \"namespace\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            node.kind = \"namespace\";\n            return this.tsParseModuleOrNamespaceDeclaration(node);\n          }\n          break;\n\n        case \"type\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            return this.tsParseTypeAliasDeclaration(node);\n          }\n          break;\n      }\n    }\n\n    tsCheckLineTerminator(next: boolean) {\n      if (next) {\n        if (this.hasFollowingLineBreak()) return false;\n        this.next();\n        return true;\n      }\n      return !this.isLineTerminator();\n    }\n\n    tsTryParseGenericAsyncArrowFunction(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined {\n      if (!this.match(tt.lt)) return;\n\n      const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n      this.state.maybeInArrowParameters = true;\n\n      const res: Undone<N.ArrowFunctionExpression> | undefined =\n        this.tsTryParseAndCatch(() => {\n          const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n          node.typeParameters = this.tsParseTypeParameters(\n            this.tsParseConstModifier,\n          );\n          // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n          super.parseFunctionParams(node);\n          node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n          this.expect(tt.arrow);\n          return node;\n        });\n\n      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n      if (!res) return;\n\n      return super.parseArrowExpression(\n        res,\n        /* params are already set */ null,\n        /* async */ true,\n      );\n    }\n\n    // Used when parsing type arguments from ES productions, where the first token\n    // has been created without state.inType. Thus we need to rescan the lt token.\n    tsParseTypeArgumentsInExpression():\n      | N.TsTypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.tsParseTypeArguments();\n    }\n\n    tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n      const node = this.startNode<N.TsTypeParameterInstantiation>();\n      node.params = this.tsInType(() =>\n        // Temporarily remove a JSX parsing context, which makes us scan different tokens.\n        this.tsInNoContext(() => {\n          this.expect(tt.lt);\n          return this.tsParseDelimitedList(\n            \"TypeParametersOrArguments\",\n            this.tsParseType.bind(this),\n          );\n        }),\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeArguments, node);\n      } else if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n      return this.finishNode(node, \"TSTypeParameterInstantiation\");\n    }\n\n    tsIsDeclarationStart(): boolean {\n      return tokenIsTSDeclarationStart(this.state.type);\n    }\n\n    // ======================================================\n    // OVERRIDES\n    // ======================================================\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.tsIsDeclarationStart()) return false;\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseAssignableListItem(\n      flags: ParseBindingListFlags,\n      decorators: N.Decorator[],\n    ): N.Pattern | N.TSParameterProperty {\n      // Store original location to include modifiers in range\n      const startLoc = this.state.startLoc;\n\n      const modified: ModifierBase = {};\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\n            \"public\",\n            \"private\",\n            \"protected\",\n            \"override\",\n            \"readonly\",\n          ],\n        },\n        modified,\n      );\n      const accessibility = modified.accessibility;\n      const override = modified.override;\n      const readonly = modified.readonly;\n      if (\n        !(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) &&\n        (accessibility || readonly || override)\n      ) {\n        this.raise(TSErrors.UnexpectedParameterModifier, startLoc);\n      }\n\n      const left = this.parseMaybeDefault();\n      if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n        this.parseFunctionParamType(left);\n      }\n      const elt = this.parseMaybeDefault(left.loc.start, left);\n      if (accessibility || readonly || override) {\n        const pp = this.startNodeAt<N.TSParameterProperty>(startLoc);\n        if (decorators.length) {\n          pp.decorators = decorators;\n        }\n        if (accessibility) pp.accessibility = accessibility;\n        if (readonly) pp.readonly = readonly;\n        if (override) pp.override = override;\n        if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n          this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);\n        }\n        pp.parameter = elt as any as N.Identifier | N.AssignmentPattern;\n        return this.finishNode(pp, \"TSParameterProperty\");\n      }\n\n      if (decorators.length) {\n        left.decorators = decorators;\n      }\n\n      return elt;\n    }\n\n    isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n      return (\n        (node.type === \"TSParameterProperty\" &&\n          super.isSimpleParameter(node.parameter)) ||\n        super.isSimpleParameter(node)\n      );\n    }\n\n    tsDisallowOptionalPattern(node: Undone<N.Function>) {\n      for (const param of node.params) {\n        if (\n          param.type !== \"Identifier\" &&\n          (param as any).optional &&\n          !this.state.isAmbientContext\n        ) {\n          this.raise(TSErrors.PatternIsOptional, param);\n        }\n      }\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params: N.Expression[],\n      trailingCommaLoc?: Position | null,\n    ): void {\n      super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n      this.tsDisallowOptionalPattern(node);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n\n      const bodilessType =\n        type === \"FunctionDeclaration\"\n          ? \"TSDeclareFunction\"\n          : type === \"ClassMethod\" || type === \"ClassPrivateMethod\"\n            ? \"TSDeclareMethod\"\n            : undefined;\n      if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n        return this.finishNode(node, bodilessType);\n      }\n      if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n        this.raise(TSErrors.DeclareFunctionHasImplementation, node);\n        if ((node as Undone<N.FunctionDeclaration>).declare) {\n          return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n        }\n      }\n      this.tsDisallowOptionalPattern(node);\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    registerFunctionStatementId(node: N.Function): void {\n      if (!node.body && node.id) {\n        // Function ids are validated after parsing their body.\n        // For bodiless function, we need to do it here.\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_AMBIENT);\n      } else {\n        super.registerFunctionStatementId(node);\n      }\n    }\n\n    tsCheckForInvalidTypeCasts(items: Array<N.Expression | N.SpreadElement>) {\n      items.forEach(node => {\n        if (node?.type === \"TSTypeCastExpression\") {\n          this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n        }\n      });\n    }\n\n    toReferencedList(\n      exprList: Array<N.Expression | undefined | null>,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isInParens?: boolean,\n    ): Array<N.Expression | undefined | null> {\n      // Handles invalid scenarios like: `f(a:b)`, `(a:b);`, and `(a:b,c:d)`.\n      //\n      // Note that `f<T>(a:b)` goes through a different path and is handled\n      // in `parseSubscript` directly.\n      this.tsCheckForInvalidTypeCasts(exprList);\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      if (node.type === \"ArrayExpression\") {\n        this.tsCheckForInvalidTypeCasts(node.elements);\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n        // When ! is consumed as a postfix operator (non-null assertion),\n        // disallow JSX tag forming after. e.g. When parsing `p! < n.p!`\n        // `<n.p` can not be a start of JSX tag\n        this.state.canStartJSXElement = false;\n        this.next();\n\n        const nonNullExpression =\n          this.startNodeAt<N.TsNonNullExpression>(startLoc);\n        nonNullExpression.expression = base;\n        return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n      }\n\n      let isOptionalCall = false;\n      if (\n        this.match(tt.questionDot) &&\n        this.lookaheadCharCode() === charCodes.lessThan\n      ) {\n        if (noCalls) {\n          state.stop = true;\n          return base;\n        }\n        state.optionalChainMember = isOptionalCall = true;\n        this.next();\n      }\n\n      // handles 'f<<T>'\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        let missingParenErrorLoc;\n        // tsTryParseAndCatch is expensive, so avoid if not necessary.\n        // There are number of things we are going to \"maybe\" parse, like type arguments on\n        // tagged template expressions. If any of them fail, walk it back and continue.\n        const result = this.tsTryParseAndCatch(() => {\n          if (!noCalls && this.atPossibleAsyncArrow(base)) {\n            // Almost certainly this is a generic async function `async <T>() => ...\n            // But it might be a call with a type argument `async<T>();`\n            const asyncArrowFn =\n              this.tsTryParseGenericAsyncArrowFunction(startLoc);\n            if (asyncArrowFn) {\n              return asyncArrowFn;\n            }\n          }\n\n          const typeArguments = this.tsParseTypeArgumentsInExpression();\n          if (!typeArguments) return;\n\n          if (isOptionalCall && !this.match(tt.parenL)) {\n            missingParenErrorLoc = this.state.curPosition();\n            return;\n          }\n\n          if (tokenIsTemplate(this.state.type)) {\n            const result = super.parseTaggedTemplateExpression(\n              base,\n              startLoc,\n              state,\n            );\n            result.typeParameters = typeArguments;\n            return result;\n          }\n\n          if (!noCalls && this.eat(tt.parenL)) {\n            const node = this.startNodeAt<\n              N.CallExpression | N.OptionalCallExpression\n            >(startLoc);\n            node.callee = base;\n            // @ts-expect-error (won't be any undefined arguments)\n            node.arguments = this.parseCallExpressionArguments(tt.parenR);\n\n            // Handles invalid case: `f<T>(a:b)`\n            this.tsCheckForInvalidTypeCasts(node.arguments);\n\n            node.typeParameters = typeArguments;\n            if (state.optionalChainMember) {\n              (node as Undone<N.OptionalCallExpression>).optional =\n                isOptionalCall;\n            }\n\n            return this.finishCallExpression(node, state.optionalChainMember);\n          }\n\n          const tokenType = this.state.type;\n          if (\n            // a<b>>c is not (a<b>)>c, but a<(b>>c)\n            tokenType === tt.gt ||\n            // a<b>>>c is not (a<b>)>>c, but a<(b>>>c)\n            tokenType === tt.bitShiftR ||\n            // a<b>c is (a<b)>c\n            (tokenType !== tt.parenL &&\n              tokenCanStartExpression(tokenType) &&\n              !this.hasPrecedingLineBreak())\n          ) {\n            // Bail out.\n            return;\n          }\n\n          const node = this.startNodeAt<N.TsInstantiationExpression>(startLoc);\n          node.expression = base;\n          node.typeParameters = typeArguments;\n          return this.finishNode(node, \"TSInstantiationExpression\");\n        });\n\n        if (missingParenErrorLoc) {\n          this.unexpected(missingParenErrorLoc, tt.parenL);\n        }\n\n        if (result) {\n          if (\n            result.type === \"TSInstantiationExpression\" &&\n            (this.match(tt.dot) ||\n              (this.match(tt.questionDot) &&\n                this.lookaheadCharCode() !== charCodes.leftParenthesis))\n          ) {\n            this.raise(\n              TSErrors.InvalidPropertyAccessAfterInstantiationExpression,\n              this.state.startLoc,\n            );\n          }\n          return result;\n        }\n      }\n\n      return super.parseSubscript(base, startLoc, noCalls, state);\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      const { callee } = node;\n      if (\n        callee.type === \"TSInstantiationExpression\" &&\n        !callee.extra?.parenthesized\n      ) {\n        node.typeParameters = callee.typeParameters;\n        node.callee = callee.expression;\n      }\n    }\n\n    parseExprOp(\n      left: N.Expression,\n      leftStartLoc: Position,\n      minPrec: number,\n    ): N.Expression {\n      let isSatisfies: boolean;\n      if (\n        tokenOperatorPrecedence(tt._in) > minPrec &&\n        !this.hasPrecedingLineBreak() &&\n        (this.isContextual(tt._as) ||\n          (isSatisfies = this.isContextual(tt._satisfies)))\n      ) {\n        const node = this.startNodeAt<\n          N.TsAsExpression | N.TsSatisfiesExpression\n        >(leftStartLoc);\n        node.expression = left;\n        node.typeAnnotation = this.tsInType(() => {\n          this.next(); // \"as\" or \"satisfies\"\n          if (this.match(tt._const)) {\n            if (isSatisfies) {\n              this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n                keyword: \"const\",\n              });\n            }\n            return this.tsParseTypeReference();\n          }\n\n          return this.tsParseType();\n        });\n        this.finishNode(\n          node,\n          isSatisfies ? \"TSSatisfiesExpression\" : \"TSAsExpression\",\n        );\n        // rescan `<`, `>` because they were scanned when this.state.inType was true\n        this.reScan_lt_gt();\n        return this.parseExprOp(\n          // @ts-expect-error todo(flow->ts)\n          node,\n          leftStartLoc,\n          minPrec,\n        );\n      }\n\n      return super.parseExprOp(left, leftStartLoc, minPrec);\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ): void {\n      // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n      // And we have a type checker anyway, so don't bother having the parser do it.\n      if (!this.state.isAmbientContext) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          TSErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    /*\n    Don't bother doing this check in TypeScript code because:\n    1. We may have a nested export statement with the same name:\n      export const x = 0;\n      export namespace N {\n        export const x = 1;\n      }\n    2. We have a type checker to warn us about this sort of thing.\n    */\n    checkDuplicateExports() {}\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        const ch = this.lookaheadCharCode();\n        return isExport\n          ? ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk\n          : ch !== charCodes.equalsTo;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? \"type\" : \"value\";\n      } else {\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    ): N.AnyImport {\n      if (this.match(tt.string)) {\n        node.importKind = \"value\";\n        return super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      let importNode;\n      if (\n        tokenIsIdentifier(this.state.type) &&\n        this.lookaheadCharCode() === charCodes.equalsTo\n      ) {\n        node.importKind = \"value\";\n        return this.tsParseImportEqualsDeclaration(\n          node as Undone<N.TsImportEqualsDeclaration>,\n        );\n      } else if (this.isContextual(tt._type)) {\n        const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n          node as Undone<N.ImportDeclaration>,\n          /* isExport */ false,\n        );\n        if (this.lookaheadCharCode() === charCodes.equalsTo) {\n          return this.tsParseImportEqualsDeclaration(\n            node as Undone<N.TsImportEqualsDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        } else {\n          importNode = super.parseImportSpecifiersAndAfter(\n            node as Undone<N.ImportDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        }\n      } else {\n        importNode = super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      // `import type` can only be used on imports with named imports or with a\n      // default import - but not both\n      if (\n        importNode.importKind === \"type\" &&\n        // @ts-expect-error refine typings\n        importNode.specifiers.length > 1 &&\n        // @ts-expect-error refine typings\n        importNode.specifiers[0].type === \"ImportDefaultSpecifier\"\n      ) {\n        this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n      }\n\n      return importNode;\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      if (this.match(tt._import)) {\n        // `export import A = B;`\n        this.next(); // eat `tt._import`\n        const nodeImportEquals = node as Undone<N.TsImportEqualsDeclaration>;\n        let maybeDefaultIdentifier: N.Identifier | null = null;\n        if (\n          this.isContextual(tt._type) &&\n          // We pass false here, because we are parsing an `import ... =`\n          this.isPotentialImportPhase(/* isExport */ false)\n        ) {\n          maybeDefaultIdentifier = this.parseMaybeImportPhase(\n            nodeImportEquals,\n            /* isExport */ false,\n          );\n        } else {\n          nodeImportEquals.importKind = \"value\";\n        }\n        return this.tsParseImportEqualsDeclaration(\n          nodeImportEquals,\n          maybeDefaultIdentifier,\n          /* isExport */ true,\n        );\n      } else if (this.eat(tt.eq)) {\n        // `export = x;`\n        const assign = node as Undone<N.TsExportAssignment>;\n        assign.expression = super.parseExpression();\n        this.semicolon();\n        this.sawUnambiguousESM = true;\n        return this.finishNode(assign, \"TSExportAssignment\");\n      } else if (this.eatContextual(tt._as)) {\n        // `export as namespace A;`\n        const decl = node as Undone<N.TsNamespaceExportDeclaration>;\n        // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n        this.expectContextual(tt._namespace);\n        decl.id = this.parseIdentifier();\n        this.semicolon();\n        return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n      } else {\n        return super.parseExport(\n          node as Undone<N.ExportAllDeclaration | N.ExportDefaultDeclaration>,\n          decorators,\n        );\n      }\n    }\n\n    isAbstractClass(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.lookahead().type === tt._class\n      );\n    }\n\n    parseExportDefaultExpression(): N.ExportDefaultDeclaration[\"declaration\"] {\n      if (this.isAbstractClass()) {\n        const cls = this.startNode<N.Class>();\n        this.next(); // Skip \"abstract\"\n        cls.abstract = true;\n        return this.parseClass(cls, true, true);\n      }\n\n      // export default interface allowed in:\n      // https://github.com/Microsoft/TypeScript/pull/16040\n      if (this.match(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(\n          this.startNode<N.TsInterfaceDeclaration>(),\n        );\n        if (result) return result;\n      }\n\n      return super.parseExportDefaultExpression();\n    }\n\n    parseVarStatement(\n      node: N.VariableDeclaration,\n      kind: \"var\" | \"let\" | \"const\" | \"using\",\n      allowMissingInitializer: boolean = false,\n    ) {\n      const { isAmbientContext } = this.state;\n      const declaration = super.parseVarStatement(\n        node,\n        kind,\n        allowMissingInitializer || isAmbientContext,\n      );\n\n      if (!isAmbientContext) return declaration;\n\n      for (const { id, init } of declaration.declarations) {\n        // Empty initializer is the easy case that we want.\n        if (!init) continue;\n\n        // var and let aren't ever allowed initializers.\n        if (kind !== \"const\" || !!id.typeAnnotation) {\n          this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n        } else if (\n          !isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))\n        ) {\n          this.raise(\n            TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference,\n            init,\n          );\n        }\n      }\n\n      return declaration;\n    }\n\n    parseStatementContent(\n      flags: ParseStatementFlag,\n      decorators?: N.Decorator[] | null,\n    ): N.Statement {\n      if (this.match(tt._const) && this.isLookaheadContextual(\"enum\")) {\n        const node = this.startNode<N.TsEnumDeclaration>();\n        this.expect(tt._const); // eat 'const'\n        return this.tsParseEnumDeclaration(node, { const: true });\n      }\n\n      if (this.isContextual(tt._enum)) {\n        return this.tsParseEnumDeclaration(\n          this.startNode<N.TsEnumDeclaration>(),\n        );\n      }\n\n      if (this.isContextual(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(this.startNode());\n        if (result) return result;\n      }\n\n      return super.parseStatementContent(flags, decorators);\n    }\n\n    parseAccessModifier(): N.Accessibility | undefined | null {\n      return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n    }\n\n    tsHasSomeModifiers(member: any, modifiers: readonly TsModifier[]): boolean {\n      return modifiers.some(modifier => {\n        if (tsIsAccessModifier(modifier)) {\n          return member.accessibility === modifier;\n        }\n        return !!member[modifier];\n      });\n    }\n\n    tsIsStartOfStaticBlocks() {\n      return (\n        this.isContextual(tt._static) &&\n        this.lookaheadCharCode() === charCodes.leftCurlyBrace\n      );\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const modifiers = [\n        \"declare\",\n        \"private\",\n        \"public\",\n        \"protected\",\n        \"override\",\n        \"abstract\",\n        \"readonly\",\n        \"static\",\n      ] as const;\n      this.tsParseModifiers(\n        {\n          allowedModifiers: modifiers,\n          disallowedModifiers: [\"in\", \"out\"],\n          stopOnStartOfClassStaticBlock: true,\n          errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n        },\n        member,\n      );\n\n      const callParseClassMemberWithIsStatic = () => {\n        if (this.tsIsStartOfStaticBlocks()) {\n          this.next(); // eat \"static\"\n          this.next(); // eat \"{\"\n          if (this.tsHasSomeModifiers(member, modifiers)) {\n            this.raise(\n              TSErrors.StaticBlockCannotHaveModifier,\n              this.state.curPosition(),\n            );\n          }\n          super.parseClassStaticBlock(classBody, member as N.StaticBlock);\n        } else {\n          this.parseClassMemberWithIsStatic(\n            classBody,\n            member,\n            state,\n            !!member.static,\n          );\n        }\n      };\n      if (member.declare) {\n        this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n      } else {\n        callParseClassMemberWithIsStatic();\n      }\n    }\n\n    parseClassMemberWithIsStatic(\n      classBody: N.ClassBody,\n      member: Undone<N.ClassMember | N.TsIndexSignature>,\n      state: N.ParseClassMemberState,\n      isStatic: boolean,\n    ): void {\n      const idx = this.tsTryParseIndexSignature(\n        member as Undone<N.TsIndexSignature>,\n      );\n      if (idx) {\n        classBody.body.push(idx);\n\n        if ((member as any).abstract) {\n          this.raise(TSErrors.IndexSignatureHasAbstract, member);\n        }\n        if ((member as any).accessibility) {\n          this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n            modifier: (member as any).accessibility,\n          });\n        }\n        if ((member as any).declare) {\n          this.raise(TSErrors.IndexSignatureHasDeclare, member);\n        }\n        if ((member as any).override) {\n          this.raise(TSErrors.IndexSignatureHasOverride, member);\n        }\n\n        return;\n      }\n\n      if (!this.state.inAbstractClass && (member as any).abstract) {\n        this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n      }\n\n      if ((member as any).override) {\n        if (!state.hadSuperClass) {\n          this.raise(TSErrors.OverrideNotInSubClass, member);\n        }\n      }\n\n      /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n      super.parseClassMemberWithIsStatic(\n        classBody,\n        member as Undone<N.ClassMember>,\n        state,\n        isStatic,\n      );\n    }\n\n    parsePostMemberNameModifiers(\n      methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n    ): void {\n      const optional = this.eat(tt.question);\n      if (optional) methodOrProp.optional = true;\n\n      if ((methodOrProp as any).readonly && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n      }\n\n      if ((methodOrProp as any).declare && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n      }\n    }\n\n    // Note: The reason we do this in `parseExpressionStatement` and not `parseStatement`\n    // is that e.g. `type()` is valid JS, so we must try parsing that first.\n    // If it's really a type, we will parse `type` as the statement, and can correct it here\n    // by parsing the rest.\n    // @ts-expect-error plugin overrides interfaces\n    parseExpressionStatement(\n      node: Undone<N.ExpressionStatement>,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.Statement {\n      const decl =\n        expr.type === \"Identifier\"\n          ? // @ts-expect-error refine typings\n            this.tsParseExpressionStatement(node, expr, decorators)\n          : undefined;\n      return decl || super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n    shouldParseExportDeclaration(): boolean {\n      if (this.tsIsDeclarationStart()) return true;\n      return super.shouldParseExportDeclaration();\n    }\n\n    // An apparent conditional expression could actually be an optional parameter in an arrow function.\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      // only do the expensive clone if there is a question mark\n      // and if we come from inside parens\n      if (!this.state.maybeInArrowParameters || !this.match(tt.question)) {\n        return super.parseConditional(\n          expr,\n\n          startLoc,\n          refExpressionErrors,\n        );\n      }\n\n      const result = this.tryParse(() =>\n        super.parseConditional(expr, startLoc),\n      );\n\n      if (!result.node) {\n        if (result.error) {\n          /*:: invariant(refExpressionErrors != null) */\n          super.setOptionalParametersError(refExpressionErrors, result.error);\n        }\n\n        return expr;\n      }\n      if (result.error) this.state = result.failState;\n      return result.node;\n    }\n\n    // Note: These \"type casts\" are *not* valid TS expressions.\n    // But we parse them here and change them when completing the arrow function.\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TsTypeCastExpression>(startLoc);\n        typeCastNode.expression = node as N.Expression;\n        typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n      }\n\n      return node;\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (!this.state.isAmbientContext && this.isContextual(tt._declare)) {\n        return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n      }\n\n      // Store original location\n      const startLoc = this.state.startLoc;\n\n      const isDeclare = this.eatContextual(tt._declare);\n\n      if (\n        isDeclare &&\n        (this.isContextual(tt._declare) || !this.shouldParseExportDeclaration())\n      ) {\n        throw this.raise(\n          TSErrors.ExpectedAmbientAfterExportDeclare,\n          this.state.startLoc,\n        );\n      }\n\n      const isIdentifier = tokenIsIdentifier(this.state.type);\n      const declaration: N.Declaration | undefined | null =\n        (isIdentifier && this.tsTryParseExportDeclaration()) ||\n        super.parseExportDeclaration(node);\n\n      if (!declaration) return null;\n\n      if (\n        declaration.type === \"TSInterfaceDeclaration\" ||\n        declaration.type === \"TSTypeAliasDeclaration\" ||\n        isDeclare\n      ) {\n        node.exportKind = \"type\";\n      }\n\n      if (isDeclare) {\n        // Reset location to include `declare` in range\n        this.resetStartLocation(declaration, startLoc);\n\n        declaration.declare = true;\n      }\n\n      return declaration;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType?: BindingFlag,\n    ): void {\n      if ((!isStatement || optionalId) && this.isContextual(tt._implements)) {\n        return;\n      }\n\n      super.parseClassId(\n        node,\n        isStatement,\n        optionalId,\n        (node as any).declare\n          ? BindingFlag.TYPE_TS_AMBIENT\n          : BindingFlag.TYPE_CLASS,\n      );\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n    }\n\n    parseClassPropertyAnnotation(\n      node: N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty,\n    ): void {\n      if (!node.optional) {\n        if (this.eat(tt.bang)) {\n          node.definite = true;\n        } else if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n    }\n\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      this.parseClassPropertyAnnotation(node);\n\n      if (\n        this.state.isAmbientContext &&\n        !(node.readonly && !node.typeAnnotation) &&\n        this.match(tt.eq)\n      ) {\n        this.raise(\n          TSErrors.DeclareClassFieldHasInitializer,\n          this.state.startLoc,\n        );\n      }\n      if (node.abstract && this.match(tt.eq)) {\n        const { key } = node;\n        this.raise(\n          TSErrors.AbstractPropertyHasInitializer,\n          this.state.startLoc,\n          {\n            propertyName:\n              key.type === \"Identifier\" && !node.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          },\n        );\n      }\n\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      // @ts-expect-error abstract may not index node\n      if (node.abstract) {\n        this.raise(TSErrors.PrivateElementHasAbstract, node);\n      }\n\n      // @ts-expect-error accessibility may not index node\n      if (node.accessibility) {\n        this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n          // @ts-expect-error refine typings\n          modifier: node.accessibility,\n        });\n      }\n\n      this.parseClassPropertyAnnotation(node);\n      return super.parseClassPrivateProperty(node);\n    }\n\n    parseClassAccessorProperty(\n      node: N.ClassAccessorProperty,\n    ): N.ClassAccessorProperty {\n      this.parseClassPropertyAnnotation(node);\n      if (node.optional) {\n        this.raise(TSErrors.AccessorCannotBeOptional, node);\n      }\n      return super.parseClassAccessorProperty(node);\n    }\n\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters && isConstructor) {\n        this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n      }\n\n      // @ts-expect-error declare does not exist in ClassMethod\n      const { declare = false, kind } = method;\n\n      if (declare && (kind === \"get\" || kind === \"set\")) {\n        this.raise(TSErrors.DeclareAccessor, method, { kind });\n      }\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    declareClassPrivateMethodInScope(\n      node: N.ClassPrivateMethod | N.TSDeclareMethod,\n      kind: number,\n    ) {\n      if (node.type === \"TSDeclareMethod\") return;\n      // This happens when using the \"estree\" plugin.\n      if (\n        (node as N.Node).type === \"MethodDefinition\" &&\n        !Object.hasOwn(\n          (node as unknown as N.EstreeMethodDefinition).value,\n          \"body\",\n        )\n      ) {\n        return;\n      }\n\n      super.declareClassPrivateMethodInScope(node, kind);\n    }\n\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      // handle `extends f<<T>\n      if (node.superClass && (this.match(tt.lt) || this.match(tt.bitShiftL))) {\n        node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n      }\n      if (this.eatContextual(tt._implements)) {\n        node.implements = this.tsParseHeritageClause(\"implements\");\n      }\n    }\n\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) prop.typeParameters = typeParameters;\n\n      return super.parseObjPropValue(\n        prop,\n\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n    }\n\n    parseFunctionParams(node: N.Function, isConstructor: boolean): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // `let x: number;`\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\" | \"using\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (\n        decl.id.type === \"Identifier\" &&\n        !this.hasPrecedingLineBreak() &&\n        this.eat(tt.bang)\n      ) {\n        decl.definite = true;\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) {\n        decl.id.typeAnnotation = type;\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeAnnotation();\n      }\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n      let state: State | undefined | null;\n      let jsx;\n      let typeCast;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        // Prefer to parse JSX if possible. But may be an arrow fn.\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` or `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (!jsx?.error && !this.match(tt.lt)) {\n        return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n      }\n\n      // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n      // If the state was cloned in the JSX parsing branch above but there\n      // have been any error in the tryParse call, this.state is set to state\n      // so we still need to clone it.\n      if (!state || state === this.state) state = this.state.clone();\n\n      let typeParameters: N.TsTypeParameterDeclaration | undefined | null;\n      // We need to explicitly annotate 'abort' for microsoft/TypeScript#58170\n      const arrow = this.tryParse((abort: () => never) => {\n        // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n        typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n        const expr = super.parseMaybeAssign(\n          refExpressionErrors,\n          afterLeftParse,\n        );\n\n        if (\n          expr.type !== \"ArrowFunctionExpression\" ||\n          expr.extra?.parenthesized\n        ) {\n          abort();\n        }\n\n        // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n        if (typeParameters?.params.length !== 0) {\n          this.resetStartLocationFromNode(expr, typeParameters);\n        }\n        expr.typeParameters = typeParameters;\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            this.hasPlugin(\"jsx\") &&\n            expr.typeParameters.params.length === 1 &&\n            !expr.typeParameters.extra?.trailingComma\n          ) {\n            // report error if single type parameter used without trailing comma.\n            const parameter = expr.typeParameters\n              .params[0] as N.TsTypeParameter;\n            if (!parameter.constraint) {\n              // A single type parameter must either have constraints\n              // or a trailing comma, otherwise it's ambiguous with JSX.\n              this.raise(\n                TSErrors.SingleTypeParameterWithoutTrailingComma,\n                createPositionWithColumnOffset(parameter.loc.end, 1),\n                {\n                  typeParameterName: process.env.BABEL_8_BREAKING\n                    ? (parameter.name as N.Identifier).name\n                    : (parameter.name as string),\n                },\n              );\n            }\n          }\n        }\n\n        return expr;\n      }, state);\n\n      /*:: invariant(arrow.node != null) */\n      if (!arrow.error && !arrow.aborted) {\n        // This error is reported outside of the this.tryParse call so that\n        // in case of <T>(x) => 2, we don't consider <T>(x) as a type assertion\n        // because of this error.\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (!jsx) {\n        // Try parsing a type cast instead of an arrow function.\n        // This will never happen outside of JSX.\n        // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n        assert(!this.hasPlugin(\"jsx\"));\n\n        // This will start with a type assertion (via parseMaybeUnary).\n        // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n        typeCast = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n        /*:: invariant(!typeCast.aborted) */\n        /*:: invariant(typeCast.node != null) */\n        if (!typeCast.error) return typeCast.node;\n      }\n\n      if (jsx?.node) {\n        /*:: invariant(jsx.failState) */\n        this.state = jsx.failState;\n        return jsx.node;\n      }\n\n      if (arrow.node) {\n        /*:: invariant(arrow.failState) */\n        this.state = arrow.failState;\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (typeCast?.node) {\n        /*:: invariant(typeCast.failState) */\n        this.state = typeCast.failState;\n        return typeCast.node;\n      }\n\n      throw jsx?.error || arrow.error || typeCast?.error;\n    }\n\n    reportReservedArrowTypeParam(node: any) {\n      if (\n        node.params.length === 1 &&\n        !node.params[0].constraint &&\n        !node.extra?.trailingComma &&\n        this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")\n      ) {\n        this.raise(TSErrors.ReservedArrowTypeParam, node);\n      }\n    }\n\n    // Handle type assertions\n    parseMaybeUnary(\n      refExpressionErrors?: ExpressionErrors | null,\n      sawUnary?: boolean,\n    ): N.Expression {\n      if (!this.hasPlugin(\"jsx\") && this.match(tt.lt)) {\n        return this.tsParseTypeAssertion();\n      }\n      return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n    }\n\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // This is different from how the TS parser does it.\n        // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n        const result = this.tryParse(abort => {\n          const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n            tt.colon,\n          );\n          if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n          return returnType;\n        });\n\n        if (result.aborted) return;\n\n        if (!result.thrown) {\n          if (result.error) this.state = result.failState;\n          // @ts-expect-error refine typings\n          node.returnType = result.node;\n        }\n      }\n\n      return super.parseArrow(node);\n    }\n\n    // Allow type annotations inside of a parameter list.\n    parseFunctionParamType(param: N.Pattern) {\n      if (this.eat(tt.question)) {\n        (param as any as N.Identifier).optional = true;\n      }\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) param.typeAnnotation = type;\n      this.resetEndLocation(param);\n\n      return param;\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      switch (node.type) {\n        case \"TSTypeCastExpression\":\n          return this.isAssignable(node.expression, isBinding);\n        case \"TSParameterProperty\":\n          return true;\n        default:\n          return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      switch (node.type) {\n        case \"ParenthesizedExpression\":\n          this.toAssignableParenthesizedExpression(node, isLHS);\n          break;\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n          if (isLHS) {\n            this.expressionScope.recordArrowParameterBindingError(\n              TSErrors.UnexpectedTypeCastInParameter,\n              node,\n            );\n          } else {\n            this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n          }\n          this.toAssignable(node.expression, isLHS);\n          break;\n        case \"AssignmentExpression\":\n          if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n            node.left = this.typeCastToParameter(node.left) as N.Assignable;\n          }\n        /* fall through */\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableParenthesizedExpression(\n      node: N.ParenthesizedExpression,\n      isLHS: boolean,\n    ): void {\n      switch (node.expression.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n        case \"ParenthesizedExpression\":\n          this.toAssignable(node.expression, isLHS);\n          break;\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    checkToRestConversion(node: N.Node, allowPattern: boolean): void {\n      switch (node.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n        case \"TSNonNullExpression\":\n          this.checkToRestConversion(node.expression, false);\n          break;\n        default:\n          super.checkToRestConversion(node, allowPattern);\n      }\n    }\n\n    isValidLVal(\n      type:\n        | \"TSTypeCastExpression\"\n        | \"TSParameterProperty\"\n        | \"TSNonNullExpression\"\n        | \"TSInstantiationExpression\"\n        | \"TSAsExpression\"\n        | \"TSSatisfiesExpression\"\n        | \"TSTypeAssertion\",\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      switch (type) {\n        // Allow \"typecasts\" to appear on the left of assignment expressions,\n        // because it may be in an arrow function.\n        // e.g. `const f = (foo: number = 0) => foo;`\n        case \"TSTypeCastExpression\":\n          return true;\n        case \"TSParameterProperty\":\n          return \"parameter\";\n        case \"TSNonNullExpression\":\n        case \"TSInstantiationExpression\":\n          return \"expression\";\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n          return (\n            (binding !== BindingFlag.TYPE_NONE || !isUnparenthesizedInAssign) &&\n            ([\"expression\", true] as [string, boolean])\n          );\n        default:\n          return super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n      }\n    }\n\n    parseBindingAtom(): N.Pattern {\n      if (this.state.type === tt._this) {\n        return this.parseIdentifier(/* liberal */ true);\n      }\n      return super.parseBindingAtom();\n    }\n\n    parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {\n      // handles `@f<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n        if (this.match(tt.parenL)) {\n          const call = super.parseMaybeDecoratorArguments(\n            expr,\n          ) as N.CallExpression;\n          call.typeParameters = typeArguments;\n          return call;\n        }\n\n        this.unexpected(null, tt.parenL);\n      }\n\n      return super.parseMaybeDecoratorArguments(expr);\n    }\n\n    checkCommaAfterRest(\n      close: (typeof charCodes)[keyof typeof charCodes],\n    ): boolean {\n      if (\n        this.state.isAmbientContext &&\n        this.match(tt.comma) &&\n        this.lookaheadCharCode() === close\n      ) {\n        this.next();\n        return false;\n      }\n      return super.checkCommaAfterRest(close);\n    }\n\n    // === === === === === === === === === === === === === === === ===\n    // Note: All below methods are duplicates of something in flow.js.\n    // Not sure what the best way to combine these is.\n    // === === === === === === === === === === === === === === === ===\n\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    isClassProperty(): boolean {\n      return (\n        this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n      );\n    }\n\n    parseMaybeDefault(\n      startLoc?: Position | null,\n      left?: Pattern | null,\n    ): N.Pattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    // ensure that inside types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      if (this.state.inType) {\n        if (code === charCodes.greaterThan) {\n          this.finishOp(tt.gt, 1);\n          return;\n        }\n        if (code === charCodes.lessThan) {\n          this.finishOp(tt.lt, 1);\n          return;\n        }\n      }\n      super.getTokenFromCode(code);\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    toAssignableList(\n      exprList: Expression[],\n      trailingCommaLoc: Position | undefined | null,\n      isLHS: boolean,\n    ): void {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (expr?.type === \"TSTypeCastExpression\") {\n          exprList[i] = this.typeCastToParameter(expr);\n        }\n      }\n      super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n    }\n\n    typeCastToParameter(node: N.TsTypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    shouldParseArrow(params: Array<N.Node>) {\n      if (this.match(tt.colon)) {\n        return params.every(expr => this.isAssignable(expr, true));\n      }\n      return super.shouldParseArrow(params);\n    }\n\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    canHaveLeadingDecorator() {\n      // Avoid unnecessary lookahead in checking for abstract class unless needed!\n      return super.canHaveLeadingDecorator() || this.isAbstractClass();\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      // handles `<Component<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsTryParseAndCatch(() =>\n          this.tsParseTypeArgumentsInExpression(),\n        );\n        if (typeArguments) node.typeParameters = typeArguments;\n      }\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    getGetterSetterExpectedParamCount(\n      method: N.ObjectMethod | N.ClassMethod,\n    ): number {\n      const baseCount = super.getGetterSetterExpectedParamCount(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      const firstParam = params[0];\n      const hasContextParam = firstParam && this.isThisParam(firstParam);\n\n      return hasContextParam ? baseCount + 1 : baseCount;\n    }\n\n    parseCatchClauseParam(): N.Pattern {\n      const param = super.parseCatchClauseParam();\n      const type = this.tsTryParseTypeAnnotation();\n\n      if (type) {\n        param.typeAnnotation = type;\n        this.resetEndLocation(param);\n      }\n\n      return param;\n    }\n\n    tsInAmbientContext<T>(cb: () => T): T {\n      const { isAmbientContext: oldIsAmbientContext, strict: oldStrict } =\n        this.state;\n      this.state.isAmbientContext = true;\n      this.state.strict = false;\n      try {\n        return cb();\n      } finally {\n        this.state.isAmbientContext = oldIsAmbientContext;\n        this.state.strict = oldStrict;\n      }\n    }\n\n    parseClass<T extends N.Class>(\n      node: Undone<T>,\n      isStatement: boolean,\n      optionalId?: boolean,\n    ): T {\n      const oldInAbstractClass = this.state.inAbstractClass;\n      this.state.inAbstractClass = !!(node as any).abstract;\n      try {\n        return super.parseClass(node, isStatement, optionalId);\n      } finally {\n        this.state.inAbstractClass = oldInAbstractClass;\n      }\n    }\n\n    tsParseAbstractDeclaration(\n      node: any,\n      decorators: N.Decorator[] | null,\n    ): N.ClassDeclaration | N.TsInterfaceDeclaration | undefined | null {\n      if (this.match(tt._class)) {\n        node.abstract = true;\n        return this.maybeTakeDecorators(\n          decorators,\n          this.parseClass<N.ClassDeclaration>(\n            node as N.ClassDeclaration,\n            /* isStatement */ true,\n            /* optionalId */ false,\n          ),\n        );\n      } else if (this.isContextual(tt._interface)) {\n        // for invalid abstract interface\n\n        // To avoid\n        //   abstract interface\n        //   Foo {}\n        if (!this.hasFollowingLineBreak()) {\n          node.abstract = true;\n          this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, node);\n          return this.tsParseInterfaceDeclaration(\n            node as N.TsInterfaceDeclaration,\n          );\n        }\n      } else {\n        this.unexpected(null, tt._class);\n      }\n    }\n\n    parseMethod<\n      T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope?: boolean,\n    ) {\n      const method = super.parseMethod<T>(\n        node,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error todo(flow->ts) property not defined for all types in union\n      if (method.abstract) {\n        const hasBody = this.hasPlugin(\"estree\")\n          ? // @ts-expect-error estree typings\n            !!method.value.body\n          : !!method.body;\n        if (hasBody) {\n          const { key } = method;\n          this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n            methodName:\n              key.type === \"Identifier\" && !method.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          });\n        }\n      }\n      return method;\n    }\n\n    tsParseTypeParameterName(): N.Identifier | string {\n      const typeName: N.Identifier = this.parseIdentifier();\n      return process.env.BABEL_8_BREAKING ? typeName : typeName.name;\n    }\n\n    shouldParseAsAmbientContext(): boolean {\n      return !!this.getPluginOption(\"typescript\", \"dts\");\n    }\n\n    parse() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.parse();\n    }\n\n    getExpression() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.getExpression();\n    }\n\n    parseExportSpecifier(\n      node: Undone<N.ExportSpecifier>,\n      isString: boolean,\n      isInTypeExport: boolean,\n      isMaybeTypeOnly: boolean,\n    ) {\n      if (!isString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          node,\n          /* isImport */ false,\n          isInTypeExport,\n        );\n        return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n      }\n      node.exportKind = \"value\";\n      return super.parseExportSpecifier(\n        node,\n        isString,\n        isInTypeExport,\n        isMaybeTypeOnly,\n      );\n    }\n\n    parseImportSpecifier(\n      specifier: Undone<N.ImportSpecifier>,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      if (!importedIsString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          specifier,\n          /* isImport */ true,\n          isInTypeOnlyImport,\n        );\n        return this.finishNode<N.ImportSpecifier>(specifier, \"ImportSpecifier\");\n      }\n      specifier.importKind = \"value\";\n      return super.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        isInTypeOnlyImport,\n        isMaybeTypeOnly,\n        isInTypeOnlyImport\n          ? BindingFlag.TYPE_TS_TYPE_IMPORT\n          : BindingFlag.TYPE_TS_VALUE_IMPORT,\n      );\n    }\n\n    parseTypeOnlyImportExportSpecifier(\n      node: any,\n      isImport: boolean,\n      isInTypeOnlyImportExport: boolean,\n    ): void {\n      const leftOfAsKey = isImport ? \"imported\" : \"local\";\n      const rightOfAsKey = isImport ? \"local\" : \"exported\";\n\n      let leftOfAs = node[leftOfAsKey];\n      let rightOfAs;\n\n      let hasTypeSpecifier = false;\n      let canParseAsKeyword = true;\n\n      const loc = leftOfAs.loc.start;\n\n      // https://github.com/microsoft/TypeScript/blob/fc4f9d83d5939047aa6bb2a43965c6e9bbfbc35b/src/compiler/parser.ts#L7411-L7456\n      // import { type } from \"mod\";          - hasTypeSpecifier: false, leftOfAs: type\n      // import { type as } from \"mod\";       - hasTypeSpecifier: true,  leftOfAs: as\n      // import { type as as } from \"mod\";    - hasTypeSpecifier: false, leftOfAs: type, rightOfAs: as\n      // import { type as as as } from \"mod\"; - hasTypeSpecifier: true,  leftOfAs: as,   rightOfAs: as\n      if (this.isContextual(tt._as)) {\n        // { type as ...? }\n        const firstAs = this.parseIdentifier();\n        if (this.isContextual(tt._as)) {\n          // { type as as ...? }\n          const secondAs = this.parseIdentifier();\n          if (tokenIsKeywordOrIdentifier(this.state.type)) {\n            // { type as as something }\n            hasTypeSpecifier = true;\n            leftOfAs = firstAs;\n            rightOfAs = isImport\n              ? this.parseIdentifier()\n              : this.parseModuleExportName();\n            canParseAsKeyword = false;\n          } else {\n            // { type as as }\n            rightOfAs = secondAs;\n            canParseAsKeyword = false;\n          }\n        } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n          // { type as something }\n          canParseAsKeyword = false;\n          rightOfAs = isImport\n            ? this.parseIdentifier()\n            : this.parseModuleExportName();\n        } else {\n          // { type as }\n          hasTypeSpecifier = true;\n          leftOfAs = firstAs;\n        }\n      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n        // { type something ...? }\n        hasTypeSpecifier = true;\n        if (isImport) {\n          leftOfAs = this.parseIdentifier(true);\n          if (!this.isContextual(tt._as)) {\n            this.checkReservedWord(\n              leftOfAs.name,\n              leftOfAs.loc.start,\n              true,\n              true,\n            );\n          }\n        } else {\n          leftOfAs = this.parseModuleExportName();\n        }\n      }\n      if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n        this.raise(\n          isImport\n            ? TSErrors.TypeModifierIsUsedInTypeImports\n            : TSErrors.TypeModifierIsUsedInTypeExports,\n          loc,\n        );\n      }\n\n      node[leftOfAsKey] = leftOfAs;\n      node[rightOfAsKey] = rightOfAs;\n\n      const kindKey = isImport ? \"importKind\" : \"exportKind\";\n      node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n      if (canParseAsKeyword && this.eatContextual(tt._as)) {\n        node[rightOfAsKey] = isImport\n          ? this.parseIdentifier()\n          : this.parseModuleExportName();\n      }\n      if (!node[rightOfAsKey]) {\n        node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);\n      }\n      if (isImport) {\n        this.checkIdentifier(\n          node[rightOfAsKey],\n          hasTypeSpecifier\n            ? BindingFlag.TYPE_TS_TYPE_IMPORT\n            : BindingFlag.TYPE_TS_VALUE_IMPORT,\n        );\n      }\n    }\n  };\n\nfunction isPossiblyLiteralEnum(expression: N.Expression): boolean {\n  if (expression.type !== \"MemberExpression\") return false;\n\n  const { computed, property } = expression;\n\n  if (\n    computed &&\n    property.type !== \"StringLiteral\" &&\n    (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)\n  ) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n\n// If a const declaration has no type annotation and is initialized to\n// a string literal, numeric literal, or enum reference, then it is\n// allowed. In an ideal world, we'd check whether init was *actually* an\n// enum reference, but we allow anything that \"could be\" a literal enum\n// in `isPossiblyLiteralEnum` since we don't have all the information\n// that the typescript compiler has.\nfunction isValidAmbientConstInitializer(\n  expression: N.Expression,\n  estree: boolean,\n): boolean {\n  const { type } = expression;\n  if (expression.extra?.parenthesized) {\n    return false;\n  }\n  if (estree) {\n    if (type === \"Literal\") {\n      const { value } = expression;\n      if (typeof value === \"string\" || typeof value === \"boolean\") {\n        return true;\n      }\n    }\n  } else {\n    if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n      return true;\n    }\n  }\n  if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n    return true;\n  }\n  if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n    return true;\n  }\n  if (isPossiblyLiteralEnum(expression)) {\n    return true;\n  }\n  return false;\n}\n\nfunction isNumber(expression: N.Expression, estree: boolean): boolean {\n  if (estree) {\n    return (\n      expression.type === \"Literal\" &&\n      (typeof expression.value === \"number\" || \"bigint\" in expression)\n    );\n  }\n  return (\n    expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\"\n  );\n}\n\nfunction isNegativeNumber(expression: N.Expression, estree: boolean): boolean {\n  if (expression.type === \"UnaryExpression\") {\n    const { operator, argument } = expression;\n    if (operator === \"-\" && isNumber(argument, estree)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isUncomputedMemberExpressionChain(expression: N.Expression): boolean {\n  if (expression.type === \"Identifier\") return true;\n  if (expression.type !== \"MemberExpression\" || expression.computed) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n","import * as charCodes from \"charcodes\";\n\nimport { tokenLabelName, tt } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport { ParseErrorEnum } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { Position } from \"../util/location.ts\";\n\ntype PossiblePlaceholders = {\n  Identifier: N.Identifier;\n  StringLiteral: N.StringLiteral;\n  Expression: N.Expression;\n  Statement: N.Statement;\n  Declaration: N.Declaration;\n  BlockStatement: N.BlockStatement;\n  ClassBody: N.ClassBody;\n  Pattern: N.Pattern;\n};\nexport type PlaceholderTypes = keyof PossiblePlaceholders;\n\ntype NodeOf<T extends keyof PossiblePlaceholders> = PossiblePlaceholders[T];\n// todo: when there  is proper union type for Node\n// type NodeOf<T extends PlaceholderTypes> = Extract<N.Node, { type: T }>;\n\n// todo: Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T extends PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\n/* eslint sort-keys: \"error\" */\nconst PlaceholderErrors = ParseErrorEnum`placeholders`({\n  ClassNameIsRequired: \"A class name is required.\",\n  UnexpectedSpace: \"Unexpected space in placeholder.\",\n});\n\nexport default (superClass: typeof Parser) =>\n  class PlaceholdersParserMixin extends superClass implements Parser {\n    parsePlaceholder<T extends PlaceholderTypes>(\n      expectedNode: T,\n    ): /*?N.Placeholder<T>*/ MaybePlaceholder<T> | undefined {\n      if (this.match(tt.placeholder)) {\n        const node = this.startNode<N.Placeholder<T>>();\n        this.next();\n        this.assertNoSpace();\n\n        // We can't use this.parseIdentifier because\n        // we don't want nested placeholders.\n        node.name = super.parseIdentifier(/* liberal */ true);\n\n        this.assertNoSpace();\n        this.expect(tt.placeholder);\n        return this.finishPlaceholder(node, expectedNode);\n      }\n    }\n\n    finishPlaceholder<T extends PlaceholderTypes>(\n      node: Undone<N.Placeholder> | Undone<NodeOf<PlaceholderTypes>>,\n      expectedNode: T,\n    ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n      let placeholder = node as unknown as N.Placeholder<T>;\n\n      if (!placeholder.expectedNode || !placeholder.type) {\n        placeholder = this.finishNode(\n          placeholder,\n          \"Placeholder\",\n        ) as unknown as N.Placeholder<T>;\n      }\n\n      placeholder.expectedNode = expectedNode;\n      return placeholder as unknown as MaybePlaceholder<T>;\n    }\n\n    /* ============================================================ *\n     * tokenizer/index.js                                           *\n     * ============================================================ */\n\n    getTokenFromCode(code: number) {\n      if (\n        code === charCodes.percentSign &&\n        this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n      ) {\n        this.finishOp(tt.placeholder, 2);\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(\n      refExpressionErrors?: ExpressionErrors | null,\n    ): MaybePlaceholder<\"Expression\"> {\n      return (\n        this.parsePlaceholder(\"Expression\") ||\n        super.parseExprAtom(refExpressionErrors)\n      );\n    }\n\n    parseIdentifier(liberal?: boolean): MaybePlaceholder<\"Identifier\"> {\n      // NOTE: This function only handles identifiers outside of\n      // expressions and binding patterns, since they are already\n      // handled by the parseExprAtom and parseBindingAtom functions.\n      // This is needed, for example, to parse \"class %%NAME%% {}\".\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal)\n      );\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ) {\n      // Sometimes we call #checkReservedWord(node.name), expecting\n      // that node is an Identifier. If it is a Placeholder, name\n      // will be undefined.\n      if (word !== undefined) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/lval.js                                               *\n     * ============================================================ */\n\n    parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n      return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"Placeholder\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean): void {\n      if (\n        node &&\n        node.type === \"Placeholder\" &&\n        node.expectedNode === \"Expression\"\n      ) {\n        node.expectedNode = \"Pattern\";\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/statement.js                                          *\n     * ============================================================ */\n\n    chStartsBindingIdentifier(ch: number, pos: number): boolean {\n      if (super.chStartsBindingIdentifier(ch, pos)) {\n        return true;\n      }\n\n      // Accept \"let %%\" as the start of \"let %%placeholder%%\", as though the\n      // placeholder were an identifier.\n      const nextToken = this.lookahead();\n      if (nextToken.type === tt.placeholder) {\n        return true;\n      }\n\n      return false;\n    }\n\n    verifyBreakContinue(\n      node: N.BreakStatement | N.ContinueStatement,\n      isBreak: boolean,\n    ) {\n      // @ts-expect-error: node.label could be Placeholder\n      if (node.label && node.label.type === \"Placeholder\") return;\n      super.verifyBreakContinue(node, isBreak);\n    }\n\n    // @ts-expect-error Plugin will override parser interface\n    parseExpressionStatement(\n      node: MaybePlaceholder<\"Statement\">,\n      expr: MaybePlaceholder<\"Expression\">,\n    ): MaybePlaceholder<\"Statement\"> {\n      // @ts-expect-error placeholder typings\n      if (expr.type !== \"Placeholder\" || expr.extra?.parenthesized) {\n        // @ts-expect-error placeholder typings\n        return super.parseExpressionStatement(node, expr);\n      }\n\n      if (this.match(tt.colon)) {\n        // @ts-expect-error placeholder typings\n        const stmt: N.LabeledStatement = node;\n        stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n        this.next();\n        stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n        return this.finishNode(stmt, \"LabeledStatement\");\n      }\n\n      this.semicolon();\n      const stmtPlaceholder = node as unknown as N.Placeholder<\"Statement\">;\n      stmtPlaceholder.name = (expr as N.Placeholder).name;\n      return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n    }\n\n    parseBlock(\n      allowDirectives?: boolean,\n      createNewLexicalScope?: boolean,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): MaybePlaceholder<\"BlockStatement\"> {\n      return (\n        this.parsePlaceholder(\"BlockStatement\") ||\n        super.parseBlock(\n          allowDirectives,\n          createNewLexicalScope,\n          afterBlockParse,\n        )\n      );\n    }\n\n    parseFunctionId(\n      requireId?: boolean,\n    ): MaybePlaceholder<\"Identifier\"> | undefined | null {\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId)\n      );\n    }\n    // @ts-expect-error Plugin will override parser interface\n    parseClass<T extends N.Class>(\n      node: T,\n      isStatement: /* T === ClassDeclaration */ boolean,\n      optionalId?: boolean,\n    ): T {\n      const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n      this.next();\n      const oldStrict = this.state.strict;\n\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (placeholder) {\n        if (\n          this.match(tt._extends) ||\n          this.match(tt.placeholder) ||\n          this.match(tt.braceL)\n        ) {\n          node.id = placeholder;\n        } else if (optionalId || !isStatement) {\n          node.id = null;\n          node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n          return this.finishNode(node, type);\n        } else {\n          throw this.raise(\n            PlaceholderErrors.ClassNameIsRequired,\n            this.state.startLoc,\n          );\n        }\n      } else {\n        this.parseClassId(node, isStatement, optionalId);\n      }\n\n      super.parseClassSuper(node);\n      node.body =\n        this.parsePlaceholder(\"ClassBody\") ||\n        super.parseClassBody(!!node.superClass, oldStrict);\n      return this.finishNode(node, type);\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseExport(node, decorators);\n\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // export %%DECL%%;\n        node2.specifiers = [];\n        node2.source = null;\n        node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n        return this.finishNode(node2, \"ExportNamedDeclaration\");\n      }\n\n      // export %%NAME%% from \"foo\";\n      this.expectPlugin(\"exportDefaultFrom\");\n      const specifier = this.startNode<N.ExportDefaultSpecifier>();\n      specifier.exported = placeholder;\n      node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n      return super.parseExport(node2, decorators);\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.match(tt._default)) {\n        const next = this.nextTokenStart();\n        if (this.isUnparsedContextual(next, \"from\")) {\n          if (\n            this.input.startsWith(\n              tokenLabelName(tt.placeholder),\n              this.nextTokenStartSince(next + 4),\n            )\n          ) {\n            return true;\n          }\n        }\n      }\n      return super.isExportDefaultSpecifier();\n    }\n\n    maybeParseExportDefaultSpecifier(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      maybeDefaultIdentifier: N.Identifier | null,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      if ((node as N.ExportNamedDeclaration).specifiers?.length) {\n        // \"export %%NAME%%\" has already been parsed by #parseExport.\n        return true;\n      }\n      return super.maybeParseExportDefaultSpecifier(\n        node,\n        maybeDefaultIdentifier,\n      );\n    }\n\n    checkExport(node: N.ExportNamedDeclaration): void {\n      const { specifiers } = node;\n      if (specifiers?.length) {\n        node.specifiers = specifiers.filter(\n          // @ts-expect-error placeholder typings\n          node => node.exported.type === \"Placeholder\",\n        );\n      }\n      super.checkExport(node);\n      node.specifiers = specifiers;\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration>,\n    ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseImport(node);\n\n      node.specifiers = [];\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // import %%STRING%%;\n        node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n        this.semicolon();\n        return this.finishNode(node, \"ImportDeclaration\");\n      }\n\n      // import %%DEFAULT%% ...\n      const specifier =\n        this.startNodeAtNode<N.ImportDefaultSpecifier>(placeholder);\n      specifier.local = placeholder;\n      node.specifiers.push(\n        this.finishNode(specifier, \"ImportDefaultSpecifier\"),\n      );\n\n      if (this.eat(tt.comma)) {\n        // import %%DEFAULT%%, * as ...\n        const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n        // import %%DEFAULT%%, { ...\n        if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n      }\n\n      this.expectContextual(tt._from);\n      node.source = this.parseImportSource();\n      this.semicolon();\n      return this.finishNode(node, \"ImportDeclaration\");\n    }\n\n    parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n      // import ... from %%STRING%%;\n\n      return (\n        this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource()\n      );\n    }\n\n    // Throws if the current token and the prev one are separated by a space.\n    assertNoSpace(): void {\n      if (\n        this.state.start >\n        this.offsetToSourcePos(this.state.lastTokEndLoc.index)\n      ) {\n        this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);\n      }\n    }\n  };\n","import type Parser from \"../parser/index.ts\";\nimport { tokenIsIdentifier, tt } from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nexport default (superClass: typeof Parser) =>\n  class V8IntrinsicMixin extends superClass implements Parser {\n    parseV8Intrinsic(): N.Expression {\n      if (this.match(tt.modulo)) {\n        const v8IntrinsicStartLoc = this.state.startLoc;\n        // let the `loc` of Identifier starts from `%`\n        const node = this.startNode<N.Identifier>();\n        this.next(); // eat '%'\n        if (tokenIsIdentifier(this.state.type)) {\n          const name = this.parseIdentifierName();\n          const identifier = this.createIdentifier(node, name);\n          // @ts-expect-error: avoid mutating AST types\n          identifier.type = \"V8IntrinsicIdentifier\";\n          if (this.match(tt.parenL)) {\n            return identifier;\n          }\n        }\n        this.unexpected(v8IntrinsicStartLoc);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      return (\n        this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors)\n      );\n    }\n  };\n","import type Parser from \"./parser/index.ts\";\nimport type { PluginConfig } from \"./typings.ts\";\n\nexport type Plugin = PluginConfig;\n\nexport type PluginList = PluginConfig[];\n\nexport type MixinPlugin = (\n  superClass: new (...args: any) => Parser,\n) => new (...args: any) => Parser;\n\nconst PIPELINE_PROPOSALS = process.env.BABEL_8_BREAKING\n  ? [\"fsharp\", \"hack\"]\n  : [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\n\nexport function validatePlugins(pluginsMap: Map<string, any>) {\n  if (pluginsMap.has(\"decorators\")) {\n    if (pluginsMap.has(\"decorators-legacy\")) {\n      throw new Error(\n        \"Cannot use the decorators and decorators-legacy plugin together\",\n      );\n    }\n\n    const decoratorsBeforeExport =\n      pluginsMap.get(\"decorators\").decoratorsBeforeExport;\n    if (\n      decoratorsBeforeExport != null &&\n      typeof decoratorsBeforeExport !== \"boolean\"\n    ) {\n      throw new Error(\n        \"'decoratorsBeforeExport' must be a boolean, if specified.\",\n      );\n    }\n\n    const allowCallParenthesized =\n      pluginsMap.get(\"decorators\").allowCallParenthesized;\n    if (\n      allowCallParenthesized != null &&\n      typeof allowCallParenthesized !== \"boolean\"\n    ) {\n      throw new Error(\"'allowCallParenthesized' must be a boolean.\");\n    }\n  }\n\n  if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n    throw new Error(\"Cannot combine flow and typescript plugins.\");\n  }\n\n  if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n    throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n  }\n\n  if (pluginsMap.has(\"pipelineOperator\")) {\n    const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n\n    if (!PIPELINE_PROPOSALS.includes(proposal)) {\n      const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n      throw new Error(\n        `\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`,\n      );\n    }\n\n    const tupleSyntaxIsHash = process.env.BABEL_8_BREAKING\n      ? pluginsMap.has(\"recordAndTuple\")\n      : pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\";\n\n    if (proposal === \"hack\") {\n      if (pluginsMap.has(\"placeholders\")) {\n        throw new Error(\n          \"Cannot combine placeholders plugin and Hack-style pipes.\",\n        );\n      }\n\n      if (pluginsMap.has(\"v8intrinsic\")) {\n        throw new Error(\n          \"Cannot combine v8intrinsic plugin and Hack-style pipes.\",\n        );\n      }\n\n      const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n\n      if (!TOPIC_TOKENS.includes(topicToken)) {\n        const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n\n        throw new Error(\n          `\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`,\n        );\n      }\n\n      if (topicToken === \"#\" && tupleSyntaxIsHash) {\n        throw new Error(\n          `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n        );\n      }\n    } else if (proposal === \"smart\" && tupleSyntaxIsHash) {\n      throw new Error(\n        `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"smart\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n      );\n    }\n  }\n\n  if (pluginsMap.has(\"moduleAttributes\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.\",\n      );\n    } else {\n      if (\n        pluginsMap.has(\"deprecatedImportAssert\") ||\n        pluginsMap.has(\"importAssertions\")\n      ) {\n        throw new Error(\n          \"Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.\",\n        );\n      }\n      const moduleAttributesVersionPluginOption =\n        pluginsMap.get(\"moduleAttributes\").version;\n      if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n        throw new Error(\n          \"The 'moduleAttributes' plugin requires a 'version' option,\" +\n            \" representing the last proposal update. Currently, the\" +\n            \" only supported value is 'may-2020'.\",\n        );\n      }\n    }\n  }\n  if (pluginsMap.has(\"importAssertions\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`importAssertions` has been removed in Babel 8, please use import attributes instead.\" +\n          \" To use the non-standard `assert` syntax you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else if (pluginsMap.has(\"deprecatedImportAssert\")) {\n      throw new Error(\n        \"Cannot combine importAssertions and deprecatedImportAssert plugins.\",\n      );\n    }\n  }\n  if (\n    !pluginsMap.has(\"deprecatedImportAssert\") &&\n    pluginsMap.has(\"importAttributes\") &&\n    pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax\n  ) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"The 'importAttributes' plugin has been removed in Babel 8. If you need to enable support \" +\n          \"for the deprecated `assert` syntax, you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else {\n      pluginsMap.set(\"deprecatedImportAssert\", {});\n    }\n  }\n\n  if (pluginsMap.has(\"recordAndTuple\")) {\n    const syntaxType = pluginsMap.get(\"recordAndTuple\").syntaxType;\n    if (syntaxType != null) {\n      if (process.env.BABEL_8_BREAKING) {\n        if (syntaxType === \"hash\") {\n          throw new Error(\n            'The syntaxType option is no longer required in Babel 8. You can safely remove { syntaxType: \"hash\" } from the recordAndTuple config.',\n          );\n        } else {\n          throw new Error(\n            'The syntaxType option is no longer required in Babel 8. Please remove { syntaxType: \"bar\" } from the recordAndTuple config and migrate to the hash syntax #{} and #[].',\n          );\n        }\n      } else {\n        const RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\n        if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {\n          throw new Error(\n            \"The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: \" +\n              RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"),\n          );\n        }\n      }\n    }\n  }\n\n  if (\n    pluginsMap.has(\"asyncDoExpressions\") &&\n    !pluginsMap.has(\"doExpressions\")\n  ) {\n    const error = new Error(\n      \"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\",\n    );\n    // @ts-expect-error so @babel/core can provide better error message\n    error.missingPlugins = \"doExpressions\";\n    throw error;\n  }\n\n  if (\n    pluginsMap.has(\"optionalChainingAssign\") &&\n    pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\"\n  ) {\n    throw new Error(\n      \"The 'optionalChainingAssign' plugin requires a 'version' option,\" +\n        \" representing the last proposal update. Currently, the\" +\n        \" only supported value is '2023-07'.\",\n    );\n  }\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (pluginsMap.has(\"decimal\")) {\n      throw new Error(\n        \"The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n      );\n    }\n    if (pluginsMap.has(\"importReflection\")) {\n      throw new Error(\n        \"The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and \" +\n          \"replace 'import module' with 'import source' in your code.\",\n      );\n    }\n  }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree.ts\";\nimport flow from \"./plugins/flow/index.ts\";\nimport jsx from \"./plugins/jsx/index.ts\";\nimport typescript from \"./plugins/typescript/index.ts\";\nimport placeholders from \"./plugins/placeholders.ts\";\nimport v8intrinsic from \"./plugins/v8intrinsic.ts\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins = {\n  estree,\n  jsx,\n  flow,\n  typescript,\n  v8intrinsic,\n  placeholders,\n};\n\nexport const mixinPluginNames = Object.keys(mixinPlugins) as ReadonlyArray<\n  \"estree\" | \"jsx\" | \"flow\" | \"typescript\" | \"v8intrinsic\" | \"placeholders\"\n>;\n","import type { PluginList } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n  sourceType?: SourceType;\n  sourceFilename?: string;\n  startIndex?: number;\n  startColumn?: number;\n  startLine?: number;\n  allowAwaitOutsideFunction?: boolean;\n  allowReturnOutsideFunction?: boolean;\n  allowNewTargetOutsideFunction?: boolean;\n  allowImportExportEverywhere?: boolean;\n  allowSuperOutsideMethod?: boolean;\n  allowUndeclaredExports?: boolean;\n  plugins?: PluginList;\n  strictMode?: boolean | undefined | null;\n  ranges?: boolean;\n  tokens?: boolean;\n  createImportExpressions?: boolean;\n  createParenthesizedExpressions?: boolean;\n  errorRecovery?: boolean;\n  attachComment?: boolean;\n  annexB?: boolean;\n}\n\ntype OptionsWithDefaults = { [P in keyof Options]-?: Options[P] };\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n  return {\n    // Source type (\"script\" or \"module\") for different semantics\n    sourceType: \"script\",\n    // Source filename.\n    sourceFilename: undefined,\n    // Index (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startIndex: 0,\n    // Column (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startColumn: 0,\n    // Line (1-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startLine: 1,\n    // When enabled, await at the top level is not considered an\n    // error.\n    allowAwaitOutsideFunction: false,\n    // When enabled, a return at the top level is not considered an\n    // error.\n    allowReturnOutsideFunction: false,\n    // When enabled, new.target outside a function or class is not\n    // considered an error.\n    allowNewTargetOutsideFunction: false,\n    // When enabled, import/export statements are not constrained to\n    // appearing at the top of the program.\n    allowImportExportEverywhere: false,\n    // TODO\n    allowSuperOutsideMethod: false,\n    // When enabled, export statements can reference undeclared variables.\n    allowUndeclaredExports: false,\n    // An array of plugins to enable\n    plugins: [],\n    // TODO\n    strictMode: null,\n    // Nodes have their start and end characters offsets recorded in\n    // `start` and `end` properties (directly on the node, rather than\n    // the `loc` object, which holds line/column data. To also add a\n    // [semi-standardized][range] `range` property holding a `[start,\n    // end]` array with the same numbers, set the `ranges` option to\n    // `true`.\n    //\n    // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n    ranges: false,\n    // Adds all parsed tokens to a `tokens` property on the `File` node\n    tokens: false,\n    // Whether to create ImportExpression AST nodes (if false\n    // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n    createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n    // Whether to create ParenthesizedExpression AST nodes (if false\n    // the parser sets extra.parenthesized on the expression nodes instead).\n    createParenthesizedExpressions: false,\n    // When enabled, errors are attached to the AST instead of being directly thrown.\n    // Some errors will still throw, because @babel/parser can't always recover.\n    errorRecovery: false,\n    // When enabled, comments will be attached to adjacent AST nodes as one of\n    // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n    // is vital to preserve comments after transform. If you don't print AST back,\n    // consider set this option to `false` for performance\n    attachComment: true,\n    // When enabled, the parser will support Annex B syntax.\n    // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n    annexB: true,\n  };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n  // https://github.com/babel/babel/pull/16918\n  // `options` is accessed frequently, please make sure it is a fast object.\n  // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n  const options: any = createDefaultOptions();\n\n  if (opts == null) {\n    return options;\n  }\n  if (opts.annexB != null && opts.annexB !== false) {\n    throw new Error(\"The `annexB` option can only be set to `false`.\");\n  }\n\n  for (const key of Object.keys(options) as (keyof Options)[]) {\n    if (opts[key] != null) options[key] = opts[key];\n  }\n\n  if (options.startLine === 1) {\n    if (opts.startIndex == null && options.startColumn > 0) {\n      options.startIndex = options.startColumn;\n    } else if (opts.startColumn == null && options.startIndex > 0) {\n      options.startColumn = options.startIndex;\n    }\n  } else if (opts.startColumn == null || opts.startIndex == null) {\n    if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n      );\n    }\n  }\n\n  return options;\n}\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {\n  tokenCanStartExpression,\n  tokenIsAssignment,\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsOperator,\n  tokenIsPostfix,\n  tokenIsPrefix,\n  tokenIsRightAssociative,\n  tokenIsTemplate,\n  tokenKeywordOrIdentifierIsKeyword,\n  tokenLabelName,\n  tokenOperatorPrecedence,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport LValParser from \"./lval.ts\";\nimport {\n  isKeyword,\n  isReservedWord,\n  isStrictReservedWord,\n  isStrictBindReservedWord,\n  isIdentifierStart,\n  canBeReservedWord,\n} from \"../util/identifier.ts\";\nimport {\n  type Position,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport * as charCodes from \"charcodes\";\nimport { ScopeFlag, BindingFlag } from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newArrowHeadScope,\n  newAsyncArrowScope,\n  newExpressionScope,\n} from \"../util/expression-scope.ts\";\nimport { Errors, type ParseError } from \"../parse-error.ts\";\nimport {\n  UnparenthesizedPipeBodyDescriptions,\n  type UnparenthesizedPipeBodyTypes,\n} from \"../parse-error/pipeline-operator-errors.ts\";\nimport { setInnerComments } from \"./comments.ts\";\nimport { cloneIdentifier, type Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\n\nimport type { SourceType } from \"../options.ts\";\n\nexport default abstract class ExpressionParser extends LValParser {\n  // Forward-declaration: defined in statement.js\n  abstract parseBlock(\n    allowDirectives?: boolean,\n    createNewLexicalScope?: boolean,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement;\n  abstract parseClass(\n    node: N.Class,\n    isStatement: boolean,\n    optionalId?: boolean,\n  ): N.Class;\n  abstract parseDecorators(allowExport?: boolean): void;\n  abstract parseFunction<T extends N.NormalFunction>(\n    node: T,\n    statement?: number,\n    allowExpressionBody?: boolean,\n    isAsync?: boolean,\n  ): T;\n  abstract parseFunctionParams(node: N.Function, isConstructor?: boolean): void;\n  abstract parseBlockOrModuleBlockBody(\n    body: N.Statement[],\n    directives: N.Directive[] | null | undefined,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void;\n  abstract parseProgram(\n    program: N.Program,\n    end: TokenType,\n    sourceType?: SourceType,\n  ): N.Program;\n\n  // For object literal, check if property __proto__ has been used more than once.\n  // If the expression is a destructuring assignment, then __proto__ may appear\n  // multiple times. Otherwise, __proto__ is a duplicated key.\n\n  // For record expression, check if property __proto__ exists\n\n  checkProto(\n    prop: N.ObjectMember | N.SpreadElement,\n    isRecord: boolean | undefined | null,\n    protoRef: {\n      used: boolean;\n    },\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void {\n    if (\n      prop.type === \"SpreadElement\" ||\n      this.isObjectMethod(prop) ||\n      prop.computed ||\n      prop.shorthand\n    ) {\n      return;\n    }\n\n    const key = prop.key as\n      | N.Identifier\n      | N.StringLiteral\n      | N.NumericLiteral\n      | N.BigIntLiteral;\n    // It is either an Identifier or a String/NumericLiteral\n    const name = key.type === \"Identifier\" ? key.name : key.value;\n\n    if (name === \"__proto__\") {\n      if (isRecord) {\n        this.raise(Errors.RecordNoProto, key);\n        return;\n      }\n      if (protoRef.used) {\n        if (refExpressionErrors) {\n          // Store the first redefinition's position, otherwise ignore because\n          // we are parsing ambiguous pattern\n          if (refExpressionErrors.doubleProtoLoc === null) {\n            refExpressionErrors.doubleProtoLoc = key.loc.start;\n          }\n        } else {\n          this.raise(Errors.DuplicateProto, key);\n        }\n      }\n\n      protoRef.used = true;\n    }\n  }\n\n  shouldExitDescending(\n    expr: N.Expression | N.PrivateName,\n    potentialArrowAt: number,\n  ): expr is N.ArrowFunctionExpression {\n    return (\n      expr.type === \"ArrowFunctionExpression\" &&\n      this.offsetToSourcePos(expr.start) === potentialArrowAt\n    );\n  }\n\n  // Convenience method to parse an Expression only\n  getExpression(this: Parser): N.Expression & N.ParserOutput {\n    this.enterInitialScopes();\n    this.nextToken();\n    const expr = this.parseExpression() as N.Expression & N.ParserOutput;\n    if (!this.match(tt.eof)) {\n      this.unexpected();\n    }\n    // Unlike parseTopLevel, we need to drain remaining commentStacks\n    // because the top level node is _not_ Program.\n    this.finalizeRemainingComments();\n    expr.comments = this.comments;\n    expr.errors = this.state.errors;\n    if (this.options.tokens) {\n      expr.tokens = this.tokens;\n    }\n    return expr;\n  }\n\n  // ### Expression parsing\n\n  // These nest, from the most general expression type at the top to\n  // 'atomic', nondivisible expression types at the bottom. Most of\n  // the functions will simply let the function (s) below them parse,\n  // and, *if* the syntactic construct they handle is present, wrap\n  // the AST node that the inner parser gave them in another node.\n\n  // Parse a full expression.\n  // - `disallowIn`\n  //   is used to forbid the `in` operator (in for loops initialization expressions)\n  //   When `disallowIn` is true, the production parameter [In] is not present.\n\n  // - `refExpressionErrors `\n  //   provides reference for storing '=' operator inside shorthand\n  //   property assignment in contexts where both object expression\n  //   and object pattern might appear (so it's possible to raise\n  //   delayed syntax error at correct position).\n\n  parseExpression(\n    this: Parser,\n    disallowIn?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    if (disallowIn) {\n      return this.disallowInAnd(() =>\n        this.parseExpressionBase(refExpressionErrors),\n      );\n    }\n    return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n  }\n\n  // https://tc39.es/ecma262/#prod-Expression\n  parseExpressionBase(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const expr = this.parseMaybeAssign(refExpressionErrors);\n    if (this.match(tt.comma)) {\n      const node = this.startNodeAt<N.SequenceExpression>(startLoc);\n      node.expressions = [expr];\n      while (this.eat(tt.comma)) {\n        node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n      }\n      this.toReferencedList(node.expressions);\n      return this.finishNode(node, \"SequenceExpression\");\n    }\n    return expr;\n  }\n\n  // Set [~In] parameter for assignment expression\n  parseMaybeAssignDisallowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.disallowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // Set [+In] parameter for assignment expression\n  parseMaybeAssignAllowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.allowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // This method is only used by\n  // the typescript and flow plugins.\n  setOptionalParametersError(\n    refExpressionErrors: ExpressionErrors,\n    resultError?: ParseError<any>,\n  ) {\n    refExpressionErrors.optionalParametersLoc =\n      resultError?.loc ?? this.state.startLoc;\n  }\n\n  // Parse an assignment expression. This includes applications of\n  // operators like `+=`.\n  // https://tc39.es/ecma262/#prod-AssignmentExpression\n  parseMaybeAssign(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    if (this.isContextual(tt._yield)) {\n      if (this.prodParam.hasYield) {\n        let left = this.parseYield();\n        if (afterLeftParse) {\n          left = afterLeftParse.call(this, left, startLoc);\n        }\n        return left;\n      }\n    }\n\n    let ownExpressionErrors;\n    if (refExpressionErrors) {\n      ownExpressionErrors = false;\n    } else {\n      refExpressionErrors = new ExpressionErrors();\n      ownExpressionErrors = true;\n    }\n    const { type } = this.state;\n\n    if (type === tt.parenL || tokenIsIdentifier(type)) {\n      this.state.potentialArrowAt = this.state.start;\n    }\n\n    let left = this.parseMaybeConditional(refExpressionErrors);\n    if (afterLeftParse) {\n      left = afterLeftParse.call(this, left, startLoc);\n    }\n    if (tokenIsAssignment(this.state.type)) {\n      const node = this.startNodeAt<N.AssignmentExpression>(startLoc);\n      const operator = this.state.value;\n      node.operator = operator;\n\n      if (this.match(tt.eq)) {\n        this.toAssignable(left, /* isLHS */ true);\n        node.left = left;\n\n        const startIndex = startLoc.index;\n        if (\n          refExpressionErrors.doubleProtoLoc != null &&\n          refExpressionErrors.doubleProtoLoc.index >= startIndex\n        ) {\n          refExpressionErrors.doubleProtoLoc = null; // reset because double __proto__ is valid in assignment expression\n        }\n        if (\n          refExpressionErrors.shorthandAssignLoc != null &&\n          refExpressionErrors.shorthandAssignLoc.index >= startIndex\n        ) {\n          refExpressionErrors.shorthandAssignLoc = null; // reset because shorthand default was used correctly\n        }\n        if (\n          refExpressionErrors.privateKeyLoc != null &&\n          refExpressionErrors.privateKeyLoc.index >= startIndex\n        ) {\n          this.checkDestructuringPrivate(refExpressionErrors);\n          refExpressionErrors.privateKeyLoc = null; // reset because `({ #x: x })` is an assignable pattern\n        }\n      } else {\n        node.left = left as unknown as N.Assignable; // checked a few lines further down\n      }\n\n      this.next();\n      node.right = this.parseMaybeAssign();\n      this.checkLVal(left, this.finishNode(node, \"AssignmentExpression\"));\n      // @ts-expect-error todo(flow->ts) improve node types\n      return node;\n    } else if (ownExpressionErrors) {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n\n    return left;\n  }\n\n  // Parse a ternary conditional (`?:`) operator.\n  // https://tc39.es/ecma262/#prod-ConditionalExpression\n\n  parseMaybeConditional(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprOps(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseConditional(expr, startLoc, refExpressionErrors);\n  }\n\n  parseConditional(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (this.eat(tt.question)) {\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssignAllowIn();\n      this.expect(tt.colon);\n      node.alternate = this.parseMaybeAssign();\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n    return expr;\n  }\n\n  parseMaybeUnaryOrPrivate(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression | N.PrivateName {\n    return this.match(tt.privateName)\n      ? this.parsePrivateName()\n      : this.parseMaybeUnary(refExpressionErrors);\n  }\n\n  // Start the precedence parser.\n  // https://tc39.es/ecma262/#prod-ShortCircuitExpression\n\n  parseExprOps(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseExprOp(expr, startLoc, -1);\n  }\n\n  // Parse binary operators with the operator precedence parsing\n  // algorithm. `left` is the left-hand side of the operator.\n  // `minPrec` provides context that allows the function to stop and\n  // defer further parser to one of its callers when it encounters an\n  // operator that has a lower precedence than the set it is parsing.\n\n  parseExprOp(\n    this: Parser,\n    left: N.Expression | N.PrivateName,\n    leftStartLoc: Position,\n    minPrec: number,\n  ): N.Expression {\n    if (this.isPrivateName(left)) {\n      // https://tc39.es/ecma262/#prod-RelationalExpression\n      // RelationalExpression [In, Yield, Await]\n      //   [+In] PrivateIdentifier in ShiftExpression[?Yield, ?Await]\n\n      const value = this.getPrivateNameSV(left);\n\n      if (\n        minPrec >= tokenOperatorPrecedence(tt._in) ||\n        !this.prodParam.hasIn ||\n        !this.match(tt._in)\n      ) {\n        this.raise(Errors.PrivateInExpectedIn, left, {\n          identifierName: value,\n        });\n      }\n\n      this.classScope.usePrivateName(value, left.loc.start);\n    }\n\n    const op = this.state.type;\n    if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(tt._in))) {\n      let prec = tokenOperatorPrecedence(op);\n      if (prec > minPrec) {\n        if (op === tt.pipeline) {\n          this.expectPlugin(\"pipelineOperator\");\n          if (this.state.inFSharpPipelineDirectBody) {\n            // PrivateName must be followed by `in`, but we have `|>`\n            return left as N.Expression;\n          }\n          this.checkPipelineAtInfixOperator(left as N.Expression, leftStartLoc);\n        }\n        const node = this.startNodeAt<N.LogicalExpression | N.BinaryExpression>(\n          leftStartLoc,\n        );\n        node.left = left;\n        node.operator = this.state.value;\n\n        const logical = op === tt.logicalOR || op === tt.logicalAND;\n        const coalesce = op === tt.nullishCoalescing;\n\n        if (coalesce) {\n          // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n          // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n          prec = tokenOperatorPrecedence(tt.logicalAND);\n        }\n\n        this.next();\n\n        if (\n          op === tt.pipeline &&\n          // @ts-expect-error Remove this in Babel 8\n          this.hasPlugin([\"pipelineOperator\", { proposal: \"minimal\" }])\n        ) {\n          if (this.state.type === tt._await && this.prodParam.hasAwait) {\n            throw this.raise(\n              Errors.UnexpectedAwaitAfterPipelineBody,\n              this.state.startLoc,\n            );\n          }\n        }\n\n        node.right = this.parseExprOpRightExpr(op, prec);\n        const finishedNode = this.finishNode(\n          node,\n          logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\",\n        );\n        /* this check is for all ?? operators\n         * a ?? b && c for this example\n         * when op is coalesce and nextOp is logical (&&), throw at the pos of nextOp that it can not be mixed.\n         * Symmetrically it also throws when op is logical and nextOp is coalesce\n         */\n        const nextOp = this.state.type;\n        if (\n          (coalesce && (nextOp === tt.logicalOR || nextOp === tt.logicalAND)) ||\n          (logical && nextOp === tt.nullishCoalescing)\n        ) {\n          throw this.raise(\n            Errors.MixingCoalesceWithLogical,\n            this.state.startLoc,\n          );\n        }\n\n        return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n      }\n    }\n    // PrivateName is followed by `in` and handled by the previous if statement\n    return left as N.Expression;\n  }\n\n  // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n  // operator expressions, then apply any operator-specific functions.\n\n  parseExprOpRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    switch (op) {\n      case tt.pipeline:\n        switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n          case \"hack\":\n            return this.withTopicBindingContext(() => {\n              return this.parseHackPipeBody();\n            });\n\n          // @ts-expect-error Remove this in Babel 8\n          case \"smart\":\n            return this.withTopicBindingContext(() => {\n              if (this.prodParam.hasYield && this.isContextual(tt._yield)) {\n                throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);\n              }\n              return this.parseSmartPipelineBodyInStyle(\n                this.parseExprOpBaseRightExpr(op, prec),\n                startLoc,\n              );\n            });\n\n          case \"fsharp\":\n            return this.withSoloAwaitPermittingContext(() => {\n              return this.parseFSharpPipelineBody(prec);\n            });\n        }\n\n      // Falls through.\n      default:\n        return this.parseExprOpBaseRightExpr(op, prec);\n    }\n  }\n\n  // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n  // binary-operator expressions without applying any operator-specific functions.\n\n  parseExprOpBaseRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    return this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      tokenIsRightAssociative(op) ? prec - 1 : prec,\n    );\n  }\n\n  parseHackPipeBody(this: Parser): N.Expression {\n    const { startLoc } = this.state;\n    const body = this.parseMaybeAssign();\n    const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(\n      // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type '\"ArrowFunctionExpression\" | \"YieldExpression\" | \"AssignmentExpression\" | \"ConditionalExpression\"'.\n      body.type,\n    );\n\n    // TODO: Check how to handle type casts in Flow and TS once they are supported\n    if (requiredParentheses && !body.extra?.parenthesized) {\n      this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n        type: body.type as UnparenthesizedPipeBodyTypes,\n      });\n    }\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      // A Hack pipe body must use the topic reference at least once.\n      this.raise(Errors.PipeTopicUnused, startLoc);\n    }\n\n    return body;\n  }\n\n  checkExponentialAfterUnary(\n    node: N.AwaitExpression | Undone<N.UnaryExpression>,\n  ) {\n    if (this.match(tt.exponent)) {\n      this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n    }\n  }\n\n  // Parse unary operators, both prefix and postfix.\n  // https://tc39.es/ecma262/#prod-UnaryExpression\n  parseMaybeUnary(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    sawUnary?: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const isAwait = this.isContextual(tt._await);\n\n    if (isAwait && this.recordAwaitIfAllowed()) {\n      this.next();\n      const expr = this.parseAwait(startLoc);\n      if (!sawUnary) this.checkExponentialAfterUnary(expr);\n      return expr;\n    }\n    const update = this.match(tt.incDec);\n    const node = this.startNode<N.UnaryExpression | N.UpdateExpression>();\n    if (tokenIsPrefix(this.state.type)) {\n      node.operator = this.state.value;\n      node.prefix = true;\n\n      if (this.match(tt._throw)) {\n        this.expectPlugin(\"throwExpressions\");\n      }\n      const isDelete = this.match(tt._delete);\n      this.next();\n\n      node.argument = this.parseMaybeUnary(null, true);\n\n      this.checkExpressionErrors(refExpressionErrors, true);\n\n      if (this.state.strict && isDelete) {\n        const arg = node.argument;\n\n        if (arg.type === \"Identifier\") {\n          this.raise(Errors.StrictDelete, node);\n        } else if (this.hasPropertyAsPrivateName(arg)) {\n          this.raise(Errors.DeletePrivateField, node);\n        }\n      }\n\n      if (!update) {\n        if (!sawUnary) {\n          this.checkExponentialAfterUnary(node as Undone<N.UnaryExpression>);\n        }\n        return this.finishNode(node, \"UnaryExpression\");\n      }\n    }\n\n    const expr = this.parseUpdate(\n      // @ts-expect-error using \"Undone\" node as \"done\"\n      node,\n      update,\n      refExpressionErrors,\n    );\n\n    if (isAwait) {\n      const { type } = this.state;\n      const startsExpr = this.hasPlugin(\"v8intrinsic\")\n        ? tokenCanStartExpression(type)\n        : tokenCanStartExpression(type) && !this.match(tt.modulo);\n      if (startsExpr && !this.isAmbiguousAwait()) {\n        this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n        return this.parseAwait(startLoc);\n      }\n    }\n\n    return expr;\n  }\n\n  // https://tc39.es/ecma262/#prod-UpdateExpression\n  parseUpdate(\n    this: Parser,\n    node: N.Expression,\n    update: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (update) {\n      const updateExpressionNode = node as Undone<N.UpdateExpression>;\n      this.checkLVal(\n        updateExpressionNode.argument,\n        this.finishNode(updateExpressionNode, \"UpdateExpression\"),\n      );\n      return node;\n    }\n\n    const startLoc = this.state.startLoc;\n    let expr = this.parseExprSubscripts(refExpressionErrors);\n    if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n    while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n      const node = this.startNodeAt<N.UpdateExpression>(startLoc);\n      node.operator = this.state.value;\n      node.prefix = false;\n      node.argument = expr;\n      this.next();\n      this.checkLVal(expr, (expr = this.finishNode(node, \"UpdateExpression\")));\n    }\n    return expr;\n  }\n\n  // Parse call, dot, and `[]`-subscript expressions.\n  // https://tc39.es/ecma262/#prod-LeftHandSideExpression\n  parseExprSubscripts(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprAtom(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseSubscripts(expr, startLoc);\n  }\n\n  parseSubscripts(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls?: boolean | null,\n  ): N.Expression {\n    const state = {\n      optionalChainMember: false,\n      maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n      stop: false,\n    };\n    do {\n      base = this.parseSubscript(base, startLoc, noCalls, state);\n\n      // After parsing a subscript, this isn't \"async\" for sure.\n      state.maybeAsyncArrow = false;\n    } while (!state.stop);\n    return base;\n  }\n\n  /**\n   * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n   *   state.optionalChainMember to indicate that the member is currently in OptionalChain\n   */\n  parseSubscript(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const { type } = this.state;\n    if (!noCalls && type === tt.doubleColon) {\n      return this.parseBind(base, startLoc, noCalls, state);\n    } else if (tokenIsTemplate(type)) {\n      return this.parseTaggedTemplateExpression(base, startLoc, state);\n    }\n\n    let optional = false;\n\n    if (type === tt.questionDot) {\n      if (noCalls) {\n        this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n        if (this.lookaheadCharCode() === charCodes.leftParenthesis) {\n          // stop at `?.` when parsing `new a?.()`\n          state.stop = true;\n          return base;\n        }\n      }\n      state.optionalChainMember = optional = true;\n      this.next();\n    }\n\n    if (!noCalls && this.match(tt.parenL)) {\n      return this.parseCoverCallAndAsyncArrowHead(\n        base,\n        startLoc,\n        state,\n        optional,\n      );\n    } else {\n      const computed = this.eat(tt.bracketL);\n      if (computed || optional || this.eat(tt.dot)) {\n        return this.parseMember(base, startLoc, state, computed, optional);\n      } else {\n        state.stop = true;\n        return base;\n      }\n    }\n  }\n\n  // base[?Yield, ?Await] [ Expression[+In, ?Yield, ?Await] ]\n  // base[?Yield, ?Await] . IdentifierName\n  // base[?Yield, ?Await] . PrivateIdentifier\n  //   where `base` is one of CallExpression, MemberExpression and OptionalChain\n  parseMember(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    computed: boolean,\n    optional: boolean,\n  ): N.OptionalMemberExpression | N.MemberExpression {\n    const node = this.startNodeAt<\n      N.OptionalMemberExpression | N.MemberExpression\n    >(startLoc);\n    node.object = base;\n    node.computed = computed;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(tt.bracketR);\n    } else if (this.match(tt.privateName)) {\n      if (base.type === \"Super\") {\n        this.raise(Errors.SuperPrivateField, startLoc);\n      }\n      this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n      node.property = this.parsePrivateName();\n    } else {\n      node.property = this.parseIdentifier(true);\n    }\n\n    if (state.optionalChainMember) {\n      (node as N.OptionalMemberExpression).optional = optional;\n      return this.finishNode(node, \"OptionalMemberExpression\");\n    } else {\n      return this.finishNode(node, \"MemberExpression\");\n    }\n  }\n\n  // https://github.com/tc39/proposal-bind-operator#syntax\n  parseBind(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const node = this.startNodeAt<N.BindExpression>(startLoc);\n    node.object = base;\n    this.next(); // eat '::'\n    node.callee = this.parseNoCallExpr();\n    state.stop = true;\n    return this.parseSubscripts(\n      this.finishNode(node, \"BindExpression\"),\n      startLoc,\n      noCalls,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead\n  // CoverCallExpressionAndAsyncArrowHead\n  // CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]\n  // OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await]\n  parseCoverCallAndAsyncArrowHead(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    optional: boolean,\n  ): N.Expression {\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    let refExpressionErrors: ExpressionErrors | null = null;\n\n    this.state.maybeInArrowParameters = true;\n    this.next(); // eat `(`\n\n    const node = this.startNodeAt<N.CallExpression | N.OptionalCallExpression>(\n      startLoc,\n    );\n    node.callee = base;\n    const { maybeAsyncArrow, optionalChainMember } = state;\n\n    if (maybeAsyncArrow) {\n      this.expressionScope.enter(newAsyncArrowScope());\n      refExpressionErrors = new ExpressionErrors();\n    }\n\n    if (optionalChainMember) {\n      // @ts-expect-error when optionalChainMember is true, node must be an optional call\n      node.optional = optional;\n    }\n\n    if (optional) {\n      node.arguments = this.parseCallExpressionArguments(tt.parenR);\n    } else {\n      node.arguments = this.parseCallExpressionArguments(\n        tt.parenR,\n        base.type !== \"Super\",\n        node,\n        refExpressionErrors,\n      );\n    }\n    let finishedNode:\n      | N.CallExpression\n      | N.OptionalCallExpression\n      | N.ArrowFunctionExpression = this.finishCallExpression(\n      node,\n      optionalChainMember,\n    );\n\n    if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n      /*:: invariant(refExpressionErrors != null) */\n      state.stop = true;\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      finishedNode = this.parseAsyncArrowFromCallExpression(\n        this.startNodeAt<N.ArrowFunctionExpression>(startLoc),\n        finishedNode as N.CallExpression,\n      );\n    } else {\n      if (maybeAsyncArrow) {\n        this.checkExpressionErrors(refExpressionErrors, true);\n        this.expressionScope.exit();\n      }\n      this.toReferencedArguments(finishedNode);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return finishedNode;\n  }\n\n  toReferencedArguments(\n    node: N.CallExpression | N.OptionalCallExpression,\n    isParenthesizedExpr?: boolean,\n  ) {\n    this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n  }\n\n  // MemberExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  // CallExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  parseTaggedTemplateExpression(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n  ): N.TaggedTemplateExpression {\n    const node = this.startNodeAt<N.TaggedTemplateExpression>(startLoc);\n    node.tag = base;\n    node.quasi = this.parseTemplate(true);\n    if (state.optionalChainMember) {\n      this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n    }\n    return this.finishNode(node, \"TaggedTemplateExpression\");\n  }\n\n  atPossibleAsyncArrow(base: N.Expression): boolean {\n    return (\n      base.type === \"Identifier\" &&\n      base.name === \"async\" &&\n      this.state.lastTokEndLoc.index === base.end &&\n      !this.canInsertSemicolon() &&\n      // check there are no escape sequences, such as \\u{61}sync\n      base.end - base.start === 5 &&\n      this.offsetToSourcePos(base.start) === this.state.potentialArrowAt\n    );\n  }\n\n  finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n    node: Undone<T>,\n    optional: boolean,\n  ): T {\n    if (node.callee.type === \"Import\") {\n      if (node.arguments.length === 0 || node.arguments.length > 2) {\n        this.raise(Errors.ImportCallArity, node);\n      } else {\n        for (const arg of node.arguments) {\n          if (arg.type === \"SpreadElement\") {\n            this.raise(Errors.ImportCallSpreadArgument, arg);\n          }\n        }\n      }\n    }\n    return this.finishNode(\n      node,\n      optional ? \"OptionalCallExpression\" : \"CallExpression\",\n    );\n  }\n\n  parseCallExpressionArguments(\n    this: Parser,\n    close: TokenType,\n    allowPlaceholder?: boolean,\n    nodeForExtra?: Undone<N.Node> | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): Array<N.Expression> {\n    const elts: N.Expression[] = [];\n    let first = true;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(\n        this.parseExprListItem(false, refExpressionErrors, allowPlaceholder),\n      );\n    }\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return elts;\n  }\n\n  shouldParseAsyncArrow(): boolean {\n    return this.match(tt.arrow) && !this.canInsertSemicolon();\n  }\n\n  parseAsyncArrowFromCallExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    call: N.CallExpression,\n  ): N.ArrowFunctionExpression {\n    this.resetPreviousNodeTrailingComments(call);\n    this.expect(tt.arrow);\n    this.parseArrowExpression(\n      node,\n      call.arguments,\n      true,\n      call.extra?.trailingCommaLoc,\n    );\n    // mark inner comments of `async()` as inner comments of `async () =>`\n    if (call.innerComments) {\n      setInnerComments(node, call.innerComments);\n    }\n    // mark trailing comments of `async` to be inner comments\n    if (call.callee.trailingComments) {\n      setInnerComments(node, call.callee.trailingComments);\n    }\n    return node as N.ArrowFunctionExpression;\n  }\n\n  // Parse a no-call expression (like argument of `new` or `::` operators).\n  // https://tc39.es/ecma262/#prod-MemberExpression\n  parseNoCallExpr(this: Parser): N.Expression {\n    const startLoc = this.state.startLoc;\n    return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n  }\n\n  // Parse an atomic expression — either a single token that is an\n  // expression, an expression started by a keyword like `function` or\n  // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n  // or `{}`.\n\n  // https://tc39.es/ecma262/#prod-PrimaryExpression\n  // https://tc39.es/ecma262/#prod-AsyncArrowFunction\n  // PrimaryExpression\n  // Super\n  // Import\n  // AsyncArrowFunction\n\n  parseExprAtom(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    let node;\n    let decorators: N.Decorator[] | null = null;\n\n    const { type } = this.state;\n    switch (type) {\n      case tt._super:\n        return this.parseSuper();\n\n      case tt._import:\n        node = this.startNode<N.MetaProperty | N.Import | N.ImportExpression>();\n        this.next();\n\n        if (this.match(tt.dot)) {\n          return this.parseImportMetaProperty(node as Undone<N.MetaProperty>);\n        }\n\n        if (this.match(tt.parenL)) {\n          if (this.options.createImportExpressions) {\n            return this.parseImportCall(node as Undone<N.ImportExpression>);\n          } else {\n            return this.finishNode(node, \"Import\");\n          }\n        } else {\n          this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);\n          return this.finishNode(node, \"Import\");\n        }\n\n      case tt._this:\n        node = this.startNode<N.ThisExpression>();\n        this.next();\n        return this.finishNode(node, \"ThisExpression\");\n\n      case tt._do: {\n        return this.parseDo(this.startNode(), false);\n      }\n\n      case tt.slash:\n      case tt.slashAssign: {\n        this.readRegexp();\n        return this.parseRegExpLiteral(this.state.value);\n      }\n\n      case tt.num:\n        return this.parseNumericLiteral(this.state.value);\n\n      case tt.bigint:\n        return this.parseBigIntLiteral(this.state.value);\n\n      case tt.string:\n        return this.parseStringLiteral(this.state.value);\n\n      case tt._null:\n        return this.parseNullLiteral();\n\n      case tt._true:\n        return this.parseBooleanLiteral(true);\n      case tt._false:\n        return this.parseBooleanLiteral(false);\n\n      case tt.parenL: {\n        const canBeArrow = this.state.potentialArrowAt === this.state.start;\n        return this.parseParenAndDistinguishExpression(canBeArrow);\n      }\n\n      case tt.bracketBarL:\n      case tt.bracketHashL: {\n        return this.parseArrayLike(\n          this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR,\n          /* canBePattern */ false,\n          /* isTuple */ true,\n        );\n      }\n      case tt.bracketL: {\n        return this.parseArrayLike(\n          tt.bracketR,\n          /* canBePattern */ true,\n          /* isTuple */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt.braceBarL:\n      case tt.braceHashL: {\n        return this.parseObjectLike(\n          this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ true,\n        );\n      }\n      case tt.braceL: {\n        return this.parseObjectLike(\n          tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt._function:\n        return this.parseFunctionOrFunctionSent();\n\n      case tt.at:\n        decorators = this.parseDecorators();\n      // fall through\n      case tt._class:\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            this.startNode<N.ClassExpression>(),\n          ),\n          false,\n        );\n\n      case tt._new:\n        return this.parseNewOrNewTarget();\n\n      case tt.templateNonTail:\n      case tt.templateTail:\n        return this.parseTemplate(false);\n\n      // BindExpression[Yield]\n      //   :: MemberExpression[?Yield]\n      case tt.doubleColon: {\n        node = this.startNode<N.BindExpression>();\n        this.next();\n        node.object = null;\n        const callee = (node.callee = this.parseNoCallExpr());\n        if (callee.type === \"MemberExpression\") {\n          return this.finishNode(node, \"BindExpression\");\n        } else {\n          throw this.raise(Errors.UnsupportedBind, callee);\n        }\n      }\n\n      case tt.privateName: {\n        // Standalone private names are only allowed in \"#x in obj\"\n        // expressions, and they are directly handled by callers of\n        // parseExprOp. If we reach this, the input is always invalid.\n        // We can throw a better error message and recover, rather than\n        // just throwing \"Unexpected token\" (which is the default\n        // behavior of this big switch statement).\n        this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n          identifierName: this.state.value,\n        });\n        return this.parsePrivateName() as unknown as N.Expression;\n      }\n\n      case tt.moduloAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.modulo, \"%\");\n      }\n\n      case tt.xorAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.bitwiseXOR, \"^\");\n      }\n\n      case tt.doubleCaret:\n      case tt.doubleAt: {\n        return this.parseTopicReference(\"hack\");\n      }\n\n      case tt.bitwiseXOR:\n      case tt.modulo:\n      case tt.hash: {\n        const pipeProposal = this.getPluginOption(\n          \"pipelineOperator\",\n          \"proposal\",\n        );\n\n        if (pipeProposal) {\n          return this.parseTopicReference(pipeProposal);\n        }\n        this.unexpected();\n        break;\n      }\n\n      case tt.lt: {\n        const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n        if (\n          isIdentifierStart(lookaheadCh) || // Element/Type Parameter <foo>\n          lookaheadCh === charCodes.greaterThan // Fragment <>\n        ) {\n          this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n        } else {\n          this.unexpected();\n        }\n        break;\n      }\n\n      default:\n        if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n          return this.parseDecimalLiteral(this.state.value);\n        }\n\n        if (tokenIsIdentifier(type)) {\n          if (\n            this.isContextual(tt._module) &&\n            this.lookaheadInLineCharCode() === charCodes.leftCurlyBrace\n          ) {\n            return this.parseModuleExpression();\n          }\n          const canBeArrow = this.state.potentialArrowAt === this.state.start;\n          const containsEsc = this.state.containsEsc;\n          const id = this.parseIdentifier();\n\n          if (\n            !containsEsc &&\n            id.name === \"async\" &&\n            !this.canInsertSemicolon()\n          ) {\n            const { type } = this.state;\n            if (type === tt._function) {\n              this.resetPreviousNodeTrailingComments(id);\n              this.next();\n              return this.parseAsyncFunctionExpression(\n                this.startNodeAtNode(id),\n              );\n            } else if (tokenIsIdentifier(type)) {\n              // If the next token begins with \"=\", commit to parsing an async\n              // arrow function. (Peeking ahead for \"=\" lets us avoid a more\n              // expensive full-token lookahead on this common path.)\n              if (this.lookaheadCharCode() === charCodes.equalsTo) {\n                // although `id` is not used in async arrow unary function,\n                // we don't need to reset `async`'s trailing comments because\n                // it will be attached to the upcoming async arrow binding identifier\n                return this.parseAsyncArrowUnaryFunction(\n                  this.startNodeAtNode(id),\n                );\n              } else {\n                // Otherwise, treat \"async\" as an identifier and let calling code\n                // deal with the current tt.name token.\n                return id;\n              }\n            } else if (type === tt._do) {\n              this.resetPreviousNodeTrailingComments(id);\n              return this.parseDo(this.startNodeAtNode(id), true);\n            }\n          }\n\n          if (\n            canBeArrow &&\n            this.match(tt.arrow) &&\n            !this.canInsertSemicolon()\n          ) {\n            this.next();\n            return this.parseArrowExpression(\n              this.startNodeAtNode(id),\n              [id],\n              false,\n            );\n          }\n\n          return id;\n        } else {\n          this.unexpected();\n        }\n    }\n  }\n\n  // This helper method should only be called\n  // when the parser has reached a potential Hack pipe topic token\n  // that is followed by an equals sign.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  // If we find ^= or %= in an expression position\n  // (i.e., the tt.moduloAssign or tt.xorAssign token types), and if the\n  // Hack-pipes proposal is active with ^ or % as its topicToken, then the ^ or\n  // % could be the topic token (e.g., in x |> ^==y or x |> ^===y), and so we\n  // reparse the current token as ^ or %.\n  // Otherwise, this throws an unexpected-token error.\n  parseTopicReferenceThenEqualsSign(\n    topicTokenType: TokenType,\n    topicTokenValue: string,\n  ): N.Expression {\n    const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n    if (pipeProposal) {\n      // Set the most-recent token to be a topic token\n      // given by the tokenType and tokenValue.\n      // Now the next readToken() call (in parseTopicReference)\n      // will consume that “topic token”.\n      this.state.type = topicTokenType;\n      this.state.value = topicTokenValue;\n      // Rewind the tokenizer to the end of the “topic token”, so that the\n      // following token starts at the equals sign after that topic token.\n      this.state.pos--;\n      this.state.end--;\n      // This is safe to do since the preceding character was either ^ or %, and\n      // thus not a newline.\n      this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n      // Now actually consume the topic token.\n      return this.parseTopicReference(pipeProposal);\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // This helper method should only be called\n  // when the proposal-pipeline-operator plugin is active,\n  // and when the parser has reached a potential Hack pipe topic token.\n  // Although a pipe-operator proposal is assumed to be active,\n  // its configuration might not match the current token’s type.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  parseTopicReference(pipeProposal: string): N.Expression {\n    const node = this.startNode<N.TopicReference>();\n    const startLoc = this.state.startLoc;\n    const tokenType = this.state.type;\n\n    // Consume the current token.\n    this.next();\n\n    // If the pipe-operator plugin’s configuration matches the current token’s type,\n    // then this will return `node`, will have been finished as a topic reference.\n    // Otherwise, this will throw a `PipeTopicUnconfiguredToken` error.\n    return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n  }\n\n  // This helper method attempts to finish the given `node`\n  // into a topic-reference node for the given `pipeProposal`.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  //\n  // The method assumes that any topic token was consumed before it was called.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // and if the given `tokenType` matches the plugin’s configuration,\n  // then this method will return the finished `node`.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // but if the given `tokenType` does not match the plugin’s configuration,\n  // then this method will throw a `PipeTopicUnconfiguredToken` error.\n  finishTopicReference<\n    T extends N.PipelinePrimaryTopicReference | N.TopicReference,\n  >(\n    node: Undone<T>,\n    startLoc: Position,\n    pipeProposal: string,\n    tokenType: TokenType,\n  ): T {\n    if (\n      this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)\n    ) {\n      // The token matches the plugin’s configuration.\n      // The token is therefore a topic reference.\n\n      // Determine the node type for the topic reference\n      // that is appropriate for the active pipe-operator proposal.\n      const nodeType =\n        pipeProposal === \"smart\"\n          ? \"PipelinePrimaryTopicReference\"\n          : // The proposal must otherwise be \"hack\",\n            // as enforced by testTopicReferenceConfiguration.\n            \"TopicReference\";\n\n      if (!this.topicReferenceIsAllowedInCurrentContext()) {\n        this.raise(\n          // The topic reference is not allowed in the current context:\n          // it is outside of a pipe body.\n          // Raise recoverable errors.\n          pipeProposal === \"smart\"\n            ? Errors.PrimaryTopicNotAllowed\n            : // In this case, `pipeProposal === \"hack\"` is true.\n              Errors.PipeTopicUnbound,\n          startLoc,\n        );\n      }\n\n      // Register the topic reference so that its pipe body knows\n      // that its topic was used at least once.\n      this.registerTopicReference();\n\n      return this.finishNode(node, nodeType);\n    } else {\n      // The token does not match the plugin’s configuration.\n      throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n        token: tokenLabelName(tokenType),\n      });\n    }\n  }\n\n  // This helper method tests whether the given token type\n  // matches the pipelineOperator parser plugin’s configuration.\n  // If the active pipe proposal is Hack style,\n  // and if the given token is the same as the plugin configuration’s `topicToken`,\n  // then this is a valid topic reference.\n  // If the active pipe proposal is smart mix,\n  // then the topic token must always be `#`.\n  // If the active pipe proposal is neither (e.g., \"minimal\" or \"fsharp\"),\n  // then an error is thrown.\n  testTopicReferenceConfiguration(\n    pipeProposal: string,\n    startLoc: Position,\n    tokenType: TokenType,\n  ): boolean {\n    switch (pipeProposal) {\n      case \"hack\": {\n        return this.hasPlugin([\n          \"pipelineOperator\",\n          {\n            // @ts-expect-error token must have a label\n            topicToken: tokenLabelName(tokenType),\n          },\n        ]);\n      }\n      case \"smart\":\n        return tokenType === tt.hash;\n      default:\n        throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n    }\n  }\n\n  // async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]\n  parseAsyncArrowUnaryFunction(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n  ): N.ArrowFunctionExpression {\n    // We don't need to push a new ParameterDeclarationScope here since we are sure\n    // 1) it is an async arrow, 2) no biding pattern is allowed in params\n    this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n    const params = [this.parseIdentifier()];\n    this.prodParam.exit();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n    }\n    this.expect(tt.arrow);\n    // let foo = async bar => {};\n    return this.parseArrowExpression(node, params, true);\n  }\n\n  // https://github.com/tc39/proposal-do-expressions\n  // https://github.com/tc39/proposal-async-do-expressions\n  parseDo(\n    this: Parser,\n    node: Undone<N.DoExpression>,\n    isAsync: boolean,\n  ): N.DoExpression {\n    this.expectPlugin(\"doExpressions\");\n    if (isAsync) {\n      this.expectPlugin(\"asyncDoExpressions\");\n    }\n    node.async = isAsync;\n    this.next(); // eat `do`\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    if (isAsync) {\n      // AsyncDoExpression :\n      // async [no LineTerminator here] do Block[~Yield, +Await, ~Return]\n      this.prodParam.enter(ParamKind.PARAM_AWAIT);\n      node.body = this.parseBlock();\n      this.prodParam.exit();\n    } else {\n      node.body = this.parseBlock();\n    }\n\n    this.state.labels = oldLabels;\n    return this.finishNode(node, \"DoExpression\");\n  }\n\n  // Parse the `super` keyword\n  parseSuper(): N.Super {\n    const node = this.startNode<N.Super>();\n    this.next(); // eat `super`\n    if (\n      this.match(tt.parenL) &&\n      !this.scope.allowDirectSuper &&\n      !this.options.allowSuperOutsideMethod\n    ) {\n      this.raise(Errors.SuperNotAllowed, node);\n    } else if (\n      !this.scope.allowSuper &&\n      !this.options.allowSuperOutsideMethod\n    ) {\n      this.raise(Errors.UnexpectedSuper, node);\n    }\n\n    if (\n      !this.match(tt.parenL) &&\n      !this.match(tt.bracketL) &&\n      !this.match(tt.dot)\n    ) {\n      this.raise(Errors.UnsupportedSuper, node);\n    }\n\n    return this.finishNode(node, \"Super\");\n  }\n\n  parsePrivateName(): N.PrivateName {\n    const node = this.startNode<N.PrivateName>();\n    const id = this.startNodeAt<N.Identifier>(\n      // The position is hardcoded because we merge `#` and name into a single\n      // tt.privateName token\n      createPositionWithColumnOffset(this.state.startLoc, 1),\n    );\n    const name = this.state.value;\n    this.next(); // eat #name;\n    node.id = this.createIdentifier(id, name);\n    return this.finishNode(node, \"PrivateName\");\n  }\n\n  parseFunctionOrFunctionSent(\n    this: Parser,\n  ): N.FunctionExpression | N.MetaProperty {\n    const node = this.startNode<N.FunctionExpression | N.MetaProperty>();\n\n    // We do not do parseIdentifier here because when parseFunctionOrFunctionSent\n    // is called we already know that the current token is a \"name\" with the value \"function\"\n    // This will improve perf a tiny little bit as we do not do validation but more importantly\n    // here is that parseIdentifier will remove an item from the expression stack\n    // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n    this.next(); // eat `function`\n\n    if (this.prodParam.hasYield && this.match(tt.dot)) {\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"function\",\n      );\n      this.next(); // eat `.`\n      // https://github.com/tc39/proposal-function.sent#syntax-1\n      if (this.match(tt._sent)) {\n        this.expectPlugin(\"functionSent\");\n      } else if (!this.hasPlugin(\"functionSent\")) {\n        // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n        this.unexpected();\n      }\n      return this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"sent\",\n      );\n    }\n    return this.parseFunction(node as Undone<N.FunctionExpression>);\n  }\n\n  parseMetaProperty(\n    node: Undone<N.MetaProperty>,\n    meta: N.Identifier,\n    propertyName: string,\n  ): N.MetaProperty {\n    node.meta = meta;\n\n    const containsEsc = this.state.containsEsc;\n\n    node.property = this.parseIdentifier(true);\n\n    if (node.property.name !== propertyName || containsEsc) {\n      this.raise(Errors.UnsupportedMetaProperty, node.property, {\n        target: meta.name,\n        onlyValidPropertyName: propertyName,\n      });\n    }\n\n    return this.finishNode(node, \"MetaProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportMeta\n  parseImportMetaProperty(\n    this: Parser,\n    node: Undone<N.MetaProperty | N.ImportExpression>,\n  ): N.MetaProperty | N.ImportExpression {\n    const id = this.createIdentifier(\n      this.startNodeAtNode<N.Identifier>(node),\n      \"import\",\n    );\n    this.next(); // eat `.`\n\n    if (this.isContextual(tt._meta)) {\n      if (!this.inModule) {\n        this.raise(Errors.ImportMetaOutsideModule, id);\n      }\n      this.sawUnambiguousESM = true;\n    } else if (this.isContextual(tt._source) || this.isContextual(tt._defer)) {\n      const isSource = this.isContextual(tt._source);\n\n      // TODO: The proposal doesn't mention import.defer yet because it was\n      // pending on a decision for import.source. Wait to enable it until it's\n      // included in the proposal.\n      if (!isSource) this.unexpected();\n\n      this.expectPlugin(\n        isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\",\n      );\n      if (!this.options.createImportExpressions) {\n        throw this.raise(\n          Errors.DynamicImportPhaseRequiresImportExpressions,\n          this.state.startLoc,\n          {\n            phase: this.state.value,\n          },\n        );\n      }\n      this.next();\n      (node as Undone<N.ImportExpression>).phase = isSource\n        ? \"source\"\n        : \"defer\";\n      return this.parseImportCall(node as Undone<N.ImportExpression>);\n    }\n\n    return this.parseMetaProperty(node as Undone<N.MetaProperty>, id, \"meta\");\n  }\n\n  parseLiteralAtNode<T extends N.Node>(\n    value: any,\n    type: T[\"type\"],\n    node: any,\n  ): T {\n    this.addExtra(node, \"rawValue\", value);\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.value = value;\n    this.next();\n    return this.finishNode<T>(node, type);\n  }\n\n  parseLiteral<T extends N.Node>(value: any, type: T[\"type\"]): T {\n    const node = this.startNode();\n    return this.parseLiteralAtNode(value, type, node);\n  }\n\n  parseStringLiteral(value: any) {\n    return this.parseLiteral<N.StringLiteral>(value, \"StringLiteral\");\n  }\n\n  parseNumericLiteral(value: any) {\n    return this.parseLiteral<N.NumericLiteral>(value, \"NumericLiteral\");\n  }\n\n  parseBigIntLiteral(value: any) {\n    return this.parseLiteral<N.BigIntLiteral>(value, \"BigIntLiteral\");\n  }\n\n  // TODO: Remove this in Babel 8\n  parseDecimalLiteral(value: any) {\n    return this.parseLiteral<N.DecimalLiteral>(value, \"DecimalLiteral\");\n  }\n\n  parseRegExpLiteral(value: {\n    value: any;\n    pattern: string;\n    flags: N.RegExpLiteral[\"flags\"];\n  }) {\n    const node = this.startNode<N.RegExpLiteral>();\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.pattern = value.pattern;\n    node.flags = value.flags;\n    this.next();\n    return this.finishNode(node, \"RegExpLiteral\");\n  }\n\n  parseBooleanLiteral(value: boolean) {\n    const node = this.startNode<N.BooleanLiteral>();\n    node.value = value;\n    this.next();\n    return this.finishNode(node, \"BooleanLiteral\");\n  }\n\n  parseNullLiteral() {\n    const node = this.startNode<N.NullLiteral>();\n    this.next();\n    return this.finishNode(node, \"NullLiteral\");\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverParenthesizedExpressionAndArrowParameterList\n  parseParenAndDistinguishExpression(\n    this: Parser,\n    canBeArrow: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    let val;\n    this.next(); // eat `(`\n    this.expressionScope.enter(newArrowHeadScope());\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.maybeInArrowParameters = true;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    const innerStartLoc = this.state.startLoc;\n    const exprList: (N.Expression | N.RestElement)[] = [];\n    const refExpressionErrors = new ExpressionErrors();\n    let first = true;\n    let spreadStartLoc;\n    let optionalCommaStartLoc;\n\n    while (!this.match(tt.parenR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(\n          tt.comma,\n          refExpressionErrors.optionalParametersLoc === null\n            ? null\n            : refExpressionErrors.optionalParametersLoc,\n        );\n        if (this.match(tt.parenR)) {\n          optionalCommaStartLoc = this.state.startLoc;\n          break;\n        }\n      }\n\n      if (this.match(tt.ellipsis)) {\n        const spreadNodeStartLoc = this.state.startLoc;\n        spreadStartLoc = this.state.startLoc;\n        exprList.push(\n          this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc),\n        );\n\n        if (!this.checkCommaAfterRest(charCodes.rightParenthesis)) {\n          break;\n        }\n      } else {\n        exprList.push(\n          this.parseMaybeAssignAllowIn(\n            refExpressionErrors,\n            this.parseParenItem,\n          ),\n        );\n      }\n    }\n\n    const innerEndLoc = this.state.lastTokEndLoc;\n    this.expect(tt.parenR);\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    let arrowNode = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n    if (\n      canBeArrow &&\n      this.shouldParseArrow(exprList) &&\n      (arrowNode = this.parseArrow(arrowNode))\n    ) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      this.parseArrowExpression(arrowNode, exprList, false);\n      // @ts-expect-error todo(flow->ts) improve node types\n      return arrowNode;\n    }\n    this.expressionScope.exit();\n\n    if (!exprList.length) {\n      this.unexpected(this.state.lastTokStartLoc);\n    }\n    if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n    if (spreadStartLoc) this.unexpected(spreadStartLoc);\n    this.checkExpressionErrors(refExpressionErrors, true);\n\n    this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n    if (exprList.length > 1) {\n      val = this.startNodeAt<N.SequenceExpression>(innerStartLoc);\n      val.expressions = exprList as N.Expression[];\n      // finish node at current location so it can pick up comments after `)`\n      this.finishNode(val, \"SequenceExpression\");\n      this.resetEndLocation(val, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n\n    return this.wrapParenthesis(\n      startLoc,\n      // @ts-expect-error todo(flow->ts)\n      val,\n    );\n  }\n\n  wrapParenthesis(startLoc: Position, expression: N.Expression): N.Expression {\n    if (!this.options.createParenthesizedExpressions) {\n      this.addExtra(expression, \"parenthesized\", true);\n      this.addExtra(expression, \"parenStart\", startLoc.index);\n\n      this.takeSurroundingComments(\n        expression,\n        startLoc.index,\n        this.state.lastTokEndLoc.index,\n      );\n\n      return expression;\n    }\n\n    const parenExpression =\n      this.startNodeAt<N.ParenthesizedExpression>(startLoc);\n    parenExpression.expression = expression;\n    return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- `params` is used in typescript plugin\n  shouldParseArrow(params: Array<N.Node>): boolean {\n    return !this.canInsertSemicolon();\n  }\n\n  parseArrow(\n    node: Undone<N.ArrowFunctionExpression>,\n  ): Undone<N.ArrowFunctionExpression> | undefined {\n    if (this.eat(tt.arrow)) {\n      return node;\n    }\n  }\n\n  parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n    node: T,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    startLoc: Position,\n  ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n    return node;\n  }\n\n  parseNewOrNewTarget(this: Parser): N.NewExpression | N.MetaProperty {\n    const node = this.startNode<N.NewExpression | N.MetaProperty>();\n    this.next();\n    if (this.match(tt.dot)) {\n      // https://tc39.es/ecma262/#prod-NewTarget\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"new\",\n      );\n      this.next();\n      const metaProp = this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"target\",\n      );\n\n      if (\n        !this.scope.inNonArrowFunction &&\n        !this.scope.inClass &&\n        !this.options.allowNewTargetOutsideFunction\n      ) {\n        this.raise(Errors.UnexpectedNewTarget, metaProp);\n      }\n\n      return metaProp;\n    }\n\n    return this.parseNew(node as Undone<N.NewExpression>);\n  }\n\n  // New's precedence is slightly tricky. It must allow its argument to\n  // be a `[]` or dot subscript expression, but not a call — at least,\n  // not without wrapping it in parentheses. Thus, it uses the noCalls\n  // argument to parseSubscripts to prevent it from consuming the\n  // argument list.\n  // https://tc39.es/ecma262/#prod-NewExpression\n  parseNew(this: Parser, node: Undone<N.NewExpression>): N.NewExpression {\n    this.parseNewCallee(node);\n\n    if (this.eat(tt.parenL)) {\n      const args = this.parseExprList(tt.parenR);\n      this.toReferencedList(args);\n      // (parseExprList should be all non-null in this case)\n      node.arguments = args;\n    } else {\n      node.arguments = [];\n    }\n\n    return this.finishNode(node, \"NewExpression\");\n  }\n\n  parseNewCallee(this: Parser, node: Undone<N.NewExpression>): void {\n    const isImport = this.match(tt._import);\n    const callee = this.parseNoCallExpr();\n    node.callee = callee;\n    if (\n      isImport &&\n      (callee.type === \"Import\" || callee.type === \"ImportExpression\")\n    ) {\n      this.raise(Errors.ImportCallNotNewExpression, callee);\n    }\n  }\n\n  // Parse template expression.\n\n  parseTemplateElement(isTagged: boolean): N.TemplateElement {\n    const { start, startLoc, end, value } = this.state;\n    const elemStart = start + 1;\n    const elem = this.startNodeAt<N.TemplateElement>(\n      createPositionWithColumnOffset(startLoc, 1),\n    );\n    if (value === null) {\n      if (!isTagged) {\n        this.raise(\n          Errors.InvalidEscapeSequenceTemplate,\n          // FIXME: Adding 1 is probably wrong.\n          createPositionWithColumnOffset(\n            this.state.firstInvalidTemplateEscapePos,\n            1,\n          ),\n        );\n      }\n    }\n\n    const isTail = this.match(tt.templateTail);\n    const endOffset = isTail ? -1 : -2;\n    const elemEnd = end + endOffset;\n    elem.value = {\n      raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: value === null ? null : value.slice(1, endOffset),\n    };\n    elem.tail = isTail;\n    this.next();\n    const finishedNode = this.finishNode(elem, \"TemplateElement\");\n    this.resetEndLocation(\n      finishedNode,\n      createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset),\n    );\n    return finishedNode;\n  }\n\n  // https://tc39.es/ecma262/#prod-TemplateLiteral\n  parseTemplate(this: Parser, isTagged: boolean): N.TemplateLiteral {\n    const node = this.startNode<N.TemplateLiteral>();\n    let curElt = this.parseTemplateElement(isTagged);\n    const quasis = [curElt];\n    const substitutions = [];\n    while (!curElt.tail) {\n      substitutions.push(this.parseTemplateSubstitution());\n      this.readTemplateContinuation();\n      quasis.push((curElt = this.parseTemplateElement(isTagged)));\n    }\n    // Type cast from (N.Expression[] | N.TsType[]). parseTemplateSubstitution\n    // returns consistent results.\n    node.expressions = substitutions as N.Expression[] | N.TsType[];\n    node.quasis = quasis;\n    return this.finishNode(node, \"TemplateLiteral\");\n  }\n\n  // This is overwritten by the TypeScript plugin to parse template types\n  parseTemplateSubstitution(this: Parser): N.Expression | N.TsType {\n    return this.parseExpression();\n  }\n\n  // Parse an object literal, binding pattern, or record.\n\n  parseObjectLike(\n    close: TokenType,\n    isPattern: true,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectPattern;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: false | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectExpression;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: true,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.RecordExpression;\n  parseObjectLike<T extends N.ObjectPattern | N.ObjectExpression>(\n    this: Parser,\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    if (isRecord) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const propHash: any = Object.create(null);\n    let first = true;\n    const node = this.startNode<\n      N.ObjectExpression | N.ObjectPattern | N.RecordExpression\n    >();\n\n    node.properties = [];\n    this.next();\n\n    while (!this.match(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          this.addTrailingCommaExtraToNode(node);\n          break;\n        }\n      }\n\n      let prop;\n      if (isPattern) {\n        prop = this.parseBindingProperty();\n      } else {\n        prop = this.parsePropertyDefinition(refExpressionErrors);\n        this.checkProto(prop, isRecord, propHash, refExpressionErrors);\n      }\n\n      if (\n        isRecord &&\n        !this.isObjectProperty(prop) &&\n        prop.type !== \"SpreadElement\"\n      ) {\n        this.raise(Errors.InvalidRecordProperty, prop);\n      }\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-expect-error shorthand may not index prop\n        if (prop.shorthand) {\n          this.addExtra(prop, \"shorthand\", true);\n        }\n      }\n\n      // @ts-expect-error Fixme: refine typings\n      node.properties.push(prop);\n    }\n\n    this.next();\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    let type = \"ObjectExpression\";\n    if (isPattern) {\n      type = \"ObjectPattern\";\n    } else if (isRecord) {\n      type = \"RecordExpression\";\n    }\n    // @ts-expect-error type is well defined\n    return this.finishNode(node, type);\n  }\n\n  addTrailingCommaExtraToNode(node: Undone<N.Node>): void {\n    this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc.index);\n    this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n  }\n\n  // Check grammar production:\n  //   IdentifierName *_opt PropertyName\n  // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors\n  maybeAsyncOrAccessorProp(\n    prop: Undone<N.ObjectProperty>,\n  ): prop is typeof prop & { key: N.Identifier } {\n    return (\n      !prop.computed &&\n      prop.key.type === \"Identifier\" &&\n      (this.isLiteralPropertyName() ||\n        this.match(tt.bracketL) ||\n        this.match(tt.star))\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyDefinition\n  parsePropertyDefinition(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectMember | N.SpreadElement {\n    let decorators = [];\n    if (this.match(tt.at)) {\n      if (this.hasPlugin(\"decorators\")) {\n        this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n      }\n\n      // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n      // the call to this.parseDecorator\n      while (this.match(tt.at)) {\n        decorators.push(this.parseDecorator());\n      }\n    }\n\n    const prop = this.startNode<N.ObjectProperty>();\n    let isAsync = false;\n    let isAccessor = false;\n    let startLoc;\n\n    if (this.match(tt.ellipsis)) {\n      if (decorators.length) this.unexpected();\n      return this.parseSpread();\n    }\n\n    if (decorators.length) {\n      prop.decorators = decorators;\n      decorators = [];\n    }\n\n    prop.method = false;\n\n    if (refExpressionErrors) {\n      startLoc = this.state.startLoc;\n    }\n\n    let isGenerator = this.eat(tt.star);\n    this.parsePropertyNamePrefixOperator(prop);\n    const containsEsc = this.state.containsEsc;\n    this.parsePropertyName(prop, refExpressionErrors);\n\n    if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n      const { key } = prop;\n      const keyName = key.name;\n      // https://tc39.es/ecma262/#prod-AsyncMethod\n      // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod\n      if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n        isAsync = true;\n        this.resetPreviousNodeTrailingComments(key);\n        isGenerator = this.eat(tt.star);\n        this.parsePropertyName(prop);\n      }\n      // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] }\n      // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] }\n      if (keyName === \"get\" || keyName === \"set\") {\n        isAccessor = true;\n        this.resetPreviousNodeTrailingComments(key);\n        prop.kind = keyName;\n        if (this.match(tt.star)) {\n          isGenerator = true;\n          this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n            kind: keyName,\n          });\n          this.next();\n        }\n        this.parsePropertyName(prop);\n      }\n    }\n\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      isGenerator,\n      isAsync,\n      false /* isPattern */,\n      isAccessor,\n      refExpressionErrors,\n    );\n  }\n\n  getGetterSetterExpectedParamCount(\n    method: N.ObjectMethod | N.ClassMethod,\n  ): number {\n    return method.kind === \"get\" ? 0 : 1;\n  }\n\n  // This exists so we can override within the ESTree plugin\n  getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n    return method.params;\n  }\n\n  // get methods aren't allowed to have any parameters\n  // set methods must have exactly 1 parameter which is not a rest parameter\n  checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n    const paramCount = this.getGetterSetterExpectedParamCount(method);\n    const params = this.getObjectOrClassMethodParams(method);\n\n    if (params.length !== paramCount) {\n      this.raise(\n        method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity,\n        method,\n      );\n    }\n\n    if (\n      method.kind === \"set\" &&\n      params[params.length - 1]?.type === \"RestElement\"\n    ) {\n      this.raise(Errors.BadSetterRestParameter, method);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-MethodDefinition\n  parseObjectMethod(\n    this: Parser,\n    prop: Undone<N.ObjectMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n  ): N.ObjectMethod | undefined | null {\n    if (isAccessor) {\n      // isAccessor implies isAsync: false, isPattern: false, isGenerator: false\n      const finishedProp = this.parseMethod(\n        prop,\n        // This _should_ be false, but with error recovery, we allow it to be\n        // set for informational purposes\n        isGenerator,\n        /* isAsync */ false,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n      this.checkGetterSetterParams(finishedProp);\n      return finishedProp;\n    }\n\n    if (isAsync || isGenerator || this.match(tt.parenL)) {\n      if (isPattern) this.unexpected();\n      prop.kind = \"method\";\n      prop.method = true;\n      return this.parseMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n    }\n  }\n\n  // if `isPattern` is true, parse https://tc39.es/ecma262/#prod-BindingProperty\n  // else https://tc39.es/ecma262/#prod-PropertyDefinition\n  parseObjectProperty(\n    this: Parser,\n    prop: Undone<N.ObjectProperty>,\n    startLoc: Position | undefined | null,\n    isPattern: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectProperty | undefined | null {\n    prop.shorthand = false;\n\n    if (this.eat(tt.colon)) {\n      prop.value = isPattern\n        ? this.parseMaybeDefault(this.state.startLoc)\n        : this.parseMaybeAssignAllowIn(refExpressionErrors);\n\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n\n    if (!prop.computed && prop.key.type === \"Identifier\") {\n      // PropertyDefinition:\n      //   IdentifierReference\n      //   CoverInitializedName\n      // Note: `{ eval } = {}` will be checked in `checkLVal` later.\n      this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          cloneIdentifier(prop.key),\n        );\n      } else if (this.match(tt.eq)) {\n        const shorthandAssignLoc = this.state.startLoc;\n        if (refExpressionErrors != null) {\n          if (refExpressionErrors.shorthandAssignLoc === null) {\n            refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n          }\n        } else {\n          this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n        }\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          cloneIdentifier(prop.key),\n        );\n      } else {\n        prop.value = cloneIdentifier(prop.key);\n      }\n      prop.shorthand = true;\n\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n  }\n\n  parseObjPropValue<T extends N.ObjectMember>(\n    this: Parser,\n    prop: Undone<T>,\n    startLoc: Position | undefined | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    const node = (this.parseObjectMethod(\n      prop as Undone<N.ObjectMethod>,\n      isGenerator,\n      isAsync,\n      isPattern,\n      isAccessor,\n    ) ||\n      this.parseObjectProperty(\n        prop as Undone<N.ObjectProperty>,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      )) as T;\n\n    if (!node) this.unexpected();\n\n    return node;\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyName\n  // when refExpressionErrors presents, it will parse private name\n  // and record the position of the first private name\n  parsePropertyName(\n    this: Parser,\n    prop:\n      | Undone<N.ObjectOrClassMember | N.ClassMember>\n      | N.TsNamedTypeElementBase,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void {\n    if (this.eat(tt.bracketL)) {\n      (prop as Undone<N.ObjectOrClassMember>).computed = true;\n      prop.key = this.parseMaybeAssignAllowIn();\n      this.expect(tt.bracketR);\n    } else {\n      // We check if it's valid for it to be a private name when we push it.\n      const { type, value } = this.state;\n      let key;\n      // most un-computed property names are identifiers\n      if (tokenIsKeywordOrIdentifier(type)) {\n        key = this.parseIdentifier(true);\n      } else {\n        switch (type) {\n          case tt.num:\n            key = this.parseNumericLiteral(value);\n            break;\n          case tt.string:\n            key = this.parseStringLiteral(value);\n            break;\n          case tt.bigint:\n            key = this.parseBigIntLiteral(value);\n            break;\n          case tt.privateName: {\n            // the class private key has been handled in parseClassElementName\n            const privateKeyLoc = this.state.startLoc;\n            if (refExpressionErrors != null) {\n              if (refExpressionErrors.privateKeyLoc === null) {\n                refExpressionErrors.privateKeyLoc = privateKeyLoc;\n              }\n            } else {\n              this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n            }\n            key = this.parsePrivateName();\n            break;\n          }\n          default:\n            if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n              key = this.parseDecimalLiteral(value);\n              break;\n            }\n\n            this.unexpected();\n        }\n      }\n      (prop as any).key = key;\n      if (type !== tt.privateName) {\n        // ClassPrivateProperty is never computed, so we don't assign in that case.\n        prop.computed = false;\n      }\n    }\n  }\n\n  // Initialize empty function node.\n\n  initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n    node.id = null;\n    node.generator = false;\n    node.async = isAsync;\n  }\n\n  // Parse object or class method.\n\n  parseMethod<T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod>(\n    this: Parser,\n    node: Undone<T>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowDirectSuper: boolean,\n    type: T[\"type\"],\n    inClassScope: boolean = false,\n  ): T {\n    this.initFunction(node, isAsync);\n    node.generator = isGenerator;\n    this.scope.enter(\n      ScopeFlag.FUNCTION |\n        ScopeFlag.SUPER |\n        (inClassScope ? ScopeFlag.CLASS : 0) |\n        (allowDirectSuper ? ScopeFlag.DIRECT_SUPER : 0),\n    );\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n    this.parseFunctionParams(node, isConstructor);\n    const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n    this.prodParam.exit();\n    this.scope.exit();\n\n    return finishedNode;\n  }\n\n  // parse an array literal or tuple literal\n  // https://tc39.es/ecma262/#prod-ArrayLiteral\n  // https://tc39.es/proposal-record-tuple/#prod-TupleLiteral\n  parseArrayLike(\n    this: Parser,\n    close: TokenType,\n    canBePattern: boolean,\n    isTuple: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ArrayExpression | N.TupleExpression {\n    if (isTuple) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const node = this.startNode<N.ArrayExpression | N.TupleExpression>();\n    this.next();\n    node.elements = this.parseExprList(\n      close,\n      /* allowEmpty */ !isTuple,\n      refExpressionErrors,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return this.finishNode(\n      node,\n      isTuple ? \"TupleExpression\" : \"ArrayExpression\",\n    );\n  }\n\n  // Parse arrow function expression.\n  // If the parameters are provided, they will be converted to an\n  // assignable list.\n  parseArrowExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<N.Expression | N.SpreadElement>\n      | Array<N.Expression | N.RestElement>,\n    isAsync: boolean,\n    trailingCommaLoc?: Position | null,\n  ): N.ArrowFunctionExpression {\n    this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n    let flags = functionFlags(isAsync, false);\n    // ConciseBody[In] :\n    //   [lookahead ≠ {] ExpressionBody[?In, ~Await]\n    //   { FunctionBody[~Yield, ~Await] }\n    if (!this.match(tt.braceL) && this.prodParam.hasIn) {\n      flags |= ParamKind.PARAM_IN;\n    }\n    this.prodParam.enter(flags);\n    this.initFunction(node, isAsync);\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n    if (params) {\n      this.state.maybeInArrowParameters = true;\n      this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n    }\n    this.state.maybeInArrowParameters = false;\n    this.parseFunctionBody(node, true);\n\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return this.finishNode(node, \"ArrowFunctionExpression\");\n  }\n\n  setArrowFunctionParameters(\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<N.Expression | N.SpreadElement>\n      | Array<N.Expression | N.RestElement>,\n    trailingCommaLoc?: Position | null,\n  ): void {\n    this.toAssignableList(params, trailingCommaLoc, false);\n    node.params = params as (N.Pattern | N.TSParameterProperty)[];\n  }\n\n  parseFunctionBodyAndFinish<\n    T extends\n      | N.Function\n      | N.TSDeclareMethod\n      | N.TSDeclareFunction\n      | N.ClassPrivateMethod,\n  >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n    // @ts-expect-error (node is not bodiless if we get here)\n    this.parseFunctionBody(node, false, isMethod);\n    return this.finishNode(node, type);\n  }\n\n  // Parse function body and check parameters.\n  parseFunctionBody(\n    this: Parser,\n    node: Undone<N.Function>,\n    allowExpression?: boolean | null,\n    isMethod: boolean = false,\n  ): void {\n    const isExpression = allowExpression && !this.match(tt.braceL);\n    this.expressionScope.enter(newExpressionScope());\n\n    if (isExpression) {\n      // https://tc39.es/ecma262/#prod-ExpressionBody\n      (node as Undone<N.ArrowFunctionExpression>).body =\n        this.parseMaybeAssign();\n      this.checkParams(node, false, allowExpression, false);\n    } else {\n      const oldStrict = this.state.strict;\n      // Start a new scope with regard to labels\n      // flag (restore them to their old value afterwards).\n      const oldLabels = this.state.labels;\n      this.state.labels = [];\n\n      // FunctionBody[Yield, Await]:\n      //   StatementList[?Yield, ?Await, +Return] opt\n      this.prodParam.enter(\n        this.prodParam.currentFlags() | ParamKind.PARAM_RETURN,\n      );\n      node.body = this.parseBlock(\n        true,\n        false,\n        // Strict mode function checks after we parse the statements in the function body.\n        (hasStrictModeDirective: boolean) => {\n          const nonSimple = !this.isSimpleParamList(node.params);\n\n          if (hasStrictModeDirective && nonSimple) {\n            // This logic is here to align the error location with the ESTree plugin.\n            this.raise(\n              Errors.IllegalLanguageModeDirective,\n              // @ts-expect-error kind may not index node\n              (node.kind === \"method\" || node.kind === \"constructor\") &&\n                // @ts-expect-error key may not index node\n                !!node.key\n                ? // @ts-expect-error node.key has been guarded\n                  node.key.loc.end\n                : node,\n            );\n          }\n\n          const strictModeChanged = !oldStrict && this.state.strict;\n\n          // Add the params to varDeclaredNames to ensure that an error is thrown\n          // if a let/const declaration in the function clashes with one of the params.\n          this.checkParams(\n            node,\n            !this.state.strict && !allowExpression && !isMethod && !nonSimple,\n            allowExpression,\n            strictModeChanged,\n          );\n\n          // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n          if (this.state.strict && node.id) {\n            this.checkIdentifier(\n              node.id,\n              BindingFlag.TYPE_OUTSIDE,\n              strictModeChanged,\n            );\n          }\n        },\n      );\n      this.prodParam.exit();\n      this.state.labels = oldLabels;\n    }\n    this.expressionScope.exit();\n  }\n\n  isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n    return node.type === \"Identifier\";\n  }\n\n  isSimpleParamList(\n    params: ReadonlyArray<N.Pattern | N.TSParameterProperty>,\n  ): boolean {\n    for (let i = 0, len = params.length; i < len; i++) {\n      if (!this.isSimpleParameter(params[i])) return false;\n    }\n    return true;\n  }\n\n  checkParams(\n    node: Undone<N.Function>,\n    allowDuplicates: boolean,\n    isArrowFunction?: boolean | null,\n    strictModeChanged: boolean = true,\n  ): void {\n    const checkClashes = !allowDuplicates && new Set<string>();\n    // We create a fake node with the \"ephemeral\" type `FormalParameters`[1]\n    // since we just store an array of parameters. Perhaps someday we can have\n    // something like class FormalParameters extends Array { ... }, which would\n    // also be helpful when traversing this node.\n    //\n    // 1. https://tc39.es/ecma262/#prod-FormalParameters\n    const formalParameters = { type: \"FormalParameters\" } as const;\n    for (const param of node.params) {\n      this.checkLVal(\n        param,\n        formalParameters,\n        BindingFlag.TYPE_VAR,\n        checkClashes,\n        strictModeChanged,\n      );\n    }\n  }\n\n  // Parses a comma-separated list of expressions, and returns them as\n  // an array. `close` is the token type that ends the list, and\n  // `allowEmpty` can be turned on to allow subsequent commas with\n  // nothing in between them to be parsed as `null` (which is needed\n  // for array literals).\n\n  parseExprList(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    nodeForExtra?: N.Node | null,\n  ): (N.Expression | null)[] {\n    const elts: (N.Expression | null)[] = [];\n    let first = true;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n    }\n    return elts;\n  }\n\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | null;\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: false,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression;\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | N.SpreadElement | N.ArgumentPlaceholder | null {\n    let elt;\n    if (this.match(tt.comma)) {\n      if (!allowEmpty) {\n        this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n          unexpected: \",\",\n        });\n      }\n      elt = null;\n    } else if (this.match(tt.ellipsis)) {\n      const spreadNodeStartLoc = this.state.startLoc;\n\n      elt = this.parseParenItem(\n        this.parseSpread(refExpressionErrors),\n        spreadNodeStartLoc,\n      );\n    } else if (this.match(tt.question)) {\n      this.expectPlugin(\"partialApplication\");\n      if (!allowPlaceholder) {\n        this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n      }\n      const node = this.startNode<N.ArgumentPlaceholder>();\n      this.next();\n      elt = this.finishNode(node, \"ArgumentPlaceholder\");\n    } else {\n      elt = this.parseMaybeAssignAllowIn(\n        refExpressionErrors,\n        this.parseParenItem,\n      );\n    }\n    return elt;\n  }\n\n  // Parse the next token as an identifier. If `liberal` is true (used\n  // when parsing properties), it will also convert keywords into\n  // identifiers.\n  // This shouldn't be used to parse the keywords of meta properties, since they\n  // are not identifiers and cannot contain escape sequences.\n\n  parseIdentifier(liberal?: boolean): N.Identifier {\n    const node = this.startNode<N.Identifier>();\n    const name = this.parseIdentifierName(liberal);\n\n    return this.createIdentifier(node, name);\n  }\n\n  createIdentifier(\n    node: Omit<N.Identifier, \"type\">,\n    name: string,\n  ): N.Identifier {\n    node.name = name;\n    node.loc.identifierName = name;\n\n    return this.finishNode(node, \"Identifier\");\n  }\n\n  parseIdentifierName(liberal?: boolean): string {\n    let name: string;\n\n    const { startLoc, type } = this.state;\n\n    if (tokenIsKeywordOrIdentifier(type)) {\n      name = this.state.value;\n    } else {\n      this.unexpected();\n    }\n\n    const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n    if (liberal) {\n      // If the current token is not used as a keyword, set its type to \"tt.name\".\n      // This will prevent this.next() from throwing about unexpected escapes.\n      if (tokenIsKeyword) {\n        this.replaceToken(tt.name);\n      }\n    } else {\n      this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n    }\n\n    this.next();\n\n    return name;\n  }\n\n  checkReservedWord(\n    word: string,\n    startLoc: Position,\n    checkKeywords: boolean,\n    isBinding: boolean,\n  ): void {\n    // Every JavaScript reserved word is 10 characters or less.\n    if (word.length > 10) {\n      return;\n    }\n    // Most identifiers are not reservedWord-like, they don't need special\n    // treatments afterward, which very likely ends up throwing errors\n    if (!canBeReservedWord(word)) {\n      return;\n    }\n\n    if (checkKeywords && isKeyword(word)) {\n      this.raise(Errors.UnexpectedKeyword, startLoc, {\n        keyword: word,\n      });\n      return;\n    }\n\n    const reservedTest = !this.state.strict\n      ? isReservedWord\n      : isBinding\n        ? isStrictBindReservedWord\n        : isStrictReservedWord;\n\n    if (reservedTest(word, this.inModule)) {\n      this.raise(Errors.UnexpectedReservedWord, startLoc, {\n        reservedWord: word,\n      });\n      return;\n    } else if (word === \"yield\") {\n      if (this.prodParam.hasYield) {\n        this.raise(Errors.YieldBindingIdentifier, startLoc);\n        return;\n      }\n    } else if (word === \"await\") {\n      if (this.prodParam.hasAwait) {\n        this.raise(Errors.AwaitBindingIdentifier, startLoc);\n        return;\n      }\n\n      if (this.scope.inStaticBlock) {\n        this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n        return;\n      }\n\n      this.expressionScope.recordAsyncArrowParametersError(startLoc);\n    } else if (word === \"arguments\") {\n      if (this.scope.inClassAndNotInNonArrowFunction) {\n        this.raise(Errors.ArgumentsInClass, startLoc);\n        return;\n      }\n    }\n  }\n\n  // Returns wether `await` is allowed or not in this context, and if it is\n  // keeps track of it to determine whether a module uses top-level await.\n  recordAwaitIfAllowed(): boolean {\n    const isAwaitAllowed =\n      this.prodParam.hasAwait ||\n      (this.options.allowAwaitOutsideFunction && !this.scope.inFunction);\n\n    if (isAwaitAllowed && !this.scope.inFunction) {\n      this.state.hasTopLevelAwait = true;\n    }\n\n    return isAwaitAllowed;\n  }\n\n  // Parses await expression inside async function.\n\n  parseAwait(this: Parser, startLoc: Position): N.AwaitExpression {\n    const node = this.startNodeAt<N.AwaitExpression>(startLoc);\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.AwaitExpressionFormalParameter,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n\n    if (this.eat(tt.star)) {\n      this.raise(Errors.ObsoleteAwaitStar, node);\n    }\n\n    if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {\n      if (this.isAmbiguousAwait()) {\n        this.ambiguousScriptDifferentAst = true;\n      } else {\n        this.sawUnambiguousESM = true;\n      }\n    }\n\n    if (!this.state.soloAwait) {\n      node.argument = this.parseMaybeUnary(null, true);\n    }\n\n    return this.finishNode(node, \"AwaitExpression\");\n  }\n\n  isAmbiguousAwait(): boolean {\n    if (this.hasPrecedingLineBreak()) return true;\n    const { type } = this.state;\n    return (\n      // All the following expressions are ambiguous:\n      //   await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``, await of []\n      type === tt.plusMin ||\n      type === tt.parenL ||\n      type === tt.bracketL ||\n      tokenIsTemplate(type) ||\n      (type === tt._of && !this.state.containsEsc) ||\n      // Sometimes the tokenizer generates tt.slash for regexps, and this is\n      // handler by parseExprAtom\n      type === tt.regexp ||\n      type === tt.slash ||\n      // This code could be parsed both as a modulo operator or as an intrinsic:\n      //   await %x(0)\n      (this.hasPlugin(\"v8intrinsic\") && type === tt.modulo)\n    );\n  }\n\n  // Parses yield expression inside generator.\n\n  parseYield(this: Parser): N.YieldExpression {\n    const node = this.startNode<N.YieldExpression>();\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.YieldInParameter,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n\n    this.next();\n    let delegating = false;\n    let argument: N.Expression | null = null;\n    if (!this.hasPrecedingLineBreak()) {\n      delegating = this.eat(tt.star);\n      switch (this.state.type) {\n        case tt.semi:\n        case tt.eof:\n        case tt.braceR:\n        case tt.parenR:\n        case tt.bracketR:\n        case tt.braceBarR:\n        case tt.colon:\n        case tt.comma:\n          // The above is the complete set of tokens that can\n          // follow an AssignmentExpression, and none of them\n          // can start an AssignmentExpression\n          if (!delegating) break;\n        /* fallthrough */\n        default:\n          argument = this.parseMaybeAssign();\n      }\n    }\n    node.delegate = delegating;\n    node.argument = argument;\n    return this.finishNode(node, \"YieldExpression\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportCall\n  parseImportCall(\n    this: Parser,\n    node: Undone<N.ImportExpression>,\n  ): N.ImportExpression {\n    this.next(); // eat tt.parenL\n    node.source = this.parseMaybeAssignAllowIn();\n    node.options = null;\n    if (this.eat(tt.comma)) {\n      if (!this.match(tt.parenR)) {\n        node.options = this.parseMaybeAssignAllowIn();\n\n        if (this.eat(tt.comma) && !this.match(tt.parenR)) {\n          // keep consuming arguments, to then throw ImportCallArity\n          // instead of \"expected )\"\n          do {\n            this.parseMaybeAssignAllowIn();\n          } while (this.eat(tt.comma) && !this.match(tt.parenR));\n\n          this.raise(Errors.ImportCallArity, node);\n        }\n      }\n    }\n    this.expect(tt.parenR);\n    return this.finishNode(node, \"ImportExpression\");\n  }\n\n  // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n  // of the infix operator `|>`.\n\n  checkPipelineAtInfixOperator(left: N.Expression, leftStartLoc: Position) {\n    // @ts-expect-error Remove this in Babel 8\n    if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n      if (left.type === \"SequenceExpression\") {\n        // Ensure that the pipeline head is not a comma-delimited\n        // sequence expression.\n        this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);\n      }\n    }\n  }\n\n  parseSmartPipelineBodyInStyle(childExpr: N.Expression, startLoc: Position) {\n    if (this.isSimpleReference(childExpr)) {\n      const bodyNode = this.startNodeAt<N.PipelineBareFunction>(startLoc);\n      bodyNode.callee = childExpr;\n      return this.finishNode(bodyNode, \"PipelineBareFunction\");\n    } else {\n      const bodyNode = this.startNodeAt<N.PipelineTopicExpression>(startLoc);\n      this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n      bodyNode.expression = childExpr;\n      return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n    }\n  }\n\n  isSimpleReference(expression: N.Expression): boolean {\n    switch (expression.type) {\n      case \"MemberExpression\":\n        return (\n          !expression.computed && this.isSimpleReference(expression.object)\n        );\n      case \"Identifier\":\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  // This helper method is to be called immediately\n  // after a topic-style smart-mix pipe body is parsed.\n  // The `startLoc` is the starting position of the pipe body.\n\n  checkSmartPipeTopicBodyEarlyErrors(startLoc: Position): void {\n    // If the following token is invalidly `=>`, then throw a human-friendly error\n    // instead of something like 'Unexpected token, expected \";\"'.\n    // For example, `x => x |> y => #` (assuming `#` is the topic reference)\n    // groups into `x => (x |> y) => #`,\n    // and `(x |> y) => #` is an invalid arrow function.\n    // This is because smart-mix `|>` has tighter precedence than `=>`.\n    if (this.match(tt.arrow)) {\n      throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);\n    }\n\n    // A topic-style smart-mix pipe body must use the topic reference at least once.\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      this.raise(Errors.PipelineTopicUnused, startLoc);\n    }\n  }\n\n  // Enable topic references from outer contexts within Hack-style pipe bodies.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references.\n  // The function then calls a callback, then resets the parser\n  // to the old topic-context state that it had before the function was called.\n\n  withTopicBindingContext<T>(callback: () => T): T {\n    const outerContextTopicState = this.state.topicContext;\n    this.state.topicContext = {\n      // Enable the use of the primary topic reference.\n      maxNumOfResolvableTopics: 1,\n      // Hide the use of any topic references from outer contexts.\n      maxTopicIndex: null,\n    };\n\n    try {\n      return callback();\n    } finally {\n      this.state.topicContext = outerContextTopicState;\n    }\n  }\n\n  // This helper method is used only with the deprecated smart-mix pipe proposal.\n  // Disables topic references from outer contexts within syntax constructs\n  // such as the bodies of iteration statements.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references with the smartPipelines plugin. They then run a\n  // callback, then they reset the parser to the old topic-context state that it\n  // had before the function was called.\n\n  withSmartMixTopicForbiddingContext<T>(callback: () => T): T {\n    // @ts-expect-error Remove this in Babel 8\n    if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n      // Reset the parser’s topic context only if the smart-mix pipe proposal is active.\n      const outerContextTopicState = this.state.topicContext;\n      this.state.topicContext = {\n        // Disable the use of the primary topic reference.\n        maxNumOfResolvableTopics: 0,\n        // Hide the use of any topic references from outer contexts.\n        maxTopicIndex: null,\n      };\n\n      try {\n        return callback();\n      } finally {\n        this.state.topicContext = outerContextTopicState;\n      }\n    } else {\n      // If the pipe proposal is \"minimal\", \"fsharp\", or \"hack\",\n      // or if no pipe proposal is active,\n      // then the callback result is returned\n      // without touching any extra parser state.\n      return callback();\n    }\n  }\n\n  withSoloAwaitPermittingContext<T>(callback: () => T): T {\n    const outerContextSoloAwaitState = this.state.soloAwait;\n    this.state.soloAwait = true;\n\n    try {\n      return callback();\n    } finally {\n      this.state.soloAwait = outerContextSoloAwaitState;\n    }\n  }\n\n  allowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToSet = ParamKind.PARAM_IN & ~flags;\n    if (prodParamToSet) {\n      this.prodParam.enter(flags | ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  disallowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToClear = ParamKind.PARAM_IN & flags;\n    if (prodParamToClear) {\n      this.prodParam.enter(flags & ~ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  // Register the use of a topic reference within the current\n  // topic-binding context.\n  registerTopicReference(): void {\n    this.state.topicContext.maxTopicIndex = 0;\n  }\n\n  topicReferenceIsAllowedInCurrentContext(): boolean {\n    return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n  }\n\n  topicReferenceWasUsedInCurrentContext(): boolean {\n    return (\n      this.state.topicContext.maxTopicIndex != null &&\n      this.state.topicContext.maxTopicIndex >= 0\n    );\n  }\n\n  parseFSharpPipelineBody(this: Parser, prec: number): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    this.state.potentialArrowAt = this.state.start;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = true;\n\n    const ret = this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      prec,\n    );\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return ret;\n  }\n\n  // https://github.com/tc39/proposal-js-module-blocks\n  parseModuleExpression(this: Parser): N.ModuleExpression {\n    this.expectPlugin(\"moduleBlocks\");\n    const node = this.startNode<N.ModuleExpression>();\n    this.next(); // eat \"module\"\n    if (!this.match(tt.braceL)) {\n      this.unexpected(null, tt.braceL);\n    }\n    // start program node immediately after `{`\n    const program = this.startNodeAt<N.Program>(this.state.endLoc);\n    this.next(); // eat `{`\n\n    const revertScopes = this.initializeScopes(/** inModule */ true);\n    this.enterInitialScopes();\n\n    try {\n      node.body = this.parseProgram(program, tt.braceR, \"module\");\n    } finally {\n      revertScopes();\n    }\n    return this.finishNode<N.ModuleExpression>(node, \"ModuleExpression\");\n  }\n\n  // Used in Flow plugin\n  parsePropertyNamePrefixOperator(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    prop: Undone<N.ObjectOrClassMember | N.ClassMember>,\n  ): void {}\n}\n","import type * as N from \"../types.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLoop,\n  tokenIsTemplate,\n  tt,\n  type TokenType,\n  getExportedToken,\n} from \"../tokenizer/types.ts\";\nimport ExpressionParser from \"./expression.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../util/identifier.ts\";\nimport * as charCodes from \"charcodes\";\nimport {\n  ScopeFlag,\n  ClassElementType,\n  BindingFlag,\n} from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newExpressionScope,\n  newParameterDeclarationScope,\n} from \"../util/expression-scope.ts\";\nimport type { SourceType } from \"../options.ts\";\nimport { Token } from \"../tokenizer/index.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../util/location.ts\";\nimport { cloneStringLiteral, cloneIdentifier, type Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\nimport { ParseBindingListFlags } from \"./lval.ts\";\nimport { LoopLabelKind } from \"../tokenizer/state.ts\";\n\nconst loopLabel = { kind: LoopLabelKind.Loop } as const,\n  switchLabel = { kind: LoopLabelKind.Switch } as const;\n\nexport const enum ParseFunctionFlag {\n  Expression = 0b0000,\n  Declaration = 0b0001,\n  HangingDeclaration = 0b0010,\n  NullableId = 0b0100,\n  Async = 0b1000,\n}\n\nexport const enum ParseStatementFlag {\n  StatementOnly = 0b0000,\n  AllowImportExport = 0b0001,\n  AllowDeclaration = 0b0010,\n  AllowFunctionDeclaration = 0b0100,\n  AllowLabeledFunction = 0b1000,\n}\n\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\n\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\n/**\n * Convert tokens for backward Babel 7 compat.\n * tt.privateName => tt.hash + tt.name\n * tt.templateTail => tt.backquote/tt.braceR + tt.template + tt.backquote\n * tt.templateNonTail => tt.backquote/tt.braceR + tt.template + tt.dollarBraceL\n * For performance reasons this routine mutates `tokens`, it is okay\n * here since we execute `parseTopLevel` once for every file.\n */\nfunction babel7CompatTokens(\n  tokens: (Token | N.Comment)[],\n  input: string,\n  startIndex: number,\n) {\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i];\n    const { type } = token;\n    if (typeof type === \"number\") {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (type === tt.privateName) {\n          const { loc, start, value, end } = token;\n          const hashEndPos = start + 1;\n          const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          tokens.splice(\n            i,\n            1,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.hash),\n              value: \"#\",\n              start: start,\n              end: hashEndPos,\n              startLoc: loc.start,\n              endLoc: hashEndLoc,\n            }),\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.name),\n              value: value,\n              start: hashEndPos,\n              end: end,\n              startLoc: hashEndLoc,\n              endLoc: loc.end,\n            }),\n          );\n          i++;\n          continue;\n        }\n\n        if (tokenIsTemplate(type)) {\n          const { loc, start, value, end } = token;\n          const backquoteEnd = start + 1;\n          const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          let startToken;\n          if (input.charCodeAt(start - startIndex) === charCodes.graveAccent) {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          } else {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.braceR),\n              value: \"}\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          }\n          let templateValue,\n            templateElementEnd,\n            templateElementEndLoc,\n            endToken;\n          if (type === tt.templateTail) {\n            // ends with '`'\n            templateElementEnd = end - 1;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n            templateValue = value === null ? null : value.slice(1, -1);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          } else {\n            // ends with `${`\n            templateElementEnd = end - 2;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n            templateValue = value === null ? null : value.slice(1, -2);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.dollarBraceL),\n              value: \"${\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          }\n          tokens.splice(\n            i,\n            1,\n            startToken,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.template),\n              value: templateValue,\n              start: backquoteEnd,\n              end: templateElementEnd,\n              startLoc: backquoteEndLoc,\n              endLoc: templateElementEndLoc,\n            }),\n            endToken,\n          );\n          i += 2;\n          continue;\n        }\n      }\n      // @ts-expect-error: we manipulate `token` for performance reasons\n      token.type = getExportedToken(type);\n    }\n  }\n  return tokens;\n}\nexport default abstract class StatementParser extends ExpressionParser {\n  // ### Statement parsing\n\n  // Parse a program. Initializes the parser, reads any number of\n  // statements, and wraps them in a Program node.  Optionally takes a\n  // `program` argument.  If present, the statements will be appended\n  // to its body instead of creating a new node.\n\n  parseTopLevel(\n    this: Parser,\n    file: Undone<N.File>,\n    program: Undone<N.Program>,\n  ): N.File {\n    file.program = this.parseProgram(program);\n    file.comments = this.comments;\n\n    if (this.options.tokens) {\n      file.tokens = babel7CompatTokens(\n        this.tokens,\n        this.input,\n        this.startIndex,\n      );\n    }\n\n    return this.finishNode(file, \"File\");\n  }\n\n  parseProgram(\n    this: Parser,\n    program: Undone<N.Program>,\n    end: TokenType = tt.eof,\n    sourceType: SourceType = this.options.sourceType,\n  ): N.Program {\n    program.sourceType = sourceType;\n    program.interpreter = this.parseInterpreterDirective();\n    this.parseBlockBody(program, true, true, end);\n    if (this.inModule) {\n      if (\n        !this.options.allowUndeclaredExports &&\n        this.scope.undefinedExports.size > 0\n      ) {\n        for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n          this.raise(Errors.ModuleExportUndefined, at, { localName });\n        }\n      }\n      this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n    }\n    let finishedProgram: N.Program;\n    if (end === tt.eof) {\n      // finish at eof for top level program\n      finishedProgram = this.finishNode(program, \"Program\");\n    } else {\n      // finish immediately before the end token\n      finishedProgram = this.finishNodeAt(\n        program,\n        \"Program\",\n        createPositionWithColumnOffset(this.state.startLoc, -1),\n      );\n    }\n    return finishedProgram;\n  }\n\n  /**\n   * cast a Statement to a Directive. This method mutates input statement.\n   */\n  stmtToDirective(stmt: N.Statement): N.Directive {\n    const directive = stmt as any;\n    directive.type = \"Directive\";\n    directive.value = directive.expression;\n    delete directive.expression;\n\n    const directiveLiteral = directive.value;\n    const expressionValue = directiveLiteral.value;\n    const raw = this.input.slice(\n      this.offsetToSourcePos(directiveLiteral.start),\n      this.offsetToSourcePos(directiveLiteral.end),\n    );\n    const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n    this.addExtra(directiveLiteral, \"raw\", raw);\n    this.addExtra(directiveLiteral, \"rawValue\", val);\n    this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n\n    directiveLiteral.type = \"DirectiveLiteral\";\n\n    return directive;\n  }\n\n  parseInterpreterDirective(): N.InterpreterDirective | null {\n    if (!this.match(tt.interpreterDirective)) {\n      return null;\n    }\n\n    const node = this.startNode<N.InterpreterDirective>();\n    node.value = this.state.value;\n    this.next();\n    return this.finishNode(node, \"InterpreterDirective\");\n  }\n\n  isLet(): boolean {\n    if (!this.isContextual(tt._let)) {\n      return false;\n    }\n    return this.hasFollowingBindingAtom();\n  }\n\n  chStartsBindingIdentifier(ch: number, pos: number) {\n    if (isIdentifierStart(ch)) {\n      keywordRelationalOperator.lastIndex = pos;\n      if (keywordRelationalOperator.test(this.input)) {\n        // We have seen `in` or `instanceof` so far, now check if the identifier\n        // ends here\n        const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n        if (!isIdentifierChar(endCh) && endCh !== charCodes.backslash) {\n          return false;\n        }\n      }\n      return true;\n    } else if (ch === charCodes.backslash) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  chStartsBindingPattern(ch: number) {\n    return (\n      ch === charCodes.leftSquareBracket || ch === charCodes.leftCurlyBrace\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `let` and declaration is allowed, check if it\n   * starts a variable declaration so that it should be interpreted as a keyword.\n   */\n  hasFollowingBindingAtom(): boolean {\n    const next = this.nextTokenStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      this.chStartsBindingPattern(nextCh) ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `using` and declaration is allowed, check if it\n   * starts a variable declaration in the same line so that it should be interpreted as\n   * a keyword.\n   */\n  hasInLineFollowingBindingIdentifierOrBrace(): boolean {\n    const next = this.nextTokenInLineStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      nextCh === charCodes.leftCurlyBrace ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  startsUsingForOf(): boolean {\n    const { type, containsEsc } = this.lookahead();\n    if (type === tt._of && !containsEsc) {\n      // `using of` must start a for-lhs-of statement\n      return false;\n    } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) {\n      this.expectPlugin(\"explicitResourceManagement\");\n      return true;\n    }\n  }\n\n  startsAwaitUsing(): boolean {\n    let next = this.nextTokenInLineStart();\n    if (this.isUnparsedContextual(next, \"using\")) {\n      next = this.nextTokenInLineStartSince(next + 5);\n      const nextCh = this.codePointAtPos(next);\n      if (this.chStartsBindingIdentifier(nextCh, next)) {\n        this.expectPlugin(\"explicitResourceManagement\");\n        return true;\n      }\n    }\n    return false;\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleItem\n  parseModuleItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowImportExport |\n        ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        // This function is actually also used to parse StatementItems,\n        // which with Annex B enabled allows labeled functions.\n        ParseStatementFlag.AllowLabeledFunction,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-StatementListItem\n  parseStatementListItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        (!this.options.annexB || this.state.strict\n          ? 0\n          : ParseStatementFlag.AllowLabeledFunction),\n    );\n  }\n\n  parseStatementOrSloppyAnnexBFunctionDeclaration(\n    this: Parser,\n    allowLabeledFunction: boolean = false,\n  ) {\n    let flags: ParseStatementFlag = ParseStatementFlag.StatementOnly;\n    if (this.options.annexB && !this.state.strict) {\n      flags |= ParseStatementFlag.AllowFunctionDeclaration;\n      if (allowLabeledFunction) {\n        flags |= ParseStatementFlag.AllowLabeledFunction;\n      }\n    }\n    return this.parseStatementLike(flags);\n  }\n\n  // Parse a single statement.\n  //\n  // If expecting a statement and finding a slash operator, parse a\n  // regular expression literal. This is to handle cases like\n  // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n  // does not help.\n  // https://tc39.es/ecma262/#prod-Statement\n  parseStatement(this: Parser) {\n    return this.parseStatementLike(ParseStatementFlag.StatementOnly);\n  }\n\n  // ImportDeclaration and ExportDeclaration are also handled here so we can throw recoverable errors\n  // when they are not at the top level\n  parseStatementLike(\n    this: Parser,\n    flags: ParseStatementFlag,\n  ):\n    | N.Statement\n    | N.Declaration\n    | N.ImportDeclaration\n    | N.ExportDefaultDeclaration\n    | N.ExportNamedDeclaration\n    | N.ExportAllDeclaration {\n    let decorators: N.Decorator[] | null = null;\n\n    if (this.match(tt.at)) {\n      decorators = this.parseDecorators(true);\n    }\n    return this.parseStatementContent(flags, decorators);\n  }\n\n  parseStatementContent(\n    this: Parser,\n    flags: ParseStatementFlag,\n    decorators?: N.Decorator[] | null,\n  ): N.Statement {\n    const startType = this.state.type;\n    const node = this.startNode();\n    const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);\n    const allowFunctionDeclaration = !!(\n      flags & ParseStatementFlag.AllowFunctionDeclaration\n    );\n    const topLevel = flags & ParseStatementFlag.AllowImportExport;\n\n    // Most types of statements are recognized by the keyword they\n    // start with. Many are trivial to parse, some require a bit of\n    // complexity.\n\n    switch (startType) {\n      case tt._break:\n        return this.parseBreakContinueStatement(node, /* isBreak */ true);\n      case tt._continue:\n        return this.parseBreakContinueStatement(node, /* isBreak */ false);\n      case tt._debugger:\n        return this.parseDebuggerStatement(node as Undone<N.DebuggerStatement>);\n      case tt._do:\n        return this.parseDoWhileStatement(node as Undone<N.DoWhileStatement>);\n      case tt._for:\n        return this.parseForStatement(node as Undone<N.ForStatement>);\n      case tt._function:\n        if (this.lookaheadCharCode() === charCodes.dot) break;\n        if (!allowFunctionDeclaration) {\n          this.raise(\n            this.state.strict\n              ? Errors.StrictFunction\n              : this.options.annexB\n                ? Errors.SloppyFunctionAnnexB\n                : Errors.SloppyFunction,\n            this.state.startLoc,\n          );\n        }\n        return this.parseFunctionStatement(\n          node as Undone<N.FunctionDeclaration>,\n          false,\n          !allowDeclaration && allowFunctionDeclaration,\n        );\n      case tt._class:\n        if (!allowDeclaration) this.unexpected();\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            node as Undone<N.ClassDeclaration>,\n          ),\n          true,\n        );\n\n      case tt._if:\n        return this.parseIfStatement(node as Undone<N.IfStatement>);\n      case tt._return:\n        return this.parseReturnStatement(node as Undone<N.ReturnStatement>);\n      case tt._switch:\n        return this.parseSwitchStatement(node as Undone<N.SwitchStatement>);\n      case tt._throw:\n        return this.parseThrowStatement(node as Undone<N.ThrowStatement>);\n      case tt._try:\n        return this.parseTryStatement(node as Undone<N.TryStatement>);\n\n      case tt._await:\n        // [+Await] await [no LineTerminator here] using [no LineTerminator here] BindingList[+Using]\n        if (!this.state.containsEsc && this.startsAwaitUsing()) {\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n          } else if (!allowDeclaration) {\n            this.raise(Errors.UnexpectedLexicalDeclaration, node);\n          }\n          this.next(); // eat 'await'\n          return this.parseVarStatement(\n            node as Undone<N.VariableDeclaration>,\n            \"await using\",\n          );\n        }\n        break;\n      case tt._using:\n        // using [no LineTerminator here] BindingList[+Using]\n        if (\n          this.state.containsEsc ||\n          !this.hasInLineFollowingBindingIdentifierOrBrace()\n        ) {\n          break;\n        }\n        this.expectPlugin(\"explicitResourceManagement\");\n        if (!this.scope.inModule && this.scope.inTopLevel) {\n          this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n        } else if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          \"using\",\n        );\n      case tt._let: {\n        if (this.state.containsEsc) {\n          break;\n        }\n        // `let [` is an explicit negative lookahead for\n        // ExpressionStatement, so special-case it first.\n        const next = this.nextTokenStart();\n        const nextCh = this.codePointAtPos(next);\n        if (nextCh !== charCodes.leftSquareBracket) {\n          if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n          if (\n            !this.chStartsBindingIdentifier(nextCh, next) &&\n            nextCh !== charCodes.leftCurlyBrace\n          ) {\n            break;\n          }\n        }\n      }\n      // fall through\n      case tt._const: {\n        if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n      }\n      // fall through\n      case tt._var: {\n        const kind = this.state.value;\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          kind,\n        );\n      }\n      case tt._while:\n        return this.parseWhileStatement(node as Undone<N.WhileStatement>);\n      case tt._with:\n        return this.parseWithStatement(node as Undone<N.WithStatement>);\n      case tt.braceL:\n        return this.parseBlock();\n      case tt.semi:\n        return this.parseEmptyStatement(node as Undone<N.EmptyStatement>);\n      case tt._import: {\n        const nextTokenCharCode = this.lookaheadCharCode();\n        if (\n          nextTokenCharCode === charCodes.leftParenthesis || // import()\n          nextTokenCharCode === charCodes.dot // import.meta\n        ) {\n          break;\n        }\n      }\n      // fall through\n      case tt._export: {\n        if (!this.options.allowImportExportEverywhere && !topLevel) {\n          this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n        }\n\n        this.next(); // eat `import`/`export`\n\n        let result;\n        if (startType === tt._import) {\n          result = this.parseImport(node as Undone<N.ImportDeclaration>);\n\n          if (\n            result.type === \"ImportDeclaration\" &&\n            (!result.importKind || result.importKind === \"value\")\n          ) {\n            this.sawUnambiguousESM = true;\n          }\n        } else {\n          result = this.parseExport(\n            node as Undone<\n              | N.ExportAllDeclaration\n              | N.ExportDefaultDeclaration\n              | N.ExportDefaultDeclaration\n            >,\n            decorators,\n          );\n\n          if (\n            (result.type === \"ExportNamedDeclaration\" &&\n              (!result.exportKind || result.exportKind === \"value\")) ||\n            (result.type === \"ExportAllDeclaration\" &&\n              (!result.exportKind || result.exportKind === \"value\")) ||\n            result.type === \"ExportDefaultDeclaration\"\n          ) {\n            this.sawUnambiguousESM = true;\n          }\n        }\n\n        this.assertModuleNodeAllowed(result);\n\n        return result;\n      }\n\n      default: {\n        if (this.isAsyncFunction()) {\n          if (!allowDeclaration) {\n            this.raise(\n              Errors.AsyncFunctionInSingleStatementContext,\n              this.state.startLoc,\n            );\n          }\n          this.next(); // eat 'async'\n          return this.parseFunctionStatement(\n            node as Undone<N.FunctionDeclaration>,\n            true,\n            !allowDeclaration && allowFunctionDeclaration,\n          );\n        }\n      }\n    }\n\n    // If the statement does not start with a statement keyword or a\n    // brace, it's an ExpressionStatement or LabeledStatement. We\n    // simply start parsing an expression, and afterwards, if the\n    // next token is a colon and the expression was a simple\n    // Identifier node, we switch to interpreting it as a label.\n    const maybeName = this.state.value;\n    const expr = this.parseExpression();\n\n    if (\n      tokenIsIdentifier(startType) &&\n      expr.type === \"Identifier\" &&\n      this.eat(tt.colon)\n    ) {\n      return this.parseLabeledStatement(\n        node as Undone<N.LabeledStatement>,\n        maybeName,\n        expr,\n        flags,\n      );\n    } else {\n      return this.parseExpressionStatement(\n        node as Undone<N.ExpressionStatement>,\n        expr,\n        decorators,\n      );\n    }\n  }\n\n  assertModuleNodeAllowed(node: N.Node): void {\n    if (!this.options.allowImportExportEverywhere && !this.inModule) {\n      this.raise(Errors.ImportOutsideModule, node);\n    }\n  }\n\n  decoratorsEnabledBeforeExport(): boolean {\n    if (this.hasPlugin(\"decorators-legacy\")) return true;\n    return (\n      this.hasPlugin(\"decorators\") &&\n      this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== false\n    );\n  }\n\n  // Attach the decorators to the given class.\n  // NOTE: This method changes the .start location of the class, and thus\n  // can affect comment attachment. Calling it before or after finalizing\n  // the class node (and thus finalizing its comments) changes how comments\n  // before the `class` keyword or before the final .start location of the\n  // class are attached.\n  maybeTakeDecorators<T extends Undone<N.Class>>(\n    maybeDecorators: N.Decorator[] | null,\n    classNode: T,\n    exportNode?: Undone<N.ExportDefaultDeclaration | N.ExportNamedDeclaration>,\n  ): T {\n    if (maybeDecorators) {\n      if (classNode.decorators && classNode.decorators.length > 0) {\n        // Note: decorators attachment is only attempred multiple times\n        // when the class is part of an export declaration.\n        if (\n          typeof this.getPluginOption(\n            \"decorators\",\n            \"decoratorsBeforeExport\",\n          ) !== \"boolean\"\n        ) {\n          // If `decoratorsBeforeExport` was set to `true` or `false`, we\n          // already threw an error about decorators not being in a valid\n          // position.\n          this.raise(\n            Errors.DecoratorsBeforeAfterExport,\n            classNode.decorators[0],\n          );\n        }\n        classNode.decorators.unshift(...maybeDecorators);\n      } else {\n        classNode.decorators = maybeDecorators;\n      }\n      this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n      if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n    }\n    return classNode;\n  }\n\n  canHaveLeadingDecorator(): boolean {\n    return this.match(tt._class);\n  }\n\n  parseDecorators(this: Parser, allowExport?: boolean): N.Decorator[] {\n    const decorators = [];\n    do {\n      decorators.push(this.parseDecorator());\n    } while (this.match(tt.at));\n\n    if (this.match(tt._export)) {\n      if (!allowExport) {\n        this.unexpected();\n      }\n\n      if (!this.decoratorsEnabledBeforeExport()) {\n        this.raise(Errors.DecoratorExportClass, this.state.startLoc);\n      }\n    } else if (!this.canHaveLeadingDecorator()) {\n      throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n    }\n\n    return decorators;\n  }\n\n  parseDecorator(this: Parser): N.Decorator {\n    this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n    const node = this.startNode<N.Decorator>();\n    this.next();\n\n    if (this.hasPlugin(\"decorators\")) {\n      const startLoc = this.state.startLoc;\n      let expr: N.Expression;\n\n      if (this.match(tt.parenL)) {\n        const startLoc = this.state.startLoc;\n        this.next(); // eat '('\n        expr = this.parseExpression();\n        this.expect(tt.parenR);\n        expr = this.wrapParenthesis(startLoc, expr);\n\n        const paramsStartLoc = this.state.startLoc;\n        node.expression = this.parseMaybeDecoratorArguments(expr);\n        if (\n          this.getPluginOption(\"decorators\", \"allowCallParenthesized\") ===\n            false &&\n          node.expression !== expr\n        ) {\n          this.raise(\n            Errors.DecoratorArgumentsOutsideParentheses,\n            paramsStartLoc,\n          );\n        }\n      } else {\n        expr = this.parseIdentifier(false);\n\n        while (this.eat(tt.dot)) {\n          const node = this.startNodeAt<N.MemberExpression>(startLoc);\n          node.object = expr;\n          if (this.match(tt.privateName)) {\n            this.classScope.usePrivateName(\n              this.state.value,\n              this.state.startLoc,\n            );\n            node.property = this.parsePrivateName();\n          } else {\n            node.property = this.parseIdentifier(true);\n          }\n          node.computed = false;\n          expr = this.finishNode(node, \"MemberExpression\");\n        }\n\n        node.expression = this.parseMaybeDecoratorArguments(expr);\n      }\n    } else {\n      node.expression = this.parseExprSubscripts();\n    }\n    return this.finishNode(node, \"Decorator\");\n  }\n\n  parseMaybeDecoratorArguments(this: Parser, expr: N.Expression): N.Expression {\n    if (this.eat(tt.parenL)) {\n      const node = this.startNodeAtNode<N.CallExpression>(expr);\n      node.callee = expr;\n      node.arguments = this.parseCallExpressionArguments(tt.parenR);\n      this.toReferencedList(node.arguments);\n      return this.finishNode(node, \"CallExpression\");\n    }\n\n    return expr;\n  }\n\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: true,\n  ): N.BreakStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: false,\n  ): N.ContinueStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ): N.BreakStatement | N.ContinueStatement {\n    this.next();\n\n    if (this.isLineTerminator()) {\n      node.label = null;\n    } else {\n      node.label = this.parseIdentifier();\n      this.semicolon();\n    }\n\n    this.verifyBreakContinue(node, isBreak);\n\n    return this.finishNode(\n      node,\n      isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n    );\n  }\n\n  verifyBreakContinue(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ) {\n    let i;\n    for (i = 0; i < this.state.labels.length; ++i) {\n      const lab = this.state.labels[i];\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === LoopLabelKind.Loop)) {\n          break;\n        }\n        if (node.label && isBreak) break;\n      }\n    }\n    if (i === this.state.labels.length) {\n      const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n      this.raise(Errors.IllegalBreakContinue, node, { type });\n    }\n  }\n\n  parseDebuggerStatement(\n    node: Undone<N.DebuggerStatement>,\n  ): N.DebuggerStatement {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\");\n  }\n\n  parseHeaderExpression(this: Parser): N.Expression {\n    this.expect(tt.parenL);\n    const val = this.parseExpression();\n    this.expect(tt.parenR);\n    return val;\n  }\n\n  // https://tc39.es/ecma262/#prod-DoWhileStatement\n  parseDoWhileStatement(\n    this: Parser,\n    node: Undone<N.DoWhileStatement>,\n  ): N.DoWhileStatement {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body's body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body's body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    this.expect(tt._while);\n    node.test = this.parseHeaderExpression();\n    this.eat(tt.semi);\n    return this.finishNode(node, \"DoWhileStatement\");\n  }\n\n  // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n  // loop is non-trivial. Basically, we have to parse the init `var`\n  // statement or expression, disallowing the `in` operator (see\n  // the second parameter to `parseExpression`), and then check\n  // whether the next token is `in` or `of`. When there is no init\n  // part (semicolon immediately after the opening parenthesis), it\n  // is a regular `for` loop.\n\n  parseForStatement(\n    this: Parser,\n    node: Undone<N.ForStatement | N.ForInOf>,\n  ): N.ForLike {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    let awaitAt = null;\n\n    if (this.isContextual(tt._await) && this.recordAwaitIfAllowed()) {\n      awaitAt = this.state.startLoc;\n      this.next();\n    }\n    this.scope.enter(ScopeFlag.OTHER);\n    this.expect(tt.parenL);\n\n    if (this.match(tt.semi)) {\n      if (awaitAt !== null) {\n        this.unexpected(awaitAt);\n      }\n      return this.parseFor(node as Undone<N.ForStatement>, null);\n    }\n\n    const startsWithLet = this.isContextual(tt._let);\n    {\n      const startsWithAwaitUsing =\n        this.isContextual(tt._await) && this.startsAwaitUsing();\n      const starsWithUsingDeclaration =\n        startsWithAwaitUsing ||\n        (this.isContextual(tt._using) && this.startsUsingForOf());\n      const isLetOrUsing =\n        (startsWithLet && this.hasFollowingBindingAtom()) ||\n        starsWithUsingDeclaration;\n\n      if (this.match(tt._var) || this.match(tt._const) || isLetOrUsing) {\n        const initNode = this.startNode<N.VariableDeclaration>();\n        let kind;\n        if (startsWithAwaitUsing) {\n          kind = \"await using\";\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n          }\n          this.next(); // eat 'await'\n        } else {\n          kind = this.state.value;\n        }\n        this.next();\n        this.parseVar(initNode, true, kind);\n        const init = this.finishNode(initNode, \"VariableDeclaration\");\n\n        const isForIn = this.match(tt._in);\n        if (isForIn && starsWithUsingDeclaration) {\n          this.raise(Errors.ForInUsing, init);\n        }\n        if (\n          (isForIn || this.isContextual(tt._of)) &&\n          init.declarations.length === 1\n        ) {\n          return this.parseForIn(node as Undone<N.ForInOf>, init, awaitAt);\n        }\n        if (awaitAt !== null) {\n          this.unexpected(awaitAt);\n        }\n        return this.parseFor(node as Undone<N.ForStatement>, init);\n      }\n    }\n\n    // Check whether the first token is possibly a contextual keyword, so that\n    // we can forbid `for (async of` if this turns out to be a for-of loop.\n    const startsWithAsync = this.isContextual(tt._async);\n\n    const refExpressionErrors = new ExpressionErrors();\n    const init = this.parseExpression(true, refExpressionErrors);\n    const isForOf = this.isContextual(tt._of);\n    if (isForOf) {\n      // Check for leading tokens that are forbidden in for-of loops:\n      if (startsWithLet) {\n        this.raise(Errors.ForOfLet, init);\n      }\n\n      if (\n        // `for await (async of []);` is allowed.\n        awaitAt === null &&\n        startsWithAsync &&\n        init.type === \"Identifier\"\n      ) {\n        // This catches the case where the `async` in `for (async of` was\n        // parsed as an identifier. If it was parsed as the start of an async\n        // arrow function (e.g. `for (async of => {} of []);`), the LVal check\n        // further down will raise a more appropriate error.\n        this.raise(Errors.ForOfAsync, init);\n      }\n    }\n    if (isForOf || this.match(tt._in)) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.toAssignable(init, /* isLHS */ true);\n      const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n      this.checkLVal(init, { type });\n      return this.parseForIn(\n        node as Undone<N.ForInStatement | N.ForOfStatement>,\n        // @ts-expect-error init has been transformed to an assignable\n        init,\n        awaitAt,\n      );\n    } else {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n    if (awaitAt !== null) {\n      this.unexpected(awaitAt);\n    }\n    return this.parseFor(node as Undone<N.ForStatement>, init);\n  }\n\n  // https://tc39.es/ecma262/#prod-HoistableDeclaration\n  parseFunctionStatement(\n    this: Parser,\n    node: Undone<N.FunctionDeclaration>,\n    isAsync: boolean,\n    isHangingDeclaration: boolean,\n  ): N.FunctionDeclaration {\n    this.next(); // eat 'function'\n    return this.parseFunction(\n      node,\n      ParseFunctionFlag.Declaration |\n        (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) |\n        (isAsync ? ParseFunctionFlag.Async : 0),\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-IfStatement\n  parseIfStatement(this: Parser, node: Undone<N.IfStatement>) {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    // Annex B.3.3\n    // https://tc39.es/ecma262/#sec-functiondeclarations-in-ifstatement-statement-clauses\n    node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n    node.alternate = this.eat(tt._else)\n      ? this.parseStatementOrSloppyAnnexBFunctionDeclaration()\n      : null;\n    return this.finishNode(node, \"IfStatement\");\n  }\n\n  parseReturnStatement(this: Parser, node: Undone<N.ReturnStatement>) {\n    if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {\n      this.raise(Errors.IllegalReturn, this.state.startLoc);\n    }\n\n    this.next();\n\n    // In `return` (and `break`/`continue`), the keywords with\n    // optional arguments, we eagerly look for a semicolon or the\n    // possibility to insert one.\n\n    if (this.isLineTerminator()) {\n      node.argument = null;\n    } else {\n      node.argument = this.parseExpression();\n      this.semicolon();\n    }\n\n    return this.finishNode(node, \"ReturnStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-SwitchStatement\n  parseSwitchStatement(this: Parser, node: Undone<N.SwitchStatement>) {\n    this.next();\n    node.discriminant = this.parseHeaderExpression();\n    const cases: N.SwitchStatement[\"cases\"] = (node.cases = []);\n    this.expect(tt.braceL);\n    this.state.labels.push(switchLabel);\n    this.scope.enter(ScopeFlag.OTHER);\n\n    // Statements under must be grouped (by label) in SwitchCase\n    // nodes. `cur` is used to keep the node that we are currently\n    // adding statements to.\n\n    let cur;\n    for (let sawDefault; !this.match(tt.braceR); ) {\n      if (this.match(tt._case) || this.match(tt._default)) {\n        const isCase = this.match(tt._case);\n        if (cur) this.finishNode(cur, \"SwitchCase\");\n        // @ts-expect-error Fixme\n        cases.push((cur = this.startNode<N.SwitchCase>()));\n        cur.consequent = [];\n        this.next();\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) {\n            this.raise(\n              Errors.MultipleDefaultsInSwitch,\n              this.state.lastTokStartLoc,\n            );\n          }\n          sawDefault = true;\n          cur.test = null;\n        }\n        this.expect(tt.colon);\n      } else {\n        if (cur) {\n          cur.consequent.push(this.parseStatementListItem());\n        } else {\n          this.unexpected();\n        }\n      }\n    }\n    this.scope.exit();\n    if (cur) this.finishNode(cur, \"SwitchCase\");\n    this.next(); // Closing brace\n    this.state.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\");\n  }\n\n  parseThrowStatement(this: Parser, node: Undone<N.ThrowStatement>) {\n    this.next();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);\n    }\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\");\n  }\n\n  parseCatchClauseParam(this: Parser): N.Pattern {\n    const param = this.parseBindingAtom();\n\n    this.scope.enter(\n      this.options.annexB && param.type === \"Identifier\"\n        ? ScopeFlag.SIMPLE_CATCH\n        : 0,\n    );\n    this.checkLVal(\n      param,\n      { type: \"CatchClause\" },\n      BindingFlag.TYPE_CATCH_PARAM,\n    );\n\n    return param;\n  }\n\n  parseTryStatement(\n    this: Parser,\n    node: Undone<N.TryStatement>,\n  ): N.TryStatement {\n    this.next();\n\n    node.block = this.parseBlock();\n    node.handler = null;\n\n    if (this.match(tt._catch)) {\n      const clause = this.startNode<N.CatchClause>();\n      this.next();\n      if (this.match(tt.parenL)) {\n        this.expect(tt.parenL);\n        clause.param = this.parseCatchClauseParam();\n        this.expect(tt.parenR);\n      } else {\n        clause.param = null;\n        this.scope.enter(ScopeFlag.OTHER);\n      }\n\n      // Parse the catch clause's body.\n      clause.body =\n        // For the smartPipelines plugin: Disable topic references from outer\n        // contexts within the catch clause's body.\n        this.withSmartMixTopicForbiddingContext(() =>\n          // Parse the catch clause's body.\n          this.parseBlock(false, false),\n        );\n\n      this.scope.exit();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n\n    node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n    if (!node.handler && !node.finalizer) {\n      this.raise(Errors.NoCatchOrFinally, node);\n    }\n\n    return this.finishNode(node, \"TryStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-VariableStatement\n  // https://tc39.es/ecma262/#prod-LexicalDeclaration\n  parseVarStatement(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): N.VariableDeclaration {\n    this.next();\n    this.parseVar(node, false, kind, allowMissingInitializer);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\");\n  }\n\n  // https://tc39.es/ecma262/#prod-WhileStatement\n  parseWhileStatement(\n    this: Parser,\n    node: Undone<N.WhileStatement>,\n  ): N.WhileStatement {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"WhileStatement\");\n  }\n\n  parseWithStatement(\n    this: Parser,\n    node: Undone<N.WithStatement>,\n  ): N.WithStatement {\n    if (this.state.strict) {\n      this.raise(Errors.StrictWith, this.state.startLoc);\n    }\n    this.next();\n    node.object = this.parseHeaderExpression();\n\n    // Parse the statement body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the with statement's body.\n      // They are permitted in function default-parameter expressions, which are\n      // part of the outer context, outside of the with statement's body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the statement body.\n        this.parseStatement(),\n      );\n\n    return this.finishNode(node, \"WithStatement\");\n  }\n\n  parseEmptyStatement(node: Undone<N.EmptyStatement>): N.EmptyStatement {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-LabelledStatement\n  parseLabeledStatement(\n    this: Parser,\n    node: Undone<N.LabeledStatement>,\n    maybeName: string,\n    expr: N.Identifier,\n    flags: ParseStatementFlag,\n  ): N.LabeledStatement {\n    for (const label of this.state.labels) {\n      if (label.name === maybeName) {\n        this.raise(Errors.LabelRedeclaration, expr, {\n          labelName: maybeName,\n        });\n      }\n    }\n\n    const kind = tokenIsLoop(this.state.type)\n      ? LoopLabelKind.Loop\n      : this.match(tt._switch)\n        ? LoopLabelKind.Switch\n        : null;\n    for (let i = this.state.labels.length - 1; i >= 0; i--) {\n      const label = this.state.labels[i];\n      if (label.statementStart === node.start) {\n        label.statementStart = this.sourceToOffsetPos(this.state.start);\n        label.kind = kind;\n      } else {\n        break;\n      }\n    }\n\n    this.state.labels.push({\n      name: maybeName,\n      kind: kind,\n      statementStart: this.sourceToOffsetPos(this.state.start),\n    });\n    // https://tc39.es/ecma262/#prod-LabelledItem\n    node.body =\n      flags & ParseStatementFlag.AllowLabeledFunction\n        ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true)\n        : this.parseStatement();\n\n    this.state.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\");\n  }\n\n  parseExpressionStatement(\n    node: Undone<N.ExpressionStatement>,\n    expr: N.Expression,\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    decorators: N.Decorator[] | null,\n  ) {\n    node.expression = expr;\n    this.semicolon();\n    return this.finishNode(node, \"ExpressionStatement\");\n  }\n\n  // Parse a semicolon-enclosed block of statements, handling `\"use\n  // strict\"` declarations when `allowDirectives` is true (used for\n  // function bodies).\n\n  parseBlock(\n    this: Parser,\n    allowDirectives: boolean = false,\n    createNewLexicalScope: boolean = true,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement {\n    const node = this.startNode<N.BlockStatement>();\n    if (allowDirectives) {\n      this.state.strictErrors.clear();\n    }\n    this.expect(tt.braceL);\n    if (createNewLexicalScope) {\n      this.scope.enter(ScopeFlag.OTHER);\n    }\n    this.parseBlockBody(\n      node,\n      allowDirectives,\n      false,\n      tt.braceR,\n      afterBlockParse,\n    );\n    if (createNewLexicalScope) {\n      this.scope.exit();\n    }\n    return this.finishNode(node, \"BlockStatement\");\n  }\n\n  isValidDirective(stmt: N.Statement): boolean {\n    return (\n      stmt.type === \"ExpressionStatement\" &&\n      stmt.expression.type === \"StringLiteral\" &&\n      !stmt.expression.extra.parenthesized\n    );\n  }\n\n  parseBlockBody(\n    this: Parser,\n    node: Undone<N.BlockStatementLike>,\n    allowDirectives: boolean | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const body: N.BlockStatementLike[\"body\"] = (node.body = []);\n    const directives: N.BlockStatementLike[\"directives\"] = (node.directives =\n      []);\n    this.parseBlockOrModuleBlockBody(\n      body,\n      allowDirectives ? directives : undefined,\n      topLevel,\n      end,\n      afterBlockParse,\n    );\n  }\n\n  // Undefined directives means that directives are not allowed.\n  // https://tc39.es/ecma262/#prod-Block\n  // https://tc39.es/ecma262/#prod-ModuleBody\n  parseBlockOrModuleBlockBody(\n    this: Parser,\n    body: N.Statement[],\n    directives: N.Directive[] | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const oldStrict = this.state.strict;\n    let hasStrictModeDirective = false;\n    let parsedNonDirective = false;\n\n    while (!this.match(end)) {\n      const stmt = topLevel\n        ? this.parseModuleItem()\n        : this.parseStatementListItem();\n\n      if (directives && !parsedNonDirective) {\n        if (this.isValidDirective(stmt)) {\n          const directive = this.stmtToDirective(stmt);\n          directives.push(directive);\n\n          if (\n            !hasStrictModeDirective &&\n            directive.value.value === \"use strict\"\n          ) {\n            hasStrictModeDirective = true;\n            this.setStrict(true);\n          }\n\n          continue;\n        }\n        parsedNonDirective = true;\n        // clear strict errors since the strict mode will not change within the block\n        this.state.strictErrors.clear();\n      }\n      body.push(stmt);\n    }\n\n    afterBlockParse?.call(this, hasStrictModeDirective);\n\n    if (!oldStrict) {\n      this.setStrict(false);\n    }\n\n    this.next();\n  }\n\n  // Parse a regular `for` loop. The disambiguation code in\n  // `parseStatement` will already have parsed the init statement or\n  // expression.\n\n  parseFor(\n    this: Parser,\n    node: Undone<N.ForStatement>,\n    init?: N.VariableDeclaration | N.Expression | null,\n  ): N.ForStatement {\n    node.init = init;\n    this.semicolon(/* allowAsi */ false);\n    node.test = this.match(tt.semi) ? null : this.parseExpression();\n    this.semicolon(/* allowAsi */ false);\n    node.update = this.match(tt.parenR) ? null : this.parseExpression();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"ForStatement\");\n  }\n\n  // Parse a `for`/`in` and `for`/`of` loop, which are almost\n  // same from parser's perspective.\n\n  parseForIn(\n    this: Parser,\n    node: Undone<N.ForInOf>,\n    init: N.VariableDeclaration | N.AssignmentPattern,\n    awaitAt?: Position | null,\n  ): N.ForInOf {\n    const isForIn = this.match(tt._in);\n    this.next();\n\n    if (isForIn) {\n      if (awaitAt !== null) this.unexpected(awaitAt);\n    } else {\n      node.await = awaitAt !== null;\n    }\n\n    if (\n      init.type === \"VariableDeclaration\" &&\n      init.declarations[0].init != null &&\n      (!isForIn ||\n        !this.options.annexB ||\n        this.state.strict ||\n        init.kind !== \"var\" ||\n        init.declarations[0].id.type !== \"Identifier\")\n    ) {\n      this.raise(Errors.ForInOfLoopInitializer, init, {\n        type: isForIn ? \"ForInStatement\" : \"ForOfStatement\",\n      });\n    }\n\n    if (init.type === \"AssignmentPattern\") {\n      this.raise(Errors.InvalidLhs, init, {\n        ancestor: { type: \"ForStatement\" },\n      });\n    }\n\n    node.left = init;\n    node.right = isForIn\n      ? this.parseExpression()\n      : this.parseMaybeAssignAllowIn();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n  }\n\n  // Parse a list of variable declarations.\n\n  parseVar(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    isFor: boolean,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): Undone<N.VariableDeclaration> {\n    const declarations: N.VariableDeclarator[] = (node.declarations = []);\n    node.kind = kind;\n    for (;;) {\n      const decl = this.startNode<N.VariableDeclarator>();\n      this.parseVarId(decl, kind);\n      decl.init = !this.eat(tt.eq)\n        ? null\n        : isFor\n          ? this.parseMaybeAssignDisallowIn()\n          : this.parseMaybeAssignAllowIn();\n\n      if (decl.init === null && !allowMissingInitializer) {\n        if (\n          decl.id.type !== \"Identifier\" &&\n          !(isFor && (this.match(tt._in) || this.isContextual(tt._of)))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            {\n              kind: \"destructuring\",\n            },\n          );\n        } else if (\n          (kind === \"const\" || kind === \"using\" || kind === \"await using\") &&\n          !(this.match(tt._in) || this.isContextual(tt._of))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            { kind },\n          );\n        }\n      }\n      declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(tt.comma)) break;\n    }\n    return node;\n  }\n\n  parseVarId(\n    this: Parser,\n    decl: Undone<N.VariableDeclarator>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  ): void {\n    const id = this.parseBindingAtom();\n    if (kind === \"using\" || kind === \"await using\") {\n      if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n        this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);\n      }\n    }\n    this.checkLVal(\n      id,\n      { type: \"VariableDeclarator\" },\n      kind === \"var\" ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL,\n    );\n    decl.id = id;\n  }\n\n  // https://tc39.es/ecma262/#prod-AsyncFunctionExpression\n  parseAsyncFunctionExpression(\n    this: Parser,\n    node: Undone<N.FunctionExpression>,\n  ): N.FunctionExpression {\n    return this.parseFunction(node, ParseFunctionFlag.Async);\n  }\n\n  // Parse a function declaration or expression (depending on the\n  // ParseFunctionFlag.Declaration flag).\n\n  parseFunction<T extends N.NormalFunction>(\n    this: Parser,\n    node: Undone<T>,\n    flags: ParseFunctionFlag = ParseFunctionFlag.Expression,\n  ): T {\n    const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;\n    const isDeclaration = !!(flags & ParseFunctionFlag.Declaration);\n    const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);\n    const isAsync = !!(flags & ParseFunctionFlag.Async);\n\n    this.initFunction(node, isAsync);\n\n    if (this.match(tt.star)) {\n      if (hangingDeclaration) {\n        this.raise(\n          Errors.GeneratorInSingleStatementContext,\n          this.state.startLoc,\n        );\n      }\n      this.next(); // eat *\n      node.generator = true;\n    }\n\n    if (isDeclaration) {\n      node.id = this.parseFunctionId(requireId);\n    }\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    this.state.maybeInArrowParameters = false;\n    this.scope.enter(ScopeFlag.FUNCTION);\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n    if (!isDeclaration) {\n      node.id = this.parseFunctionId();\n    }\n\n    this.parseFunctionParams(node, /* isConstructor */ false);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the function body. They are permitted in function\n    // default-parameter expressions, outside of the function body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the function body.\n      this.parseFunctionBodyAndFinish(\n        node,\n        isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\",\n      );\n    });\n\n    this.prodParam.exit();\n    this.scope.exit();\n\n    if (isDeclaration && !hangingDeclaration) {\n      // We need to register this _after_ parsing the function body\n      // because of TypeScript body-less function declarations,\n      // which shouldn't be added to the scope.\n      this.registerFunctionStatementId(node as T);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return node as T;\n  }\n\n  parseFunctionId(requireId?: boolean): N.Identifier | undefined | null {\n    return requireId || tokenIsIdentifier(this.state.type)\n      ? this.parseIdentifier()\n      : null;\n  }\n\n  parseFunctionParams(\n    this: Parser,\n    node: Undone<N.Function>,\n    isConstructor?: boolean,\n  ): void {\n    this.expect(tt.parenL);\n    this.expressionScope.enter(newParameterDeclarationScope());\n    node.params = this.parseBindingList(\n      tt.parenR,\n      charCodes.rightParenthesis,\n      ParseBindingListFlags.IS_FUNCTION_PARAMS |\n        (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0),\n    );\n\n    this.expressionScope.exit();\n  }\n\n  registerFunctionStatementId(node: N.Function): void {\n    if (!node.id) return;\n\n    // If it is a regular function declaration in sloppy mode, then it is\n    // subject to Annex B semantics (BindingFlag.TYPE_FUNCTION). Otherwise, the binding\n    // mode depends on properties of the current scope (see\n    // treatFunctionsAsVar).\n    this.scope.declareName(\n      node.id.name,\n      !this.options.annexB || this.state.strict || node.generator || node.async\n        ? this.scope.treatFunctionsAsVar\n          ? BindingFlag.TYPE_VAR\n          : BindingFlag.TYPE_LEXICAL\n        : BindingFlag.TYPE_FUNCTION,\n      node.id.loc.start,\n    );\n  }\n\n  // Parse a class declaration or literal (depending on the\n  // `isStatement` parameter).\n\n  parseClass<T extends N.Class>(\n    this: Parser,\n    node: Undone<T>,\n    isStatement: /* T === ClassDeclaration */ boolean,\n    optionalId?: boolean,\n  ): T {\n    this.next(); // 'class'\n\n    // A class definition is always strict mode code.\n    const oldStrict = this.state.strict;\n    this.state.strict = true;\n\n    this.parseClassId(node, isStatement, optionalId);\n    this.parseClassSuper(node);\n    // this.state.strict is restored in parseClassBody\n    node.body = this.parseClassBody(!!node.superClass, oldStrict);\n\n    return this.finishNode(\n      node,\n      isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n    );\n  }\n\n  isClassProperty(): boolean {\n    return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n  }\n\n  isClassMethod(): boolean {\n    return this.match(tt.parenL);\n  }\n\n  nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n    return (\n      (key.type === \"Identifier\" && key.name === \"constructor\") ||\n      (key.type === \"StringLiteral\" && key.value === \"constructor\")\n    );\n  }\n\n  isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n    return (\n      !method.computed && !method.static && this.nameIsConstructor(method.key)\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassBody\n  parseClassBody(\n    this: Parser,\n    hadSuperClass: boolean,\n    oldStrict: boolean,\n  ): N.ClassBody {\n    this.classScope.enter();\n\n    const state: N.ParseClassMemberState = {\n      hadConstructor: false,\n      hadSuperClass,\n    };\n    let decorators: N.Decorator[] = [];\n    const classBody = this.startNode<N.ClassBody>();\n    classBody.body = [];\n\n    this.expect(tt.braceL);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the class body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the contents within the braces.\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.semi)) {\n          if (decorators.length > 0) {\n            throw this.raise(\n              Errors.DecoratorSemicolon,\n              this.state.lastTokEndLoc,\n            );\n          }\n          continue;\n        }\n\n        if (this.match(tt.at)) {\n          decorators.push(this.parseDecorator());\n          continue;\n        }\n\n        const member = this.startNode<N.ClassMember>();\n\n        // steal the decorators if there are any\n        if (decorators.length) {\n          // @ts-expect-error Fixme\n          member.decorators = decorators;\n          this.resetStartLocationFromNode(member, decorators[0]);\n          decorators = [];\n        }\n\n        this.parseClassMember(classBody, member, state);\n\n        if (\n          // @ts-expect-error Fixme\n          member.kind === \"constructor\" &&\n          // @ts-expect-error Fixme\n          member.decorators &&\n          // @ts-expect-error Fixme\n          member.decorators.length > 0\n        ) {\n          this.raise(Errors.DecoratorConstructor, member);\n        }\n      }\n    });\n\n    this.state.strict = oldStrict;\n\n    this.next(); // eat `}`\n\n    if (decorators.length) {\n      throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n    }\n\n    this.classScope.exit();\n\n    return this.finishNode(classBody, \"ClassBody\");\n  }\n\n  // returns true if the current identifier is a method/field name,\n  // false if it is a modifier\n  parseClassMemberFromModifier(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n  ): boolean {\n    const key = this.parseIdentifier(true); // eats the modifier\n\n    if (this.isClassMethod()) {\n      const method: N.ClassMethod = member as any;\n\n      // a method named like the modifier\n      method.kind = \"method\";\n      method.computed = false;\n      method.key = key;\n      method.static = false;\n      this.pushClassMethod(\n        classBody,\n        method,\n        false,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n      return true;\n    } else if (this.isClassProperty()) {\n      const prop: N.ClassProperty = member as any;\n\n      // a property named like the modifier\n      prop.computed = false;\n      prop.key = key;\n      prop.static = false;\n      classBody.body.push(this.parseClassProperty(prop));\n      return true;\n    }\n    this.resetPreviousNodeTrailingComments(key);\n    return false;\n  }\n\n  parseClassMember(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n  ): void {\n    const isStatic = this.isContextual(tt._static);\n\n    if (isStatic) {\n      if (this.parseClassMemberFromModifier(classBody, member)) {\n        // a class element named 'static'\n        return;\n      }\n      if (this.eat(tt.braceL)) {\n        this.parseClassStaticBlock(classBody, member as any as N.StaticBlock);\n        return;\n      }\n    }\n\n    this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n  }\n\n  parseClassMemberWithIsStatic(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n    isStatic: boolean,\n  ) {\n    const publicMethod = member as N.ClassMethod;\n    const privateMethod = member as N.ClassPrivateMethod;\n    const publicProp = member as N.ClassProperty;\n    const privateProp = member as N.ClassPrivateProperty;\n    const accessorProp = member as N.ClassAccessorProperty;\n\n    const method: typeof publicMethod | typeof privateMethod = publicMethod;\n    const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n    member.static = isStatic;\n    this.parsePropertyNamePrefixOperator(member);\n\n    if (this.eat(tt.star)) {\n      // a generator\n      method.kind = \"method\";\n      const isPrivateName = this.match(tt.privateName);\n      this.parseClassElementName(method);\n\n      if (isPrivateName) {\n        // Private generator method\n        this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n        return;\n      }\n\n      if (this.isNonstaticConstructor(publicMethod)) {\n        this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        true,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n\n      return;\n    }\n\n    const isContextual =\n      !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n    const key = this.parseClassElementName(member);\n    const maybeContextualKw = isContextual ? (key as N.Identifier).name : null;\n    const isPrivate = this.isPrivateName(key);\n    const maybeQuestionTokenStartLoc = this.state.startLoc;\n\n    this.parsePostMemberNameModifiers(publicMember);\n\n    if (this.isClassMethod()) {\n      method.kind = \"method\";\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n        return;\n      }\n\n      // a normal method\n      const isConstructor = this.isNonstaticConstructor(publicMethod);\n      let allowsDirectSuper = false;\n      if (isConstructor) {\n        publicMethod.kind = \"constructor\";\n\n        // TypeScript allows multiple overloaded constructor declarations.\n        if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n          this.raise(Errors.DuplicateConstructor, key);\n        }\n        if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n          this.raise(Errors.OverrideOnConstructor, key);\n        }\n        state.hadConstructor = true;\n        allowsDirectSuper = state.hadSuperClass;\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        false,\n        false,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    } else if (this.isClassProperty()) {\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n      // an async method\n      this.resetPreviousNodeTrailingComments(key);\n      const isGenerator = this.eat(tt.star);\n\n      if (publicMember.optional) {\n        this.unexpected(maybeQuestionTokenStartLoc);\n      }\n\n      method.kind = \"method\";\n      // The so-called parsed name would have been \"async\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(method);\n      this.parsePostMemberNameModifiers(publicMember);\n\n      if (isPrivate) {\n        // private async method\n        this.pushClassPrivateMethod(\n          classBody,\n          privateMethod,\n          isGenerator,\n          true,\n        );\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n        }\n\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          isGenerator,\n          true,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n    } else if (\n      (maybeContextualKw === \"get\" || maybeContextualKw === \"set\") &&\n      !(this.match(tt.star) && this.isLineTerminator())\n    ) {\n      // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n      // a getter or setter\n      this.resetPreviousNodeTrailingComments(key);\n      method.kind = maybeContextualKw;\n      // The so-called parsed name would have been \"get/set\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicMethod);\n\n      if (isPrivate) {\n        // private getter/setter\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n        }\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          false,\n          false,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n\n      this.checkGetterSetterParams(publicMethod);\n    } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n      this.expectPlugin(\"decoratorAutoAccessors\");\n      this.resetPreviousNodeTrailingComments(key);\n\n      // The so-called parsed name would have been \"accessor\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicProp);\n      this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n    } else if (this.isLineTerminator()) {\n      // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassElementName\n  parseClassElementName(\n    this: Parser,\n    member: Undone<N.ClassMember>,\n  ): N.Expression | N.Identifier | N.PrivateName {\n    const { type, value } = this.state;\n    if (\n      (type === tt.name || type === tt.string) &&\n      member.static &&\n      value === \"prototype\"\n    ) {\n      this.raise(Errors.StaticPrototype, this.state.startLoc);\n    }\n\n    if (type === tt.privateName) {\n      if (value === \"constructor\") {\n        this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n      }\n      const key = this.parsePrivateName();\n      member.key = key;\n      return key;\n    }\n\n    this.parsePropertyName(member);\n    return member.key;\n  }\n\n  parseClassStaticBlock(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<\n      N.StaticBlock & {\n        decorators?: Array<N.Decorator>;\n      }\n    >,\n  ) {\n    // Start a new lexical scope\n    this.scope.enter(\n      ScopeFlag.CLASS | ScopeFlag.STATIC_BLOCK | ScopeFlag.SUPER,\n    );\n    // Start a new scope with regard to loop labels\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    // ClassStaticBlockStatementList:\n    //   StatementList[~Yield, ~Await, ~Return] opt\n    this.prodParam.enter(ParamKind.PARAM);\n    const body: N.Statement[] = (member.body = []);\n    this.parseBlockOrModuleBlockBody(body, undefined, false, tt.braceR);\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.labels = oldLabels;\n    classBody.body.push(this.finishNode<N.StaticBlock>(member, \"StaticBlock\"));\n    if (member.decorators?.length) {\n      this.raise(Errors.DecoratorStaticBlock, member);\n    }\n  }\n\n  pushClassProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassProperty,\n  ) {\n    if (!prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    classBody.body.push(this.parseClassProperty(prop));\n  }\n\n  pushClassPrivateProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: Undone<N.ClassPrivateProperty>,\n  ) {\n    const node = this.parseClassPrivateProperty(prop);\n    classBody.body.push(node);\n\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key),\n      ClassElementType.OTHER,\n      node.key.loc.start,\n    );\n  }\n\n  pushClassAccessorProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassAccessorProperty,\n    isPrivate: boolean,\n  ) {\n    if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    const node = this.parseClassAccessorProperty(prop);\n    classBody.body.push(node);\n\n    if (isPrivate) {\n      this.classScope.declarePrivateName(\n        this.getPrivateNameSV(node.key as N.PrivateName),\n        ClassElementType.OTHER,\n        node.key.loc.start,\n      );\n    }\n  }\n\n  pushClassMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowsDirectSuper: boolean,\n  ): void {\n    classBody.body.push(\n      this.parseMethod(\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n        \"ClassMethod\",\n        true,\n      ),\n    );\n  }\n\n  pushClassPrivateMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassPrivateMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n  ): void {\n    const node = this.parseMethod(\n      method,\n      isGenerator,\n      isAsync,\n      /* isConstructor */ false,\n      false,\n      \"ClassPrivateMethod\",\n      true,\n    );\n    classBody.body.push(node);\n\n    const kind =\n      node.kind === \"get\"\n        ? node.static\n          ? ClassElementType.STATIC_GETTER\n          : ClassElementType.INSTANCE_GETTER\n        : node.kind === \"set\"\n          ? node.static\n            ? ClassElementType.STATIC_SETTER\n            : ClassElementType.INSTANCE_SETTER\n          : ClassElementType.OTHER;\n    this.declareClassPrivateMethodInScope(node, kind);\n  }\n\n  declareClassPrivateMethodInScope(\n    node: Undone<N.ClassPrivateMethod | N.TSDeclareMethod>,\n    kind: number,\n  ) {\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key as N.PrivateName),\n      kind,\n      node.key.loc.start,\n    );\n  }\n\n  // Overridden in typescript.js\n  parsePostMemberNameModifiers(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    methodOrProp: Undone<N.ClassMethod | N.ClassProperty>,\n  ): void {}\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassPrivateProperty(\n    this: Parser,\n    node: Undone<N.ClassPrivateProperty>,\n  ): N.ClassPrivateProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassPrivateProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassProperty(this: Parser, node: N.ClassProperty): N.ClassProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassProperty\");\n  }\n\n  parseClassAccessorProperty(\n    this: Parser,\n    node: N.ClassAccessorProperty,\n  ): N.ClassAccessorProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassAccessorProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-Initializer\n  parseInitializer(\n    this: Parser,\n    node: Undone<\n      N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty\n    >,\n  ): void {\n    this.scope.enter(ScopeFlag.CLASS | ScopeFlag.SUPER);\n    this.expressionScope.enter(newExpressionScope());\n    this.prodParam.enter(ParamKind.PARAM);\n    node.value = this.eat(tt.eq) ? this.parseMaybeAssignAllowIn() : null;\n    this.expressionScope.exit();\n    this.prodParam.exit();\n    this.scope.exit();\n  }\n\n  parseClassId(\n    node: Undone<N.Class>,\n    isStatement: boolean,\n    optionalId?: boolean | null,\n    bindingType: BindingFlag = BindingFlag.TYPE_CLASS,\n  ): void {\n    if (tokenIsIdentifier(this.state.type)) {\n      node.id = this.parseIdentifier();\n      if (isStatement) {\n        this.declareNameFromIdentifier(node.id, bindingType);\n      }\n    } else {\n      if (optionalId || !isStatement) {\n        node.id = null;\n      } else {\n        throw this.raise(Errors.MissingClassName, this.state.startLoc);\n      }\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassHeritage\n  parseClassSuper(this: Parser, node: Undone<N.Class>): void {\n    node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n  }\n\n  // Parses module export declaration.\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n\n  parseExport(\n    this: Parser,\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    decorators: N.Decorator[] | null,\n  ): N.AnyExport {\n    const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n      node,\n      /* isExport */ true,\n    );\n    const hasDefault = this.maybeParseExportDefaultSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n    const hasStar = parseAfterDefault && this.eatExportStar(node);\n    const hasNamespace =\n      hasStar && this.maybeParseExportNamespaceSpecifier(node);\n    const parseAfterNamespace =\n      parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n    const isFromRequired = hasDefault || hasStar;\n\n    if (hasStar && !hasNamespace) {\n      if (hasDefault) this.unexpected();\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(node, true);\n\n      return this.finishNode(node, \"ExportAllDeclaration\");\n    }\n\n    const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n    if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n      this.unexpected(null, tt.braceL);\n    }\n\n    if (hasNamespace && parseAfterNamespace) {\n      this.unexpected(null, tt._from);\n    }\n\n    let hasDeclaration;\n    if (isFromRequired || hasSpecifiers) {\n      hasDeclaration = false;\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(\n        node as Undone<N.ExportNamedDeclaration>,\n        isFromRequired,\n      );\n    } else {\n      hasDeclaration = this.maybeParseExportDeclaration(\n        node as Undone<N.ExportNamedDeclaration>,\n      );\n    }\n\n    if (isFromRequired || hasSpecifiers || hasDeclaration) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n      this.checkExport(node2, true, false, !!node2.source);\n      if (node2.declaration?.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, node2.declaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      return this.finishNode(node2, \"ExportNamedDeclaration\");\n    }\n\n    if (this.eat(tt._default)) {\n      const node2 = node as Undone<N.ExportDefaultDeclaration>;\n      // export default ...\n      const decl = this.parseExportDefaultExpression();\n      node2.declaration = decl;\n\n      if (decl.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, decl as N.ClassDeclaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n\n      this.checkExport(node2, true, true);\n\n      return this.finishNode(node2, \"ExportDefaultDeclaration\");\n    }\n\n    this.unexpected(null, tt.braceL);\n  }\n\n  eatExportStar(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n    return this.eat(tt.star);\n  }\n\n  maybeParseExportDefaultSpecifier(\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n      // export defaultObj ...\n      this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier?.loc.start);\n      const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n      const specifier = this.startNodeAtNode<N.ExportDefaultSpecifier>(id);\n      specifier.exported = id;\n      (node as Undone<N.ExportNamedDeclaration>).specifiers = [\n        this.finishNode(specifier, \"ExportDefaultSpecifier\"),\n      ];\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamespaceSpecifier(\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.isContextual(tt._as)) {\n      (node as Undone<N.ExportNamedDeclaration>).specifiers ??= [];\n\n      const specifier = this.startNodeAt<N.ExportNamespaceSpecifier>(\n        this.state.lastTokStartLoc,\n      );\n\n      this.next();\n\n      specifier.exported = this.parseModuleExportName();\n      (node as Undone<N.ExportNamedDeclaration>).specifiers.push(\n        this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamedSpecifiers(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.match(tt.braceL)) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!node2.specifiers) node2.specifiers = [];\n      const isTypeExport = node2.exportKind === \"type\";\n      node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n\n      node2.source = null;\n      node2.declaration = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node2.assertions = [];\n      }\n\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportDeclaration(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration>,\n  ): boolean {\n    if (this.shouldParseExportDeclaration()) {\n      node.specifiers = [];\n      node.source = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node.assertions = [];\n      }\n      node.declaration = this.parseExportDeclaration(node);\n      return true;\n    }\n    return false;\n  }\n\n  isAsyncFunction(): boolean {\n    if (!this.isContextual(tt._async)) return false;\n    const next = this.nextTokenInLineStart();\n    return this.isUnparsedContextual(next, \"function\");\n  }\n\n  parseExportDefaultExpression(\n    this: Parser,\n  ): N.ExportDefaultDeclaration[\"declaration\"] {\n    const expr = this.startNode();\n\n    if (this.match(tt._function)) {\n      this.next();\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId,\n      );\n    } else if (this.isAsyncFunction()) {\n      this.next(); // eat 'async'\n      this.next(); // eat 'function'\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration |\n          ParseFunctionFlag.NullableId |\n          ParseFunctionFlag.Async,\n      );\n    }\n\n    if (this.match(tt._class)) {\n      return this.parseClass(expr as Undone<N.ClassExpression>, true, true);\n    }\n\n    if (this.match(tt.at)) {\n      if (\n        this.hasPlugin(\"decorators\") &&\n        this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n      ) {\n        this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n      }\n      return this.parseClass(\n        this.maybeTakeDecorators(\n          this.parseDecorators(false),\n          this.startNode<N.ClassDeclaration>(),\n        ),\n        true,\n        true,\n      );\n    }\n\n    if (this.match(tt._const) || this.match(tt._var) || this.isLet()) {\n      throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n    }\n\n    const res = this.parseMaybeAssignAllowIn();\n    this.semicolon();\n    return res;\n  }\n\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n  parseExportDeclaration(\n    this: Parser,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    node: Undone<N.ExportNamedDeclaration>,\n  ): N.Declaration | undefined | null {\n    if (this.match(tt._class)) {\n      const node = this.parseClass(\n        this.startNode<N.ClassDeclaration>(),\n        true,\n        false,\n      );\n      return node;\n    }\n    return this.parseStatementListItem() as N.Declaration;\n  }\n\n  isExportDefaultSpecifier(): boolean {\n    const { type } = this.state;\n    if (tokenIsIdentifier(type)) {\n      if ((type === tt._async && !this.state.containsEsc) || type === tt._let) {\n        return false;\n      }\n      if (\n        (type === tt._type || type === tt._interface) &&\n        !this.state.containsEsc\n      ) {\n        const { type: nextType } = this.lookahead();\n        // If we see any variable name other than `from` after `type` keyword,\n        // we consider it as flow/typescript type exports\n        // note that this approach may fail on some pedantic cases\n        // export type from = number\n        if (\n          (tokenIsIdentifier(nextType) && nextType !== tt._from) ||\n          nextType === tt.braceL\n        ) {\n          this.expectOnePlugin([\"flow\", \"typescript\"]);\n          return false;\n        }\n      }\n    } else if (!this.match(tt._default)) {\n      return false;\n    }\n\n    const next = this.nextTokenStart();\n    const hasFrom = this.isUnparsedContextual(next, \"from\");\n    if (\n      this.input.charCodeAt(next) === charCodes.comma ||\n      (tokenIsIdentifier(this.state.type) && hasFrom)\n    ) {\n      return true;\n    }\n    // lookahead again when `export default from` is seen\n    if (this.match(tt._default) && hasFrom) {\n      const nextAfterFrom = this.input.charCodeAt(\n        this.nextTokenStartSince(next + 4),\n      );\n      return (\n        nextAfterFrom === charCodes.quotationMark ||\n        nextAfterFrom === charCodes.apostrophe\n      );\n    }\n    return false;\n  }\n\n  parseExportFrom(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    expect?: boolean,\n  ): void {\n    if (this.eatContextual(tt._from)) {\n      node.source = this.parseImportSource();\n      this.checkExport(node);\n      this.maybeParseImportAttributes(node);\n      this.checkJSONModuleImport(node);\n    } else if (expect) {\n      this.unexpected();\n    }\n\n    this.semicolon();\n  }\n\n  shouldParseExportDeclaration(): boolean {\n    const { type } = this.state;\n    if (type === tt.at) {\n      this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n      if (this.hasPlugin(\"decorators\")) {\n        if (\n          this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n        ) {\n          this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n        }\n\n        return true;\n      }\n    }\n\n    if (this.isContextual(tt._using)) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    if (this.isContextual(tt._await) && this.startsAwaitUsing()) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    return (\n      type === tt._var ||\n      type === tt._const ||\n      type === tt._function ||\n      type === tt._class ||\n      this.isLet() ||\n      this.isAsyncFunction()\n    );\n  }\n\n  checkExport(\n    node: Undone<\n      | N.ExportNamedDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportDefaultDeclaration\n    >,\n    checkNames?: boolean,\n    isDefault?: boolean,\n    isFrom?: boolean,\n  ): void {\n    if (checkNames) {\n      // Check for duplicate exports\n      if (isDefault) {\n        // Default exports\n        this.checkDuplicateExports(node, \"default\");\n        if (this.hasPlugin(\"exportDefaultFrom\")) {\n          const declaration = (node as any as N.ExportDefaultDeclaration)\n            .declaration;\n          if (\n            declaration.type === \"Identifier\" &&\n            declaration.name === \"from\" &&\n            declaration.end - declaration.start === 4 && // does not contain escape\n            !declaration.extra?.parenthesized\n          ) {\n            this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n          }\n        }\n        // @ts-expect-error node.specifiers may not exist\n      } else if (node.specifiers?.length) {\n        // Named exports\n        // @ts-expect-error node.specifiers may not exist\n        for (const specifier of node.specifiers) {\n          const { exported } = specifier;\n          const exportName =\n            exported.type === \"Identifier\" ? exported.name : exported.value;\n          this.checkDuplicateExports(specifier, exportName);\n          if (!isFrom && specifier.local) {\n            const { local } = specifier;\n            if (local.type !== \"Identifier\") {\n              this.raise(Errors.ExportBindingIsString, specifier, {\n                localName: local.value,\n                exportName,\n              });\n            } else {\n              // check for keywords used as local names\n              this.checkReservedWord(local.name, local.loc.start, true, false);\n              // check if export is defined\n              this.scope.checkLocalExport(local);\n            }\n          }\n        }\n      } else if ((node as Undone<N.ExportNamedDeclaration>).declaration) {\n        const decl = (node as Undone<N.ExportNamedDeclaration>).declaration;\n        // Exported declarations\n        if (\n          decl.type === \"FunctionDeclaration\" ||\n          decl.type === \"ClassDeclaration\"\n        ) {\n          const { id } = decl;\n          if (!id) throw new Error(\"Assertion failure\");\n\n          this.checkDuplicateExports(node, id.name);\n        } else if (decl.type === \"VariableDeclaration\") {\n          for (const declaration of decl.declarations) {\n            this.checkDeclaration(declaration.id);\n          }\n        }\n      }\n    }\n  }\n\n  checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n    if (node.type === \"Identifier\") {\n      this.checkDuplicateExports(node, node.name);\n    } else if (node.type === \"ObjectPattern\") {\n      for (const prop of node.properties) {\n        this.checkDeclaration(prop);\n      }\n    } else if (node.type === \"ArrayPattern\") {\n      for (const elem of node.elements) {\n        if (elem) {\n          this.checkDeclaration(elem);\n        }\n      }\n    } else if (node.type === \"ObjectProperty\") {\n      // @ts-expect-error migrate to Babel types\n      this.checkDeclaration(node.value);\n    } else if (node.type === \"RestElement\") {\n      this.checkDeclaration(node.argument);\n    } else if (node.type === \"AssignmentPattern\") {\n      this.checkDeclaration(node.left);\n    }\n  }\n\n  checkDuplicateExports(\n    node: Undone<\n      | N.Identifier\n      | N.StringLiteral\n      | N.ExportNamedDeclaration\n      | N.ExportSpecifier\n      | N.ExportDefaultSpecifier\n    >,\n    exportName: string,\n  ): void {\n    if (this.exportedIdentifiers.has(exportName)) {\n      if (exportName === \"default\") {\n        this.raise(Errors.DuplicateDefaultExport, node);\n      } else {\n        this.raise(Errors.DuplicateExport, node, { exportName });\n      }\n    }\n    this.exportedIdentifiers.add(exportName);\n  }\n\n  // Parses a comma-separated list of module exports.\n\n  parseExportSpecifiers(isInTypeExport: boolean): Array<N.ExportSpecifier> {\n    const nodes = [];\n    let first = true;\n\n    // export { x, y as z } [from '...']\n    this.expect(tt.braceL);\n\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      const isString = this.match(tt.string);\n      const node = this.startNode<N.ExportSpecifier>();\n      node.local = this.parseModuleExportName() as N.Identifier;\n      nodes.push(\n        this.parseExportSpecifier(\n          node,\n          isString,\n          isInTypeExport,\n          isMaybeTypeOnly,\n        ),\n      );\n    }\n\n    return nodes;\n  }\n\n  parseExportSpecifier(\n    node: any,\n    isString: boolean,\n    /* eslint-disable @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    isInTypeExport: boolean,\n    isMaybeTypeOnly: boolean,\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n  ): N.ExportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      node.exported = this.parseModuleExportName();\n    } else if (isString) {\n      node.exported = cloneStringLiteral(node.local);\n    } else if (!node.exported) {\n      node.exported = cloneIdentifier(node.local);\n    }\n    return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleExportName\n  parseModuleExportName(): N.StringLiteral | N.Identifier {\n    if (this.match(tt.string)) {\n      const result = this.parseStringLiteral(this.state.value);\n      const surrogate = loneSurrogate.exec(result.value);\n      if (surrogate) {\n        this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n          surrogateCharCode: surrogate[0].charCodeAt(0),\n        });\n      }\n      return result;\n    }\n    return this.parseIdentifier(true);\n  }\n\n  isJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ): boolean {\n    if (node.assertions != null) {\n      return node.assertions.some(({ key, value }) => {\n        return (\n          value.value === \"json\" &&\n          (key.type === \"Identifier\"\n            ? key.name === \"type\"\n            : key.value === \"type\")\n        );\n      });\n    }\n    return false;\n  }\n\n  checkImportReflection(node: Undone<N.ImportDeclaration>) {\n    const { specifiers } = node;\n    const singleBindingType =\n      specifiers.length === 1 ? specifiers[0].type : null;\n\n    if (node.phase === \"source\") {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(\n          Errors.SourcePhaseImportRequiresDefault,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.phase === \"defer\") {\n      if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n        this.raise(\n          Errors.DeferImportRequiresNamespace,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.module) {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);\n      }\n      if (node.assertions?.length > 0) {\n        this.raise(\n          Errors.ImportReflectionHasAssertion,\n          specifiers[0].loc.start,\n        );\n      }\n    }\n  }\n\n  checkJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ) {\n    // @ts-expect-error Fixme: node.type must be undefined because they are undone\n    if (this.isJSONModuleImport(node) && node.type !== \"ExportAllDeclaration\") {\n      // @ts-expect-error specifiers may not index node\n      const { specifiers } = node;\n      if (specifiers != null) {\n        // @ts-expect-error refine specifier types\n        const nonDefaultNamedSpecifier = specifiers.find(specifier => {\n          let imported;\n          if (specifier.type === \"ExportSpecifier\") {\n            imported = specifier.local;\n          } else if (specifier.type === \"ImportSpecifier\") {\n            imported = specifier.imported;\n          }\n          if (imported !== undefined) {\n            return imported.type === \"Identifier\"\n              ? imported.name !== \"default\"\n              : imported.value !== \"default\";\n          }\n        });\n        if (nonDefaultNamedSpecifier !== undefined) {\n          this.raise(\n            Errors.ImportJSONBindingNotDefault,\n            nonDefaultNamedSpecifier.loc.start,\n          );\n        }\n      }\n    }\n  }\n\n  isPotentialImportPhase(isExport: boolean): boolean {\n    if (isExport) return false;\n    return (\n      this.isContextual(tt._source) ||\n      this.isContextual(tt._defer) ||\n      (!process.env.BABEL_8_BREAKING && this.isContextual(tt._module))\n    );\n  }\n\n  applyImportPhase(\n    node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n    isExport: boolean,\n    phase: string | null,\n    loc?: Position,\n  ): void {\n    if (isExport) {\n      if (!process.env.IS_PUBLISH) {\n        if (\n          (!process.env.BABEL_8_BREAKING && phase === \"module\") ||\n          phase === \"source\"\n        ) {\n          throw new Error(\n            `Assertion failure: export declarations do not support the '${phase}' phase.`,\n          );\n        }\n      }\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && phase === \"module\") {\n      this.expectPlugin(\"importReflection\", loc);\n      (node as N.ImportDeclaration).module = true;\n    } else if (this.hasPlugin(\"importReflection\")) {\n      (node as N.ImportDeclaration).module = false;\n    }\n\n    if (phase === \"source\") {\n      this.expectPlugin(\"sourcePhaseImports\", loc);\n      (node as N.ImportDeclaration).phase = \"source\";\n    } else if (phase === \"defer\") {\n      this.expectPlugin(\"deferredImportEvaluation\", loc);\n      (node as N.ImportDeclaration).phase = \"defer\";\n    } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n      (node as N.ImportDeclaration).phase = null;\n    }\n  }\n\n  /*\n   * Parse `source` in `import source x from \"x\"`, disambiguating\n   * `import source from \"x\"` and `import source from from \"x\"`.\n   *\n   * This function might return an identifier representing the `source`\n   * if it eats `source` and then discovers that it was the default import\n   * binding and not the import reflection.\n   *\n   * This function is also used to parse `import type` and `import typeof`\n   * in the TS and Flow plugins, and for parsing `import defer`.\n   */\n  parseMaybeImportPhase(\n    node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    isExport: boolean,\n  ): N.Identifier | null {\n    if (!this.isPotentialImportPhase(isExport)) {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      return null;\n    }\n\n    const phaseIdentifier = this.parseIdentifier(true);\n\n    const { type } = this.state;\n    const isImportPhase = tokenIsKeywordOrIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n\n    if (isImportPhase) {\n      this.resetPreviousIdentifierLeadingComments(phaseIdentifier);\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        phaseIdentifier.name,\n        phaseIdentifier.loc.start,\n      );\n      return null;\n    } else {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      // `<phase>` is a default binding, return it to the main import declaration parser\n      return phaseIdentifier;\n    }\n  }\n\n  isPrecedingIdImportPhase(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    phase: string,\n  ) {\n    const { type } = this.state;\n    return tokenIsIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n  }\n\n  // Parses import declaration.\n  // https://tc39.es/ecma262/#prod-ImportDeclaration\n\n  parseImport(this: Parser, node: Undone<N.ImportDeclaration>): N.AnyImport {\n    if (this.match(tt.string)) {\n      // import '...'\n      return this.parseImportSourceAndAttributes(node);\n    }\n\n    return this.parseImportSpecifiersAndAfter(\n      node,\n      this.parseMaybeImportPhase(node, /* isExport */ false),\n    );\n  }\n\n  parseImportSpecifiersAndAfter(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): N.AnyImport {\n    node.specifiers = [];\n\n    // check if we have a default import like\n    // import React from \"react\";\n    const hasDefault = this.maybeParseDefaultImportSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    /* we are checking if we do not have a default import, then it is obvious that we need named imports\n     * import { get } from \"axios\";\n     * but if we do have a default import\n     * we need to check if we have a comma after that and\n     * that is where this `|| this.eat` condition comes into play\n     */\n    const parseNext = !hasDefault || this.eat(tt.comma);\n    // if we do have to parse the next set of specifiers, we first check for star imports\n    // import React, * from \"react\";\n    const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n    // now we check if we need to parse the next imports\n    // but only if they are not importing * (everything)\n    if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n    this.expectContextual(tt._from);\n\n    return this.parseImportSourceAndAttributes(node);\n  }\n\n  parseImportSourceAndAttributes(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n  ): N.AnyImport {\n    node.specifiers ??= [];\n    node.source = this.parseImportSource();\n    this.maybeParseImportAttributes(node);\n    this.checkImportReflection(node);\n    this.checkJSONModuleImport(node);\n\n    this.semicolon();\n    return this.finishNode(node, \"ImportDeclaration\");\n  }\n\n  parseImportSource(this: Parser): N.StringLiteral {\n    if (!this.match(tt.string)) this.unexpected();\n    return this.parseExprAtom() as N.StringLiteral;\n  }\n\n  parseImportSpecifierLocal<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    node: Undone<N.ImportDeclaration>,\n    specifier: Undone<T>,\n    type: T[\"type\"],\n  ): void {\n    specifier.local = this.parseIdentifier();\n    node.specifiers.push(this.finishImportSpecifier(specifier, type));\n  }\n\n  finishImportSpecifier<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    specifier: Undone<T>,\n    type: T[\"type\"],\n    bindingType: BindingFlag = BindingFlag.TYPE_LEXICAL,\n  ) {\n    this.checkLVal(specifier.local, { type }, bindingType);\n    return this.finishNode(specifier, type);\n  }\n\n  /**\n   * parse assert entries\n   *\n   * @see {@link https://tc39.es/proposal-import-attributes/#prod-WithEntries WithEntries}\n   */\n  parseImportAttributes(): N.ImportAttribute[] {\n    this.expect(tt.braceL);\n\n    const attrs = [];\n    const attrNames = new Set();\n\n    do {\n      if (this.match(tt.braceR)) {\n        break;\n      }\n\n      const node = this.startNode<N.ImportAttribute>();\n\n      // parse AssertionKey : IdentifierName, StringLiteral\n      const keyName = this.state.value;\n      // check if we already have an entry for an attribute\n      // if a duplicate entry is found, throw an error\n      // for now this logic will come into play only when someone declares `type` twice\n      if (attrNames.has(keyName)) {\n        this.raise(\n          Errors.ModuleAttributesWithDuplicateKeys,\n          this.state.startLoc,\n          {\n            key: keyName,\n          },\n        );\n      }\n      attrNames.add(keyName);\n      if (this.match(tt.string)) {\n        node.key = this.parseStringLiteral(keyName);\n      } else {\n        node.key = this.parseIdentifier(true);\n      }\n      this.expect(tt.colon);\n\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    this.expect(tt.braceR);\n\n    return attrs;\n  }\n\n  /**\n   * parse module attributes\n   * @deprecated It will be removed in Babel 8\n   */\n  parseModuleAttributes() {\n    const attrs: N.ImportAttribute[] = [];\n    const attributes = new Set();\n    do {\n      const node = this.startNode<N.ImportAttribute>();\n      node.key = this.parseIdentifier(true);\n\n      if (node.key.name !== \"type\") {\n        this.raise(Errors.ModuleAttributeDifferentFromType, node.key);\n      }\n\n      if (attributes.has(node.key.name)) {\n        this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {\n          key: node.key.name,\n        });\n      }\n      attributes.add(node.key.name);\n      this.expect(tt.colon);\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    return attrs;\n  }\n\n  maybeParseImportAttributes(\n    node: Undone<\n      N.ImportDeclaration | N.ExportNamedDeclaration | N.ExportAllDeclaration\n    >,\n  ) {\n    let attributes: N.ImportAttribute[];\n    if (!process.env.BABEL_8_BREAKING) {\n      // eslint-disable-next-line no-var\n      var useWith = false;\n    }\n\n    // https://tc39.es/proposal-import-attributes/#prod-WithClause\n    if (this.match(tt._with)) {\n      if (\n        this.hasPrecedingLineBreak() &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      ) {\n        // This will be parsed as a with statement, and we will throw a\n        // better error about it not being supported in strict mode.\n        return;\n      }\n\n      this.next(); // eat `with`\n\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"moduleAttributes\")) {\n        attributes = this.parseModuleAttributes();\n      } else {\n        attributes = this.parseImportAttributes();\n      }\n      if (!process.env.BABEL_8_BREAKING) {\n        useWith = true;\n      }\n    } else if (this.isContextual(tt._assert) && !this.hasPrecedingLineBreak()) {\n      if (\n        !this.hasPlugin(\"deprecatedImportAssert\") &&\n        (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\"))\n      ) {\n        this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);\n      }\n      if (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\")) {\n        this.addExtra(node, \"deprecatedAssertSyntax\", true);\n      }\n      this.next(); // eat `assert`\n      attributes = this.parseImportAttributes();\n    } else {\n      attributes = [];\n    }\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      !useWith &&\n      this.hasPlugin(\"importAssertions\")\n    ) {\n      node.assertions = attributes;\n    } else {\n      node.attributes = attributes;\n    }\n  }\n\n  maybeParseDefaultImportSpecifier(\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): boolean {\n    // import defaultObj, { x, y as z } from '...'\n    if (maybeDefaultIdentifier) {\n      const specifier = this.startNodeAtNode<N.ImportDefaultSpecifier>(\n        maybeDefaultIdentifier,\n      );\n      specifier.local = maybeDefaultIdentifier;\n      node.specifiers.push(\n        this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"),\n      );\n      return true;\n    } else if (\n      // We allow keywords, and parseImportSpecifierLocal will report a recoverable error\n      tokenIsKeywordOrIdentifier(this.state.type)\n    ) {\n      this.parseImportSpecifierLocal(\n        node,\n        this.startNode<N.ImportDefaultSpecifier>(),\n        \"ImportDefaultSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseStarImportSpecifier(node: Undone<N.ImportDeclaration>): boolean {\n    if (this.match(tt.star)) {\n      const specifier = this.startNode<N.ImportNamespaceSpecifier>();\n      this.next();\n      this.expectContextual(tt._as);\n\n      this.parseImportSpecifierLocal(\n        node,\n        specifier,\n        \"ImportNamespaceSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  parseNamedImportSpecifiers(node: Undone<N.ImportDeclaration>) {\n    let first = true;\n    this.expect(tt.braceL);\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        // Detect an attempt to deep destructure\n        if (this.eat(tt.colon)) {\n          throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n        }\n\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n\n      const specifier = this.startNode<N.ImportSpecifier>();\n      const importedIsString = this.match(tt.string);\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      specifier.imported = this.parseModuleExportName();\n      const importSpecifier = this.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        node.importKind === \"type\" || node.importKind === \"typeof\",\n        isMaybeTypeOnly,\n        undefined,\n      );\n      node.specifiers.push(importSpecifier);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportSpecifier\n  parseImportSpecifier(\n    specifier: Undone<N.ImportSpecifier>,\n    importedIsString: boolean,\n    /* used in TypeScript and Flow parser */\n    isInTypeOnlyImport: boolean,\n    isMaybeTypeOnly: boolean,\n    bindingType: BindingFlag | undefined,\n  ): N.ImportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      specifier.local = this.parseIdentifier();\n    } else {\n      const { imported } = specifier;\n      if (importedIsString) {\n        throw this.raise(Errors.ImportBindingIsString, specifier, {\n          importName: (imported as N.StringLiteral).value,\n        });\n      }\n      this.checkReservedWord(\n        (imported as N.Identifier).name,\n        specifier.loc.start,\n        true,\n        true,\n      );\n      if (!specifier.local) {\n        specifier.local = cloneIdentifier(imported);\n      }\n    }\n    return this.finishImportSpecifier(\n      specifier,\n      \"ImportSpecifier\",\n      bindingType,\n    );\n  }\n\n  // This is used in flow and typescript plugin\n  // Determine whether a parameter is a this param\n  isThisParam(\n    param: N.Pattern | N.Identifier | N.TSParameterProperty,\n  ): boolean {\n    return param.type === \"Identifier\" && param.name === \"this\";\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type * as N from \"../types.ts\";\nimport { getOptions } from \"../options.ts\";\nimport StatementParser from \"./statement.ts\";\nimport ScopeHandler from \"../util/scope.ts\";\n\nexport type PluginsMap = Map<\n  string,\n  {\n    [x: string]: any;\n  }\n>;\n\nexport default class Parser extends StatementParser {\n  // Forward-declaration so typescript plugin can override jsx plugin\n  // todo(flow->ts) - this probably can be removed\n  // abstract jsxParseOpeningElementAfterName(\n  //   node: N.JSXOpeningElement,\n  // ): N.JSXOpeningElement;\n\n  constructor(\n    options: Options | undefined | null,\n    input: string,\n    pluginsMap: PluginsMap,\n  ) {\n    options = getOptions(options);\n    super(options, input);\n\n    this.options = options;\n    this.initializeScopes();\n    this.plugins = pluginsMap;\n    this.filename = options.sourceFilename;\n    this.startIndex = options.startIndex;\n  }\n\n  // This can be overwritten, for example, by the TypeScript plugin.\n  getScopeHandler(): new (...args: any) => ScopeHandler {\n    return ScopeHandler;\n  }\n\n  parse(): N.File {\n    this.enterInitialScopes();\n    const file = this.startNode<N.File>();\n    const program = this.startNode<N.Program>();\n    this.nextToken();\n    file.errors = null;\n    this.parseTopLevel(file, program);\n    file.errors = this.state.errors;\n    file.comments.length = this.state.commentsLen;\n    return file as N.File;\n  }\n}\n","import type { Options } from \"./options.ts\";\nimport {\n  validatePlugins,\n  mixinPluginNames,\n  mixinPlugins,\n} from \"./plugin-utils.ts\";\nimport type {\n  PluginConfig as ParserPlugin,\n  FlowPluginOptions,\n  RecordAndTuplePluginOptions,\n  PipelineOperatorPluginOptions,\n} from \"./typings.ts\";\nimport Parser, { type PluginsMap } from \"./parser/index.ts\";\n\nimport type { ExportedTokenType } from \"./tokenizer/types.ts\";\nimport {\n  getExportedToken,\n  tt as internalTokenTypes,\n  type InternalTokenTypes,\n} from \"./tokenizer/types.ts\";\nexport type { Token } from \"./tokenizer/index.ts\";\n\nimport type { Expression, File } from \"./types.ts\";\nexport type { Expression, File };\n\nexport function parse(input: string, options?: Options): File {\n  if (options?.sourceType === \"unambiguous\") {\n    options = {\n      ...options,\n    };\n    try {\n      options.sourceType = \"module\";\n      const parser = getParser(options, input);\n      const ast = parser.parse();\n\n      if (parser.sawUnambiguousESM) {\n        return ast;\n      }\n\n      if (parser.ambiguousScriptDifferentAst) {\n        // Top level await introduces code which can be both a valid script and\n        // a valid module, but which produces different ASTs:\n        //    await\n        //    0\n        // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n        try {\n          options.sourceType = \"script\";\n          return getParser(options, input).parse();\n        } catch {}\n      } else {\n        // This is both a valid module and a valid script, but\n        // we parse it as a script by default\n        ast.program.sourceType = \"script\";\n      }\n\n      return ast;\n    } catch (moduleError) {\n      try {\n        options.sourceType = \"script\";\n        return getParser(options, input).parse();\n      } catch {}\n\n      throw moduleError;\n    }\n  } else {\n    return getParser(options, input).parse();\n  }\n}\n\nexport function parseExpression(input: string, options?: Options): Expression {\n  const parser = getParser(options, input);\n  if (parser.options.strictMode) {\n    parser.state.strict = true;\n  }\n  return parser.getExpression();\n}\n\nfunction generateExportedTokenTypes(\n  internalTokenTypes: InternalTokenTypes,\n): Record<string, ExportedTokenType> {\n  const tokenTypes: Record<string, ExportedTokenType> = {};\n  for (const typeName of Object.keys(\n    internalTokenTypes,\n  ) as (keyof InternalTokenTypes)[]) {\n    tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n  }\n  return tokenTypes;\n}\n\nexport const tokTypes = generateExportedTokenTypes(internalTokenTypes);\n\nfunction getParser(options: Options | undefined | null, input: string): Parser {\n  let cls = Parser;\n  const pluginsMap: PluginsMap = new Map();\n  if (options?.plugins) {\n    for (const plugin of options.plugins) {\n      let name, opts;\n      if (typeof plugin === \"string\") {\n        name = plugin;\n      } else {\n        [name, opts] = plugin;\n      }\n      if (!pluginsMap.has(name)) {\n        pluginsMap.set(name, opts || {});\n      }\n    }\n    validatePlugins(pluginsMap);\n    cls = getParserClass(pluginsMap);\n  }\n\n  return new cls(options, input, pluginsMap);\n}\n\nconst parserClassCache = new Map<string, new (...args: any) => Parser>();\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(\n  pluginsMap: Map<string, any>,\n): new (...args: any) => Parser {\n  const pluginList = [];\n  for (const name of mixinPluginNames) {\n    if (pluginsMap.has(name)) {\n      pluginList.push(name);\n    }\n  }\n  const key = pluginList.join(\"|\");\n  let cls = parserClassCache.get(key);\n  if (!cls) {\n    cls = Parser;\n    for (const plugin of pluginList) {\n      // @ts-expect-error todo(flow->ts)\n      cls = mixinPlugins[plugin](cls);\n    }\n    parserClassCache.set(key, cls);\n  }\n  return cls;\n}\n\nexport type {\n  FlowPluginOptions,\n  ParserPlugin,\n  PipelineOperatorPluginOptions,\n  RecordAndTuplePluginOptions,\n};\nexport type ParserOptions = Partial<Options>;\n"],"names":["Position","constructor","line","col","index","column","SourceLocation","start","end","filename","identifierName","createPositionWithColumnOffset","position","columnOffset","code","ModuleErrors","ImportMetaOutsideModule","message","ImportOutsideModule","NodeDescriptions","ArrayPattern","AssignmentExpression","AssignmentPattern","ArrowFunctionExpression","ConditionalExpression","CatchClause","ForOfStatement","ForInStatement","ForStatement","FormalParameters","Identifier","ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier","ObjectPattern","ParenthesizedExpression","RestElement","UpdateExpression","true","false","VariableDeclarator","YieldExpression","toNodeDescription","node","type","prefix","StandardErrors","AccessorIsGenerator","kind","ArgumentsInClass","AsyncFunctionInSingleStatementContext","AwaitBindingIdentifier","AwaitBindingIdentifierInStaticBlock","AwaitExpressionFormalParameter","AwaitUsingNotInAsyncContext","AwaitNotInAsyncContext","AwaitNotInAsyncFunction","BadGetterArity","BadSetterArity","BadSetterRestParameter","ConstructorClassField","ConstructorClassPrivateField","ConstructorIsAccessor","ConstructorIsAsync","ConstructorIsGenerator","DeclarationMissingInitializer","DecoratorArgumentsOutsideParentheses","DecoratorBeforeExport","DecoratorsBeforeAfterExport","DecoratorConstructor","DecoratorExportClass","DecoratorSemicolon","DecoratorStaticBlock","DeferImportRequiresNamespace","DeletePrivateField","DestructureNamedImport","DuplicateConstructor","DuplicateDefaultExport","DuplicateExport","exportName","DuplicateProto","DuplicateRegExpFlags","DynamicImportPhaseRequiresImportExpressions","phase","ElementAfterRest","EscapedCharNotAnIdentifier","ExportBindingIsString","localName","ExportDefaultFromAsIdentifier","ForInOfLoopInitializer","ForInUsing","ForOfAsync","ForOfLet","GeneratorInSingleStatementContext","IllegalBreakContinue","IllegalLanguageModeDirective","IllegalReturn","ImportAttributesUseAssert","ImportBindingIsString","importName","ImportCallArity","ImportCallNotNewExpression","ImportCallSpreadArgument","ImportJSONBindingNotDefault","ImportReflectionHasAssertion","ImportReflectionNotBinding","IncompatibleRegExpUVFlags","InvalidBigIntLiteral","InvalidCodePoint","InvalidCoverInitializedName","InvalidDecimal","InvalidDigit","radix","InvalidEscapeSequence","InvalidEscapeSequenceTemplate","InvalidEscapedReservedWord","reservedWord","InvalidIdentifier","InvalidLhs","ancestor","InvalidLhsBinding","InvalidLhsOptionalChaining","InvalidNumber","InvalidOrMissingExponent","InvalidOrUnexpectedToken","unexpected","InvalidParenthesizedAssignment","InvalidPrivateFieldResolution","InvalidPropertyBindingPattern","InvalidRecordProperty","InvalidRestAssignmentPattern","LabelRedeclaration","labelName","LetInLexicalBinding","LineTerminatorBeforeArrow","MalformedRegExpFlags","MissingClassName","MissingEqInAssignment","MissingSemicolon","MissingPlugin","missingPlugin","map","name","JSON","stringify","join","MissingOneOfPlugins","MissingUnicodeEscape","MixingCoalesceWithLogical","ModuleAttributeDifferentFromType","ModuleAttributeInvalidValue","ModuleAttributesWithDuplicateKeys","key","ModuleExportNameHasLoneSurrogate","surrogateCharCode","toString","ModuleExportUndefined","MultipleDefaultsInSwitch","NewlineAfterThrow","NoCatchOrFinally","NumberIdentifier","NumericSeparatorInEscapeSequence","ObsoleteAwaitStar","OptionalChainingNoNew","OptionalChainingNoTemplate","OverrideOnConstructor","ParamDupe","PatternHasAccessor","PatternHasMethod","PrivateInExpectedIn","PrivateNameRedeclaration","RecordExpressionBarIncorrectEndSyntaxType","RecordExpressionBarIncorrectStartSyntaxType","RecordExpressionHashIncorrectStartSyntaxType","RecordNoProto","RestTrailingComma","SloppyFunction","SloppyFunctionAnnexB","SourcePhaseImportRequiresDefault","StaticPrototype","SuperNotAllowed","SuperPrivateField","TrailingDecorator","TupleExpressionBarIncorrectEndSyntaxType","TupleExpressionBarIncorrectStartSyntaxType","TupleExpressionHashIncorrectStartSyntaxType","UnexpectedArgumentPlaceholder","UnexpectedAwaitAfterPipelineBody","UnexpectedDigitAfterHash","UnexpectedImportExport","UnexpectedKeyword","keyword","UnexpectedLeadingDecorator","UnexpectedLexicalDeclaration","UnexpectedNewTarget","UnexpectedNumericSeparator","UnexpectedPrivateField","UnexpectedReservedWord","UnexpectedSuper","UnexpectedToken","expected","UnexpectedTokenUnaryExponentiation","UnexpectedUsingDeclaration","UnsupportedBind","UnsupportedDecoratorExport","UnsupportedDefaultExport","UnsupportedImport","UnsupportedMetaProperty","target","onlyValidPropertyName","UnsupportedParameterDecorator","UnsupportedPropertyDecorator","UnsupportedSuper","UnterminatedComment","UnterminatedRegExp","UnterminatedString","UnterminatedTemplate","UsingDeclarationExport","UsingDeclarationHasBindingPattern","VarRedeclaration","YieldBindingIdentifier","YieldInParameter","ZeroDigitNumericSeparator","StrictModeErrors","StrictDelete","StrictEvalArguments","referenceName","StrictEvalArgumentsBinding","bindingName","StrictFunction","StrictNumericEscape","StrictOctalLiteral","StrictWith","UnparenthesizedPipeBodyDescriptions","Set","PipelineOperatorErrors","PipeBodyIsTighter","PipeTopicRequiresHackPipes","PipeTopicUnbound","PipeTopicUnconfiguredToken","token","PipeTopicUnused","PipeUnparenthesizedBody","PipelineBodyNoArrow","PipelineBodySequenceExpression","PipelineHeadSequenceExpression","PipelineTopicUnused","PrimaryTopicNotAllowed","PrimaryTopicRequiresSmartPipeline","defineHidden","obj","value","Object","defineProperty","enumerable","configurable","toParseErrorConstructor","toMessage","reasonCode","syntaxPlugin","hasMissingPlugin","oldReasonCodes","AccessorCannotDeclareThisParameter","AccessorCannotHaveTypeParameters","ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference","SetAccessorCannotHaveOptionalParameter","SetAccessorCannotHaveRestParameter","SetAccessorCannotHaveReturnType","loc","details","error","SyntaxError","pos","clone","overrides","_overrides$loc","assign","get","set","writable","ParseErrorEnum","argument","Array","isArray","parseErrorTemplates","ParseErrorConstructors","keys","template","_ref","rest","_objectWithoutPropertiesLoose","_excluded","Errors","toUnenumerable","object","toESTreeLocation","estree","superClass","ESTreeParserMixin","parse","file","options","tokens","parseRegExpLiteral","pattern","flags","regex","RegExp","_","estreeParseLiteral","parseBigIntLiteral","bigInt","BigInt","_unused","bigint","String","parseDecimalLiteral","decimal","parseLiteral","parseStringLiteral","parseNumericLiteral","parseNullLiteral","parseBooleanLiteral","directiveToStmt","directive","expression","raw","extra","expressionValue","stmt","rawValue","initFunction","isAsync","checkDeclaration","isObjectProperty","getObjectOrClassMethodParams","method","params","isValidDirective","_stmt$expression$extr","parenthesized","parseBlockBody","allowDirectives","topLevel","afterBlockParse","directiveStatements","directives","d","body","concat","pushClassMethod","classBody","isGenerator","isConstructor","allowsDirectSuper","parseMethod","typeParameters","push","parsePrivateName","getPluginOption","convertPrivateNameToPrivateIdentifier","getPrivateNameSV","id","isPrivateName","parseFunctionBody","allowExpression","isMethod","allowDirectSuper","inClassScope","funcNode","startNode","computed","finishNode","nameIsConstructor","parseClassProperty","args","propertyNode","parseClassPrivateProperty","parseObjectMethod","prop","isPattern","isAccessor","shorthand","parseObjectProperty","startLoc","refExpressionErrors","isValidLVal","isUnparenthesizedInAssign","binding","isAssignable","isBinding","toAssignable","isLHS","classScope","usePrivateName","toAssignableObjectExpressionProp","isLast","raise","finishCallExpression","unfinished","optional","callee","_ref2","source","arguments","attributes","toReferencedArguments","parseExport","decorators","exportStartLoc","state","lastTokStartLoc","exported","specifiers","length","_declaration$decorato","declaration","resetStartLocation","parseSubscript","base","noCalls","optionalChainMember","substring","stop","chain","startNodeAtNode","isOptionalMemberExpression","hasPropertyAsPrivateName","isObjectMethod","finishNodeAt","endLoc","resetEndLocation","lastTokEndLoc","TokContext","preserveSpace","types","brace","j_oTag","j_cTag","j_expr","beforeExpr","startsExpr","isLoop","isAssign","postfix","ExportedTokenType","label","conf","rightAssociative","binop","updateContext","keywords","Map","createKeyword","createToken","createBinop","tokenTypeCounter","tokenTypes","tokenLabels","tokenBinops","tokenBeforeExprs","tokenStartsExprs","tokenPrefixes","_options$binop","_options$beforeExpr","_options$startsExpr","_options$prefix","createKeywordLike","_options$binop2","_options$beforeExpr2","_options$startsExpr2","_options$prefix2","tt","bracketL","bracketHashL","bracketBarL","bracketR","bracketBarR","braceL","braceBarL","braceHashL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","ellipsis","backQuote","dollarBraceL","templateTail","templateNonTail","at","hash","interpreterDirective","eq","slashAssign","xorAssign","moduloAssign","incDec","bang","tilde","doubleCaret","doubleAt","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","lt","gt","relational","bitShift","bitShiftL","bitShiftR","plusMin","modulo","star","slash","exponent","_in","_instanceof","_break","_case","_catch","_continue","_debugger","_default","_else","_finally","_function","_if","_return","_switch","_throw","_try","_var","_const","_with","_new","_this","_super","_class","_extends","_export","_import","_null","_true","_false","_typeof","_void","_delete","_do","_for","_while","_as","_assert","_async","_await","_defer","_from","_get","_let","_meta","_of","_sent","_set","_source","_static","_using","_yield","_asserts","_checks","_exports","_global","_implements","_intrinsic","_infer","_is","_mixins","_proto","_require","_satisfies","_keyof","_readonly","_unique","_abstract","_declare","_enum","_module","_namespace","_interface","_type","_opaque","placeholder","string","num","regexp","privateName","eof","jsxName","jsxText","jsxTagStart","jsxTagEnd","tokenIsIdentifier","tokenKeywordOrIdentifierIsKeyword","tokenIsKeywordOrIdentifier","tokenIsLiteralPropertyName","tokenComesBeforeExpression","tokenCanStartExpression","tokenIsAssignment","tokenIsFlowInterfaceOrTypeOrOpaque","tokenIsLoop","tokenIsKeyword","tokenIsOperator","tokenIsPostfix","tokenIsPrefix","tokenIsTSTypeOperator","tokenIsTSDeclarationStart","tokenLabelName","tokenOperatorPrecedence","tokenIsRightAssociative","tokenIsTemplate","getExportedToken","context","pop","tc","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","i","isIdentifierStart","test","fromCharCode","isIdentifierChar","reservedWords","strict","strictBind","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","isIteratorStart","current","next","next2","reservedWordLikeSet","canBeReservedWord","Scope","names","firstLexicalName","ScopeHandler","parser","scopeStack","undefinedExports","inTopLevel","currentScope","inFunction","currentVarScopeFlags","allowSuper","currentThisScopeFlags","inClass","inClassAndNotInNonArrowFunction","inStaticBlock","ScopeFlag","inNonArrowFunction","treatFunctionsAsVar","treatFunctionsAsVarInScope","createScope","enter","exit","scope","declareName","bindingType","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","topLevelScope","FlowScope","declareFunctions","FlowScopeHandler","add","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","sourceToOffsetPos","sourcePos","startIndex","offsetToSourcePos","offsetPos","hasPlugin","pluginConfig","plugins","pluginName","pluginOptions","actualOptions","plugin","_this$plugins$get","setTrailingComments","comments","trailingComments","undefined","unshift","setLeadingComments","leadingComments","setInnerComments","innerComments","adjustInnerComments","elements","commentWS","lastElement","CommentsParser","addComment","comment","commentsLen","processComment","commentStack","commentStackLength","lastCommentWS","leadingNode","nodeStart","commentEnd","containingNode","finalizeComment","splice","trailingNode","commentStart","input","charCodeAt","properties","finalizeRemainingComments","resetPreviousNodeTrailingComments","resetPreviousIdentifierLeadingComments","takeSurroundingComments","lineBreak","lineBreakG","isNewLine","hasNewLine","skipWhiteSpace","skipWhiteSpaceInLine","isWhitespace","State","curLine","lineStart","errors","potentialArrowAt","noArrowAt","noArrowParamsConversionAt","topicContext","maxNumOfResolvableTopics","maxTopicIndex","labels","ct","firstInvalidTemplateEscapePos","strictErrors","tokensLength","v","init","strictMode","sourceType","startLine","startColumn","maybeInArrowParameters","inType","noAnonFunctionType","hasFlowComment","isAmbientContext","inAbstractClass","inDisallowConditionalTypesContext","soloAwait","inFSharpPipelineDirectBody","canStartJSXElement","containsEsc","hasTopLevelAwait","curPosition","slice","isDigit","forbiddenNumericSeparatorSiblings","decBinOct","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","unterminated","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","exec","octalStr","octal","parseInt","len","forceLen","n","readInt","invalidEscapeSequence","allowNumSeparator","bailOnError","forbiddenSiblings","isAllowedSibling","invalid","total","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint","buildPosition","VALID_REGEX_FLAGS","Token","Tokenizer","isLookahead","errorHandlers_readInt","errorRecovery","errorBuilder","errorHandlers_readCodePoint","errorHandlers_readStringContents_string","recordStrictModeErrors","errorHandlers_readStringContents_template","pushToken","checkKeywordEscapes","nextToken","eat","createLookaheadState","curContext","lookahead","old","curr","nextTokenStart","nextTokenStartSince","lastIndex","lookaheadCharCode","nextTokenInLineStart","nextTokenInLineStartSince","lookaheadInLineCharCode","codePointAtPos","cp","trail","setStrict","forEach","toParseError","clear","skipSpace","finishToken","getTokenFromCode","skipBlockComment","skipLineComment","startSkip","spaceStart","loop","attachComment","annexB","commentWhitespace","prevType","replaceToken","readToken_numberSign","readToken_interpreter","nextPos","expectPlugin","readWord1","finishOp","readToken_dot","readNumber","readToken_slash","readToken_mult_modulo","width","readToken_pipe_amp","readToken_caret","proposal","topicToken","lookaheadCh","codePointAt","readToken_atSign","readToken_plus_min","readToken_lt","readToken_gt","size","readToken_eq_excl","readToken_question","readTemplateToken","readRadixNumber","readString","readWord","readRegexp","escaped","content","mods","char","includes","isBigInt","replace","startsWithDot","isFloat","hasExponent","isOctal","hasLeadingZero","integer","underscorePos","isDecimal","parseFloat","quote","readTemplateContinuation","opening","firstCode","escStart","identifierCheck","esc","keywordTypes","raiseOverwrite","expectOnePlugin","pluginNames","some","ClassScope","privateNames","loneAccessors","undefinedPrivateNames","ClassScopeHandler","stack","oldClassScope","from","declarePrivateName","elementType","redefined","accessor","oldStatic","newStatic","oldKind","newKind","ExpressionScope","canBeArrowParameterDeclaration","isCertainlyParameterDeclaration","ArrowHeadParsingScope","declarationErrors","recordDeclarationError","ParsingErrorClass","clearDeclarationError","iterateErrors","iterator","ExpressionScopeHandler","recordParameterInitializerError","origin","recordArrowParameterBindingError","recordAsyncArrowParametersError","validateAsPattern","newParameterDeclarationScope","newArrowHeadScope","newAsyncArrowScope","newExpressionScope","ProductionParameterHandler","stacks","currentFlags","hasAwait","hasYield","hasReturn","hasIn","functionFlags","UtilParser","addExtra","isContextual","isUnparsedContextual","nameStart","nameEnd","nextCh","isLookaheadContextual","eatContextual","expectContextual","canInsertSemicolon","hasPrecedingLineBreak","hasFollowingLineBreak","isLineTerminator","semicolon","allowAsi","expect","tryParse","fn","oldState","abortSignal","failState","thrown","aborted","checkExpressionErrors","andThrow","shorthandAssignLoc","doubleProtoLoc","privateKeyLoc","optionalParametersLoc","hasErrors","isLiteralPropertyName","property","initializeScopes","oldLabels","oldExportedIdentifiers","exportedIdentifiers","oldInModule","oldScope","getScopeHandler","oldProdParam","prodParam","oldExpressionScope","expressionScope","enterInitialScopes","paramFlags","checkDestructuringPrivate","ExpressionErrors","Node","ranges","range","NodePrototype","prototype","__clone","newNode","clonePlaceholder","cloneIdentifier","cloned","create","expectedNode","cloneStringLiteral","NodeUtils","startNodeAt","resetStartLocationFromNode","locationNode","reservedTypes","FlowErrors","AmbiguousConditionalArrow","AmbiguousDeclareModuleKind","AssignReservedType","reservedType","DeclareClassElement","DeclareClassFieldInitializer","DuplicateDeclareModuleExports","EnumBooleanMemberNotInitialized","memberName","enumName","EnumDuplicateMemberName","EnumInconsistentMemberValues","EnumInvalidExplicitType","invalidEnumType","EnumInvalidExplicitTypeUnknownSupplied","EnumInvalidMemberInitializerPrimaryType","explicitType","EnumInvalidMemberInitializerSymbolType","EnumInvalidMemberInitializerUnknownType","EnumInvalidMemberName","suggestion","EnumNumberMemberNotInitialized","EnumStringMemberInconsistentlyInitialized","GetterMayNotHaveThisParam","ImportReflectionHasImportType","ImportTypeShorthandOnlyInPureImport","InexactInsideExact","InexactInsideNonObject","InexactVariance","InvalidNonTypeImportInDeclareModule","MissingTypeParamDefault","NestedDeclareModule","NestedFlowComment","PatternIsOptional","SetterMayNotHaveThisParam","SpreadVariance","ThisParamAnnotationRequired","ThisParamBannedInConstructor","ThisParamMayNotBeOptional","ThisParamMustBeFirst","ThisParamNoDefault","TypeBeforeInitializer","TypeCastInPattern","UnexpectedExplicitInexactInObject","UnexpectedReservedType","UnexpectedReservedUnderscore","UnexpectedSpaceBetweenModuloChecks","UnexpectedSpreadType","UnexpectedSubtractionOperand","UnexpectedTokenAfterTypeParameter","UnexpectedTypeParameterBeforeAsyncArrowFunction","UnsupportedDeclareExportKind","unsupportedExportKind","UnsupportedStatementInDeclareModule","UnterminatedFlowComment","isEsModuleType","bodyElement","hasTypeImportKind","importKind","exportSuggestions","const","let","interface","partition","list","list1","list2","FLOW_PRAGMA_REGEX","flow","FlowParserMixin","flowPragma","shouldParseTypes","matches","Error","flowParseTypeInitialiser","tok","oldInType","flowParseType","flowParsePredicate","moduloLoc","parseExpression","flowParseTypeAndPredicateInitialiser","predicate","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","parseIdentifier","typeNode","typeContainer","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","this","returnType","typeAnnotation","flowParseDeclare","insideModule","flowParseDeclareVariable","flowParseDeclareModuleExports","flowParseDeclareModule","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","flowParseTypeAnnotatableIdentifier","parseExprAtom","bodyNode","parseImport","hasModuleExport","default","isLet","exportKind","flowParseTypeAnnotation","finished","flowParseTypeAlias","flowParseOpaqueType","isClass","flowParseRestrictedIdentifier","extends","flowParseInterfaceExtends","implements","mixins","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","right","declare","supertype","impltype","flowParseTypeParameter","requireDefault","nodeStartLoc","variance","flowParseVariance","ident","bound","defaultRequired","typeParameter","oldNoAnonFunctionType","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","static","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","valueNode","callProperties","indexers","internalSlots","endDelim","exact","inexact","protoStartLoc","inexactStartLoc","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","isInexactToken","proto","flowCheckGetterSetterParams","paramCount","_startLoc","node2","qualification","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","first","lh","isThis","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","parseLiteralAtNode","createIdentifier","flowParsePostfixType","seenOptionalIndexedAccess","objectType","indexType","flowParsePrefixType","flowParseAnonFunctionWithoutParens","param","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatementLike","flowParseEnumDeclaration","parseExpressionStatement","expr","shouldParseExportDeclaration","isExportDefaultSpecifier","parseExportDefaultExpression","parseConditional","setOptionalParametersError","originalNoArrowAt","consequent","failed","tryParseConditionalConsequent","valid","getArrowLikeExpressions","alternate","parseMaybeAssign","parseMaybeAssignAllowIn","disallowInvalid","arrows","finishArrowValidation","every","_node$extra","toAssignableList","trailingCommaLoc","checkParams","result","parseParenItem","typeCastNode","assertModuleNodeAllowed","parseExportDeclaration","declarationNode","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","isStatement","optionalId","parseClassMember","member","parseClassMemberFromModifier","isIterator","readIterator","fullWord","left","exprList","toReferencedList","isParenthesizedExpr","_expr$extra","parseArrayLike","close","canBePattern","isTuple","isParenthesized","isClassMethod","isClassProperty","isNonstaticConstructor","isThisParam","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","checkGetterSetterParams","parsePropertyNamePrefixOperator","parseObjPropValue","parseFunctionParamType","parseMaybeDefault","checkImportReflection","module","parseImportSpecifierLocal","specifier","local","finishImportSpecifier","isPotentialImportPhase","isExport","applyImportPhase","parseImportSpecifier","importedIsString","isInTypeOnlyImport","isMaybeTypeOnly","firstIdent","imported","specifierTypeKind","as_ident","specifierIsTypeImport","checkReservedWord","parseBindingAtom","parseFunctionParams","parseVarId","decl","parseAsyncArrowFromCallExpression","call","shouldParseAsyncArrow","afterLeftParse","_jsx","jsx","currentContext","_jsx2","_jsx3","abort","_arrowExpression$extr","arrowExpression","maybeUnwrapTypeCastExpression","async","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","strictModeChanged","parseParenAndDistinguishExpression","canBeArrow","parseSubscripts","parseCallExpressionArguments","parseAsyncArrowWithTypeParameters","subscriptState","isLookaheadToken_lt","typeArguments","parseNewCallee","targs","parseArrowExpression","parseTopLevel","program","fileNode","skipFlowComment","hasFlowCommentCompletion","commentSkip","shiftToFirstNonWhiteSpace","ch2","ch3","flowEnumErrorBooleanMemberNotInitialized","flowEnumErrorInvalidMemberInitializer","enumContext","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitialized","flowEnumMemberInit","endOfInit","literal","flowEnumMemberRaw","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","members","booleanMembers","numberMembers","stringMembers","defaultedMembers","hasUnknownMembers","memberNode","toUpperCase","flowEnumStringMembers","initializedMembers","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","afterNext","entities","__proto__","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","JsxErrors","AttributeIsEmpty","MissingClosingTagElement","openingTagName","MissingClosingTagFragment","UnexpectedSequenceExpression","HTMLEntity","UnsupportedJsxValue","UnterminatedJsxContent","UnwrappedAdjacentJSXElements","isFragment","getQualifiedJSXName","namespace","JSXParserMixin","jsxReadToken","jsxReadEntity","jsxReadNewLine","normalizeCRLF","jsxReadString","codePoint","count","desc","entity","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","jsxParseAttributeValue","setContext","jsxParseExpressionContainer","jsxParseEmptyExpression","jsxParseSpreadChild","previousContext","jsxParseAttribute","jsxParseOpeningElementAt","jsxParseOpeningElementAfterName","selfClosing","jsxParseClosingElementAt","jsxParseElementAt","children","openingElement","closingElement","contents","openingFragment","closingFragment","jsxParseElement","newContext","TypeScriptScope","tsNames","TypeScriptScopeHandler","importsStack","hasImport","allowShadow","isConst","wasConst","unwrapParenthesizedExpression","LValParser","_node$extra3","last","_node$extra2","operator","arg","checkToRestConversion","elt","element","toReferencedListDeep","parseSpread","parseRestBinding","parseBindingList","ParseBindingListFlags","parseObjectLike","closeCharCode","allowEmpty","elts","checkCommaAfterRest","parseDecorator","parseAssignableListItem","parseBindingRestProperty","parseBindingProperty","parsePropertyName","_left","checkLVal","checkClashes","hasParenthesizedAncestor","_expression$extra","checkIdentifier","validity","ParseErrorClass","isParenthesizedExpression","nextAncestor","child","declareNameFromIdentifier","identifier","allowPattern","nonNull","x","assert","TSErrors","AbstractMethodHasImplementation","methodName","AbstractPropertyHasInitializer","propertyName","AccessorCannotBeOptional","ClassMethodHasDeclare","ClassMethodHasReadonly","ConstructorHasTypeParameters","DeclareAccessor","DeclareClassFieldHasInitializer","DeclareFunctionHasImplementation","DuplicateAccessibilityModifier","modifier","DuplicateModifier","EmptyHeritageClauseType","EmptyTypeArguments","EmptyTypeParameters","ExpectedAmbientAfterExportDeclare","ImportAliasHasImportType","IncompatibleModifiers","modifiers","IndexSignatureHasAbstract","IndexSignatureHasAccessibility","IndexSignatureHasDeclare","IndexSignatureHasOverride","IndexSignatureHasStatic","InitializerNotAllowedInAmbientContext","InvalidModifierOnTypeMember","InvalidModifierOnTypeParameter","InvalidModifierOnTypeParameterPositions","InvalidModifiersOrder","orderedModifiers","InvalidPropertyAccessAfterInstantiationExpression","InvalidTupleMemberLabel","MissingInterfaceName","NonAbstractClassHasAbstractMethod","NonClassMethodPropertyHasAbstractModifer","OptionalTypeBeforeRequired","OverrideNotInSubClass","PrivateElementHasAbstract","PrivateElementHasAccessibility","ReadonlyForMethodSignature","ReservedArrowTypeParam","ReservedTypeAssertion","SingleTypeParameterWithoutTrailingComma","typeParameterName","StaticBlockCannotHaveModifier","TupleOptionalAfterType","TypeAnnotationAfterAssign","TypeImportCannotSpecifyDefaultAndNamed","TypeModifierIsUsedInTypeExports","TypeModifierIsUsedInTypeImports","UnexpectedParameterModifier","UnexpectedReadonly","UnexpectedTypeAnnotation","UnexpectedTypeCastInParameter","UnsupportedImportTypeArgument","UnsupportedParameterPropertyKind","UnsupportedSignatureParameterKind","keywordTypeFromName","tsIsAccessModifier","tsIsVarianceAnnotations","typescript","TypeScriptParserMixin","tsParseInOutModifiers","tsParseModifiers","bind","allowedModifiers","disallowedModifiers","errorTemplate","tsParseConstModifier","tsParseInOutConstModifiers","tsIsIdentifier","tsTokenCanFollowModifier","tsNextTokenOnSameLineAndCanFollowModifier","tsNextTokenCanFollowModifier","tsParseModifier","stopOnStartOfClassStaticBlock","tsIsStartOfStaticBlocks","tsTryParse","modified","enforceOrder","before","after","incompatible","mod1","mod2","accessibility","hasOwnProperty","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","refTrailingCommaPos","tsParseDelimitedListWorker","expectSuccess","trailingCommaPos","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","qualifier","tsParseEntityName","tsParseTypeArguments","allowReservedWords","tsParseTypeReference","typeName","tsParseThisTypePredicate","lhs","parameterName","tsParseTypeAnnotation","asserts","tsParseThisTypeNode","tsParseTypeQuery","exprName","tsParseTypeParameter","parseModifiers","tsParseTypeParameterName","constraint","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsFillSignature","returnToken","signature","returnTokenRequired","paramsKey","returnTypeKey","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","parameters","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","readonly","nodeAny","firstParameter","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedType","tsExpectThenParseType","nameType","tsParseType","tsTryParseType","tsParseTupleType","elementTypes","tsParseTupleElementType","seenOptionalElement","elementNode","labeled","isWord","chAfterWord","wordName","typeOrLabel","tsParseNonArrayType","labeledNode","optionalTypeNode","restNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","abstract","tsInAllowConditionalTypesContext","tsParseLiteralTypeNode","tsParseTemplateLiteralType","parseTemplate","parseTemplateSubstitution","tsParseThisTypeOrThisTypePredicate","thisKeyword","parseMaybeUnary","nodeType","tsParseArrayTypeOrHigher","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","tsParseConstraintForInferType","tsInDisallowConditionalTypesContext","isTypeOperator","tsParseUnionOrIntersectionType","parseConstituentType","hasLeadingOperator","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","previousErrorCount","_unused2","tsInType","t","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","checkType","extendsType","trueType","falseType","isAbstractConstructorSignature","tsParseTypeAssertion","tsParseHeritageClause","originalStartLoc","delimitedList","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInNoContext","cb","oldContext","oldInDisallowConditionalTypesContext","tsNextThenParseType","tsParseEnumMember","initializer","tsParseEnumDeclaration","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","global","tsParseImportEqualsDeclaration","maybeDefaultIdentifier","moduleReference","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","f","tsTryParseAndCatch","tsTryParseDeclare","nany","startType","tsInAmbientContext","parseFunctionStatement","parseClass","parseVarStatement","tsParseDeclaration","tsTryParseExportDeclaration","tsParseExpressionStatement","mod","tsCheckLineTerminator","tsParseAbstractDeclaration","tsTryParseGenericAsyncArrowFunction","oldMaybeInArrowParameters","tsParseTypeArgumentsInExpression","reScan_lt","reScan_lt_gt","tsIsDeclarationStart","override","pp","parameter","isSimpleParameter","tsDisallowOptionalPattern","bodilessType","registerFunctionStatementId","tsCheckForInvalidTypeCasts","items","isInParens","nonNullExpression","isOptionalCall","missingParenErrorLoc","atPossibleAsyncArrow","asyncArrowFn","parseTaggedTemplateExpression","tokenType","_callee$extra","parseExprOp","leftStartLoc","minPrec","isSatisfies","checkKeywords","checkDuplicateExports","importNode","parseMaybeImportPhase","parseImportSpecifiersAndAfter","nodeImportEquals","isAbstractClass","cls","allowMissingInitializer","declarations","isValidAmbientConstInitializer","parseStatementContent","parseAccessModifier","tsHasSomeModifiers","callParseClassMemberWithIsStatic","parseClassStaticBlock","parseClassMemberWithIsStatic","hadSuperClass","parsePostMemberNameModifiers","methodOrProp","isDeclare","isIdentifier","parseClassPropertyAnnotation","definite","parseClassAccessorProperty","declareClassPrivateMethodInScope","_typeCast","_typeCast2","typeCast","_typeParameters","reportReservedArrowTypeParam","trailingComma","sawUnary","toAssignableParenthesizedExpression","parseMaybeDecoratorArguments","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","hasContextParam","parseCatchClauseParam","oldIsAmbientContext","oldStrict","oldInAbstractClass","maybeTakeDecorators","hasBody","shouldParseAsAmbientContext","getExpression","parseExportSpecifier","isString","isInTypeExport","parseTypeOnlyImportExportSpecifier","isImport","isInTypeOnlyImportExport","leftOfAsKey","rightOfAsKey","leftOfAs","rightOfAs","hasTypeSpecifier","canParseAsKeyword","firstAs","secondAs","parseModuleExportName","kindKey","isPossiblyLiteralEnum","expressions","isUncomputedMemberExpressionChain","isNumber","isNegativeNumber","PlaceholderErrors","ClassNameIsRequired","UnexpectedSpace","placeholders","PlaceholdersParserMixin","parsePlaceholder","assertNoSpace","finishPlaceholder","chStartsBindingIdentifier","verifyBreakContinue","isBreak","parseStatementOrSloppyAnnexBFunctionDeclaration","stmtPlaceholder","parseBlock","createNewLexicalScope","parseFunctionId","requireId","parseClassBody","startsWith","maybeParseExportDefaultSpecifier","_specifiers","checkExport","filter","hasStarImport","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","v8intrinsic","V8IntrinsicMixin","parseV8Intrinsic","v8IntrinsicStartLoc","parseIdentifierName","PIPELINE_PROPOSALS","TOPIC_TOKENS","validatePlugins","pluginsMap","decoratorsBeforeExport","allowCallParenthesized","_pluginsMap$get","proposalList","p","tupleSyntaxIsHash","syntaxType","tokenList","moduleAttributesVersionPluginOption","version","deprecatedAssertSyntax","RECORD_AND_TUPLE_SYNTAX_TYPES","missingPlugins","mixinPlugins","mixinPluginNames","createDefaultOptions","sourceFilename","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowNewTargetOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","createImportExpressions","createParenthesizedExpressions","getOptions","opts","ExpressionParser","checkProto","isRecord","protoRef","used","shouldExitDescending","disallowIn","disallowInAnd","parseExpressionBase","allowInAnd","parseMaybeAssignDisallowIn","resultError","_resultError$loc","parseYield","ownExpressionErrors","parseMaybeConditional","parseExprOps","parseMaybeUnaryOrPrivate","op","prec","checkPipelineAtInfixOperator","logical","coalesce","parseExprOpRightExpr","finishedNode","nextOp","withTopicBindingContext","parseHackPipeBody","parseSmartPipelineBodyInStyle","parseExprOpBaseRightExpr","withSoloAwaitPermittingContext","parseFSharpPipelineBody","_body$extra","requiredParentheses","topicReferenceWasUsedInCurrentContext","checkExponentialAfterUnary","isAwait","recordAwaitIfAllowed","parseAwait","update","isDelete","parseUpdate","isAmbiguousAwait","updateExpressionNode","parseExprSubscripts","maybeAsyncArrow","parseBind","parseCoverCallAndAsyncArrowHead","parseMember","parseNoCallExpr","tag","quasi","allowPlaceholder","nodeForExtra","oldInFSharpPipelineDirectBody","addTrailingCommaExtraToNode","parseExprListItem","_call$extra","parseSuper","parseImportMetaProperty","parseImportCall","parseDo","parseFunctionOrFunctionSent","parseDecorators","parseNewOrNewTarget","parseTopicReferenceThenEqualsSign","parseTopicReference","pipeProposal","parseModuleExpression","parseAsyncFunctionExpression","parseAsyncArrowUnaryFunction","topicTokenType","topicTokenValue","finishTopicReference","testTopicReferenceConfiguration","topicReferenceIsAllowedInCurrentContext","registerTopicReference","meta","parseMetaProperty","parseFunction","isSource","innerStartLoc","spreadStartLoc","optionalCommaStartLoc","spreadNodeStartLoc","innerEndLoc","arrowNode","wrapParenthesis","parenExpression","metaProp","parseNew","parseExprList","parseTemplateElement","isTagged","elemStart","elem","isTail","endOffset","elemEnd","cooked","tail","curElt","quasis","substitutions","propHash","parsePropertyDefinition","maybeAsyncOrAccessorProp","keyName","_params","finishedProp","generator","isExpression","hasStrictModeDirective","nonSimple","isSimpleParamList","formalParameters","reservedTest","isAwaitAllowed","delegating","delegate","childExpr","isSimpleReference","checkSmartPipeTopicBodyEarlyErrors","callback","outerContextTopicState","withSmartMixTopicForbiddingContext","outerContextSoloAwaitState","prodParamToSet","ParamKind","prodParamToClear","ret","revertScopes","parseProgram","loopLabel","switchLabel","loneSurrogate","keywordRelationalOperator","babel7CompatTokens","hashEndPos","hashEndLoc","backquoteEnd","backquoteEndLoc","startToken","templateValue","templateElementEnd","templateElementEndLoc","endToken","StatementParser","interpreter","parseInterpreterDirective","finishedProgram","stmtToDirective","directiveLiteral","hasFollowingBindingAtom","endCh","chStartsBindingPattern","hasInLineFollowingBindingIdentifierOrBrace","startsUsingForOf","startsAwaitUsing","parseModuleItem","ParseStatementFlag","parseStatementListItem","allowLabeledFunction","parseStatement","allowDeclaration","allowFunctionDeclaration","parseBreakContinueStatement","parseDebuggerStatement","parseDoWhileStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","decoratorsEnabledBeforeExport","maybeDecorators","classNode","exportNode","allowExport","paramsStartLoc","lab","parseHeaderExpression","awaitAt","parseFor","startsWithLet","startsWithAwaitUsing","starsWithUsingDeclaration","isLetOrUsing","initNode","parseVar","isForIn","parseForIn","startsWithAsync","isForOf","isHangingDeclaration","ParseFunctionFlag","discriminant","cases","cur","sawDefault","isCase","block","handler","clause","finalizer","statementStart","parsedNonDirective","await","isFor","hangingDeclaration","isDeclaration","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","accessorProp","publicMember","parseClassElementName","maybeContextualKw","isPrivate","maybeQuestionTokenStartLoc","pushClassPrivateProperty","pushClassProperty","pushClassAccessorProperty","_member$decorators","parseInitializer","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","_node2$declaration","_ref$specifiers","isTypeExport","assertions","nextType","hasFrom","nextAfterFrom","maybeParseImportAttributes","checkJSONModuleImport","checkNames","isDefault","isFrom","_node$specifiers","_declaration$extra","nodes","surrogate","isJSONModuleImport","singleBindingType","_node$assertions","nonDefaultNamedSpecifier","find","phaseIdentifier","isImportPhase","isPrecedingIdImportPhase","parseImportSourceAndAttributes","maybeParseDefaultImportSpecifier","parseNext","_node$specifiers2","parseImportAttributes","attrs","attrNames","parseModuleAttributes","useWith","importSpecifier","Parser","_options","getParser","ast","moduleError","generateExportedTokenTypes","internalTokenTypes","tokTypes","getParserClass","parserClassCache","pluginList"],"mappings":"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AE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjkD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EA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"}
+{"version":3,"file":"index.js","sources":["../src/util/location.ts","../src/parse-error/module-errors.ts","../src/parse-error/to-node-description.ts","../src/parse-error/standard-errors.ts","../src/parse-error/strict-mode-errors.ts","../src/parse-error/pipeline-operator-errors.ts","../src/parse-error.ts","../src/options.ts","../src/plugins/estree.ts","../src/tokenizer/context.ts","../src/tokenizer/types.ts","../../babel-helper-validator-identifier/src/identifier.ts","../../babel-helper-validator-identifier/src/keyword.ts","../src/util/identifier.ts","../src/util/scope.ts","../src/plugins/flow/scope.ts","../src/parser/base.ts","../src/parser/comments.ts","../src/util/whitespace.ts","../src/tokenizer/state.ts","../../babel-helper-string-parser/src/index.ts","../src/tokenizer/index.ts","../src/util/class-scope.ts","../src/util/expression-scope.ts","../src/util/production-parameter.ts","../src/parser/util.ts","../src/parser/node.ts","../src/plugins/flow/index.ts","../src/plugins/jsx/xhtml.ts","../src/plugins/jsx/index.ts","../src/plugins/typescript/scope.ts","../src/parser/lval.ts","../src/plugins/typescript/index.ts","../src/plugins/placeholders.ts","../src/plugins/v8intrinsic.ts","../src/plugin-utils.ts","../src/parser/expression.ts","../src/parser/statement.ts","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["export type Pos = {\n  start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n  line: number;\n  column: number;\n  index: number;\n\n  constructor(line: number, col: number, index: number) {\n    this.line = line;\n    this.column = col;\n    this.index = index;\n  }\n}\n\nexport class SourceLocation {\n  start: Position;\n  end: Position;\n  filename: string;\n  identifierName: string | undefined | null;\n\n  constructor(start: Position, end?: Position) {\n    this.start = start;\n    // (may start as null, but initialized later)\n    this.end = end;\n  }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n  position: Position,\n  columnOffset: number,\n) {\n  const { line, column, index } = position;\n  return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n  ImportMetaOutsideModule: {\n    message: `import.meta may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n  ImportOutsideModule: {\n    message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n  ArrayPattern: \"array destructuring pattern\",\n  AssignmentExpression: \"assignment expression\",\n  AssignmentPattern: \"assignment expression\",\n  ArrowFunctionExpression: \"arrow function expression\",\n  ConditionalExpression: \"conditional expression\",\n  CatchClause: \"catch clause\",\n  ForOfStatement: \"for-of statement\",\n  ForInStatement: \"for-in statement\",\n  ForStatement: \"for-loop\",\n  FormalParameters: \"function parameter list\",\n  Identifier: \"identifier\",\n  ImportSpecifier: \"import specifier\",\n  ImportDefaultSpecifier: \"import default specifier\",\n  ImportNamespaceSpecifier: \"import namespace specifier\",\n  ObjectPattern: \"object destructuring pattern\",\n  ParenthesizedExpression: \"parenthesized expression\",\n  RestElement: \"rest element\",\n  UpdateExpression: {\n    true: \"prefix operation\",\n    false: \"postfix operation\",\n  },\n  VariableDeclarator: \"variable declaration\",\n  YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n  typeof NodeDescriptions,\n  \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n  | {\n      type: \"UpdateExpression\";\n      prefix: boolean;\n    }\n  | {\n      type: NodeTypesWithDescriptions;\n    };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n  node.type === \"UpdateExpression\"\n    ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n    : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n  | { type: \"UpdateExpression\"; prefix: boolean }\n  | {\n      type:\n        | \"ArrayPattern\"\n        | \"AssignmentExpression\"\n        | \"CatchClause\"\n        | \"ForOfStatement\"\n        | \"FormalParameters\"\n        | \"ForInStatement\"\n        | \"ForStatement\"\n        | \"ImportSpecifier\"\n        | \"ImportNamespaceSpecifier\"\n        | \"ImportDefaultSpecifier\"\n        | \"ParenthesizedExpression\"\n        | \"ObjectPattern\"\n        | \"RestElement\"\n        | \"VariableDeclarator\";\n    };\n\nexport default {\n  AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `A ${kind}ter cannot be a generator.`,\n  ArgumentsInClass:\n    \"'arguments' is only allowed in functions and class methods.\",\n  AsyncFunctionInSingleStatementContext:\n    \"Async functions can only be declared at the top level or inside a block.\",\n  AwaitBindingIdentifier:\n    \"Can not use 'await' as identifier inside an async function.\",\n  AwaitBindingIdentifierInStaticBlock:\n    \"Can not use 'await' as identifier inside a static block.\",\n  AwaitExpressionFormalParameter:\n    \"'await' is not allowed in async function parameters.\",\n  AwaitUsingNotInAsyncContext:\n    \"'await using' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncContext:\n    \"'await' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncFunction: \"'await' is only allowed within async functions.\",\n  BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n  BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n  BadSetterRestParameter:\n    \"A 'set' accessor function argument must not be a rest parameter.\",\n  ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n  ConstructorClassPrivateField:\n    \"Classes may not have a private field named '#constructor'.\",\n  ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n  ConstructorIsAsync: \"Constructor can't be an async function.\",\n  ConstructorIsGenerator: \"Constructor can't be a generator.\",\n  DeclarationMissingInitializer: ({\n    kind,\n  }: {\n    kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n  }) => `Missing initializer in ${kind} declaration.`,\n  DecoratorArgumentsOutsideParentheses:\n    \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n  DecoratorBeforeExport:\n    \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n  DecoratorsBeforeAfterExport:\n    \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n  DecoratorConstructor:\n    \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n  DecoratorExportClass:\n    \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n  DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n  DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n  DeferImportRequiresNamespace:\n    'Only `import defer * as x from \"./module\"` is valid.',\n  DeletePrivateField: \"Deleting a private field is not allowed.\",\n  DestructureNamedImport:\n    \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n  DuplicateConstructor: \"Duplicate constructor in the same class.\",\n  DuplicateDefaultExport: \"Only one default export allowed per module.\",\n  DuplicateExport: ({ exportName }: { exportName: string }) =>\n    `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n  DuplicateProto: \"Redefinition of __proto__ property.\",\n  DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n  DynamicImportPhaseRequiresImportExpressions: ({ phase }: { phase: string }) =>\n    `'import.${phase}(...)' can only be parsed when using the 'createImportExpressions' option.`,\n  ElementAfterRest: \"Rest element must be last element.\",\n  EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n  ExportBindingIsString: ({\n    localName,\n    exportName,\n  }: {\n    localName: string;\n    exportName: string;\n  }) =>\n    `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n  ExportDefaultFromAsIdentifier:\n    \"'from' is not allowed as an identifier after 'export default'.\",\n\n  ForInOfLoopInitializer: ({\n    type,\n  }: {\n    type: \"ForInStatement\" | \"ForOfStatement\";\n  }) =>\n    `'${\n      type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n    }' loop variable declaration may not have an initializer.`,\n  ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n  ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n  ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n  GeneratorInSingleStatementContext:\n    \"Generators can only be declared at the top level or inside a block.\",\n\n  IllegalBreakContinue: ({\n    type,\n  }: {\n    type: \"BreakStatement\" | \"ContinueStatement\";\n  }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n  IllegalLanguageModeDirective:\n    \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n  IllegalReturn: \"'return' outside of function.\",\n  ImportAttributesUseAssert:\n    \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n  ImportBindingIsString: ({ importName }: { importName: string }) =>\n    `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n  ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n  ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n  ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n  ImportJSONBindingNotDefault:\n    \"A JSON module can only be imported with `default`.\",\n  ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n  ImportReflectionNotBinding:\n    'Only `import module x from \"./module\"` is valid.',\n  IncompatibleRegExpUVFlags:\n    \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n  InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n  InvalidCodePoint: \"Code point out of bounds.\",\n  InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n  InvalidDecimal: \"Invalid decimal.\",\n  InvalidDigit: ({ radix }: { radix: number }) =>\n    `Expected number in radix ${radix}.`,\n  InvalidEscapeSequence: \"Bad character escape sequence.\",\n  InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n  InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Escape sequence in keyword ${reservedWord}.`,\n  InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n    `Invalid identifier ${identifierName}.`,\n  InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n      ancestor,\n    )}.`,\n  InvalidNumber: \"Invalid number.\",\n  InvalidOrMissingExponent:\n    \"Floating-point numbers require a valid exponent after the 'e'.\",\n  InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n    `Unexpected character '${unexpected}'.`,\n  InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n  InvalidPrivateFieldResolution: ({\n    identifierName,\n  }: {\n    identifierName: string;\n  }) => `Private name #${identifierName} is not defined.`,\n  InvalidPropertyBindingPattern: \"Binding member expression.\",\n  InvalidRecordProperty:\n    \"Only properties and spread elements are allowed in record definitions.\",\n  InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n  LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n    `Label '${labelName}' is already declared.`,\n  LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n  LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n  MalformedRegExpFlags: \"Invalid regular expression flag.\",\n  MissingClassName: \"A class name is required.\",\n  MissingEqInAssignment:\n    \"Only '=' operator can be used for specifying default value.\",\n  MissingSemicolon: \"Missing semicolon.\",\n  MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n    `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  // FIXME: Would be nice to make this \"missingPlugins\" instead.\n  // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n  MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n    `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n  MixingCoalesceWithLogical:\n    \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n  ModuleAttributeDifferentFromType:\n    \"The only accepted module attribute is `type`.\",\n  ModuleAttributeInvalidValue:\n    \"Only string literals are allowed as module attribute values.\",\n  ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n    `Duplicate key \"${key}\" is not allowed in module attributes.`,\n  ModuleExportNameHasLoneSurrogate: ({\n    surrogateCharCode,\n  }: {\n    surrogateCharCode: number;\n  }) =>\n    `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n      16,\n    )}'.`,\n  ModuleExportUndefined: ({ localName }: { localName: string }) =>\n    `Export '${localName}' is not defined.`,\n  MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n  NewlineAfterThrow: \"Illegal newline after throw.\",\n  NoCatchOrFinally: \"Missing catch or finally clause.\",\n  NumberIdentifier: \"Identifier directly after number.\",\n  NumericSeparatorInEscapeSequence:\n    \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n  ObsoleteAwaitStar:\n    \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n  OptionalChainingNoNew:\n    \"Constructors in/after an Optional Chain are not allowed.\",\n  OptionalChainingNoTemplate:\n    \"Tagged Template Literals are not allowed in optionalChain.\",\n  OverrideOnConstructor:\n    \"'override' modifier cannot appear on a constructor declaration.\",\n  ParamDupe: \"Argument name clash.\",\n  PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n  PatternHasMethod: \"Object pattern can't contain methods.\",\n  PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n    `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n  PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Duplicate private name #${identifierName}.`,\n  RecordExpressionBarIncorrectEndSyntaxType:\n    \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionBarIncorrectStartSyntaxType:\n    \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionHashIncorrectStartSyntaxType:\n    \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n  RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n  SloppyFunction:\n    \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n  SloppyFunctionAnnexB:\n    \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n  SourcePhaseImportRequiresDefault:\n    'Only `import source x from \"./module\"` is valid.',\n  StaticPrototype: \"Classes may not have static property named prototype.\",\n  SuperNotAllowed:\n    \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n  SuperPrivateField: \"Private fields can't be accessed on super.\",\n  TrailingDecorator: \"Decorators must be attached to a class element.\",\n  TupleExpressionBarIncorrectEndSyntaxType:\n    \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionBarIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionHashIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n  UnexpectedAwaitAfterPipelineBody:\n    'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n  UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n  UnexpectedImportExport:\n    \"'import' and 'export' may only appear at the top level.\",\n  UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n    `Unexpected keyword '${keyword}'.`,\n  UnexpectedLeadingDecorator:\n    \"Leading decorators must be attached to a class declaration.\",\n  UnexpectedLexicalDeclaration:\n    \"Lexical declaration cannot appear in a single-statement context.\",\n  UnexpectedNewTarget:\n    \"`new.target` can only be used in functions or class properties.\",\n  UnexpectedNumericSeparator:\n    \"A numeric separator is only allowed between two digits.\",\n  UnexpectedPrivateField: \"Unexpected private name.\",\n  UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Unexpected reserved word '${reservedWord}'.`,\n  UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n  UnexpectedToken: ({\n    expected,\n    unexpected,\n  }: {\n    expected?: string | null;\n    unexpected?: string | null;\n  }) =>\n    `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n      expected ? `, expected \"${expected}\"` : \"\"\n    }`,\n  UnexpectedTokenUnaryExponentiation:\n    \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n  UnexpectedUsingDeclaration:\n    \"Using declaration cannot appear in the top level when source type is `script`.\",\n  UnsupportedBind: \"Binding should be performed on object property.\",\n  UnsupportedDecoratorExport:\n    \"A decorated export must export a class declaration.\",\n  UnsupportedDefaultExport:\n    \"Only expressions, functions or classes are allowed as the `default` export.\",\n  UnsupportedImport:\n    \"`import` can only be used in `import()` or `import.meta`.\",\n  UnsupportedMetaProperty: ({\n    target,\n    onlyValidPropertyName,\n  }: {\n    target: string;\n    onlyValidPropertyName: string;\n  }) =>\n    `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n  UnsupportedParameterDecorator:\n    \"Decorators cannot be used to decorate parameters.\",\n  UnsupportedPropertyDecorator:\n    \"Decorators cannot be used to decorate object literal properties.\",\n  UnsupportedSuper:\n    \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n  UnterminatedComment: \"Unterminated comment.\",\n  UnterminatedRegExp: \"Unterminated regular expression.\",\n  UnterminatedString: \"Unterminated string constant.\",\n  UnterminatedTemplate: \"Unterminated template.\",\n  UsingDeclarationExport: \"Using declaration cannot be exported.\",\n  UsingDeclarationHasBindingPattern:\n    \"Using declaration cannot have destructuring patterns.\",\n  VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Identifier '${identifierName}' has already been declared.`,\n  YieldBindingIdentifier:\n    \"Can not use 'yield' as identifier inside a generator.\",\n  YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n  ZeroDigitNumericSeparator:\n    \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n  StrictDelete: \"Deleting local variable in strict mode.\",\n\n  // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n  // is represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n    `Assigning to '${referenceName}' in strict mode.`,\n\n  // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n  // represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n    `Binding '${bindingName}' in strict mode.`,\n\n  StrictFunction:\n    \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n  StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n  StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n  StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n  \"ArrowFunctionExpression\",\n  \"AssignmentExpression\",\n  \"ConditionalExpression\",\n  \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType<T extends Set<any>> =\n  T extends Set<infer M> ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n  typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n  // This error is only used by the smart-mix proposal\n  PipeBodyIsTighter:\n    \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n  PipeTopicRequiresHackPipes:\n    'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n  PipeTopicUnbound:\n    \"Topic reference is unbound; it must be inside a pipe body.\",\n  PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n    `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n  PipeTopicUnused:\n    \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n  PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n    `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n      type,\n    })}; please wrap it in parentheses.`,\n\n  // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n  // are retained for backwards compatibility\n  // with the deprecated smart-mix pipe operator proposal plugin.\n  // They are subject to removal in a future major version.\n  PipelineBodyNoArrow:\n    'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n  PipelineBodySequenceExpression:\n    \"Pipeline body may not be a comma-separated sequence expression.\",\n  PipelineHeadSequenceExpression:\n    \"Pipeline head should not be a comma-separated sequence expression.\",\n  PipelineTopicUnused:\n    \"Pipeline is in topic style but does not use topic reference.\",\n  PrimaryTopicNotAllowed:\n    \"Topic reference was used in a lexical context without topic binding.\",\n  PrimaryTopicRequiresSmartPipeline:\n    'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n  | \"flow\"\n  | \"typescript\"\n  | \"jsx\"\n  | \"pipelineOperator\"\n  | \"placeholders\";\n\ntype ParseErrorCode =\n  | \"BABEL_PARSER_SYNTAX_ERROR\"\n  | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification<ErrorDetails> {\n  // Look, these *could* be readonly, but then Flow complains when we initially\n  // set them. We could do a whole dance and make a special interface that's not\n  // readonly for when we create the error, then cast it to the readonly\n  // interface for public use, but the previous implementation didn't have them\n  // as readonly, so let's just not worry about it for now.\n  code: ParseErrorCode;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  missingPlugin?: string | string[];\n  loc: Position;\n  details: ErrorDetails;\n\n  // We should consider removing this as it now just contains the same\n  // information as `loc.index`.\n  pos: number;\n}\n\nexport type ParseError<ErrorDetails> = SyntaxError &\n  ParseErrorSpecification<ErrorDetails>;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor<ErrorDetails> = (\n  loc: Position,\n  details: ErrorDetails,\n) => ParseError<ErrorDetails>;\n\ntype ToMessage<ErrorDetails> = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials<ErrorDetails> = {\n  code: string;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  toMessage: ToMessage<ErrorDetails>;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n  Object.defineProperty(obj, key, {\n    enumerable: false,\n    configurable: true,\n    value,\n  });\n}\n\nfunction toParseErrorConstructor<ErrorDetails extends object>({\n  toMessage,\n  code,\n  reasonCode,\n  syntaxPlugin,\n}: ParseErrorCredentials<ErrorDetails>): ParseErrorConstructor<ErrorDetails> {\n  const hasMissingPlugin =\n    reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n  if (!process.env.BABEL_8_BREAKING) {\n    const oldReasonCodes: Record<string, string> = {\n      AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n      AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n      ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n        \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n      SetAccessorCannotHaveOptionalParameter:\n        \"SetAccesorCannotHaveOptionalParameter\",\n      SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n      SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n    };\n    if (oldReasonCodes[reasonCode]) {\n      reasonCode = oldReasonCodes[reasonCode];\n    }\n  }\n\n  return function constructor(loc: Position, details: ErrorDetails) {\n    const error: ParseError<ErrorDetails> = new SyntaxError() as any;\n\n    error.code = code as ParseErrorCode;\n    error.reasonCode = reasonCode;\n    error.loc = loc;\n    error.pos = loc.index;\n\n    error.syntaxPlugin = syntaxPlugin;\n    if (hasMissingPlugin) {\n      error.missingPlugin = (details as any).missingPlugin;\n    }\n\n    type Overrides = {\n      loc?: Position;\n      details?: ErrorDetails;\n    };\n    defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n      const { line, column, index } = overrides.loc ?? loc;\n      return constructor(new Position(line, column, index), {\n        ...details,\n        ...overrides.details,\n      });\n    });\n\n    defineHidden(error, \"details\", details);\n\n    Object.defineProperty(error, \"message\", {\n      configurable: true,\n      get(this: ParseError<ErrorDetails>): string {\n        const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n        this.message = message;\n        return message;\n      },\n      set(value: string) {\n        Object.defineProperty(this, \"message\", { value, writable: true });\n      },\n    });\n\n    return error;\n  };\n}\n\ntype ParseErrorTemplate =\n  | string\n  | ToMessage<any>\n  | { message: string | ToMessage<any>; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = { [reasonCode: string]: ParseErrorTemplate };\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor<T extends ParseErrorTemplates>`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n  T extends ParseErrorTemplates,\n>(\n  parseErrorTemplates: T,\n) => {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\nexport function ParseErrorEnum<T extends ParseErrorTemplates>(\n  parseErrorTemplates: T,\n  syntaxPlugin?: SyntaxPlugin,\n): {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n//    the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n//    and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n//   ErrorWithStaticMessage: \"message\",\n//   ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n//   ErrorWithOverriddenCodeAndOrReasonCode: {\n//     message: ({ type }: { type: string }) => `${type}`),\n//     code: \"AN_ERROR_CODE\",\n//     ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n//   }\n// });\n//\nexport function ParseErrorEnum(\n  argument: TemplateStringsArray | ParseErrorTemplates,\n  syntaxPlugin?: SyntaxPlugin,\n) {\n  // If the first parameter is an array, that means we were called with a tagged\n  // template literal. Extract the syntaxPlugin from this, and call again in\n  // the \"normalized\" form.\n  if (Array.isArray(argument)) {\n    return (parseErrorTemplates: ParseErrorTemplates) =>\n      ParseErrorEnum(parseErrorTemplates, argument[0]);\n  }\n\n  const ParseErrorConstructors = {} as Record<\n    string,\n    ParseErrorConstructor<unknown>\n  >;\n\n  for (const reasonCode of Object.keys(argument)) {\n    const template = (argument as ParseErrorTemplates)[reasonCode];\n    const { message, ...rest } =\n      typeof template === \"string\"\n        ? { message: () => template }\n        : typeof template === \"function\"\n          ? { message: template }\n          : template;\n    const toMessage = typeof message === \"string\" ? () => message : message;\n\n    ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n      code: \"BABEL_PARSER_SYNTAX_ERROR\",\n      reasonCode,\n      toMessage,\n      ...(syntaxPlugin ? { syntaxPlugin } : {}),\n      ...rest,\n    });\n  }\n\n  return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n  ...ParseErrorEnum(ModuleErrors),\n  ...ParseErrorEnum(StandardErrors),\n  ...ParseErrorEnum(StrictModeErrors),\n  ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { PluginList } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n  sourceType?: SourceType;\n  sourceFilename?: string;\n  startIndex?: number;\n  startColumn?: number;\n  startLine?: number;\n  allowAwaitOutsideFunction?: boolean;\n  allowReturnOutsideFunction?: boolean;\n  allowNewTargetOutsideFunction?: boolean;\n  allowImportExportEverywhere?: boolean;\n  allowSuperOutsideMethod?: boolean;\n  allowUndeclaredExports?: boolean;\n  plugins?: PluginList;\n  strictMode?: boolean | undefined | null;\n  ranges?: boolean;\n  tokens?: boolean;\n  createImportExpressions?: boolean;\n  createParenthesizedExpressions?: boolean;\n  errorRecovery?: boolean;\n  attachComment?: boolean;\n  annexB?: boolean;\n}\n\nexport const enum OptionFlags {\n  AllowAwaitOutsideFunction = 1 << 0,\n  AllowReturnOutsideFunction = 1 << 1,\n  AllowNewTargetOutsideFunction = 1 << 2,\n  AllowImportExportEverywhere = 1 << 3,\n  AllowSuperOutsideMethod = 1 << 4,\n  AllowUndeclaredExports = 1 << 5,\n  Ranges = 1 << 6,\n  Tokens = 1 << 7,\n  CreateImportExpressions = 1 << 8,\n  CreateParenthesizedExpressions = 1 << 9,\n  ErrorRecovery = 1 << 10,\n  AttachComment = 1 << 11,\n  AnnexB = 1 << 12,\n}\n\ntype OptionsWithDefaults = { [P in keyof Options]-?: Options[P] };\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n  return {\n    // Source type (\"script\" or \"module\") for different semantics\n    sourceType: \"script\",\n    // Source filename.\n    sourceFilename: undefined,\n    // Index (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startIndex: 0,\n    // Column (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startColumn: 0,\n    // Line (1-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startLine: 1,\n    // When enabled, await at the top level is not considered an\n    // error.\n    allowAwaitOutsideFunction: false,\n    // When enabled, a return at the top level is not considered an\n    // error.\n    allowReturnOutsideFunction: false,\n    // When enabled, new.target outside a function or class is not\n    // considered an error.\n    allowNewTargetOutsideFunction: false,\n    // When enabled, import/export statements are not constrained to\n    // appearing at the top of the program.\n    allowImportExportEverywhere: false,\n    // TODO\n    allowSuperOutsideMethod: false,\n    // When enabled, export statements can reference undeclared variables.\n    allowUndeclaredExports: false,\n    // An array of plugins to enable\n    plugins: [],\n    // TODO\n    strictMode: null,\n    // Nodes have their start and end characters offsets recorded in\n    // `start` and `end` properties (directly on the node, rather than\n    // the `loc` object, which holds line/column data. To also add a\n    // [semi-standardized][range] `range` property holding a `[start,\n    // end]` array with the same numbers, set the `ranges` option to\n    // `true`.\n    //\n    // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n    ranges: false,\n    // Adds all parsed tokens to a `tokens` property on the `File` node\n    tokens: false,\n    // Whether to create ImportExpression AST nodes (if false\n    // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n    createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n    // Whether to create ParenthesizedExpression AST nodes (if false\n    // the parser sets extra.parenthesized on the expression nodes instead).\n    createParenthesizedExpressions: false,\n    // When enabled, errors are attached to the AST instead of being directly thrown.\n    // Some errors will still throw, because @babel/parser can't always recover.\n    errorRecovery: false,\n    // When enabled, comments will be attached to adjacent AST nodes as one of\n    // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n    // is vital to preserve comments after transform. If you don't print AST back,\n    // consider set this option to `false` for performance\n    attachComment: true,\n    // When enabled, the parser will support Annex B syntax.\n    // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n    annexB: true,\n  };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n  // https://github.com/babel/babel/pull/16918\n  // `options` is accessed frequently, please make sure it is a fast object.\n  // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n  const options: any = createDefaultOptions();\n\n  if (opts == null) {\n    return options;\n  }\n  if (opts.annexB != null && opts.annexB !== false) {\n    throw new Error(\"The `annexB` option can only be set to `false`.\");\n  }\n\n  for (const key of Object.keys(options) as (keyof Options)[]) {\n    if (opts[key] != null) options[key] = opts[key];\n  }\n\n  if (options.startLine === 1) {\n    if (opts.startIndex == null && options.startColumn > 0) {\n      options.startIndex = options.startColumn;\n    } else if (opts.startColumn == null && options.startIndex > 0) {\n      options.startColumn = options.startIndex;\n    }\n  } else if (opts.startColumn == null || opts.startIndex == null) {\n    if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n      );\n    }\n  }\n\n  return options;\n}\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase, File } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n  if (object) {\n    defineProperty(object, key, { enumerable: false, value: object[key] });\n  }\n};\n\nfunction toESTreeLocation(node: any) {\n  toUnenumerable(node.loc.start, \"index\");\n  toUnenumerable(node.loc.end, \"index\");\n\n  return node;\n}\n\nexport default (superClass: typeof Parser) =>\n  class ESTreeParserMixin extends superClass implements Parser {\n    parse(): File {\n      const file = toESTreeLocation(super.parse());\n\n      if (this.optionFlags & OptionFlags.Tokens) {\n        file.tokens = file.tokens.map(toESTreeLocation);\n      }\n\n      return file;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n      let regex: RegExp | null = null;\n      try {\n        regex = new RegExp(pattern, flags);\n      } catch (_) {\n        // In environments that don't support these flags value will\n        // be null as the regex can't be represented natively.\n      }\n      const node = this.estreeParseLiteral<N.EstreeRegExpLiteral>(regex);\n      node.regex = { pattern, flags };\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseBigIntLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n      let bigInt: bigint | null;\n      try {\n        bigInt = BigInt(value);\n      } catch {\n        bigInt = null;\n      }\n      const node = this.estreeParseLiteral<N.EstreeBigIntLiteral>(bigInt);\n      node.bigint = String(node.value || value);\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseDecimalLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/experimental/decimal.md\n      // todo: use BigDecimal when node supports it.\n      const decimal: null = null;\n      const node = this.estreeParseLiteral(decimal);\n      node.decimal = String(node.value || value);\n\n      return node;\n    }\n\n    estreeParseLiteral<T extends N.EstreeLiteral>(value: any) {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.parseLiteral<T>(value, \"Literal\");\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseStringLiteral(value: any): N.Node {\n      return this.estreeParseLiteral(value);\n    }\n\n    parseNumericLiteral(value: any): any {\n      return this.estreeParseLiteral(value);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseNullLiteral(): N.Node {\n      return this.estreeParseLiteral(null);\n    }\n\n    parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.estreeParseLiteral(value);\n    }\n\n    // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n    directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n      const expression = directive.value as any as N.EstreeLiteral;\n      delete directive.value;\n\n      expression.type = \"Literal\";\n      // @ts-expect-error N.EstreeLiteral.raw is not defined.\n      expression.raw = expression.extra.raw;\n      expression.value = expression.extra.expressionValue;\n\n      const stmt = directive as any as N.ExpressionStatement;\n      stmt.type = \"ExpressionStatement\";\n      stmt.expression = expression;\n      // @ts-expect-error N.ExpressionStatement.directive is not defined\n      stmt.directive = expression.extra.rawValue;\n\n      delete expression.extra;\n\n      return stmt;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n      super.initFunction(node, isAsync);\n      node.expression = false;\n    }\n\n    checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n      if (node != null && this.isObjectProperty(node)) {\n        // @ts-expect-error plugin typings\n        this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n      } else {\n        super.checkDeclaration(node);\n      }\n    }\n\n    getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n      return (method as unknown as N.EstreeMethodDefinition).value.params;\n    }\n\n    isValidDirective(stmt: N.Statement): boolean {\n      return (\n        stmt.type === \"ExpressionStatement\" &&\n        stmt.expression.type === \"Literal\" &&\n        typeof stmt.expression.value === \"string\" &&\n        !stmt.expression.extra?.parenthesized\n      );\n    }\n\n    parseBlockBody(\n      node: N.BlockStatementLike,\n      allowDirectives: boolean | undefined | null,\n      topLevel: boolean,\n      end: TokenType,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): void {\n      super.parseBlockBody(\n        node,\n        allowDirectives,\n        topLevel,\n        end,\n        afterBlockParse,\n      );\n\n      const directiveStatements = node.directives.map(d =>\n        this.directiveToStmt(d),\n      );\n      // @ts-expect-error estree plugin typings\n      node.body = directiveStatements.concat(node.body);\n      delete node.directives;\n    }\n\n    parsePrivateName(): any {\n      const node = super.parsePrivateName();\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return node;\n        }\n      }\n      return this.convertPrivateNameToPrivateIdentifier(node);\n    }\n\n    convertPrivateNameToPrivateIdentifier(\n      node: N.PrivateName,\n    ): N.EstreePrivateIdentifier {\n      const name = super.getPrivateNameSV(node);\n      node = node as any;\n      delete node.id;\n      // @ts-expect-error mutate AST types\n      node.name = name;\n      // @ts-expect-error mutate AST types\n      node.type = \"PrivateIdentifier\";\n      return node as unknown as N.EstreePrivateIdentifier;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.isPrivateName(node);\n        }\n      }\n      return node.type === \"PrivateIdentifier\";\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.getPrivateNameSV(node as unknown as N.PrivateName);\n        }\n      }\n      return node.name;\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseLiteral<T extends N.Literal>(value: any, type: T[\"type\"]): T {\n      const node = super.parseLiteral<T>(value, type);\n      // @ts-expect-error mutating AST types\n      node.raw = node.extra.raw;\n      delete node.extra;\n\n      return node;\n    }\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpression?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      super.parseFunctionBody(node, allowExpression, isMethod);\n      node.expression = node.body.type !== \"BlockStatement\";\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseMethod<\n      T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope: boolean = false,\n    ): N.EstreeMethodDefinition | N.EstreeTSAbstractMethodDefinition {\n      let funcNode = this.startNode<N.MethodLike>();\n      funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n      funcNode = super.parseMethod(\n        // @ts-expect-error todo(flow->ts)\n        funcNode,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error mutate AST types\n      funcNode.type = \"FunctionExpression\";\n      delete funcNode.kind;\n      // @ts-expect-error mutate AST types\n      node.value = funcNode;\n      const { typeParameters } = node;\n      if (typeParameters) {\n        delete node.typeParameters;\n        funcNode.typeParameters = typeParameters;\n        funcNode.start = typeParameters.start;\n        funcNode.loc.start = typeParameters.loc.start;\n      }\n      if (type === \"ClassPrivateMethod\") {\n        node.computed = false;\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        // @ts-expect-error todo(flow->ts) property not defined for all types in union\n        node.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        if (!funcNode.body) {\n          (funcNode as unknown as N.EstreeTSEmptyBodyFunctionExpression).type =\n            \"TSEmptyBodyFunctionExpression\";\n        }\n        return this.finishNode(\n          // @ts-expect-error cast methods to estree types\n          node as Undone<N.EstreeTSAbstractMethodDefinition>,\n          \"TSAbstractMethodDefinition\",\n        );\n      }\n      return this.finishNode(\n        // @ts-expect-error cast methods to estree types\n        node as Undone<N.EstreeMethodDefinition>,\n        \"MethodDefinition\",\n      );\n    }\n\n    nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n      if (key.type === \"Literal\") return key.value === \"constructor\";\n      return super.nameIsConstructor(key);\n    }\n\n    parseClassProperty(...args: [N.ClassProperty]): any {\n      const propertyNode = super.parseClassProperty(...args);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as unknown as N.EstreePropertyDefinition;\n        }\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        propertyNode.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        (propertyNode as unknown as N.EstreeTSAbstractPropertyDefinition).type =\n          \"TSAbstractPropertyDefinition\";\n      } else {\n        (propertyNode as unknown as N.EstreePropertyDefinition).type =\n          \"PropertyDefinition\";\n      }\n      return propertyNode;\n    }\n\n    parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n      const propertyNode = super.parseClassPrivateProperty(...args);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as unknown as N.EstreePropertyDefinition;\n        }\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        propertyNode.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        (propertyNode as unknown as N.EstreeTSAbstractPropertyDefinition).type =\n          \"TSAbstractPropertyDefinition\";\n      } else {\n        (propertyNode as unknown as N.EstreePropertyDefinition).type =\n          \"PropertyDefinition\";\n      }\n      propertyNode.computed = false;\n      return propertyNode;\n    }\n\n    parseObjectMethod(\n      prop: N.ObjectMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n    ): N.ObjectMethod | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n      ) as any;\n\n      if (node) {\n        node.type = \"Property\";\n        if ((node as any as N.ClassMethod).kind === \"method\") {\n          node.kind = \"init\";\n        }\n        node.shorthand = false;\n      }\n\n      return node as any;\n    }\n\n    parseObjectProperty(\n      prop: N.ObjectProperty,\n      startLoc: Position | undefined | null,\n      isPattern: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ObjectProperty | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectProperty(\n        prop,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      ) as any;\n\n      if (node) {\n        node.kind = \"init\";\n        node.type = \"Property\";\n      }\n\n      return node as any;\n    }\n\n    isValidLVal(\n      type: string,\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      return type === \"Property\"\n        ? \"value\"\n        : super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node != null && this.isObjectProperty(node)) {\n        return this.isAssignable(node.value, isBinding);\n      }\n      return super.isAssignable(node, isBinding);\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (node != null && this.isObjectProperty(node)) {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableObjectExpressionProp(\n      prop: N.Node,\n      isLast: boolean,\n      isLHS: boolean,\n    ) {\n      if (\n        prop.type === \"Property\" &&\n        (prop.kind === \"get\" || prop.kind === \"set\")\n      ) {\n        this.raise(Errors.PatternHasAccessor, prop.key);\n      } else if (prop.type === \"Property\" && prop.method) {\n        this.raise(Errors.PatternHasMethod, prop.key);\n      } else {\n        super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n      }\n    }\n\n    finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n      unfinished: Undone<T>,\n      optional: boolean,\n    ): T {\n      const node = super.finishCallExpression(unfinished, optional);\n\n      if (node.callee.type === \"Import\") {\n        (node as N.Node as N.EstreeImportExpression).type = \"ImportExpression\";\n        (node as N.Node as N.EstreeImportExpression).source = node\n          .arguments[0] as N.Expression;\n        (node as N.Node as N.EstreeImportExpression).options =\n          (node.arguments[1] as N.Expression) ?? null;\n        // compatibility with previous ESTree AST\n        // TODO(Babel 8): Remove this\n        (node as N.Node as N.EstreeImportExpression).attributes =\n          (node.arguments[1] as N.Expression) ?? null;\n        // arguments isn't optional in the type definition\n        delete node.arguments;\n        // callee isn't optional in the type definition\n        delete node.callee;\n      }\n\n      return node;\n    }\n\n    toReferencedArguments(\n      node:\n        | N.CallExpression\n        | N.OptionalCallExpression\n        | N.EstreeImportExpression,\n      /* isParenthesizedExpr?: boolean, */\n    ) {\n      // ImportExpressions do not have an arguments array.\n      if (node.type === \"ImportExpression\") {\n        return;\n      }\n\n      super.toReferencedArguments(node);\n    }\n\n    parseExport(\n      unfinished: Undone<N.AnyExport>,\n      decorators: N.Decorator[] | null,\n    ) {\n      const exportStartLoc = this.state.lastTokStartLoc;\n      const node = super.parseExport(unfinished, decorators);\n\n      switch (node.type) {\n        case \"ExportAllDeclaration\":\n          // @ts-expect-error mutating AST types\n          node.exported = null;\n          break;\n\n        case \"ExportNamedDeclaration\":\n          if (\n            node.specifiers.length === 1 &&\n            node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n          ) {\n            // @ts-expect-error mutating AST types\n            node.type = \"ExportAllDeclaration\";\n            // @ts-expect-error mutating AST types\n            node.exported = node.specifiers[0].exported;\n            delete node.specifiers;\n          }\n\n        // fallthrough\n        case \"ExportDefaultDeclaration\":\n          {\n            const { declaration } = node;\n            if (\n              declaration?.type === \"ClassDeclaration\" &&\n              declaration.decorators?.length > 0 &&\n              // decorator comes before export\n              declaration.start === node.start\n            ) {\n              this.resetStartLocation(\n                node,\n                // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n                // export declaration must start with export.\n                // https://github.com/babel/babel/issues/15085\n                // Here we reset export declaration's start to be the start of the export token\n                exportStartLoc,\n              );\n            }\n          }\n\n          break;\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      const node = super.parseSubscript(base, startLoc, noCalls, state);\n\n      if (state.optionalChainMember) {\n        // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n        if (\n          node.type === \"OptionalMemberExpression\" ||\n          node.type === \"OptionalCallExpression\"\n        ) {\n          // strip Optional prefix\n          (node as unknown as N.CallExpression | N.MemberExpression).type =\n            node.type.substring(8) as \"CallExpression\" | \"MemberExpression\";\n        }\n        if (state.stop) {\n          const chain = this.startNodeAtNode<N.EstreeChainExpression>(node);\n          chain.expression = node;\n          return this.finishNode(chain, \"ChainExpression\");\n        }\n      } else if (\n        node.type === \"MemberExpression\" ||\n        node.type === \"CallExpression\"\n      ) {\n        // @ts-expect-error not in the type definitions\n        node.optional = false;\n      }\n\n      return node;\n    }\n\n    isOptionalMemberExpression(node: N.Node) {\n      if (node.type === \"ChainExpression\") {\n        return node.expression.type === \"MemberExpression\";\n      }\n      return super.isOptionalMemberExpression(node);\n    }\n\n    hasPropertyAsPrivateName(node: N.Node): boolean {\n      if (node.type === \"ChainExpression\") {\n        node = node.expression;\n      }\n      return super.hasPropertyAsPrivateName(node);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectProperty(node: N.Node): node is N.EstreeProperty {\n      return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectMethod(node: N.Node): node is N.EstreeProperty {\n      return (\n        node.type === \"Property\" &&\n        (node.method || node.kind === \"get\" || node.kind === \"set\")\n      );\n    }\n\n    finishNodeAt<T extends NodeType>(\n      node: Undone<T>,\n      type: T[\"type\"],\n      endLoc: Position,\n    ): T {\n      return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n    }\n\n    resetStartLocation(node: N.Node, startLoc: Position) {\n      super.resetStartLocation(node, startLoc);\n      toESTreeLocation(node);\n    }\n\n    resetEndLocation(\n      node: NodeBase,\n      endLoc: Position = this.state.lastTokEndLoc,\n    ): void {\n      super.resetEndLocation(node, endLoc);\n      toESTreeLocation(node);\n    }\n  };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n  constructor(token: string, preserveSpace?: boolean) {\n    this.token = token;\n    this.preserveSpace = !!preserveSpace;\n  }\n\n  token: string;\n  preserveSpace: boolean;\n}\n\nconst types: {\n  [key: string]: TokContext;\n} = {\n  brace: new TokContext(\"{\"), // normal JavaScript expression\n  j_oTag: new TokContext(\"<tag\"), // JSX opening tag\n  j_cTag: new TokContext(\"</tag\"), // JSX closing tag\n  j_expr: new TokContext(\"<tag>...</tag>\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (<name>); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n  keyword?: string;\n  beforeExpr?: boolean;\n  startsExpr?: boolean;\n  rightAssociative?: boolean;\n  isLoop?: boolean;\n  isAssign?: boolean;\n  prefix?: boolean;\n  postfix?: boolean;\n  binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n  label: string;\n  keyword: string | undefined | null;\n  beforeExpr: boolean;\n  startsExpr: boolean;\n  rightAssociative: boolean;\n  isLoop: boolean;\n  isAssign: boolean;\n  prefix: boolean;\n  postfix: boolean;\n  binop: number | undefined | null;\n  // todo(Babel 8): remove updateContext from exposed token layout\n  declare updateContext:\n    | ((context: Array<TokContext>) => void)\n    | undefined\n    | null;\n\n  constructor(label: string, conf: TokenOptions = {}) {\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.rightAssociative = !!conf.rightAssociative;\n    this.isLoop = !!conf.isLoop;\n    this.isAssign = !!conf.isAssign;\n    this.prefix = !!conf.prefix;\n    this.postfix = !!conf.postfix;\n    this.binop = conf.binop != null ? conf.binop : null;\n    if (!process.env.BABEL_8_BREAKING) {\n      this.updateContext = null;\n    }\n  }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n  options.keyword = name;\n  const token = createToken(name, options);\n  keywords.set(name, token);\n  return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n  return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n  ++tokenTypeCounter;\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  tokenTypes.push(new ExportedTokenType(name, options));\n\n  return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n  name: string,\n  options: TokenOptions = {},\n): TokenType {\n  ++tokenTypeCounter;\n  keywords.set(name, tokenTypeCounter);\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n  tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n  return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n  // Punctuation token types.\n  bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n  bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n  bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n  bracketR: createToken(\"]\"),\n  bracketBarR: createToken(\"|]\"),\n  braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n  braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n  braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n  braceR: createToken(\"}\"),\n  braceBarR: createToken(\"|}\"),\n  parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n  parenR: createToken(\")\"),\n  comma: createToken(\",\", { beforeExpr }),\n  semi: createToken(\";\", { beforeExpr }),\n  colon: createToken(\":\", { beforeExpr }),\n  doubleColon: createToken(\"::\", { beforeExpr }),\n  dot: createToken(\".\"),\n  question: createToken(\"?\", { beforeExpr }),\n  questionDot: createToken(\"?.\"),\n  arrow: createToken(\"=>\", { beforeExpr }),\n  template: createToken(\"template\"),\n  ellipsis: createToken(\"...\", { beforeExpr }),\n  backQuote: createToken(\"`\", { startsExpr }),\n  dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n  // start: isTemplate\n  templateTail: createToken(\"...`\", { startsExpr }),\n  templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n  // end: isTemplate\n  at: createToken(\"@\"),\n  hash: createToken(\"#\", { startsExpr }),\n\n  // Special hashbang token.\n  interpreterDirective: createToken(\"#!...\"),\n\n  // Operators. These carry several kinds of properties to help the\n  // parser use them properly (the presence of these properties is\n  // what categorizes them as operators).\n  //\n  // `binop`, when present, specifies that this operator is a binary\n  // operator, and will refer to its precedence.\n  //\n  // `prefix` and `postfix` mark the operator as a prefix or postfix\n  // unary operator.\n  //\n  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n  // binary operators with a very low precedence, that should result\n  // in AssignmentExpression nodes.\n\n  // start: isAssign\n  eq: createToken(\"=\", { beforeExpr, isAssign }),\n  assign: createToken(\"_=\", { beforeExpr, isAssign }),\n  slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // These are only needed to support % and ^ as a Hack-pipe topic token.\n  // When the proposal settles on a token, the others can be merged with\n  // tt.assign.\n  xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // end: isAssign\n\n  incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n  bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n  tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n  // More possible topic tokens.\n  // When the proposal settles on a token, at least one of these may be removed.\n  doubleCaret: createToken(\"^^\", { startsExpr }),\n  doubleAt: createToken(\"@@\", { startsExpr }),\n\n  // start: isBinop\n  pipeline: createBinop(\"|>\", 0),\n  nullishCoalescing: createBinop(\"??\", 1),\n  logicalOR: createBinop(\"||\", 1),\n  logicalAND: createBinop(\"&&\", 2),\n  bitwiseOR: createBinop(\"|\", 3),\n  bitwiseXOR: createBinop(\"^\", 4),\n  bitwiseAND: createBinop(\"&\", 5),\n  equality: createBinop(\"==/!=/===/!==\", 6),\n  lt: createBinop(\"</>/<=/>=\", 7),\n  gt: createBinop(\"</>/<=/>=\", 7),\n  relational: createBinop(\"</>/<=/>=\", 7),\n  bitShift: createBinop(\"<</>>/>>>\", 8),\n  bitShiftL: createBinop(\"<</>>/>>>\", 8),\n  bitShiftR: createBinop(\"<</>>/>>>\", 8),\n  plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n  // startsExpr: required by v8intrinsic plugin\n  modulo: createToken(\"%\", { binop: 10, startsExpr }),\n  // unset `beforeExpr` as it can be `function *`\n  star: createToken(\"*\", { binop: 10 }),\n  slash: createBinop(\"/\", 10),\n  exponent: createToken(\"**\", {\n    beforeExpr,\n    binop: 11,\n    rightAssociative: true,\n  }),\n\n  // Keywords\n  // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n  // when new keywords are added\n  // start: isLiteralPropertyName\n  // start: isKeyword\n  _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n  _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n  // end: isBinop\n  _break: createKeyword(\"break\"),\n  _case: createKeyword(\"case\", { beforeExpr }),\n  _catch: createKeyword(\"catch\"),\n  _continue: createKeyword(\"continue\"),\n  _debugger: createKeyword(\"debugger\"),\n  _default: createKeyword(\"default\", { beforeExpr }),\n  _else: createKeyword(\"else\", { beforeExpr }),\n  _finally: createKeyword(\"finally\"),\n  _function: createKeyword(\"function\", { startsExpr }),\n  _if: createKeyword(\"if\"),\n  _return: createKeyword(\"return\", { beforeExpr }),\n  _switch: createKeyword(\"switch\"),\n  _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n  _try: createKeyword(\"try\"),\n  _var: createKeyword(\"var\"),\n  _const: createKeyword(\"const\"),\n  _with: createKeyword(\"with\"),\n  _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n  _this: createKeyword(\"this\", { startsExpr }),\n  _super: createKeyword(\"super\", { startsExpr }),\n  _class: createKeyword(\"class\", { startsExpr }),\n  _extends: createKeyword(\"extends\", { beforeExpr }),\n  _export: createKeyword(\"export\"),\n  _import: createKeyword(\"import\", { startsExpr }),\n  _null: createKeyword(\"null\", { startsExpr }),\n  _true: createKeyword(\"true\", { startsExpr }),\n  _false: createKeyword(\"false\", { startsExpr }),\n  _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n  _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n  _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n  // start: isLoop\n  _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n  _for: createKeyword(\"for\", { isLoop }),\n  _while: createKeyword(\"while\", { isLoop }),\n  // end: isLoop\n  // end: isKeyword\n\n  // Primary literals\n  // start: isIdentifier\n  _as: createKeywordLike(\"as\", { startsExpr }),\n  _assert: createKeywordLike(\"assert\", { startsExpr }),\n  _async: createKeywordLike(\"async\", { startsExpr }),\n  _await: createKeywordLike(\"await\", { startsExpr }),\n  _defer: createKeywordLike(\"defer\", { startsExpr }),\n  _from: createKeywordLike(\"from\", { startsExpr }),\n  _get: createKeywordLike(\"get\", { startsExpr }),\n  _let: createKeywordLike(\"let\", { startsExpr }),\n  _meta: createKeywordLike(\"meta\", { startsExpr }),\n  _of: createKeywordLike(\"of\", { startsExpr }),\n  _sent: createKeywordLike(\"sent\", { startsExpr }),\n  _set: createKeywordLike(\"set\", { startsExpr }),\n  _source: createKeywordLike(\"source\", { startsExpr }),\n  _static: createKeywordLike(\"static\", { startsExpr }),\n  _using: createKeywordLike(\"using\", { startsExpr }),\n  _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n  // Flow and TypeScript Keywordlike\n  _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n  _checks: createKeywordLike(\"checks\", { startsExpr }),\n  _exports: createKeywordLike(\"exports\", { startsExpr }),\n  _global: createKeywordLike(\"global\", { startsExpr }),\n  _implements: createKeywordLike(\"implements\", { startsExpr }),\n  _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n  _infer: createKeywordLike(\"infer\", { startsExpr }),\n  _is: createKeywordLike(\"is\", { startsExpr }),\n  _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n  _proto: createKeywordLike(\"proto\", { startsExpr }),\n  _require: createKeywordLike(\"require\", { startsExpr }),\n  _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n  // start: isTSTypeOperator\n  _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n  _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n  _unique: createKeywordLike(\"unique\", { startsExpr }),\n  // end: isTSTypeOperator\n  // start: isTSDeclarationStart\n  _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n  _declare: createKeywordLike(\"declare\", { startsExpr }),\n  _enum: createKeywordLike(\"enum\", { startsExpr }),\n  _module: createKeywordLike(\"module\", { startsExpr }),\n  _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n  // start: isFlowInterfaceOrTypeOrOpaque\n  _interface: createKeywordLike(\"interface\", { startsExpr }),\n  _type: createKeywordLike(\"type\", { startsExpr }),\n  // end: isTSDeclarationStart\n  _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n  // end: isFlowInterfaceOrTypeOrOpaque\n  name: createToken(\"name\", { startsExpr }),\n\n  // placeholder plugin\n  placeholder: createToken(\"%%\", { startsExpr: true }),\n  // end: isIdentifier\n\n  string: createToken(\"string\", { startsExpr }),\n  num: createToken(\"num\", { startsExpr }),\n  bigint: createToken(\"bigint\", { startsExpr }),\n  // TODO: Remove this in Babel 8\n  decimal: createToken(\"decimal\", { startsExpr }),\n  // end: isLiteralPropertyName\n  regexp: createToken(\"regexp\", { startsExpr }),\n  privateName: createToken(\"#name\", { startsExpr }),\n  eof: createToken(\"eof\"),\n\n  // jsx plugin\n  jsxName: createToken(\"jsxName\"),\n  jsxText: createToken(\"jsxText\", { beforeExpr: true }),\n  jsxTagStart: createToken(\"jsxTagStart\", { startsExpr: true }),\n  jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n  return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n  // we can remove the token >= tt._in check when we\n  // know a token is either keyword or identifier\n  return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n  return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n  return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n  return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n  return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n  return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n  return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n  return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n  return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n  return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n  return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n  return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n  return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n  return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n  return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n  return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n  return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n  return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n  return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  tokenTypes[tt.braceR].updateContext = context => {\n    context.pop();\n  };\n\n  tokenTypes[tt.braceL].updateContext =\n    tokenTypes[tt.braceHashL].updateContext =\n    tokenTypes[tt.dollarBraceL].updateContext =\n      context => {\n        context.push(tc.brace);\n      };\n\n  tokenTypes[tt.backQuote].updateContext = context => {\n    if (context[context.length - 1] === tc.template) {\n      context.pop();\n    } else {\n      context.push(tc.template);\n    }\n  };\n\n  tokenTypes[tt.jsxTagStart].updateContext = context => {\n    context.push(tc.j_expr, tc.j_oTag);\n  };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n  let pos = 0x10000;\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n\n    pos += set[i + 1];\n    if (pos >= code) return true;\n  }\n  return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n  if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return (\n      code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n    );\n  }\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n  if (code < charCodes.digit0) return code === charCodes.dollarSign;\n  if (code < charCodes.colon) return true;\n  if (code < charCodes.uppercaseA) return false;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n  return (\n    isInAstralSet(code, astralIdentifierStartCodes) ||\n    isInAstralSet(code, astralIdentifierCodes)\n  );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n  let isFirst = true;\n  for (let i = 0; i < name.length; i++) {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = name.charCodeAt(i);\n    if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n      const trail = name.charCodeAt(++i);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    if (isFirst) {\n      isFirst = false;\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n  return !isFirst;\n}\n","const reservedWords = {\n  keyword: [\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"continue\",\n    \"debugger\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"finally\",\n    \"for\",\n    \"function\",\n    \"if\",\n    \"return\",\n    \"switch\",\n    \"throw\",\n    \"try\",\n    \"var\",\n    \"const\",\n    \"while\",\n    \"with\",\n    \"new\",\n    \"this\",\n    \"super\",\n    \"class\",\n    \"extends\",\n    \"export\",\n    \"import\",\n    \"null\",\n    \"true\",\n    \"false\",\n    \"in\",\n    \"instanceof\",\n    \"typeof\",\n    \"void\",\n    \"delete\",\n  ],\n  strict: [\n    \"implements\",\n    \"interface\",\n    \"let\",\n    \"package\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"static\",\n    \"yield\",\n  ],\n  strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n  return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n  return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n  word: string,\n  inModule: boolean,\n): boolean {\n  return (\n    isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n  );\n}\n\nexport function isKeyword(word: string): boolean {\n  return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n  isIdentifierStart,\n  isIdentifierChar,\n  isReservedWord,\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n  current: number,\n  next: number,\n  next2: number,\n): boolean {\n  return (\n    current === charCodes.atSign &&\n    next === charCodes.atSign &&\n    isIdentifierStart(next2)\n  );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n  \"break\",\n  \"case\",\n  \"catch\",\n  \"continue\",\n  \"debugger\",\n  \"default\",\n  \"do\",\n  \"else\",\n  \"finally\",\n  \"for\",\n  \"function\",\n  \"if\",\n  \"return\",\n  \"switch\",\n  \"throw\",\n  \"try\",\n  \"var\",\n  \"const\",\n  \"while\",\n  \"with\",\n  \"new\",\n  \"this\",\n  \"super\",\n  \"class\",\n  \"extends\",\n  \"export\",\n  \"import\",\n  \"null\",\n  \"true\",\n  \"false\",\n  \"in\",\n  \"instanceof\",\n  \"typeof\",\n  \"void\",\n  \"delete\",\n  // strict\n  \"implements\",\n  \"interface\",\n  \"let\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"static\",\n  \"yield\",\n  // strictBind\n  \"eval\",\n  \"arguments\",\n  // reservedWorkLike\n  \"enum\",\n  \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n  return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n  // var-declared names in the current lexical scope\n  Var = 1 << 0,\n  // lexically-declared names in the current lexical scope\n  Lexical = 1 << 1,\n  // lexically-declared FunctionDeclaration names in the current lexical scope\n  Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n  flags: ScopeFlag = 0;\n  names: Map<string, NameType> = new Map();\n  firstLexicalName = \"\";\n\n  constructor(flags: ScopeFlag) {\n    this.flags = flags;\n  }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope extends Scope = Scope> {\n  parser: Tokenizer;\n  scopeStack: Array<IScope> = [];\n  inModule: boolean;\n  undefinedExports: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer, inModule: boolean) {\n    this.parser = parser;\n    this.inModule = inModule;\n  }\n\n  get inTopLevel() {\n    return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n  }\n  get inFunction() {\n    return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION) > 0;\n  }\n  get allowSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n  }\n  get allowDirectSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n  }\n  get inClass() {\n    return (this.currentThisScopeFlags() & ScopeFlag.CLASS) > 0;\n  }\n  get inClassAndNotInNonArrowFunction() {\n    const flags = this.currentThisScopeFlags();\n    return (flags & ScopeFlag.CLASS) > 0 && (flags & ScopeFlag.FUNCTION) === 0;\n  }\n  get inStaticBlock() {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.STATIC_BLOCK) {\n        return true;\n      }\n      if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS)) {\n        // function body, module body, class property initializers\n        return false;\n      }\n    }\n  }\n  get inNonArrowFunction() {\n    return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION) > 0;\n  }\n  get treatFunctionsAsVar() {\n    return this.treatFunctionsAsVarInScope(this.currentScope());\n  }\n\n  createScope(flags: ScopeFlag): Scope {\n    return new Scope(flags);\n  }\n\n  enter(flags: ScopeFlag) {\n    /*:: +createScope: (flags:ScopeFlag) => IScope; */\n    // @ts-expect-error This method will be overwritten by subclasses\n    this.scopeStack.push(this.createScope(flags));\n  }\n\n  exit(): ScopeFlag {\n    const scope = this.scopeStack.pop();\n    return scope.flags;\n  }\n\n  // The spec says:\n  // > At the top level of a function, or script, function declarations are\n  // > treated like var declarations rather than like lexical declarations.\n  treatFunctionsAsVarInScope(scope: IScope): boolean {\n    return !!(\n      scope.flags & (ScopeFlag.FUNCTION | ScopeFlag.STATIC_BLOCK) ||\n      (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n    );\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    let scope = this.currentScope();\n    if (\n      bindingType & BindingFlag.SCOPE_LEXICAL ||\n      bindingType & BindingFlag.SCOPE_FUNCTION\n    ) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n      let type = scope.names.get(name) || 0;\n\n      if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n        type = type | NameType.Function;\n      } else {\n        if (!scope.firstLexicalName) {\n          scope.firstLexicalName = name;\n        }\n        type = type | NameType.Lexical;\n      }\n\n      scope.names.set(name, type);\n\n      if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n        this.maybeExportDefined(scope, name);\n      }\n    } else if (bindingType & BindingFlag.SCOPE_VAR) {\n      for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n        scope = this.scopeStack[i];\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n        this.maybeExportDefined(scope, name);\n\n        if (scope.flags & ScopeFlag.VAR) break;\n      }\n    }\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  maybeExportDefined(scope: IScope, name: string) {\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  checkRedeclarationInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n    loc: Position,\n  ) {\n    if (this.isRedeclaredInScope(scope, name, bindingType)) {\n      this.parser.raise(Errors.VarRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n  }\n\n  isRedeclaredInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n    if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n      return scope.names.has(name);\n    }\n\n    const type = scope.names.get(name);\n\n    if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n      return (\n        (type & NameType.Lexical) > 0 ||\n        (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n      );\n    }\n\n    return (\n      ((type & NameType.Lexical) > 0 &&\n        // Annex B.3.4\n        // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n        !(\n          scope.flags & ScopeFlag.SIMPLE_CATCH &&\n          scope.firstLexicalName === name\n        )) ||\n      (!this.treatFunctionsAsVarInScope(scope) &&\n        (type & NameType.Function) > 0)\n    );\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n    const topLevelScope = this.scopeStack[0];\n    if (!topLevelScope.names.has(name)) {\n      this.undefinedExports.set(name, id.loc.start);\n    }\n  }\n\n  currentScope(): IScope {\n    return this.scopeStack[this.scopeStack.length - 1];\n  }\n\n  currentVarScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.VAR) {\n        return flags;\n      }\n    }\n  }\n\n  // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n  currentThisScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (\n        flags & (ScopeFlag.VAR | ScopeFlag.CLASS) &&\n        !(flags & ScopeFlag.ARROW)\n      ) {\n        return flags;\n      }\n    }\n  }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n  // declare function foo(): type;\n  declareFunctions: Set<string> = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler<FlowScope> {\n  createScope(flags: ScopeFlag): FlowScope {\n    return new FlowScope(flags);\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    const scope = this.currentScope();\n    if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n      this.maybeExportDefined(scope, name);\n      scope.declareFunctions.add(name);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n  }\n\n  isRedeclaredInScope(\n    scope: FlowScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n    if (\n      bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n      !scope.declareFunctions.has(name)\n    ) {\n      const type = scope.names.get(name);\n      return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n    }\n\n    return false;\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n      super.checkLocalExport(id);\n    }\n  }\n}\n","import type { OptionFlags, Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n  ParserPluginWithOptions,\n  PluginConfig,\n  PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n  // Properties set by constructor in index.js\n  declare options: Options;\n  declare optionFlags: OptionFlags;\n  declare inModule: boolean;\n  declare scope: ScopeHandler<any>;\n  declare classScope: ClassScopeHandler;\n  declare prodParam: ProductionParameterHandler;\n  declare expressionScope: ExpressionScopeHandler;\n  declare plugins: PluginsMap;\n  declare filename: string | undefined | null;\n  declare startIndex: number;\n  // Names of exports store. `default` is stored as a name for both\n  // `export default foo;` and `export { foo as default };`.\n  declare exportedIdentifiers: Set<string>;\n  sawUnambiguousESM: boolean = false;\n  ambiguousScriptDifferentAst: boolean = false;\n\n  // Initialized by Tokenizer\n  declare state: State;\n  // input and length are not in state as they are constant and we do\n  // not want to ever copy them, which happens if state gets cloned\n  declare input: string;\n  declare length: number;\n  // Comment store for Program.comments\n  declare comments: Array<N.Comment>;\n\n  sourceToOffsetPos(sourcePos: number) {\n    return sourcePos + this.startIndex;\n  }\n\n  offsetToSourcePos(offsetPos: number) {\n    return offsetPos - this.startIndex;\n  }\n\n  // This method accepts either a string (plugin name) or an array pair\n  // (plugin name and options object). If an options object is given,\n  // then each value is non-recursively checked for identity with that\n  // plugin’s actual option value.\n  hasPlugin(pluginConfig: PluginConfig): boolean {\n    if (typeof pluginConfig === \"string\") {\n      return this.plugins.has(pluginConfig);\n    } else {\n      const [pluginName, pluginOptions] = pluginConfig;\n      if (!this.hasPlugin(pluginName)) {\n        return false;\n      }\n      const actualOptions = this.plugins.get(pluginName);\n      for (const key of Object.keys(\n        pluginOptions,\n      ) as (keyof typeof pluginOptions)[]) {\n        if (actualOptions?.[key] !== pluginOptions[key]) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  getPluginOption<\n    PluginName extends ParserPluginWithOptions[0],\n    OptionName extends keyof PluginOptions<PluginName>,\n  >(plugin: PluginName, name: OptionName) {\n    return (this.plugins.get(plugin) as null | PluginOptions<PluginName>)?.[\n      name\n    ];\n  }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node, Identifier } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n  /**\n   * the start of the whitespace token.\n   */\n  start: number;\n  /**\n   * the end of the whitespace token.\n   */\n  end: number;\n  /**\n   * the containing comments\n   */\n  comments: Array<Comment>;\n  /**\n   * the immediately preceding AST node of the whitespace token\n   */\n  leadingNode: Node | null;\n  /**\n   * the immediately following AST node of the whitespace token\n   */\n  trailingNode: Node | null;\n  /**\n   * the innermost AST node containing the whitespace with minimal size (|end - start|)\n   */\n  containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.trailingComments === undefined) {\n    node.trailingComments = comments;\n  } else {\n    node.trailingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.leadingComments === undefined) {\n    node.leadingComments = comments;\n  } else {\n    node.leadingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(\n  node: Undone<Node>,\n  comments?: Array<Comment>,\n) {\n  if (node.innerComments === undefined) {\n    node.innerComments = comments;\n  } else {\n    node.innerComments.unshift(...comments);\n  }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n  node: Undone<Node>,\n  elements: Array<Node>,\n  commentWS: CommentWhitespace,\n) {\n  let lastElement = null;\n  let i = elements.length;\n  while (lastElement === null && i > 0) {\n    lastElement = elements[--i];\n  }\n  if (lastElement === null || lastElement.start > commentWS.start) {\n    setInnerComments(node, commentWS.comments);\n  } else {\n    setTrailingComments(lastElement, commentWS.comments);\n  }\n}\n\nexport default class CommentsParser extends BaseParser {\n  addComment(comment: Comment): void {\n    if (this.filename) comment.loc.filename = this.filename;\n    const { commentsLen } = this.state;\n    if (this.comments.length !== commentsLen) {\n      this.comments.length = commentsLen;\n    }\n    this.comments.push(comment);\n    this.state.commentsLen++;\n  }\n\n  /**\n   * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n   * {@see {@link CommentWhitespace}}\n   */\n  processComment(node: Node): void {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n    const lastCommentWS = commentStack[i];\n\n    if (lastCommentWS.start === node.end) {\n      lastCommentWS.leadingNode = node;\n      i--;\n    }\n\n    const { start: nodeStart } = node;\n    // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      if (commentEnd > nodeStart) {\n        // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n        // so node can be a containingNode candidate. At this time we can finalize the comment\n        // whitespace, because\n        // 1) its leadingNode or trailingNode, if exists, will not change\n        // 2) its containingNode have been assigned and will not change because it is the\n        //    innermost minimal-sized AST node\n        commentWS.containingNode = node;\n        this.finalizeComment(commentWS);\n        commentStack.splice(i, 1);\n      } else {\n        if (commentEnd === nodeStart) {\n          commentWS.trailingNode = node;\n        }\n        // stop the loop when commentEnd <= nodeStart\n        break;\n      }\n    }\n  }\n\n  /**\n   * Assign the comments of comment whitespaces to related AST nodes.\n   * Also adjust innerComments following trailing comma.\n   */\n  finalizeComment(commentWS: CommentWhitespace) {\n    const { comments } = commentWS;\n    if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n      if (commentWS.leadingNode !== null) {\n        setTrailingComments(commentWS.leadingNode, comments);\n      }\n      if (commentWS.trailingNode !== null) {\n        setLeadingComments(commentWS.trailingNode, comments);\n      }\n    } else {\n      /*:: invariant(commentWS.containingNode !== null) */\n      const { containingNode: node, start: commentStart } = commentWS;\n      if (\n        this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n        charCodes.comma\n      ) {\n        // If a commentWhitespace follows a comma and the containingNode allows\n        // list structures with trailing comma, merge it to the trailingComment\n        // of the last non-null list element\n        switch (node.type) {\n          case \"ObjectExpression\":\n          case \"ObjectPattern\":\n          case \"RecordExpression\":\n            adjustInnerComments(node, node.properties, commentWS);\n            break;\n          case \"CallExpression\":\n          case \"OptionalCallExpression\":\n            adjustInnerComments(node, node.arguments, commentWS);\n            break;\n          case \"FunctionDeclaration\":\n          case \"FunctionExpression\":\n          case \"ArrowFunctionExpression\":\n          case \"ObjectMethod\":\n          case \"ClassMethod\":\n          case \"ClassPrivateMethod\":\n            adjustInnerComments(node, node.params, commentWS);\n            break;\n          case \"ArrayExpression\":\n          case \"ArrayPattern\":\n          case \"TupleExpression\":\n            adjustInnerComments(node, node.elements, commentWS);\n            break;\n          case \"ExportNamedDeclaration\":\n          case \"ImportDeclaration\":\n            adjustInnerComments(node, node.specifiers, commentWS);\n            break;\n          case \"TSEnumDeclaration\":\n            if (!process.env.BABEL_8_BREAKING) {\n              adjustInnerComments(node, node.members, commentWS);\n            } else {\n              setInnerComments(node, comments);\n            }\n            break;\n          case \"TSEnumBody\":\n            adjustInnerComments(node, node.members, commentWS);\n            break;\n          default: {\n            setInnerComments(node, comments);\n          }\n        }\n      } else {\n        setInnerComments(node, comments);\n      }\n    }\n  }\n\n  /**\n   * Drains remaining commentStack and applies finalizeComment\n   * to each comment whitespace. Used only in parseExpression\n   * where the top level AST node is _not_ Program\n   * {@see {@link CommentsParser#finalizeComment}}\n   */\n  finalizeRemainingComments() {\n    const { commentStack } = this.state;\n    for (let i = commentStack.length - 1; i >= 0; i--) {\n      this.finalizeComment(commentStack[i]);\n    }\n    this.state.commentStack = [];\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node trailing comments. Used in object / class\n   * property parsing. We parse `async`, `static`, `set` and `get`\n   * as an identifier but may reinterpret it into an async/static/accessor\n   * method later. In this case the identifier is not part of the AST and we\n   * should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * async /* 1 *​/ function f() {}\n   * ```\n   * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n   * we see the function token, we create a Function node and mark `/* 1 *​/` as\n   * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousNodeTrailingComments(node: Node) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n    const commentWS = commentStack[length - 1];\n    if (commentWS.leadingNode === node) {\n      commentWS.leadingNode = null;\n    }\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node leading comments, assuming that `node` is a\n   * single-token node. Used in import phase modifiers parsing. We parse\n   * `module` in `import module foo from ...` as an identifier but may\n   * reinterpret it into a phase modifier later. In this case the identifier is\n   * not part of the AST and we should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * import /* 1 *​/ module a from \"a\";\n   * ```\n   * the comment whitespace `/* 1 *​/` has trailing node Identifier(module). When\n   * we see that `module` is not a default import binding, we mark `/* 1 *​/` as\n   * inner comments of the ImportDeclaration. So `/* 1 *​/` should be detached from\n   * the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousIdentifierLeadingComments(node: Identifier) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n\n    if (commentStack[length - 1].trailingNode === node) {\n      commentStack[length - 1].trailingNode = null;\n    } else if (length >= 2 && commentStack[length - 2].trailingNode === node) {\n      commentStack[length - 2].trailingNode = null;\n    }\n  }\n\n  /**\n   * Attach a node to the comment whitespaces right before/after\n   * the given range.\n   *\n   * This is used to properly attach comments around parenthesized\n   * expressions as leading/trailing comments of the inner expression.\n   */\n  takeSurroundingComments(node: Node, start: number, end: number) {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      const commentStart = commentWS.start;\n\n      if (commentStart === end) {\n        commentWS.leadingNode = node;\n      } else if (commentEnd === start) {\n        commentWS.trailingNode = node;\n      } else if (commentEnd < start) {\n        break;\n      }\n    }\n  }\n}\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n  switch (code) {\n    case charCodes.lineFeed:\n    case charCodes.carriageReturn:\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n  for (let i = start; i < end; i++) {\n    if (isNewLine(input.charCodeAt(i))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n  /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n  switch (code) {\n    case 0x0009: // CHARACTER TABULATION\n    case 0x000b: // LINE TABULATION\n    case 0x000c: // FORM FEED\n    case charCodes.space:\n    case charCodes.nonBreakingSpace:\n    case charCodes.oghamSpaceMark:\n    case 0x2000: // EN QUAD\n    case 0x2001: // EM QUAD\n    case 0x2002: // EN SPACE\n    case 0x2003: // EM SPACE\n    case 0x2004: // THREE-PER-EM SPACE\n    case 0x2005: // FOUR-PER-EM SPACE\n    case 0x2006: // SIX-PER-EM SPACE\n    case 0x2007: // FIGURE SPACE\n    case 0x2008: // PUNCTUATION SPACE\n    case 0x2009: // THIN SPACE\n    case 0x200a: // HAIR SPACE\n    case 0x202f: // NARROW NO-BREAK SPACE\n    case 0x205f: // MEDIUM MATHEMATICAL SPACE\n    case 0x3000: // IDEOGRAPHIC SPACE\n    case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n      return true;\n\n    default:\n      return false;\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n  | typeof Errors.StrictNumericEscape\n  | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n  // When a topic binding has been currently established,\n  // then this is 1. Otherwise, it is 0. This is forwards compatible\n  // with a future plugin for multiple lexical topics.\n  maxNumOfResolvableTopics: number;\n  // When a topic binding has been currently established, and if that binding\n  // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n  // `null`. This is forwards compatible with a future plugin for multiple\n  // lexical topics.\n  maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n  Loop = 1,\n  Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<State>;\n\nexport default class State {\n  @bit.storage flags: number;\n\n  @bit accessor strict = false;\n\n  startIndex: number;\n  curLine: number;\n  lineStart: number;\n\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  startLoc: Position;\n  endLoc: Position;\n\n  init({\n    strictMode,\n    sourceType,\n    startIndex,\n    startLine,\n    startColumn,\n  }: Options): void {\n    this.strict =\n      strictMode === false\n        ? false\n        : strictMode === true\n          ? true\n          : sourceType === \"module\";\n\n    this.startIndex = startIndex;\n    this.curLine = startLine;\n    this.lineStart = -startColumn;\n    this.startLoc = this.endLoc = new Position(\n      startLine,\n      startColumn,\n      startIndex,\n    );\n  }\n\n  errors: ParseError<any>[] = [];\n\n  // Used to signify the start of a potential arrow function\n  potentialArrowAt: number = -1;\n\n  // Used to signify the start of an expression which looks like a\n  // typed arrow function, but it isn't\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowAt: number[] = [];\n\n  // Used to signify the start of an expression whose params, if it looks like\n  // an arrow function, shouldn't be converted to assignable nodes.\n  // This is used to defer the validation of typed arrow functions inside\n  // conditional expressions.\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowParamsConversionAt: number[] = [];\n\n  // Flags to track\n  @bit accessor maybeInArrowParameters = false;\n  @bit accessor inType = false;\n  @bit accessor noAnonFunctionType = false;\n  @bit accessor hasFlowComment = false;\n  @bit accessor isAmbientContext = false;\n  @bit accessor inAbstractClass = false;\n  @bit accessor inDisallowConditionalTypesContext = false;\n\n  // For the Hack-style pipelines plugin\n  topicContext: TopicContextState = {\n    maxNumOfResolvableTopics: 0,\n    maxTopicIndex: null,\n  };\n\n  // For the F#-style pipelines plugin\n  @bit accessor soloAwait = false;\n  @bit accessor inFSharpPipelineDirectBody = false;\n\n  // Labels in scope.\n  labels: Array<{\n    kind: LoopLabelKind;\n    name?: string | null;\n    statementStart?: number;\n  }> = [];\n\n  commentsLen = 0;\n  // Comment attachment store\n  commentStack: Array<CommentWhitespace> = [];\n\n  // The current position of the tokenizer in the input.\n  pos: number = 0;\n\n  // Properties of the current token:\n  // Its type\n  type: TokenType = tt.eof;\n\n  // For tokens that include more information than their type, the value\n  value: any = null;\n\n  // Its start and end offset\n  start: number = 0;\n  end: number = 0;\n\n  // Position information for the previous token\n  // this is initialized when generating the second token.\n  lastTokEndLoc: Position = null;\n  // this is initialized when generating the second token.\n  lastTokStartLoc: Position = null;\n\n  // The context stack is used to track whether the apostrophe \"`\" starts\n  // or ends a string template\n  context: Array<TokContext> = [ct.brace];\n\n  // Used to track whether a JSX element is allowed to form\n  @bit accessor canStartJSXElement = true;\n\n  // Used to signal to callers of `readWord1` whether the word\n  // contained any escape sequences. This is needed because words with\n  // escape sequences must not be interpreted as keywords.\n  @bit accessor containsEsc = false;\n\n  // Used to track invalid escape sequences in template literals,\n  // that must be reported if the template is not tagged.\n  firstInvalidTemplateEscapePos: null | Position = null;\n\n  @bit accessor hasTopLevelAwait = false;\n\n  // This property is used to track the following errors\n  // - StrictNumericEscape\n  // - StrictOctalLiteral\n  //\n  // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n  // todo(JLHwung): set strictErrors to null and avoid recording string errors\n  // after a non-directive is parsed\n  strictErrors: Map<number, [DeferredStrictError, Position]> = new Map();\n\n  // Tokens length in token store\n  tokensLength: number = 0;\n\n  /**\n   * When we add a new property, we must manually update the `clone` method\n   * @see State#clone\n   */\n\n  curPosition(): Position {\n    return new Position(\n      this.curLine,\n      this.pos - this.lineStart,\n      this.pos + this.startIndex,\n    );\n  }\n\n  clone(): State {\n    const state = new State();\n    state.flags = this.flags;\n    state.startIndex = this.startIndex;\n    state.curLine = this.curLine;\n    state.lineStart = this.lineStart;\n    state.startLoc = this.startLoc;\n    state.endLoc = this.endLoc;\n    state.errors = this.errors.slice();\n    state.potentialArrowAt = this.potentialArrowAt;\n    state.noArrowAt = this.noArrowAt.slice();\n    state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n    state.topicContext = this.topicContext;\n    state.labels = this.labels.slice();\n    state.commentsLen = this.commentsLen;\n    state.commentStack = this.commentStack.slice();\n    state.pos = this.pos;\n    state.type = this.type;\n    state.value = this.value;\n    state.start = this.start;\n    state.end = this.end;\n    state.lastTokEndLoc = this.lastTokEndLoc;\n    state.lastTokStartLoc = this.lastTokStartLoc;\n    state.context = this.context.slice();\n    state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n    state.strictErrors = this.strictErrors;\n    state.tokensLength = this.tokensLength;\n\n    return state;\n  }\n}\n\nexport type LookaheadState = {\n  pos: number;\n  value: any;\n  type: TokenType;\n  start: number;\n  end: number;\n  context: TokContext[];\n  startLoc: Position;\n  lastTokEndLoc: Position;\n  curLine: number;\n  lineStart: number;\n  curPosition: State[\"curPosition\"];\n  /* Used only in readToken_mult_modulo */\n  inType: boolean;\n  // These boolean properties are not initialized in createLookaheadState()\n  // instead they will only be set by the tokenizer\n  containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n  decBinOct: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseB,\n    charCodes.uppercaseE,\n    charCodes.uppercaseO,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseB,\n    charCodes.lowercaseE,\n    charCodes.lowercaseO,\n  ]),\n  hex: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseX,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseX,\n  ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n  // 0 - 1\n  bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n  // 0 - 7\n  oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n  // 0 - 9\n  dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n  // 0 - 9, A - F, a - f,\n  hex: (ch: number) =>\n    (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n    (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n    (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n  unterminated(\n    initialPos: number,\n    initialLineStart: number,\n    initialCurLine: number,\n  ): void;\n};\n\nexport function readStringContents(\n  type: \"single\" | \"double\" | \"template\",\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  errors: StringContentsErrorHandlers,\n) {\n  const initialPos = pos;\n  const initialLineStart = lineStart;\n  const initialCurLine = curLine;\n\n  let out = \"\";\n  let firstInvalidLoc = null;\n  let chunkStart = pos;\n  const { length } = input;\n  for (;;) {\n    if (pos >= length) {\n      errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    const ch = input.charCodeAt(pos);\n    if (isStringEnd(type, ch, input, pos)) {\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    if (ch === charCodes.backslash) {\n      out += input.slice(chunkStart, pos);\n      const res = readEscapedChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        type === \"template\",\n        errors,\n      );\n      if (res.ch === null && !firstInvalidLoc) {\n        firstInvalidLoc = { pos, lineStart, curLine };\n      } else {\n        out += res.ch;\n      }\n      ({ pos, lineStart, curLine } = res);\n      chunkStart = pos;\n    } else if (\n      ch === charCodes.lineSeparator ||\n      ch === charCodes.paragraphSeparator\n    ) {\n      ++pos;\n      ++curLine;\n      lineStart = pos;\n    } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n      if (type === \"template\") {\n        out += input.slice(chunkStart, pos) + \"\\n\";\n        ++pos;\n        if (\n          ch === charCodes.carriageReturn &&\n          input.charCodeAt(pos) === charCodes.lineFeed\n        ) {\n          ++pos;\n        }\n        ++curLine;\n        chunkStart = lineStart = pos;\n      } else {\n        errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      }\n    } else {\n      ++pos;\n    }\n  }\n  return process.env.BABEL_8_BREAKING\n    ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n    : {\n        pos,\n        str: out,\n        firstInvalidLoc,\n        lineStart,\n        curLine,\n        containsInvalid: !!firstInvalidLoc,\n      };\n}\n\nfunction isStringEnd(\n  type: \"single\" | \"double\" | \"template\",\n  ch: number,\n  input: string,\n  pos: number,\n) {\n  if (type === \"template\") {\n    return (\n      ch === charCodes.graveAccent ||\n      (ch === charCodes.dollarSign &&\n        input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n    );\n  }\n  return (\n    ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n  );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n  CodePointErrorHandlers & {\n    strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n  };\n\nfunction readEscapedChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  inTemplate: boolean,\n  errors: EscapedCharErrorHandlers,\n) {\n  const throwOnInvalid = !inTemplate;\n  pos++; // skip '\\'\n\n  const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n  const ch = input.charCodeAt(pos++);\n  switch (ch) {\n    case charCodes.lowercaseN:\n      return res(\"\\n\");\n    case charCodes.lowercaseR:\n      return res(\"\\r\");\n    case charCodes.lowercaseX: {\n      let code;\n      ({ code, pos } = readHexChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        2,\n        false,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCharCode(code));\n    }\n    case charCodes.lowercaseU: {\n      let code;\n      ({ code, pos } = readCodePoint(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCodePoint(code));\n    }\n    case charCodes.lowercaseT:\n      return res(\"\\t\");\n    case charCodes.lowercaseB:\n      return res(\"\\b\");\n    case charCodes.lowercaseV:\n      return res(\"\\u000b\");\n    case charCodes.lowercaseF:\n      return res(\"\\f\");\n    case charCodes.carriageReturn:\n      if (input.charCodeAt(pos) === charCodes.lineFeed) {\n        ++pos;\n      }\n    // fall through\n    case charCodes.lineFeed:\n      lineStart = pos;\n      ++curLine;\n    // fall through\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return res(\"\");\n    case charCodes.digit8:\n    case charCodes.digit9:\n      if (inTemplate) {\n        return res(null);\n      } else {\n        errors.strictNumericEscape(pos - 1, lineStart, curLine);\n      }\n    // fall through\n    default:\n      if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n        const startPos = pos - 1;\n        const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n        let octalStr = match[0];\n\n        let octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        pos += octalStr.length - 1;\n        const next = input.charCodeAt(pos);\n        if (\n          octalStr !== \"0\" ||\n          next === charCodes.digit8 ||\n          next === charCodes.digit9\n        ) {\n          if (inTemplate) {\n            return res(null);\n          } else {\n            errors.strictNumericEscape(startPos, lineStart, curLine);\n          }\n        }\n\n        return res(String.fromCharCode(octal));\n      }\n\n      return res(String.fromCharCode(ch));\n  }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n  invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  len: number,\n  forceLen: boolean,\n  throwOnInvalid: boolean,\n  errors: HexCharErrorHandlers,\n) {\n  const initialPos = pos;\n  let n;\n  ({ n, pos } = readInt(\n    input,\n    pos,\n    lineStart,\n    curLine,\n    16,\n    len,\n    forceLen,\n    false,\n    errors,\n    /* bailOnError */ !throwOnInvalid,\n  ));\n  if (n === null) {\n    if (throwOnInvalid) {\n      errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n    } else {\n      pos = initialPos - 1;\n    }\n  }\n  return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n  numericSeparatorInEscapeSequence(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  unexpectedNumericSeparator(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  // It can return \"true\" to indicate that the error was handled\n  // and the int parsing should continue.\n  invalidDigit(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n    radix: number,\n  ): boolean;\n};\n\nexport function readInt(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  radix: number,\n  len: number | undefined,\n  forceLen: boolean,\n  allowNumSeparator: boolean | \"bail\",\n  errors: IntErrorHandlers,\n  bailOnError: boolean,\n) {\n  const start = pos;\n  const forbiddenSiblings =\n    radix === 16\n      ? forbiddenNumericSeparatorSiblings.hex\n      : forbiddenNumericSeparatorSiblings.decBinOct;\n  const isAllowedSibling =\n    radix === 16\n      ? isAllowedNumericSeparatorSibling.hex\n      : radix === 10\n        ? isAllowedNumericSeparatorSibling.dec\n        : radix === 8\n          ? isAllowedNumericSeparatorSibling.oct\n          : isAllowedNumericSeparatorSibling.bin;\n\n  let invalid = false;\n  let total = 0;\n\n  for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n    const code = input.charCodeAt(pos);\n    let val;\n\n    if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n      const prev = input.charCodeAt(pos - 1);\n      const next = input.charCodeAt(pos + 1);\n\n      if (!allowNumSeparator) {\n        if (bailOnError) return { n: null, pos };\n        errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n      } else if (\n        Number.isNaN(next) ||\n        !isAllowedSibling(next) ||\n        forbiddenSiblings.has(prev) ||\n        forbiddenSiblings.has(next)\n      ) {\n        if (bailOnError) return { n: null, pos };\n        errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n      }\n\n      // Ignore this _ character\n      ++pos;\n      continue;\n    }\n\n    if (code >= charCodes.lowercaseA) {\n      val = code - charCodes.lowercaseA + charCodes.lineFeed;\n    } else if (code >= charCodes.uppercaseA) {\n      val = code - charCodes.uppercaseA + charCodes.lineFeed;\n    } else if (charCodes.isDigit(code)) {\n      val = code - charCodes.digit0; // 0-9\n    } else {\n      val = Infinity;\n    }\n    if (val >= radix) {\n      // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n      // breaking the loop (this is used for error recovery).\n      if (val <= 9 && bailOnError) {\n        return { n: null, pos };\n      } else if (\n        val <= 9 &&\n        errors.invalidDigit(pos, lineStart, curLine, radix)\n      ) {\n        val = 0;\n      } else if (forceLen) {\n        val = 0;\n        invalid = true;\n      } else {\n        break;\n      }\n    }\n    ++pos;\n    total = total * radix + val;\n  }\n  if (pos === start || (len != null && pos - start !== len) || invalid) {\n    return { n: null, pos };\n  }\n\n  return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n  invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  throwOnInvalid: boolean,\n  errors: CodePointErrorHandlers,\n) {\n  const ch = input.charCodeAt(pos);\n  let code;\n\n  if (ch === charCodes.leftCurlyBrace) {\n    ++pos;\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      input.indexOf(\"}\", pos) - pos,\n      true,\n      throwOnInvalid,\n      errors,\n    ));\n    ++pos;\n    if (code !== null && code > 0x10ffff) {\n      if (throwOnInvalid) {\n        errors.invalidCodePoint(pos, lineStart, curLine);\n      } else {\n        return { code: null, pos };\n      }\n    }\n  } else {\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      4,\n      false,\n      throwOnInvalid,\n      errors,\n    ));\n  }\n  return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport { OptionFlags, type Options } from \"../options.ts\";\nimport {\n  Position,\n  SourceLocation,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n  tokenIsKeyword,\n  tokenLabelName,\n  tt,\n  keywords as keywordTypes,\n  type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n  lineBreakG,\n  isNewLine,\n  isWhitespace,\n  skipWhiteSpace,\n  skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n  readInt,\n  readCodePoint,\n  readStringContents,\n  type IntErrorHandlers,\n  type CodePointErrorHandlers,\n  type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n  return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n  charCodes.lowercaseG,\n  charCodes.lowercaseM,\n  charCodes.lowercaseS,\n  charCodes.lowercaseI,\n  charCodes.lowercaseY,\n  charCodes.lowercaseU,\n  charCodes.lowercaseD,\n  charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n  constructor(state: State) {\n    const startIndex = state.startIndex || 0;\n    this.type = state.type;\n    this.value = state.value;\n    this.start = startIndex + state.start;\n    this.end = startIndex + state.end;\n    this.loc = new SourceLocation(state.startLoc, state.endLoc);\n  }\n\n  declare type: TokenType;\n  declare value: any;\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n  isLookahead: boolean;\n\n  // Token store.\n  tokens: Array<Token | N.Comment> = [];\n\n  constructor(options: Options, input: string) {\n    super();\n    this.state = new State();\n    this.state.init(options);\n    this.input = input;\n    this.length = input.length;\n    this.comments = [];\n    this.isLookahead = false;\n  }\n\n  pushToken(token: Token | N.Comment) {\n    // Pop out invalid tokens trapped by try-catch parsing.\n    // Those parsing branches are mainly created by typescript and flow plugins.\n    this.tokens.length = this.state.tokensLength;\n    this.tokens.push(token);\n    ++this.state.tokensLength;\n  }\n\n  // Move to the next token\n\n  next(): void {\n    this.checkKeywordEscapes();\n    if (this.optionFlags & OptionFlags.Tokens) {\n      this.pushToken(new Token(this.state));\n    }\n\n    this.state.lastTokEndLoc = this.state.endLoc;\n    this.state.lastTokStartLoc = this.state.startLoc;\n    this.nextToken();\n  }\n\n  eat(type: TokenType): boolean {\n    if (this.match(type)) {\n      this.next();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Whether current token matches given type\n   */\n  match(type: TokenType): boolean {\n    return this.state.type === type;\n  }\n\n  /**\n   * Create a LookaheadState from current parser state\n   */\n  createLookaheadState(state: State): LookaheadState {\n    return {\n      pos: state.pos,\n      value: null,\n      type: state.type,\n      start: state.start,\n      end: state.end,\n      context: [this.curContext()],\n      inType: state.inType,\n      startLoc: state.startLoc,\n      lastTokEndLoc: state.lastTokEndLoc,\n      curLine: state.curLine,\n      lineStart: state.lineStart,\n      curPosition: state.curPosition,\n    };\n  }\n\n  /**\n   * lookahead peeks the next token, skipping changes to token context and\n   * comment stack. For performance it returns a limited LookaheadState\n   * instead of full parser state.\n   *\n   * The { column, line } Loc info is not included in lookahead since such usage\n   * is rare. Although it may return other location properties e.g. `curLine` and\n   * `lineStart`, these properties are not listed in the LookaheadState interface\n   * and thus the returned value is _NOT_ reliable.\n   *\n   * The tokenizer should make best efforts to avoid using any parser state\n   * other than those defined in LookaheadState\n   */\n  lookahead(): LookaheadState {\n    const old = this.state;\n    // @ts-expect-error For performance we use a simplified tokenizer state structure\n    this.state = this.createLookaheadState(old);\n\n    this.isLookahead = true;\n    this.nextToken();\n    this.isLookahead = false;\n\n    const curr = this.state;\n    this.state = old;\n    return curr;\n  }\n\n  nextTokenStart(): number {\n    return this.nextTokenStartSince(this.state.pos);\n  }\n\n  nextTokenStartSince(pos: number): number {\n    skipWhiteSpace.lastIndex = pos;\n    return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n  }\n\n  lookaheadCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenStart());\n  }\n\n  /**\n   * Similar to nextToken, but it will stop at line break when it is seen before the next token\n   *\n   * @returns {number} position of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  nextTokenInLineStart(): number {\n    return this.nextTokenInLineStartSince(this.state.pos);\n  }\n\n  nextTokenInLineStartSince(pos: number): number {\n    skipWhiteSpaceInLine.lastIndex = pos;\n    return skipWhiteSpaceInLine.test(this.input)\n      ? skipWhiteSpaceInLine.lastIndex\n      : pos;\n  }\n\n  /**\n   * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n   * seen before the next token\n   *\n   * @returns {number} char code of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  lookaheadInLineCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenInLineStart());\n  }\n\n  codePointAtPos(pos: number): number {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = this.input.charCodeAt(pos);\n    if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n      const trail = this.input.charCodeAt(pos);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    return cp;\n  }\n\n  // Toggle strict mode. Re-reads the next number or string to please\n  // pedantic tests (`\"use strict\"; 010;` should fail).\n\n  setStrict(strict: boolean): void {\n    this.state.strict = strict;\n    if (strict) {\n      // Throw an error for any string decimal escape found before/immediately\n      // after a \"use strict\" directive. Strict mode will be set at parse\n      // time for any literals that occur after the next node of the strict\n      // directive.\n      this.state.strictErrors.forEach(([toParseError, at]) =>\n        this.raise(toParseError, at),\n      );\n      this.state.strictErrors.clear();\n    }\n  }\n\n  curContext(): TokContext {\n    return this.state.context[this.state.context.length - 1];\n  }\n\n  // Read a single token, updating the parser object's token-related properties.\n  nextToken(): void {\n    this.skipSpace();\n    this.state.start = this.state.pos;\n    if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n    if (this.state.pos >= this.length) {\n      this.finishToken(tt.eof);\n      return;\n    }\n\n    this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n  }\n\n  // Skips a block comment, whose end is marked by commentEnd.\n  // *-/ is used by the Flow plugin, when parsing block comments nested\n  // inside Flow comments.\n  skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    const start = this.state.pos;\n    const end = this.input.indexOf(commentEnd, start + 2);\n    if (end === -1) {\n      // We have to call this again here because startLoc may not be set...\n      // This seems to be for performance reasons:\n      // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n      throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n    }\n\n    this.state.pos = end + commentEnd.length;\n    lineBreakG.lastIndex = start + 2;\n    while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n      ++this.state.curLine;\n      this.state.lineStart = lineBreakG.lastIndex;\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n    /*:: invariant(startLoc) */\n\n    const comment: N.CommentBlock = {\n      type: \"CommentBlock\",\n      value: this.input.slice(start + 2, end),\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end + commentEnd.length),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  skipLineComment(startSkip: number): N.CommentLine | undefined {\n    const start = this.state.pos;\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    let ch = this.input.charCodeAt((this.state.pos += startSkip));\n    if (this.state.pos < this.length) {\n      while (!isNewLine(ch) && ++this.state.pos < this.length) {\n        ch = this.input.charCodeAt(this.state.pos);\n      }\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n\n    const end = this.state.pos;\n    const value = this.input.slice(start + startSkip, end);\n\n    const comment: N.CommentLine = {\n      type: \"CommentLine\",\n      value,\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  // Called at the start of the parse and after every token. Skips\n  // whitespace and comments, and.\n\n  skipSpace(): void {\n    const spaceStart = this.state.pos;\n    const comments: N.Comment[] =\n      this.optionFlags & OptionFlags.AttachComment ? [] : null;\n    loop: while (this.state.pos < this.length) {\n      const ch = this.input.charCodeAt(this.state.pos);\n      switch (ch) {\n        case charCodes.space:\n        case charCodes.nonBreakingSpace:\n        case charCodes.tab:\n          ++this.state.pos;\n          break;\n        case charCodes.carriageReturn:\n          if (\n            this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n          ) {\n            ++this.state.pos;\n          }\n        // fall through\n        case charCodes.lineFeed:\n        case charCodes.lineSeparator:\n        case charCodes.paragraphSeparator:\n          ++this.state.pos;\n          ++this.state.curLine;\n          this.state.lineStart = this.state.pos;\n          break;\n\n        case charCodes.slash:\n          switch (this.input.charCodeAt(this.state.pos + 1)) {\n            case charCodes.asterisk: {\n              const comment = this.skipBlockComment(\"*/\");\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n              break;\n            }\n\n            case charCodes.slash: {\n              const comment = this.skipLineComment(2);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n              break;\n            }\n\n            default:\n              break loop;\n          }\n          break;\n\n        default:\n          if (isWhitespace(ch)) {\n            ++this.state.pos;\n          } else if (\n            ch === charCodes.dash &&\n            !this.inModule &&\n            this.optionFlags & OptionFlags.AnnexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.dash &&\n              this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n              (spaceStart === 0 || this.state.lineStart > spaceStart)\n            ) {\n              // A `-->` line comment\n              const comment = this.skipLineComment(3);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else if (\n            ch === charCodes.lessThan &&\n            !this.inModule &&\n            this.optionFlags & OptionFlags.AnnexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n              this.input.charCodeAt(pos + 2) === charCodes.dash &&\n              this.input.charCodeAt(pos + 3) === charCodes.dash\n            ) {\n              // `<!--`, an XML-style comment that should be interpreted as a line comment\n              const comment = this.skipLineComment(4);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else {\n            break loop;\n          }\n      }\n    }\n\n    if (comments?.length > 0) {\n      const end = this.state.pos;\n      const commentWhitespace: CommentWhitespace = {\n        start: this.sourceToOffsetPos(spaceStart),\n        end: this.sourceToOffsetPos(end),\n        comments,\n        leadingNode: null,\n        trailingNode: null,\n        containingNode: null,\n      };\n      this.state.commentStack.push(commentWhitespace);\n    }\n  }\n\n  // Called at the end of every token. Sets `end`, `val`, and\n  // maintains `context` and `canStartJSXElement`, and skips the space after\n  // the token, so that the next one's `start` will point at the\n  // right position.\n\n  finishToken(type: TokenType, val?: any): void {\n    this.state.end = this.state.pos;\n    this.state.endLoc = this.state.curPosition();\n    const prevType = this.state.type;\n    this.state.type = type;\n    this.state.value = val;\n\n    if (!this.isLookahead) {\n      this.updateContext(prevType);\n    }\n  }\n\n  replaceToken(type: TokenType): void {\n    this.state.type = type;\n    // @ts-expect-error the prevType of updateContext is required\n    // only when the new type is tt.slash/tt.jsxTagEnd\n    this.updateContext();\n  }\n\n  // ### Token reading\n\n  // This is the function that is called to fetch the next token. It\n  // is somewhat obscure, because it works in character codes rather\n  // than characters, and because operator parsing has been inlined\n  // into it.\n  //\n  // All in the name of speed.\n\n  // number sign is \"#\"\n  readToken_numberSign(): void {\n    if (this.state.pos === 0 && this.readToken_interpreter()) {\n      return;\n    }\n\n    const nextPos = this.state.pos + 1;\n    const next = this.codePointAtPos(nextPos);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      throw this.raise(\n        Errors.UnexpectedDigitAfterHash,\n        this.state.curPosition(),\n      );\n    }\n\n    if (\n      next === charCodes.leftCurlyBrace ||\n      (next === charCodes.leftSquareBracket && this.hasPlugin(\"recordAndTuple\"))\n    ) {\n      // When we see `#{`, it is likely to be a hash record.\n      // However we don't yell at `#[` since users may intend to use \"computed private fields\",\n      // which is not allowed in the spec. Throwing expecting recordAndTuple is\n      // misleading\n      this.expectPlugin(\"recordAndTuple\");\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.getPluginOption(\"recordAndTuple\", \"syntaxType\") === \"bar\"\n      ) {\n        throw this.raise(\n          next === charCodes.leftCurlyBrace\n            ? Errors.RecordExpressionHashIncorrectStartSyntaxType\n            : Errors.TupleExpressionHashIncorrectStartSyntaxType,\n          this.state.curPosition(),\n        );\n      }\n\n      this.state.pos += 2;\n      if (next === charCodes.leftCurlyBrace) {\n        // #{\n        this.finishToken(tt.braceHashL);\n      } else {\n        // #[\n        this.finishToken(tt.bracketHashL);\n      }\n    } else if (isIdentifierStart(next)) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1(next));\n    } else if (next === charCodes.backslash) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1());\n    } else {\n      this.finishOp(tt.hash, 1);\n    }\n  }\n\n  readToken_dot(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      this.readNumber(true);\n      return;\n    }\n\n    if (\n      next === charCodes.dot &&\n      this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n    ) {\n      this.state.pos += 3;\n      this.finishToken(tt.ellipsis);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.dot);\n    }\n  }\n\n  readToken_slash(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.slashAssign, 2);\n    } else {\n      this.finishOp(tt.slash, 1);\n    }\n  }\n\n  readToken_interpreter(): boolean {\n    if (this.state.pos !== 0 || this.length < 2) return false;\n\n    let ch = this.input.charCodeAt(this.state.pos + 1);\n    if (ch !== charCodes.exclamationMark) return false;\n\n    const start = this.state.pos;\n    this.state.pos += 1;\n\n    while (!isNewLine(ch) && ++this.state.pos < this.length) {\n      ch = this.input.charCodeAt(this.state.pos);\n    }\n\n    const value = this.input.slice(start + 2, this.state.pos);\n\n    this.finishToken(tt.interpreterDirective, value);\n\n    return true;\n  }\n\n  readToken_mult_modulo(code: number): void {\n    // '%' or '*'\n    let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n    let width = 1;\n    let next = this.input.charCodeAt(this.state.pos + 1);\n\n    // Exponentiation operator '**'\n    if (code === charCodes.asterisk && next === charCodes.asterisk) {\n      width++;\n      next = this.input.charCodeAt(this.state.pos + 2);\n      type = tt.exponent;\n    }\n\n    // '%=' or '*='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      width++;\n      // `tt.moduloAssign` is only needed to support % as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      type = code === charCodes.percentSign ? tt.moduloAssign : tt.assign;\n    }\n\n    this.finishOp(type, width);\n  }\n\n  readToken_pipe_amp(code: number): void {\n    // '||' '&&' '||=' '&&='\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n      } else {\n        this.finishOp(\n          code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n          2,\n        );\n      }\n      return;\n    }\n\n    if (code === charCodes.verticalBar) {\n      // '|>'\n      if (next === charCodes.greaterThan) {\n        this.finishOp(tt.pipeline, 2);\n        return;\n      }\n      // '|}'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.RecordExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.braceBarR);\n        return;\n      }\n\n      // '|]'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightSquareBracket\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.TupleExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.bracketBarR);\n        return;\n      }\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n      return;\n    }\n\n    this.finishOp(\n      code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n      1,\n    );\n  }\n\n  readToken_caret(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '^='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      // `tt.xorAssign` is only needed to support ^ as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      this.finishOp(tt.xorAssign, 2);\n    }\n    // '^^'\n    else if (\n      next === charCodes.caret &&\n      // If the ^^ token is not enabled, we don't throw but parse two single ^s\n      // because it could be a ^ hack token followed by a ^ binary operator.\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"^^\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleCaret, 2);\n\n      // `^^^` is forbidden and must be separated by a space.\n      const lookaheadCh = this.input.codePointAt(this.state.pos);\n      if (lookaheadCh === charCodes.caret) {\n        this.unexpected();\n      }\n    }\n    // '^'\n    else {\n      this.finishOp(tt.bitwiseXOR, 1);\n    }\n  }\n\n  readToken_atSign(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '@@'\n    if (\n      next === charCodes.atSign &&\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"@@\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleAt, 2);\n    }\n    // '@'\n    else {\n      this.finishOp(tt.at, 1);\n    }\n  }\n\n  readToken_plus_min(code: number): void {\n    // '+-'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      this.finishOp(tt.incDec, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n    } else {\n      this.finishOp(tt.plusMin, 1);\n    }\n  }\n\n  readToken_lt(): void {\n    // '<'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.lessThan) {\n      if (this.input.charCodeAt(pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n        return;\n      }\n      this.finishOp(tt.bitShiftL, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.lt, 1);\n  }\n\n  readToken_gt(): void {\n    // '>'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.greaterThan) {\n      const size =\n        this.input.charCodeAt(pos + 2) === charCodes.greaterThan ? 3 : 2;\n      if (this.input.charCodeAt(pos + size) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, size + 1);\n        return;\n      }\n      this.finishOp(tt.bitShiftR, size);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <= | >=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.gt, 1);\n  }\n\n  readToken_eq_excl(code: number): void {\n    // '=!'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(\n        tt.equality,\n        this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n          ? 3\n          : 2,\n      );\n      return;\n    }\n    if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n      // '=>'\n      this.state.pos += 2;\n      this.finishToken(tt.arrow);\n      return;\n    }\n    this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n  }\n\n  readToken_question(): void {\n    // '?'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    const next2 = this.input.charCodeAt(this.state.pos + 2);\n    if (next === charCodes.questionMark) {\n      if (next2 === charCodes.equalsTo) {\n        // '??='\n        this.finishOp(tt.assign, 3);\n      } else {\n        // '??'\n        this.finishOp(tt.nullishCoalescing, 2);\n      }\n    } else if (\n      next === charCodes.dot &&\n      !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n    ) {\n      // '.' not followed by a number\n      this.state.pos += 2;\n      this.finishToken(tt.questionDot);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.question);\n    }\n  }\n\n  getTokenFromCode(code: number): void {\n    switch (code) {\n      // The interpretation of a dot depends on whether it is followed\n      // by a digit or another two dots.\n\n      case charCodes.dot:\n        this.readToken_dot();\n        return;\n      // Punctuation tokens.\n      case charCodes.leftParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenL);\n        return;\n      case charCodes.rightParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenR);\n        return;\n      case charCodes.semicolon:\n        ++this.state.pos;\n        this.finishToken(tt.semi);\n        return;\n      case charCodes.comma:\n        ++this.state.pos;\n        this.finishToken(tt.comma);\n        return;\n      case charCodes.leftSquareBracket:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.TupleExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // [|\n          this.state.pos += 2;\n          this.finishToken(tt.bracketBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.bracketL);\n        }\n        return;\n      case charCodes.rightSquareBracket:\n        ++this.state.pos;\n        this.finishToken(tt.bracketR);\n        return;\n      case charCodes.leftCurlyBrace:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.RecordExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // {|\n          this.state.pos += 2;\n          this.finishToken(tt.braceBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.braceL);\n        }\n        return;\n      case charCodes.rightCurlyBrace:\n        ++this.state.pos;\n        this.finishToken(tt.braceR);\n        return;\n\n      case charCodes.colon:\n        if (\n          this.hasPlugin(\"functionBind\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n        ) {\n          this.finishOp(tt.doubleColon, 2);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.colon);\n        }\n        return;\n\n      case charCodes.questionMark:\n        this.readToken_question();\n        return;\n\n      case charCodes.graveAccent:\n        this.readTemplateToken();\n        return;\n\n      case charCodes.digit0: {\n        const next = this.input.charCodeAt(this.state.pos + 1);\n        // '0x', '0X' - hex number\n        if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n          this.readRadixNumber(16);\n          return;\n        }\n        // '0o', '0O' - octal number\n        if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n          this.readRadixNumber(8);\n          return;\n        }\n        // '0b', '0B' - binary number\n        if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n          this.readRadixNumber(2);\n          return;\n        }\n      }\n      // Anything else beginning with a digit is an integer, octal\n      // number, or float. (fall through)\n      case charCodes.digit1:\n      case charCodes.digit2:\n      case charCodes.digit3:\n      case charCodes.digit4:\n      case charCodes.digit5:\n      case charCodes.digit6:\n      case charCodes.digit7:\n      case charCodes.digit8:\n      case charCodes.digit9:\n        this.readNumber(false);\n        return;\n\n      // Quotes produce strings.\n      case charCodes.quotationMark:\n      case charCodes.apostrophe:\n        this.readString(code);\n        return;\n\n      // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n      // often referred to. `finishOp` simply skips the amount of\n      // characters it is given as second argument, and returns a token\n      // of the type given by its first argument.\n\n      case charCodes.slash:\n        this.readToken_slash();\n        return;\n\n      case charCodes.percentSign:\n      case charCodes.asterisk:\n        this.readToken_mult_modulo(code);\n        return;\n\n      case charCodes.verticalBar:\n      case charCodes.ampersand:\n        this.readToken_pipe_amp(code);\n        return;\n\n      case charCodes.caret:\n        this.readToken_caret();\n        return;\n\n      case charCodes.plusSign:\n      case charCodes.dash:\n        this.readToken_plus_min(code);\n        return;\n\n      case charCodes.lessThan:\n        this.readToken_lt();\n        return;\n\n      case charCodes.greaterThan:\n        this.readToken_gt();\n        return;\n\n      case charCodes.equalsTo:\n      case charCodes.exclamationMark:\n        this.readToken_eq_excl(code);\n        return;\n\n      case charCodes.tilde:\n        this.finishOp(tt.tilde, 1);\n        return;\n\n      case charCodes.atSign:\n        this.readToken_atSign();\n        return;\n\n      case charCodes.numberSign:\n        this.readToken_numberSign();\n        return;\n\n      case charCodes.backslash:\n        this.readWord();\n        return;\n\n      default:\n        if (isIdentifierStart(code)) {\n          this.readWord(code);\n          return;\n        }\n    }\n\n    throw this.raise(\n      Errors.InvalidOrUnexpectedToken,\n      this.state.curPosition(),\n      {\n        unexpected: String.fromCodePoint(code),\n      },\n    );\n  }\n\n  finishOp(type: TokenType, size: number): void {\n    const str = this.input.slice(this.state.pos, this.state.pos + size);\n    this.state.pos += size;\n    this.finishToken(type, str);\n  }\n\n  readRegexp(): void {\n    const startLoc = this.state.startLoc;\n    const start = this.state.start + 1;\n    let escaped, inClass;\n    let { pos } = this.state;\n    for (; ; ++pos) {\n      if (pos >= this.length) {\n        // FIXME: explain\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      const ch = this.input.charCodeAt(pos);\n      if (isNewLine(ch)) {\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      if (escaped) {\n        escaped = false;\n      } else {\n        if (ch === charCodes.leftSquareBracket) {\n          inClass = true;\n        } else if (ch === charCodes.rightSquareBracket && inClass) {\n          inClass = false;\n        } else if (ch === charCodes.slash && !inClass) {\n          break;\n        }\n        escaped = ch === charCodes.backslash;\n      }\n    }\n    const content = this.input.slice(start, pos);\n    ++pos;\n\n    let mods = \"\";\n\n    const nextPos = () =>\n      // (pos + 1) + 1 - start\n      createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n    while (pos < this.length) {\n      const cp = this.codePointAtPos(pos);\n      // It doesn't matter if cp > 0xffff, the loop will either throw or break because we check on cp\n      const char = String.fromCharCode(cp);\n\n      // @ts-expect-error VALID_REGEX_FLAGS.has should accept expanded type: number\n      if (VALID_REGEX_FLAGS.has(cp)) {\n        if (cp === charCodes.lowercaseV) {\n          if (mods.includes(\"u\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        } else if (cp === charCodes.lowercaseU) {\n          if (mods.includes(\"v\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        }\n        if (mods.includes(char)) {\n          this.raise(Errors.DuplicateRegExpFlags, nextPos());\n        }\n      } else if (isIdentifierChar(cp) || cp === charCodes.backslash) {\n        this.raise(Errors.MalformedRegExpFlags, nextPos());\n      } else {\n        break;\n      }\n\n      ++pos;\n      mods += char;\n    }\n    this.state.pos = pos;\n\n    this.finishToken(tt.regexp, {\n      pattern: content,\n      flags: mods,\n    });\n  }\n\n  // Read an integer in the given radix. Return null if zero digits\n  // were read, the integer value otherwise. When `len` is given, this\n  // will return `null` unless the integer has exactly `len` digits.\n  // When `forceLen` is `true`, it means that we already know that in case\n  // of a malformed number we have to skip `len` characters anyway, instead\n  // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n  // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n  // characters (and thus the closing quote).\n\n  readInt(\n    radix: number,\n    len?: number,\n    forceLen: boolean = false,\n    allowNumSeparator: boolean | \"bail\" = true,\n  ): number | null {\n    const { n, pos } = readInt(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      radix,\n      len,\n      forceLen,\n      allowNumSeparator,\n      this.errorHandlers_readInt,\n      /* bailOnError */ false,\n    );\n    this.state.pos = pos;\n    return n;\n  }\n\n  readRadixNumber(radix: number): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isBigInt = false;\n\n    this.state.pos += 2; // 0x\n    const val = this.readInt(radix);\n    if (val == null) {\n      this.raise(\n        Errors.InvalidDigit,\n        // Numeric literals can't have newlines, so this is safe to do.\n        createPositionWithColumnOffset(startLoc, 2),\n        {\n          radix,\n        },\n      );\n    }\n    const next = this.input.charCodeAt(this.state.pos);\n\n    if (next === charCodes.lowercaseN) {\n      ++this.state.pos;\n      isBigInt = true;\n    } else if (next === charCodes.lowercaseM) {\n      throw this.raise(Errors.InvalidDecimal, startLoc);\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    if (isBigInt) {\n      const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    this.finishToken(tt.num, val);\n  }\n\n  // Read an integer, octal integer, or floating-point number.\n\n  readNumber(startsWithDot: boolean): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isFloat = false;\n    let isBigInt = false;\n    let hasExponent = false;\n    let isOctal = false;\n\n    if (!startsWithDot && this.readInt(10) === null) {\n      this.raise(Errors.InvalidNumber, this.state.curPosition());\n    }\n    const hasLeadingZero =\n      this.state.pos - start >= 2 &&\n      this.input.charCodeAt(start) === charCodes.digit0;\n\n    if (hasLeadingZero) {\n      const integer = this.input.slice(start, this.state.pos);\n      this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n      if (!this.state.strict) {\n        // disallow numeric separators in non octal decimals and legacy octal likes\n        const underscorePos = integer.indexOf(\"_\");\n        if (underscorePos > 0) {\n          // Numeric literals can't have newlines, so this is safe to do.\n          this.raise(\n            Errors.ZeroDigitNumericSeparator,\n            createPositionWithColumnOffset(startLoc, underscorePos),\n          );\n        }\n      }\n      isOctal = hasLeadingZero && !/[89]/.test(integer);\n    }\n\n    let next = this.input.charCodeAt(this.state.pos);\n    if (next === charCodes.dot && !isOctal) {\n      ++this.state.pos;\n      this.readInt(10);\n      isFloat = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (\n      (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n      !isOctal\n    ) {\n      next = this.input.charCodeAt(++this.state.pos);\n      if (next === charCodes.plusSign || next === charCodes.dash) {\n        ++this.state.pos;\n      }\n      if (this.readInt(10) === null) {\n        this.raise(Errors.InvalidOrMissingExponent, startLoc);\n      }\n      isFloat = true;\n      hasExponent = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (next === charCodes.lowercaseN) {\n      // disallow floats, legacy octal syntax and non octal decimals\n      // new style octal (\"0o\") is handled in this.readRadixNumber\n      if (isFloat || hasLeadingZero) {\n        this.raise(Errors.InvalidBigIntLiteral, startLoc);\n      }\n      ++this.state.pos;\n      isBigInt = true;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && next === charCodes.lowercaseM) {\n      this.expectPlugin(\"decimal\", this.state.curPosition());\n      if (hasExponent || hasLeadingZero) {\n        this.raise(Errors.InvalidDecimal, startLoc);\n      }\n      ++this.state.pos;\n      // eslint-disable-next-line no-var\n      var isDecimal = true;\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    // remove \"_\" for numeric literal separator, and trailing `m` or `n`\n    const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n    if (isBigInt) {\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && isDecimal) {\n      this.finishToken(tt.decimal, str);\n      return;\n    }\n\n    const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n    this.finishToken(tt.num, val);\n  }\n\n  // Read a string value, interpreting backslash-escapes.\n\n  readCodePoint(throwOnInvalid: boolean): number | null {\n    const { code, pos } = readCodePoint(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      throwOnInvalid,\n      this.errorHandlers_readCodePoint,\n    );\n    this.state.pos = pos;\n    return code;\n  }\n\n  readString(quote: number): void {\n    const { str, pos, curLine, lineStart } = readStringContents(\n      quote === charCodes.quotationMark ? \"double\" : \"single\",\n      this.input,\n      this.state.pos + 1, // skip the quote\n      this.state.lineStart,\n      this.state.curLine,\n      this.errorHandlers_readStringContents_string,\n    );\n    this.state.pos = pos + 1; // skip the quote\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n    this.finishToken(tt.string, str);\n  }\n\n  // Reads template continuation `}...`\n  readTemplateContinuation(): void {\n    if (!this.match(tt.braceR)) {\n      this.unexpected(null, tt.braceR);\n    }\n    // rewind pos to `}`\n    this.state.pos--;\n    this.readTemplateToken();\n  }\n\n  // Reads template string tokens.\n  readTemplateToken(): void {\n    const opening = this.input[this.state.pos];\n    const { str, firstInvalidLoc, pos, curLine, lineStart } =\n      readStringContents(\n        \"template\",\n        this.input,\n        this.state.pos + 1, // skip '`' or `}`\n        this.state.lineStart,\n        this.state.curLine,\n        this.errorHandlers_readStringContents_template,\n      );\n    this.state.pos = pos + 1; // skip '`' or `$`\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n\n    if (firstInvalidLoc) {\n      this.state.firstInvalidTemplateEscapePos = new Position(\n        firstInvalidLoc.curLine,\n        firstInvalidLoc.pos - firstInvalidLoc.lineStart,\n        this.sourceToOffsetPos(firstInvalidLoc.pos),\n      );\n    }\n\n    if (this.input.codePointAt(pos) === charCodes.graveAccent) {\n      this.finishToken(\n        tt.templateTail,\n        firstInvalidLoc ? null : opening + str + \"`\",\n      );\n    } else {\n      this.state.pos++; // skip '{'\n      this.finishToken(\n        tt.templateNonTail,\n        firstInvalidLoc ? null : opening + str + \"${\",\n      );\n    }\n  }\n\n  recordStrictModeErrors(toParseError: DeferredStrictError, at: Position) {\n    const index = at.index;\n\n    if (this.state.strict && !this.state.strictErrors.has(index)) {\n      this.raise(toParseError, at);\n    } else {\n      this.state.strictErrors.set(index, [toParseError, at]);\n    }\n  }\n\n  // Read an identifier, and return it as a string. Sets `this.state.containsEsc`\n  // to whether the word contained a '\\u' escape.\n  //\n  // Incrementally adds only escaped chars, adding other chunks as-is\n  // as a micro-optimization.\n  //\n  // When `firstCode` is given, it assumes it is always an identifier start and\n  // will skip reading start position again\n\n  readWord1(firstCode?: number): string {\n    this.state.containsEsc = false;\n    let word = \"\";\n    const start = this.state.pos;\n    let chunkStart = this.state.pos;\n    if (firstCode !== undefined) {\n      this.state.pos += firstCode <= 0xffff ? 1 : 2;\n    }\n\n    while (this.state.pos < this.length) {\n      const ch = this.codePointAtPos(this.state.pos);\n      if (isIdentifierChar(ch)) {\n        this.state.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === charCodes.backslash) {\n        this.state.containsEsc = true;\n\n        word += this.input.slice(chunkStart, this.state.pos);\n        const escStart = this.state.curPosition();\n        const identifierCheck =\n          this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n        if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n          this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n          chunkStart = this.state.pos - 1;\n          continue;\n        }\n\n        ++this.state.pos;\n        const esc = this.readCodePoint(true);\n        if (esc !== null) {\n          if (!identifierCheck(esc)) {\n            this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n          }\n\n          word += String.fromCodePoint(esc);\n        }\n        chunkStart = this.state.pos;\n      } else {\n        break;\n      }\n    }\n    return word + this.input.slice(chunkStart, this.state.pos);\n  }\n\n  // Read an identifier or keyword token. Will check for reserved\n  // words when necessary.\n\n  readWord(firstCode?: number): void {\n    const word = this.readWord1(firstCode);\n    const type = keywordTypes.get(word);\n    if (type !== undefined) {\n      // We don't use word as state.value here because word is a dynamic string\n      // while token label is a shared constant string\n      this.finishToken(type, tokenLabelName(type));\n    } else {\n      this.finishToken(tt.name, word);\n    }\n  }\n\n  checkKeywordEscapes(): void {\n    const { type } = this.state;\n    if (tokenIsKeyword(type) && this.state.containsEsc) {\n      this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n        reservedWord: tokenLabelName(type),\n      });\n    }\n  }\n\n  /**\n   * Raise a `ParseError` given the appropriate properties. If passed a\n   * `Position` for the `at` property, raises the `ParseError` at that location.\n   * Otherwise, if passed a `Node`, raises the `ParseError` at the start\n   * location of that `Node`.\n   *\n   * If `errorRecovery` is `true`, the error is pushed to the errors array and\n   * returned. If `errorRecovery` is `false`, the error is instead thrown.\n   *\n   * The return type is marked as `never` for simplicity, as error recovery\n   * will create types in an invalid AST shape.\n   */\n  raise<ErrorDetails = object>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const error = toParseError(loc, details);\n\n    if (!(this.optionFlags & OptionFlags.ErrorRecovery)) throw error;\n    if (!this.isLookahead) this.state.errors.push(error);\n\n    return error;\n  }\n\n  /**\n   * If `errorRecovery` is `false`, this method behaves identically to `raise`.\n   * If `errorRecovery` is `true`, this method will first see if there is\n   * already an error stored at the same `Position`, and replaces it with the\n   * one generated here.\n   */\n  raiseOverwrite<ErrorDetails>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> | never {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const pos = loc.index;\n    const errors = this.state.errors;\n\n    for (let i = errors.length - 1; i >= 0; i--) {\n      const error = errors[i];\n      if (error.loc.index === pos) {\n        return (errors[i] = toParseError(loc, details));\n      }\n      if (error.loc.index < pos) break;\n    }\n\n    return this.raise(toParseError, at, details);\n  }\n\n  // updateContext is used by the jsx plugin\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  updateContext(prevType: TokenType): void {}\n\n  // Raise an unexpected token error. Can take the expected token type.\n  unexpected(loc?: Position | null, type?: TokenType): void {\n    throw this.raise(\n      Errors.UnexpectedToken,\n      loc != null ? loc : this.state.startLoc,\n      {\n        expected: type ? tokenLabelName(type) : null,\n      },\n    );\n  }\n\n  expectPlugin(pluginName: Plugin, loc?: Position): true {\n    if (this.hasPlugin(pluginName)) {\n      return true;\n    }\n\n    throw this.raise(\n      Errors.MissingPlugin,\n      loc != null ? loc : this.state.startLoc,\n      {\n        missingPlugin: [pluginName],\n      },\n    );\n  }\n\n  expectOnePlugin(pluginNames: Plugin[]): void {\n    if (!pluginNames.some(name => this.hasPlugin(name))) {\n      throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n        missingPlugin: pluginNames,\n      });\n    }\n  }\n\n  errorBuilder(error: ParseErrorConstructor<object>) {\n    return (pos: number, lineStart: number, curLine: number) => {\n      this.raise(error, buildPosition(pos, lineStart, curLine));\n    };\n  }\n\n  errorHandlers_readInt: IntErrorHandlers = {\n    invalidDigit: (pos, lineStart, curLine, radix) => {\n      if (!(this.optionFlags & OptionFlags.ErrorRecovery)) return false;\n\n      this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n        radix,\n      });\n      // Continue parsing the number as if there was no invalid digit.\n      return true;\n    },\n    numericSeparatorInEscapeSequence: this.errorBuilder(\n      Errors.NumericSeparatorInEscapeSequence,\n    ),\n    unexpectedNumericSeparator: this.errorBuilder(\n      Errors.UnexpectedNumericSeparator,\n    ),\n  };\n\n  errorHandlers_readCodePoint: CodePointErrorHandlers = {\n    ...this.errorHandlers_readInt,\n    invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n    invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint),\n  };\n\n  errorHandlers_readStringContents_string: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: (pos, lineStart, curLine) => {\n      this.recordStrictModeErrors(\n        Errors.StrictNumericEscape,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedString, // Report the error at the string quote\n        buildPosition(pos - 1, lineStart, curLine),\n      );\n    },\n  };\n\n  errorHandlers_readStringContents_template: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedTemplate,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n  };\n}\n","import { ClassElementType } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport class ClassScope {\n  // A list of private named declared in the current class\n  privateNames: Set<string> = new Set();\n\n  // A list of private getters of setters without their counterpart\n  loneAccessors: Map<string, ClassElementType> = new Map();\n\n  // A list of private names used before being defined, mapping to\n  // their position.\n  undefinedPrivateNames: Map<string, Position> = new Map();\n}\n\nexport default class ClassScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ClassScope> = [];\n  undefinedPrivateNames: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n\n  current(): ClassScope {\n    return this.stack[this.stack.length - 1];\n  }\n\n  enter() {\n    this.stack.push(new ClassScope());\n  }\n\n  exit() {\n    const oldClassScope = this.stack.pop();\n\n    // Migrate the usage of not yet defined private names to the outer\n    // class scope, or raise an error if we reached the top-level scope.\n\n    const current = this.current();\n\n    // Array.from is needed because this is compiled to an array-like for loop\n    for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n      if (current) {\n        if (!current.undefinedPrivateNames.has(name)) {\n          current.undefinedPrivateNames.set(name, loc);\n        }\n      } else {\n        this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n          identifierName: name,\n        });\n      }\n    }\n  }\n\n  declarePrivateName(\n    name: string,\n    elementType: ClassElementType,\n    loc: Position,\n  ) {\n    const { privateNames, loneAccessors, undefinedPrivateNames } =\n      this.current();\n    let redefined = privateNames.has(name);\n\n    if (elementType & ClassElementType.KIND_ACCESSOR) {\n      const accessor = redefined && loneAccessors.get(name);\n      if (accessor) {\n        const oldStatic = accessor & ClassElementType.FLAG_STATIC;\n        const newStatic = elementType & ClassElementType.FLAG_STATIC;\n\n        const oldKind = accessor & ClassElementType.KIND_ACCESSOR;\n        const newKind = elementType & ClassElementType.KIND_ACCESSOR;\n\n        // The private name can be duplicated only if it is used by\n        // two accessors with different kind (get and set), and if\n        // they have the same placement (static or not).\n        redefined = oldKind === newKind || oldStatic !== newStatic;\n\n        if (!redefined) loneAccessors.delete(name);\n      } else if (!redefined) {\n        loneAccessors.set(name, elementType);\n      }\n    }\n\n    if (redefined) {\n      this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n\n    privateNames.add(name);\n    undefinedPrivateNames.delete(name);\n  }\n\n  usePrivateName(name: string, loc: Position) {\n    let classScope;\n    for (classScope of this.stack) {\n      if (classScope.privateNames.has(name)) return;\n    }\n\n    if (classScope) {\n      classScope.undefinedPrivateNames.set(name, loc);\n    } else {\n      // top-level\n      this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n        identifierName: name,\n      });\n    }\n  }\n}\n","import { Errors, type ParseErrorConstructor } from \"../parse-error.ts\";\nimport type { Position } from \"./location.ts\";\nimport type { Node } from \"../types.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\n/**\n * @module util/expression-scope\n\nExpressionScope is used to track declaration errors in these ambiguous patterns:\n\n- CoverParenthesizedExpressionAndArrowParameterList\n  e.g. we don't know if `({ x })` is an parenthesized expression or an\n  arrow function parameters until we see an `=>` after `)`.\n\n- CoverCallExpressionAndAsyncArrowHead\n  e.g. we don't know if `async({ x })` is a call expression or an async arrow\n  function parameters until we see an `=>` after `)`\n\nThe following declaration errors (@see parser-errors/standard) will be recorded in\nsome expression scopes and thrown later when we know what the ambiguous pattern is\n\n- AwaitBindingIdentifier\n- AwaitExpressionFormalParameter\n- YieldInParameter\n- InvalidParenthesizedAssignment when parenthesized is an identifier\n\nThere are four different expression scope\n- Expression\n  A general scope that represents program / function body / static block. No errors\n  will be recorded nor thrown in this scope.\n\n- MaybeArrowParameterDeclaration\n  A scope that represents ambiguous arrow head e.g. `(x)`. Errors will be recorded\n  alongside parent scopes and thrown when `ExpressionScopeHandler#validateAsPattern`\n  is called.\n\n- MaybeAsyncArrowParameterDeclaration\n  A scope that represents ambiguous async arrow head e.g. `async(x)`. Errors will\n  be recorded alongside parent scopes and thrown when\n  `ExpressionScopeHandler#validateAsPattern` is called.\n\n- ParameterDeclaration\n  A scope that represents unambiguous function parameters `function(x)`. Errors\n  recorded in this scope will be thrown immediately. No errors will be recorded in\n  this scope.\n\n// @see {@link https://docs.google.com/document/d/1FAvEp9EUK-G8kHfDIEo_385Hs2SUBCYbJ5H-NnLvq8M|V8 Expression Scope design docs}\n */\n\nconst enum ExpressionScopeType {\n  kExpression = 0,\n  kMaybeArrowParameterDeclaration = 1,\n  kMaybeAsyncArrowParameterDeclaration = 2,\n  kParameterDeclaration = 3,\n}\n\nclass ExpressionScope {\n  declare type: ExpressionScopeType;\n\n  constructor(type: ExpressionScopeType = ExpressionScopeType.kExpression) {\n    this.type = type;\n  }\n\n  canBeArrowParameterDeclaration(): this is ArrowHeadParsingScope {\n    return (\n      this.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration ||\n      this.type === ExpressionScopeType.kMaybeArrowParameterDeclaration\n    );\n  }\n\n  isCertainlyParameterDeclaration() {\n    return this.type === ExpressionScopeType.kParameterDeclaration;\n  }\n}\n\ntype ArrowHeadParsingParameterInitializerError =\n  | typeof Errors.AwaitExpressionFormalParameter\n  | typeof Errors.YieldInParameter;\ntype ArrowHeadParsingDeclarationError =\n  | ArrowHeadParsingParameterInitializerError\n  | typeof Errors.InvalidParenthesizedAssignment\n  | typeof Errors.AwaitBindingIdentifier;\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n  declarationErrors: Map<number, [ParseErrorConstructor<object>, Position]> =\n    new Map();\n  constructor(\n    type:\n      | ExpressionScopeType.kMaybeArrowParameterDeclaration\n      | ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  ) {\n    super(type);\n  }\n  recordDeclarationError(\n    ParsingErrorClass: ParseErrorConstructor<object>,\n    at: Position,\n  ) {\n    const index = at.index;\n\n    this.declarationErrors.set(index, [ParsingErrorClass, at]);\n  }\n  clearDeclarationError(index: number) {\n    this.declarationErrors.delete(index);\n  }\n  iterateErrors(\n    iterator: (a: [ArrowHeadParsingDeclarationError, Position]) => void,\n  ) {\n    this.declarationErrors.forEach(iterator);\n  }\n}\n\nexport default class ExpressionScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ExpressionScope> = [new ExpressionScope()];\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n  enter(scope: ExpressionScope) {\n    this.stack.push(scope);\n  }\n\n  exit() {\n    this.stack.pop();\n  }\n\n  /**\n   * Record likely parameter initializer errors\n   *\n   * When current scope is a ParameterDeclaration, the error will be thrown immediately,\n   * otherwise it will be recorded to any ancestry MaybeArrowParameterDeclaration and\n   * MaybeAsyncArrowParameterDeclaration scope until an Expression scope is seen.\n   */\n  recordParameterInitializerError(\n    toParseError: ArrowHeadParsingParameterInitializerError,\n    node: Node,\n  ): void {\n    const origin = node.loc.start;\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (!scope.isCertainlyParameterDeclaration()) {\n      if (scope.canBeArrowParameterDeclaration()) {\n        scope.recordDeclarationError(toParseError, origin);\n      } else {\n        /*:: invariant(scope.type == ExpressionScopeType.kExpression) */\n        // Type-Expression is the boundary where initializer error can populate to\n        return;\n      }\n      scope = stack[--i];\n    }\n    this.parser.raise(toParseError, origin);\n  }\n\n  /**\n   * Record errors that must be thrown if the current pattern ends up being an arrow\n   * function parameter. This is used to record parenthesized identifiers, and to record\n   * \"a as T\" and \"<T> a\" type assertions when parsing typescript.\n   *\n   * A parenthesized identifier (or type assertion) in LHS can be ambiguous because the assignment\n   * can be transformed to an assignable later, but not vice versa:\n   * For example, in `([(a) = []] = []) => {}`, we think `(a) = []` is an LHS in `[(a) = []]`,\n   * an LHS within `[(a) = []] = []`. However the LHS chain is then transformed by toAssignable,\n   * and we should throw assignment `(a)`, which is only valid in LHS. Hence we record the\n   * location of parenthesized `(a)` to current scope if it is one of MaybeArrowParameterDeclaration\n   * and MaybeAsyncArrowParameterDeclaration\n   *\n   * Unlike `recordParameterInitializerError`, we don't record to ancestry scope because we\n   * validate arrow head parsing scope before exit, and then the LHS will be unambiguous:\n   * For example, in `( x = ( [(a) = []] = [] ) ) => {}`, we should not record `(a)` in `( x = ... ) =>`\n   * arrow scope because when we finish parsing `( [(a) = []] = [] )`, it is an unambiguous assignment\n   * expression and can not be cast to pattern\n   */\n  recordArrowParameterBindingError(\n    error: ParseErrorConstructor<object>,\n    node: Node,\n  ): void {\n    const { stack } = this;\n    const scope: ExpressionScope = stack[stack.length - 1];\n    const origin = node.loc.start;\n    if (scope.isCertainlyParameterDeclaration()) {\n      this.parser.raise(error, origin);\n    } else if (scope.canBeArrowParameterDeclaration()) {\n      scope.recordDeclarationError(error, origin);\n    } else {\n      return;\n    }\n  }\n\n  /**\n   * Record likely async arrow parameter errors\n   *\n   * Errors will be recorded to any ancestry MaybeAsyncArrowParameterDeclaration\n   * scope until an Expression scope is seen.\n   */\n  recordAsyncArrowParametersError(at: Position): void {\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (scope.canBeArrowParameterDeclaration()) {\n      if (\n        scope.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration\n      ) {\n        scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n      }\n      scope = stack[--i];\n    }\n  }\n\n  validateAsPattern(): void {\n    const { stack } = this;\n    const currentScope = stack[stack.length - 1];\n    if (!currentScope.canBeArrowParameterDeclaration()) return;\n    currentScope.iterateErrors(([toParseError, loc]) => {\n      this.parser.raise(toParseError, loc);\n      // iterate from parent scope\n      let i = stack.length - 2;\n      let scope = stack[i];\n      while (scope.canBeArrowParameterDeclaration()) {\n        scope.clearDeclarationError(loc.index);\n        scope = stack[--i];\n      }\n    });\n  }\n}\n\nexport function newParameterDeclarationScope() {\n  return new ExpressionScope(ExpressionScopeType.kParameterDeclaration);\n}\n\nexport function newArrowHeadScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeArrowParameterDeclaration,\n  );\n}\n\nexport function newAsyncArrowScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  );\n}\n\nexport function newExpressionScope() {\n  return new ExpressionScope();\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n//   async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n//     ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n  // Initial Parameter flags\n  PARAM = 0b0000,\n  // track [Yield] production parameter\n  PARAM_YIELD = 0b0001,\n  // track [Await] production parameter\n  PARAM_AWAIT = 0b0010,\n  // track [Return] production parameter\n  PARAM_RETURN = 0b0100,\n  // track [In] production parameter\n  PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n//  type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n//   | typeof PARAM\n//   | typeof PARAM_AWAIT\n//   | typeof PARAM_IN\n//   | typeof PARAM_RETURN\n//   | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n  stacks: Array<ParamKind> = [];\n  enter(flags: ParamKind) {\n    this.stacks.push(flags);\n  }\n\n  exit() {\n    this.stacks.pop();\n  }\n\n  currentFlags(): ParamKind {\n    return this.stacks[this.stacks.length - 1];\n  }\n\n  get hasAwait(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n  }\n\n  get hasYield(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n  }\n\n  get hasReturn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n  }\n\n  get hasIn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n  }\n}\n\nexport function functionFlags(\n  isAsync: boolean,\n  isGenerator: boolean,\n): ParamKind {\n  return (\n    (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n    (isGenerator ? ParamKind.PARAM_YIELD : 0)\n  );\n}\n","import type { Position } from \"../util/location.ts\";\nimport {\n  tokenIsLiteralPropertyName,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport Tokenizer from \"../tokenizer/index.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type {\n  EstreePropertyDefinition,\n  Node,\n  ObjectMethod,\n  ObjectProperty,\n  PrivateName,\n} from \"../types.d.ts\";\nimport { hasNewLine } from \"../util/whitespace.ts\";\nimport { isIdentifierChar } from \"../util/identifier.ts\";\nimport ClassScopeHandler from \"../util/class-scope.ts\";\nimport ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport { ScopeFlag } from \"../util/scopeflags.ts\";\nimport ProductionParameterHandler, {\n  ParamKind,\n} from \"../util/production-parameter.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nimport type ScopeHandler from \"../util/scope.ts\";\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n  node: Node;\n  error: Error;\n  thrown: Thrown;\n  aborted: Aborted;\n  failState: FailState;\n};\n\n// ## Parser utilities\n\nexport default abstract class UtilParser extends Tokenizer {\n  // Forward-declaration: defined in parser/index.js\n  abstract getScopeHandler(): new (...args: any) => ScopeHandler;\n\n  addExtra(\n    node: Partial<Node>,\n    key: string,\n    value: any,\n    enumerable: boolean = true,\n  ): void {\n    if (!node) return;\n\n    let { extra } = node;\n    if (extra == null) {\n      extra = {};\n      node.extra = extra;\n    }\n\n    if (enumerable) {\n      extra[key] = value;\n    } else {\n      Object.defineProperty(extra, key, { enumerable, value });\n    }\n  }\n\n  // Tests whether parsed token is a contextual keyword.\n\n  isContextual(token: TokenType): boolean {\n    return this.state.type === token && !this.state.containsEsc;\n  }\n\n  isUnparsedContextual(nameStart: number, name: string): boolean {\n    const nameEnd = nameStart + name.length;\n    if (this.input.slice(nameStart, nameEnd) === name) {\n      const nextCh = this.input.charCodeAt(nameEnd);\n      return !(\n        isIdentifierChar(nextCh) ||\n        // check if `nextCh is between 0xd800 - 0xdbff,\n        // if `nextCh` is NaN, `NaN & 0xfc00` is 0, the function\n        // returns true\n        (nextCh & 0xfc00) === 0xd800\n      );\n    }\n    return false;\n  }\n\n  isLookaheadContextual(name: string): boolean {\n    const next = this.nextTokenStart();\n    return this.isUnparsedContextual(next, name);\n  }\n\n  // Consumes contextual keyword if possible.\n\n  eatContextual(token: TokenType): boolean {\n    if (this.isContextual(token)) {\n      this.next();\n      return true;\n    }\n    return false;\n  }\n\n  // Asserts that following token is given contextual keyword.\n\n  expectContextual(\n    token: TokenType,\n    toParseError?: ParseErrorConstructor<any>,\n  ): void {\n    if (!this.eatContextual(token)) {\n      if (toParseError != null) {\n        throw this.raise(toParseError, this.state.startLoc);\n      }\n      this.unexpected(null, token);\n    }\n  }\n\n  // Test whether a semicolon can be inserted at the current position.\n\n  canInsertSemicolon(): boolean {\n    return (\n      this.match(tt.eof) ||\n      this.match(tt.braceR) ||\n      this.hasPrecedingLineBreak()\n    );\n  }\n\n  hasPrecedingLineBreak(): boolean {\n    return hasNewLine(\n      this.input,\n      this.offsetToSourcePos(this.state.lastTokEndLoc.index),\n      this.state.start,\n    );\n  }\n\n  hasFollowingLineBreak(): boolean {\n    return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n  }\n\n  isLineTerminator(): boolean {\n    return this.eat(tt.semi) || this.canInsertSemicolon();\n  }\n\n  // Consume a semicolon, or, failing that, see if we are allowed to\n  // pretend that there is a semicolon at this position.\n\n  semicolon(allowAsi: boolean = true): void {\n    if (allowAsi ? this.isLineTerminator() : this.eat(tt.semi)) return;\n    this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);\n  }\n\n  // Expect a token of a given type. If found, consume it, otherwise,\n  // raise an unexpected token error at given pos.\n\n  expect(type: TokenType, loc?: Position | null): void {\n    if (!this.eat(type)) {\n      this.unexpected(loc, type);\n    }\n  }\n\n  // tryParse will clone parser state.\n  // It is expensive and should be used with cautions\n  tryParse<T extends Node | ReadonlyArray<Node>>(\n    fn: (abort: (node?: T) => never) => T,\n    oldState: State = this.state.clone(),\n  ):\n    | TryParse<T, null, false, false, null>\n    | TryParse<T | null, ParseError<any>, boolean, false, State>\n    | TryParse<T | null, null, false, true, State> {\n    const abortSignal: {\n      node: T | null;\n    } = { node: null };\n    try {\n      const node = fn((node = null) => {\n        abortSignal.node = node;\n        // eslint-disable-next-line @typescript-eslint/only-throw-error\n        throw abortSignal;\n      });\n      if (this.state.errors.length > oldState.errors.length) {\n        const failState = this.state;\n        this.state = oldState;\n        // tokensLength should be preserved during error recovery mode\n        // since the parser does not halt and will instead parse the\n        // remaining tokens\n        this.state.tokensLength = failState.tokensLength;\n        return {\n          node,\n          error: failState.errors[oldState.errors.length],\n          thrown: false,\n          aborted: false,\n          failState,\n        };\n      }\n\n      return {\n        node,\n        error: null,\n        thrown: false,\n        aborted: false,\n        failState: null,\n      };\n    } catch (error) {\n      const failState = this.state;\n      this.state = oldState;\n      if (error instanceof SyntaxError) {\n        // @ts-expect-error casting general syntax error to parse error\n        return { node: null, error, thrown: true, aborted: false, failState };\n      }\n      if (error === abortSignal) {\n        return {\n          node: abortSignal.node,\n          error: null,\n          thrown: false,\n          aborted: true,\n          failState,\n        };\n      }\n\n      throw error;\n    }\n  }\n\n  checkExpressionErrors(\n    refExpressionErrors: ExpressionErrors | undefined | null,\n    andThrow: boolean,\n  ) {\n    if (!refExpressionErrors) return false;\n    const {\n      shorthandAssignLoc,\n      doubleProtoLoc,\n      privateKeyLoc,\n      optionalParametersLoc,\n    } = refExpressionErrors;\n\n    const hasErrors =\n      !!shorthandAssignLoc ||\n      !!doubleProtoLoc ||\n      !!optionalParametersLoc ||\n      !!privateKeyLoc;\n\n    if (!andThrow) {\n      return hasErrors;\n    }\n\n    if (shorthandAssignLoc != null) {\n      this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n    }\n\n    if (doubleProtoLoc != null) {\n      this.raise(Errors.DuplicateProto, doubleProtoLoc);\n    }\n\n    if (privateKeyLoc != null) {\n      this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n    }\n\n    if (optionalParametersLoc != null) {\n      this.unexpected(optionalParametersLoc);\n    }\n  }\n\n  /**\n   * Test if current token is a literal property name\n   * https://tc39.es/ecma262/#prod-LiteralPropertyName\n   * LiteralPropertyName:\n   *   IdentifierName\n   *   StringLiteral\n   *   NumericLiteral\n   *   BigIntLiteral\n   */\n  isLiteralPropertyName(): boolean {\n    return tokenIsLiteralPropertyName(this.state.type);\n  }\n\n  /**\n   * Test if given node is a PrivateName\n   * will be overridden in ESTree plugin\n   */\n  isPrivateName(node: Node): node is PrivateName {\n    return node.type === \"PrivateName\";\n  }\n\n  /**\n   * Return the string value of a given private name\n   * WITHOUT `#`\n   * @see {@link https://tc39.es/ecma262/#sec-static-semantics-stringvalue}\n   */\n  getPrivateNameSV(node: PrivateName): string {\n    return node.id.name;\n  }\n\n  /**\n   * Return whether the given node is a member/optional chain that\n   * contains a private name as its property\n   * It is overridden in ESTree plugin\n   */\n  hasPropertyAsPrivateName(node: Node): boolean {\n    return (\n      (node.type === \"MemberExpression\" ||\n        node.type === \"OptionalMemberExpression\") &&\n      this.isPrivateName(node.property)\n    );\n  }\n\n  isObjectProperty(\n    node: Node,\n  ): node is ObjectProperty | EstreePropertyDefinition {\n    return node.type === \"ObjectProperty\";\n  }\n\n  isObjectMethod(node: Node): node is ObjectMethod {\n    return node.type === \"ObjectMethod\";\n  }\n\n  initializeScopes(\n    this: Parser,\n    inModule: boolean = this.options.sourceType === \"module\",\n  ): () => void {\n    // Initialize state\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n\n    const oldExportedIdentifiers = this.exportedIdentifiers;\n    this.exportedIdentifiers = new Set();\n\n    // initialize scopes\n    const oldInModule = this.inModule;\n    this.inModule = inModule;\n\n    const oldScope = this.scope;\n    const ScopeHandler = this.getScopeHandler();\n    this.scope = new ScopeHandler(this, inModule);\n\n    const oldProdParam = this.prodParam;\n    this.prodParam = new ProductionParameterHandler();\n\n    const oldClassScope = this.classScope;\n    this.classScope = new ClassScopeHandler(this);\n\n    const oldExpressionScope = this.expressionScope;\n    this.expressionScope = new ExpressionScopeHandler(this);\n\n    return () => {\n      // Revert state\n      this.state.labels = oldLabels;\n      this.exportedIdentifiers = oldExportedIdentifiers;\n\n      // Revert scopes\n      this.inModule = oldInModule;\n      this.scope = oldScope;\n      this.prodParam = oldProdParam;\n      this.classScope = oldClassScope;\n      this.expressionScope = oldExpressionScope;\n    };\n  }\n\n  enterInitialScopes() {\n    let paramFlags = ParamKind.PARAM;\n    if (this.inModule) {\n      paramFlags |= ParamKind.PARAM_AWAIT;\n    }\n    this.scope.enter(ScopeFlag.PROGRAM);\n    this.prodParam.enter(paramFlags);\n  }\n\n  checkDestructuringPrivate(refExpressionErrors: ExpressionErrors) {\n    const { privateKeyLoc } = refExpressionErrors;\n    if (privateKeyLoc !== null) {\n      this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n    }\n  }\n}\n\n/**\n * The ExpressionErrors is a context struct used to track ambiguous patterns\n * When we are sure the parsed pattern is a RHS, which means it is not a pattern,\n * we will throw on this position on invalid assign syntax, otherwise it will be reset to -1\n *\n * Types of ExpressionErrors:\n *\n * - **shorthandAssignLoc**: track initializer `=` position\n * - **doubleProtoLoc**: track the duplicate `__proto__` key position\n * - **privateKey**: track private key `#p` position\n * - **optionalParametersLoc**: track the optional parameter (`?`).\n * It's only used by typescript and flow plugins\n */\nexport class ExpressionErrors {\n  shorthandAssignLoc: Position | undefined | null = null;\n  doubleProtoLoc: Position | undefined | null = null;\n  privateKeyLoc: Position | undefined | null = null;\n  optionalParametersLoc: Position | undefined | null = null;\n}\n","import UtilParser from \"./util.ts\";\nimport { SourceLocation, type Position } from \"../util/location.ts\";\nimport type { Comment, Node as NodeType, NodeBase } from \"../types.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n  constructor(parser: UtilParser, pos: number, loc: Position) {\n    this.start = pos;\n    this.end = 0;\n    this.loc = new SourceLocation(loc);\n    if (parser?.optionFlags & OptionFlags.Ranges) this.range = [pos, 0];\n    if (parser?.filename) this.loc.filename = parser.filename;\n  }\n\n  type: string = \"\";\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n  declare range: [number, number];\n  declare leadingComments: Array<Comment>;\n  declare trailingComments: Array<Comment>;\n  declare innerComments: Array<Comment>;\n  declare extra: {\n    [key: string]: any;\n  };\n}\nconst NodePrototype = Node.prototype;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error __clone is not defined in Node prototype\n  NodePrototype.__clone = function (): Node {\n    const newNode = new Node(undefined, this.start, this.loc.start);\n    const keys = Object.keys(this) as (keyof Node)[];\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      // Do not clone comments that are already attached to the node\n      if (\n        key !== \"leadingComments\" &&\n        key !== \"trailingComments\" &&\n        key !== \"innerComments\"\n      ) {\n        // @ts-expect-error cloning this to newNode\n        newNode[key] = this[key];\n      }\n    }\n\n    return newNode;\n  };\n}\n\nfunction clonePlaceholder(node: any): any {\n  return cloneIdentifier(node);\n}\n\nexport function cloneIdentifier(node: any): any {\n  // We don't need to clone `typeAnnotations` and `optional`: because\n  // cloneIdentifier is only used in object shorthand and named import/export.\n  // Neither of them allow type annotations after the identifier or optional identifier\n  const { type, start, end, loc, range, extra, name } = node;\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  cloned.extra = extra;\n  cloned.name = name;\n  if (type === \"Placeholder\") {\n    cloned.expectedNode = node.expectedNode;\n  }\n  return cloned;\n}\n\nexport function cloneStringLiteral(node: any): any {\n  const { type, start, end, loc, range, extra } = node;\n  if (type === \"Placeholder\") {\n    return clonePlaceholder(node);\n  }\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  if (node.raw !== undefined) {\n    // estree set node.raw instead of node.extra\n    cloned.raw = node.raw;\n  } else {\n    cloned.extra = extra;\n  }\n  cloned.value = node.value;\n  return cloned;\n}\n\nexport type Undone<T extends NodeType> = Omit<T, \"type\">;\n\nexport abstract class NodeUtils extends UtilParser {\n  startNode<T extends NodeType = never>(): Undone<T> {\n    const loc = this.state.startLoc;\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  startNodeAt<T extends NodeType = never>(loc: Position): Undone<T> {\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  /** Start a new node with a previous node's location. */\n  startNodeAtNode<T extends NodeType = never>(\n    type: Undone<NodeType>,\n  ): Undone<T> {\n    return this.startNodeAt(type.loc.start);\n  }\n\n  // Finish an AST node, adding `type` and `end` properties.\n\n  finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n    return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n  }\n\n  // Finish node at given position\n\n  finishNodeAt<T extends NodeType>(\n    node: Omit<T, \"type\">,\n    type: T[\"type\"],\n    endLoc: Position,\n  ): T {\n    if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n      throw new Error(\n        \"Do not call finishNode*() twice on the same node.\" +\n          \" Instead use resetEndLocation() or change type directly.\",\n      );\n    }\n    (node as T).type = type;\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[1] = endLoc.index;\n    if (this.optionFlags & OptionFlags.AttachComment) {\n      this.processComment(node as T);\n    }\n    return node as T;\n  }\n\n  resetStartLocation(node: NodeBase, startLoc: Position): void {\n    node.start = startLoc.index;\n    node.loc.start = startLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[0] = startLoc.index;\n  }\n\n  resetEndLocation(\n    node: NodeBase,\n    endLoc: Position = this.state.lastTokEndLoc,\n  ): void {\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[1] = endLoc.index;\n  }\n\n  /**\n   * Reset the start location of node to the start location of locationNode\n   */\n  resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n    this.resetStartLocation(node, locationNode.loc.start);\n  }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeyword,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLiteralPropertyName,\n  tokenLabelName,\n  tt,\n  type TokenType,\n  tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport { cloneIdentifier, type Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\n\nconst reservedTypes = new Set([\n  \"_\",\n  \"any\",\n  \"bool\",\n  \"boolean\",\n  \"empty\",\n  \"extends\",\n  \"false\",\n  \"interface\",\n  \"mixed\",\n  \"null\",\n  \"number\",\n  \"static\",\n  \"string\",\n  \"true\",\n  \"typeof\",\n  \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n  AmbiguousConditionalArrow:\n    \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n  AmbiguousDeclareModuleKind:\n    \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n  // TODO: When we get proper string enums in typescript make this ReservedType.\n  // Not really worth it to do the whole $Values dance with reservedTypes set.\n  AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Cannot overwrite reserved type ${reservedType}.`,\n  DeclareClassElement:\n    \"The `declare` modifier can only appear on class fields.\",\n  DeclareClassFieldInitializer:\n    \"Initializers are not allowed in fields with the `declare` modifier.\",\n  DuplicateDeclareModuleExports:\n    \"Duplicate `declare module.exports` statement.\",\n  EnumBooleanMemberNotInitialized: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n  EnumDuplicateMemberName: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n  EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n    `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n  EnumInvalidExplicitType: ({\n    invalidEnumType,\n    enumName,\n  }: {\n    invalidEnumType: string;\n    enumName: string;\n  }) =>\n    `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidExplicitTypeUnknownSupplied: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n  // TODO: When moving to typescript, we should either have each of the\n  // following errors only accept the specific strings they want:\n  //\n  // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n  // ...SymbolType: explicitType: \"symbol\"\n  // ...UnknownType: explicitType: null\n  //\n  // Or, alternatively, merge these three errors together into one\n  // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n  // without alteration, and then just have its message change based on the\n  // explicitType.\n  EnumInvalidMemberInitializerPrimaryType: ({\n    enumName,\n    memberName,\n    explicitType,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n  EnumInvalidMemberInitializerSymbolType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberInitializerUnknownType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberName: ({\n    enumName,\n    memberName,\n    suggestion,\n  }: {\n    enumName: string;\n    memberName: string;\n    suggestion: string;\n  }) =>\n    `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n  EnumNumberMemberNotInitialized: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n  }) =>\n    `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n  EnumStringMemberInconsistentlyInitialized: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n  GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n  ImportTypeShorthandOnlyInPureImport:\n    \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n  InexactInsideExact:\n    \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n  InexactInsideNonObject:\n    \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n  InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n  InvalidNonTypeImportInDeclareModule:\n    \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n  MissingTypeParamDefault:\n    \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n  NestedDeclareModule:\n    \"`declare module` cannot be used inside another `declare module`.\",\n  NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n  PatternIsOptional: {\n    message:\n      \"A binding pattern parameter cannot be optional in an implementation signature.\",\n    // For consistency in TypeScript and Flow error codes\n    ...(!process.env.BABEL_8_BREAKING\n      ? { reasonCode: \"OptionalBindingPattern\" }\n      : {}),\n  },\n  SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n  SpreadVariance: \"Spread properties cannot have variance.\",\n  ThisParamAnnotationRequired:\n    \"A type annotation is required for the `this` parameter.\",\n  ThisParamBannedInConstructor:\n    \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n  ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n  ThisParamMustBeFirst:\n    \"The `this` parameter must be the first function parameter.\",\n  ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n  TypeBeforeInitializer:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeCastInPattern:\n    \"The type cast expression is expected to be wrapped with parenthesis.\",\n  UnexpectedExplicitInexactInObject:\n    \"Explicit inexact syntax must appear at the end of an inexact object.\",\n  UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Unexpected reserved type ${reservedType}.`,\n  UnexpectedReservedUnderscore:\n    \"`_` is only allowed as a type argument to call or new.\",\n  UnexpectedSpaceBetweenModuloChecks:\n    \"Spaces between `%` and `checks` are not allowed here.\",\n  UnexpectedSpreadType:\n    \"Spread operator cannot appear in class or interface definitions.\",\n  UnexpectedSubtractionOperand:\n    'Unexpected token, expected \"number\" or \"bigint\".',\n  UnexpectedTokenAfterTypeParameter:\n    \"Expected an arrow function after this type parameter declaration.\",\n  UnexpectedTypeParameterBeforeAsyncArrowFunction:\n    \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n  UnsupportedDeclareExportKind: ({\n    unsupportedExportKind,\n    suggestion,\n  }: {\n    unsupportedExportKind: string;\n    suggestion: string;\n  }) =>\n    `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n  UnsupportedStatementInDeclareModule:\n    \"Only declares and type imports are allowed inside declare module.\",\n  UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n  return (\n    bodyElement.type === \"DeclareExportAllDeclaration\" ||\n    (bodyElement.type === \"DeclareExportDeclaration\" &&\n      (!bodyElement.declaration ||\n        (bodyElement.declaration.type !== \"TypeAlias\" &&\n          bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n  );\n}\n\nfunction hasTypeImportKind(\n  node: Undone<N.ImportSpecifier | N.ImportDeclaration>,\n): boolean {\n  return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n  const: \"declare export var\",\n  let: \"declare export var\",\n  type: \"export type\",\n  interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n  list: T[],\n  test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n  const list1: T[] = [];\n  const list2: T[] = [];\n  for (let i = 0; i < list.length; i++) {\n    (test(list[i], i, list) ? list1 : list2).push(list[i]);\n  }\n  return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n  enumName: string;\n  explicitType: EnumExplicitType;\n  memberName: string;\n};\n\ntype EnumMemberInit =\n  | {\n      type: \"number\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"string\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"boolean\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"invalid\";\n      loc: Position;\n    }\n  | {\n      type: \"none\";\n      loc: Position;\n    };\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class FlowParserMixin extends superClass implements Parser {\n    // The value of the @flow/@noflow pragma. Initially undefined, transitions\n    // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n    // past the initial comment.\n    flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n    getScopeHandler(): new (...args: any) => FlowScopeHandler {\n      return FlowScopeHandler;\n    }\n\n    shouldParseTypes(): boolean {\n      return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n    }\n\n    finishToken(type: TokenType, val: any): void {\n      if (\n        type !== tt.string &&\n        type !== tt.semi &&\n        type !== tt.interpreterDirective\n      ) {\n        if (this.flowPragma === undefined) {\n          this.flowPragma = null;\n        }\n      }\n      super.finishToken(type, val);\n    }\n\n    addComment(comment: N.Comment): void {\n      if (this.flowPragma === undefined) {\n        // Try to parse a flow pragma.\n        const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n        if (!matches) {\n          // do nothing\n        } else if (matches[1] === \"flow\") {\n          this.flowPragma = \"flow\";\n        } else if (matches[1] === \"noflow\") {\n          this.flowPragma = \"noflow\";\n        } else {\n          throw new Error(\"Unexpected flow pragma\");\n        }\n      }\n      super.addComment(comment);\n    }\n\n    flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tok || tt.colon);\n\n      const type = this.flowParseType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParsePredicate(): N.FlowPredicate {\n      const node = this.startNode<N.FlowPredicate>();\n      const moduloLoc = this.state.startLoc;\n      this.next(); // eat `%`\n      this.expectContextual(tt._checks);\n      // Force '%' and 'checks' to be adjacent\n      if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n        this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n      }\n      if (this.eat(tt.parenL)) {\n        node.value = super.parseExpression();\n        this.expect(tt.parenR);\n        return this.finishNode(node, \"DeclaredPredicate\");\n      } else {\n        return this.finishNode(node, \"InferredPredicate\");\n      }\n    }\n\n    flowParseTypeAndPredicateInitialiser(): [\n      N.FlowType | undefined | null,\n      N.FlowPredicate | undefined | null,\n    ] {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tt.colon);\n      let type = null;\n      let predicate = null;\n      if (this.match(tt.modulo)) {\n        this.state.inType = oldInType;\n        predicate = this.flowParsePredicate();\n      } else {\n        type = this.flowParseType();\n        this.state.inType = oldInType;\n        if (this.match(tt.modulo)) {\n          predicate = this.flowParsePredicate();\n        }\n      }\n      return [type, predicate];\n    }\n\n    flowParseDeclareClass(\n      node: Undone<N.FlowDeclareClass>,\n    ): N.FlowDeclareClass {\n      this.next();\n      this.flowParseInterfaceish(node, /*isClass*/ true);\n      return this.finishNode(node, \"DeclareClass\");\n    }\n\n    flowParseDeclareFunction(\n      node: Undone<N.FlowDeclareFunction>,\n    ): N.FlowDeclareFunction {\n      this.next();\n\n      const id = (node.id = this.parseIdentifier());\n\n      const typeNode = this.startNode<N.FlowFunctionTypeAnnotation>();\n      const typeContainer = this.startNode<N.TypeAnnotation>();\n\n      if (this.match(tt.lt)) {\n        typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        typeNode.typeParameters = null;\n      }\n\n      this.expect(tt.parenL);\n      const tmp = this.flowParseFunctionTypeParams();\n      typeNode.params = tmp.params;\n      typeNode.rest = tmp.rest;\n      typeNode.this = tmp._this;\n      this.expect(tt.parenR);\n\n      [typeNode.returnType, node.predicate] =\n        this.flowParseTypeAndPredicateInitialiser();\n\n      typeContainer.typeAnnotation = this.finishNode(\n        typeNode,\n        \"FunctionTypeAnnotation\",\n      );\n\n      id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n      this.resetEndLocation(id);\n      this.semicolon();\n\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_FLOW_DECLARE_FN,\n        node.id.loc.start,\n      );\n\n      return this.finishNode(node, \"DeclareFunction\");\n    }\n\n    flowParseDeclare(\n      node: Undone<N.FlowDeclare>,\n      insideModule?: boolean,\n    ): N.FlowDeclare {\n      if (this.match(tt._class)) {\n        return this.flowParseDeclareClass(node);\n      } else if (this.match(tt._function)) {\n        return this.flowParseDeclareFunction(node);\n      } else if (this.match(tt._var)) {\n        return this.flowParseDeclareVariable(node);\n      } else if (this.eatContextual(tt._module)) {\n        if (this.match(tt.dot)) {\n          return this.flowParseDeclareModuleExports(node);\n        } else {\n          if (insideModule) {\n            this.raise(\n              FlowErrors.NestedDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          return this.flowParseDeclareModule(node);\n        }\n      } else if (this.isContextual(tt._type)) {\n        return this.flowParseDeclareTypeAlias(node);\n      } else if (this.isContextual(tt._opaque)) {\n        return this.flowParseDeclareOpaqueType(node);\n      } else if (this.isContextual(tt._interface)) {\n        return this.flowParseDeclareInterface(node);\n      } else if (this.match(tt._export)) {\n        return this.flowParseDeclareExportDeclaration(node, insideModule);\n      } else {\n        this.unexpected();\n      }\n    }\n\n    flowParseDeclareVariable(\n      node: Undone<N.FlowDeclareVariable>,\n    ): N.FlowDeclareVariable {\n      this.next();\n      node.id = this.flowParseTypeAnnotatableIdentifier(\n        /*allowPrimitiveOverride*/ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_VAR,\n        node.id.loc.start,\n      );\n      this.semicolon();\n      return this.finishNode(node, \"DeclareVariable\");\n    }\n\n    flowParseDeclareModule(\n      node: Undone<N.FlowDeclareModule>,\n    ): N.FlowDeclareModule {\n      this.scope.enter(ScopeFlag.OTHER);\n\n      if (this.match(tt.string)) {\n        node.id = super.parseExprAtom();\n      } else {\n        node.id = this.parseIdentifier();\n      }\n\n      const bodyNode = (node.body = this.startNode<N.BlockStatement>());\n      // @ts-expect-error refine typings\n      const body = (bodyNode.body = []);\n      this.expect(tt.braceL);\n      while (!this.match(tt.braceR)) {\n        let bodyNode = this.startNode<N.ImportDeclaration>();\n\n        if (this.match(tt._import)) {\n          this.next();\n          if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n            this.raise(\n              FlowErrors.InvalidNonTypeImportInDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          super.parseImport(bodyNode);\n        } else {\n          this.expectContextual(\n            tt._declare,\n            FlowErrors.UnsupportedStatementInDeclareModule,\n          );\n          // @ts-expect-error refine typings\n          bodyNode = this.flowParseDeclare(bodyNode, true);\n        }\n\n        body.push(bodyNode);\n      }\n\n      this.scope.exit();\n\n      this.expect(tt.braceR);\n\n      this.finishNode(bodyNode, \"BlockStatement\");\n\n      let kind: \"CommonJS\" | \"ES\" | null = null;\n      let hasModuleExport = false;\n      body.forEach(bodyElement => {\n        if (isEsModuleType(bodyElement)) {\n          if (kind === \"CommonJS\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"ES\";\n        } else if (bodyElement.type === \"DeclareModuleExports\") {\n          if (hasModuleExport) {\n            this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n          }\n          if (kind === \"ES\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"CommonJS\";\n          hasModuleExport = true;\n        }\n      });\n\n      node.kind = kind || \"CommonJS\";\n      return this.finishNode(node, \"DeclareModule\");\n    }\n\n    flowParseDeclareExportDeclaration(\n      node: Undone<N.FlowDeclareExportDeclaration>,\n      insideModule?: boolean | null,\n    ): N.FlowDeclareExportDeclaration {\n      this.expect(tt._export);\n\n      if (this.eat(tt._default)) {\n        if (this.match(tt._function) || this.match(tt._class)) {\n          // declare export default class ...\n          // declare export default function ...\n          node.declaration = this.flowParseDeclare(this.startNode());\n        } else {\n          // declare export default [type];\n          node.declaration = this.flowParseType();\n          this.semicolon();\n        }\n        node.default = true;\n\n        return this.finishNode(node, \"DeclareExportDeclaration\");\n      } else {\n        if (\n          this.match(tt._const) ||\n          this.isLet() ||\n          ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n            !insideModule)\n        ) {\n          const label = this.state.value as\n            | \"const\"\n            | \"let\"\n            | \"type\"\n            | \"interface\";\n          throw this.raise(\n            FlowErrors.UnsupportedDeclareExportKind,\n            this.state.startLoc,\n            {\n              unsupportedExportKind: label,\n              suggestion: exportSuggestions[label],\n            },\n          );\n        }\n\n        if (\n          this.match(tt._var) || // declare export var ...\n          this.match(tt._function) || // declare export function ...\n          this.match(tt._class) || // declare export class ...\n          this.isContextual(tt._opaque) // declare export opaque ..\n        ) {\n          node.declaration = this.flowParseDeclare(this.startNode());\n          node.default = false;\n\n          return this.finishNode(node, \"DeclareExportDeclaration\");\n        } else if (\n          this.match(tt.star) || // declare export * from ''\n          this.match(tt.braceL) || // declare export {} ...\n          this.isContextual(tt._interface) || // declare export interface ...\n          this.isContextual(tt._type) || // declare export type ...\n          this.isContextual(tt._opaque) // declare export opaque type ...\n        ) {\n          node = this.parseExport(\n            node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n            /* decorators */ null,\n          );\n          if (node.type === \"ExportNamedDeclaration\") {\n            node.type = \"ExportDeclaration\";\n            node.default = false;\n            delete node.exportKind;\n          }\n\n          node.type = \"Declare\" + node.type;\n\n          return node as N.FlowDeclareExportDeclaration;\n        }\n      }\n\n      this.unexpected();\n    }\n\n    flowParseDeclareModuleExports(\n      node: Undone<N.FlowDeclareModuleExports>,\n    ): N.FlowDeclareModuleExports {\n      this.next();\n      this.expectContextual(tt._exports);\n      node.typeAnnotation = this.flowParseTypeAnnotation();\n      this.semicolon();\n\n      return this.finishNode(node, \"DeclareModuleExports\");\n    }\n\n    flowParseDeclareTypeAlias(\n      node: Undone<N.FlowDeclareTypeAlias>,\n    ): N.FlowDeclareTypeAlias {\n      this.next();\n      const finished = this.flowParseTypeAlias(\n        node,\n      ) as unknown as N.FlowDeclareTypeAlias;\n      // Don't do finishNode as we don't want to process comments twice\n      finished.type = \"DeclareTypeAlias\";\n      return finished;\n    }\n\n    flowParseDeclareOpaqueType(\n      node: Undone<N.FlowDeclareOpaqueType>,\n    ): N.FlowDeclareOpaqueType {\n      this.next();\n      const finished = this.flowParseOpaqueType(\n        node,\n        true,\n      ) as unknown as N.FlowDeclareOpaqueType;\n      // Don't do finishNode as we don't want to process comments twice\n      finished.type = \"DeclareOpaqueType\";\n      return finished;\n    }\n\n    flowParseDeclareInterface(\n      node: Undone<N.FlowDeclareInterface>,\n    ): N.FlowDeclareInterface {\n      this.next();\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"DeclareInterface\");\n    }\n\n    // Interfaces\n\n    flowParseInterfaceish(node: Undone<N.FlowDeclare>, isClass: boolean): void {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ !isClass,\n        /* declaration */ true,\n      );\n\n      this.scope.declareName(\n        node.id.name,\n        isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.extends = [];\n\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (!isClass && this.eat(tt.comma));\n      }\n\n      if (isClass) {\n        node.implements = [];\n        node.mixins = [];\n\n        if (this.eatContextual(tt._mixins)) {\n          do {\n            node.mixins.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n\n        if (this.eatContextual(tt._implements)) {\n          do {\n            node.implements.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: isClass,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: isClass,\n        allowInexact: false,\n      });\n    }\n\n    flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n      const node = this.startNode<N.FlowInterfaceExtends>();\n\n      node.id = this.flowParseQualifiedTypeIdentifier();\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      } else {\n        node.typeParameters = null;\n      }\n\n      return this.finishNode(node, \"InterfaceExtends\");\n    }\n\n    flowParseInterface(node: Undone<N.FlowInterface>): N.FlowInterface {\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"InterfaceDeclaration\");\n    }\n\n    checkNotUnderscore(word: string) {\n      if (word === \"_\") {\n        this.raise(\n          FlowErrors.UnexpectedReservedUnderscore,\n          this.state.startLoc,\n        );\n      }\n    }\n\n    checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n      if (!reservedTypes.has(word)) return;\n\n      this.raise(\n        declaration\n          ? FlowErrors.AssignReservedType\n          : FlowErrors.UnexpectedReservedType,\n        startLoc,\n        {\n          reservedType: word,\n        },\n      );\n    }\n\n    flowParseRestrictedIdentifier(\n      liberal?: boolean,\n      declaration?: boolean,\n    ): N.Identifier {\n      this.checkReservedType(\n        this.state.value,\n        this.state.startLoc,\n        declaration,\n      );\n      return this.parseIdentifier(liberal);\n    }\n\n    // Type aliases\n\n    flowParseTypeAlias(node: Undone<N.FlowTypeAlias>): N.FlowTypeAlias {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ false,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.right = this.flowParseTypeInitialiser(tt.eq);\n      this.semicolon();\n\n      return this.finishNode(node, \"TypeAlias\");\n    }\n\n    flowParseOpaqueType(\n      node: Undone<N.FlowOpaqueType>,\n      declare: boolean,\n    ): N.FlowOpaqueType {\n      this.expectContextual(tt._type);\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ true,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      // Parse the supertype\n      node.supertype = null;\n      if (this.match(tt.colon)) {\n        node.supertype = this.flowParseTypeInitialiser(tt.colon);\n      }\n\n      node.impltype = null;\n      if (!declare) {\n        node.impltype = this.flowParseTypeInitialiser(tt.eq);\n      }\n      this.semicolon();\n\n      return this.finishNode(node, \"OpaqueType\");\n    }\n\n    // Type annotations\n\n    flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n      const nodeStartLoc = this.state.startLoc;\n\n      const node = this.startNode<N.TypeParameter>();\n\n      const variance = this.flowParseVariance();\n\n      const ident = this.flowParseTypeAnnotatableIdentifier();\n      node.name = ident.name;\n      // @ts-expect-error migrate to Babel types\n      node.variance = variance;\n      // @ts-expect-error migrate to Babel types\n      node.bound = ident.typeAnnotation;\n\n      if (this.match(tt.eq)) {\n        this.eat(tt.eq);\n        // @ts-expect-error migrate to Babel types\n        node.default = this.flowParseType();\n      } else {\n        if (requireDefault) {\n          this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n        }\n      }\n\n      return this.finishNode(node, \"TypeParameter\");\n    }\n\n    flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n      const oldInType = this.state.inType;\n      const node = this.startNode<N.TypeParameterDeclaration>();\n      node.params = [];\n\n      this.state.inType = true;\n\n      // istanbul ignore else: this condition is already checked at all call sites\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      let defaultRequired = false;\n\n      do {\n        const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n        node.params.push(typeParameter);\n\n        if (typeParameter.default) {\n          defaultRequired = true;\n        }\n\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      } while (!this.match(tt.gt));\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterDeclaration\");\n    }\n\n    // Parse in top level normal context if we are in a JSX context\n    flowInTopLevelContext<T>(cb: () => T): T {\n      if (this.curContext() !== tc.brace) {\n        const oldContext = this.state.context;\n        this.state.context = [oldContext[0]];\n        try {\n          return cb();\n        } finally {\n          this.state.context = oldContext;\n        }\n      } else {\n        return cb();\n      }\n    }\n\n    // Used when parsing type arguments from ES or JSX productions, where the first token\n    // has been created without state.inType. Thus we need to re-scan the lt token.\n    flowParseTypeParameterInstantiationInExpression():\n      | N.TypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.flowParseTypeParameterInstantiation();\n    }\n\n    flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n\n      this.state.inType = true;\n      node.params = [];\n      this.flowInTopLevelContext(() => {\n        this.expect(tt.lt);\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = false;\n        while (!this.match(tt.gt)) {\n          node.params.push(this.flowParseType());\n          if (!this.match(tt.gt)) {\n            this.expect(tt.comma);\n          }\n        }\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      });\n\n      this.state.inType = oldInType;\n      if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n      if (this.reScan_lt() !== tt.lt) return;\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n      node.params = [];\n\n      this.state.inType = true;\n\n      this.expect(tt.lt);\n      while (!this.match(tt.gt)) {\n        node.params.push(this.flowParseTypeOrImplicitInstantiation());\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      }\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseInterfaceType(): N.FlowInterfaceType {\n      const node = this.startNode<N.FlowInterfaceType>();\n      this.expectContextual(tt._interface);\n\n      node.extends = [];\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (this.eat(tt.comma));\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: false,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: false,\n        allowInexact: false,\n      });\n\n      return this.finishNode(node, \"InterfaceTypeAnnotation\");\n    }\n\n    flowParseObjectPropertyKey(): N.Expression {\n      return this.match(tt.num) || this.match(tt.string)\n        ? super.parseExprAtom()\n        : this.parseIdentifier(true);\n    }\n\n    flowParseObjectTypeIndexer(\n      node: Undone<N.FlowObjectTypeIndexer>,\n      isStatic: boolean,\n      variance?: N.FlowVariance | null,\n    ): N.FlowObjectTypeIndexer {\n      node.static = isStatic;\n\n      // Note: bracketL has already been consumed\n      if (this.lookahead().type === tt.colon) {\n        node.id = this.flowParseObjectPropertyKey();\n        node.key = this.flowParseTypeInitialiser();\n      } else {\n        node.id = null;\n        node.key = this.flowParseType();\n      }\n      this.expect(tt.bracketR);\n      node.value = this.flowParseTypeInitialiser();\n      node.variance = variance;\n\n      return this.finishNode(node, \"ObjectTypeIndexer\");\n    }\n\n    flowParseObjectTypeInternalSlot(\n      node: Undone<N.FlowObjectTypeInternalSlot>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeInternalSlot {\n      node.static = isStatic;\n      // Note: both bracketL have already been consumed\n      node.id = this.flowParseObjectPropertyKey();\n      this.expect(tt.bracketR);\n      this.expect(tt.bracketR);\n      if (this.match(tt.lt) || this.match(tt.parenL)) {\n        node.method = true;\n        node.optional = false;\n        node.value = this.flowParseObjectTypeMethodish(\n          this.startNodeAt(node.loc.start),\n        );\n      } else {\n        node.method = false;\n        if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n        node.value = this.flowParseTypeInitialiser();\n      }\n      return this.finishNode(node, \"ObjectTypeInternalSlot\");\n    }\n\n    flowParseObjectTypeMethodish(\n      node: Undone<N.FlowFunctionTypeAnnotation>,\n    ): N.FlowFunctionTypeAnnotation {\n      node.params = [];\n      node.rest = null;\n      node.typeParameters = null;\n      node.this = null;\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      this.expect(tt.parenL);\n      if (this.match(tt._this)) {\n        node.this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        node.this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        node.params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n\n      if (this.eat(tt.ellipsis)) {\n        node.rest = this.flowParseFunctionTypeParam(false);\n      }\n      this.expect(tt.parenR);\n      node.returnType = this.flowParseTypeInitialiser();\n\n      return this.finishNode(node, \"FunctionTypeAnnotation\");\n    }\n\n    flowParseObjectTypeCallProperty(\n      node: Undone<N.FlowObjectTypeCallProperty>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeCallProperty {\n      const valueNode = this.startNode();\n      node.static = isStatic;\n      node.value = this.flowParseObjectTypeMethodish(valueNode);\n      return this.finishNode(node, \"ObjectTypeCallProperty\");\n    }\n\n    flowParseObjectType({\n      allowStatic,\n      allowExact,\n      allowSpread,\n      allowProto,\n      allowInexact,\n    }: {\n      allowStatic: boolean;\n      allowExact: boolean;\n      allowSpread: boolean;\n      allowProto: boolean;\n      allowInexact: boolean;\n    }): N.FlowObjectTypeAnnotation {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n\n      const nodeStart = this.startNode<N.FlowObjectTypeAnnotation>();\n\n      nodeStart.callProperties = [];\n      nodeStart.properties = [];\n      nodeStart.indexers = [];\n      nodeStart.internalSlots = [];\n\n      let endDelim;\n      let exact;\n      let inexact = false;\n      if (allowExact && this.match(tt.braceBarL)) {\n        this.expect(tt.braceBarL);\n        endDelim = tt.braceBarR;\n        exact = true;\n      } else {\n        this.expect(tt.braceL);\n        endDelim = tt.braceR;\n        exact = false;\n      }\n\n      nodeStart.exact = exact;\n\n      while (!this.match(endDelim)) {\n        let isStatic = false;\n        let protoStartLoc: Position | undefined | null = null;\n        let inexactStartLoc: Position | undefined | null = null;\n        const node = this.startNode();\n\n        if (allowProto && this.isContextual(tt._proto)) {\n          const lookahead = this.lookahead();\n\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            protoStartLoc = this.state.startLoc;\n            allowStatic = false;\n          }\n        }\n\n        if (allowStatic && this.isContextual(tt._static)) {\n          const lookahead = this.lookahead();\n\n          // static is a valid identifier name\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            isStatic = true;\n          }\n        }\n\n        const variance = this.flowParseVariance();\n\n        if (this.eat(tt.bracketL)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (this.eat(tt.bracketL)) {\n            if (variance) {\n              this.unexpected(variance.loc.start);\n            }\n            nodeStart.internalSlots.push(\n              this.flowParseObjectTypeInternalSlot(node, isStatic),\n            );\n          } else {\n            nodeStart.indexers.push(\n              this.flowParseObjectTypeIndexer(node, isStatic, variance),\n            );\n          }\n        } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n          nodeStart.callProperties.push(\n            this.flowParseObjectTypeCallProperty(node, isStatic),\n          );\n        } else {\n          let kind = \"init\";\n\n          if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n            const lookahead = this.lookahead();\n            if (tokenIsLiteralPropertyName(lookahead.type)) {\n              kind = this.state.value;\n              this.next();\n            }\n          }\n\n          const propOrInexact = this.flowParseObjectTypeProperty(\n            node,\n            isStatic,\n            protoStartLoc,\n            variance,\n            kind,\n            allowSpread,\n            allowInexact ?? !exact,\n          );\n\n          if (propOrInexact === null) {\n            inexact = true;\n            inexactStartLoc = this.state.lastTokStartLoc;\n          } else {\n            nodeStart.properties.push(propOrInexact);\n          }\n        }\n\n        this.flowObjectTypeSemicolon();\n\n        if (\n          inexactStartLoc &&\n          !this.match(tt.braceR) &&\n          !this.match(tt.braceBarR)\n        ) {\n          this.raise(\n            FlowErrors.UnexpectedExplicitInexactInObject,\n            inexactStartLoc,\n          );\n        }\n      }\n\n      this.expect(endDelim);\n\n      /* The inexact flag should only be added on ObjectTypeAnnotations that\n       * are not the body of an interface, declare interface, or declare class.\n       * Since spreads are only allowed in object types, checking that is\n       * sufficient here.\n       */\n      if (allowSpread) {\n        nodeStart.inexact = inexact;\n      }\n\n      const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n      this.state.inType = oldInType;\n\n      return out;\n    }\n\n    flowParseObjectTypeProperty(\n      node: Undone<N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty>,\n      isStatic: boolean,\n      protoStartLoc: Position | undefined | null,\n      variance: N.FlowVariance | undefined | null,\n      kind: string,\n      allowSpread: boolean,\n      allowInexact: boolean,\n    ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n      if (this.eat(tt.ellipsis)) {\n        const isInexactToken =\n          this.match(tt.comma) ||\n          this.match(tt.semi) ||\n          this.match(tt.braceR) ||\n          this.match(tt.braceBarR);\n\n        if (isInexactToken) {\n          if (!allowSpread) {\n            this.raise(\n              FlowErrors.InexactInsideNonObject,\n              this.state.lastTokStartLoc,\n            );\n          } else if (!allowInexact) {\n            this.raise(\n              FlowErrors.InexactInsideExact,\n              this.state.lastTokStartLoc,\n            );\n          }\n          if (variance) {\n            this.raise(FlowErrors.InexactVariance, variance);\n          }\n\n          return null;\n        }\n\n        if (!allowSpread) {\n          this.raise(\n            FlowErrors.UnexpectedSpreadType,\n            this.state.lastTokStartLoc,\n          );\n        }\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n        if (variance) {\n          this.raise(FlowErrors.SpreadVariance, variance);\n        }\n\n        node.argument = this.flowParseType();\n        return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n      } else {\n        node.key = this.flowParseObjectPropertyKey();\n        node.static = isStatic;\n        node.proto = protoStartLoc != null;\n        node.kind = kind;\n\n        let optional = false;\n        if (this.match(tt.lt) || this.match(tt.parenL)) {\n          // This is a method property\n          node.method = true;\n\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n\n          node.value = this.flowParseObjectTypeMethodish(\n            this.startNodeAt(node.loc.start),\n          );\n          if (kind === \"get\" || kind === \"set\") {\n            this.flowCheckGetterSetterParams(node);\n          }\n          /** Declared classes/interfaces do not allow spread */\n          if (\n            !allowSpread &&\n            node.key.name === \"constructor\" &&\n            node.value.this\n          ) {\n            this.raise(\n              FlowErrors.ThisParamBannedInConstructor,\n              node.value.this,\n            );\n          }\n        } else {\n          if (kind !== \"init\") this.unexpected();\n\n          node.method = false;\n\n          if (this.eat(tt.question)) {\n            optional = true;\n          }\n          node.value = this.flowParseTypeInitialiser();\n          node.variance = variance;\n        }\n\n        node.optional = optional;\n\n        return this.finishNode(node, \"ObjectTypeProperty\");\n      }\n    }\n\n    // This is similar to checkGetterSetterParams, but as\n    // @babel/parser uses non estree properties we cannot reuse it here\n    flowCheckGetterSetterParams(\n      property: Undone<\n        N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n      >,\n    ): void {\n      const paramCount = property.kind === \"get\" ? 0 : 1;\n      const length =\n        property.value.params.length + (property.value.rest ? 1 : 0);\n\n      if (property.value.this) {\n        this.raise(\n          property.kind === \"get\"\n            ? FlowErrors.GetterMayNotHaveThisParam\n            : FlowErrors.SetterMayNotHaveThisParam,\n          property.value.this,\n        );\n      }\n\n      if (length !== paramCount) {\n        this.raise(\n          property.kind === \"get\"\n            ? Errors.BadGetterArity\n            : Errors.BadSetterArity,\n          property,\n        );\n      }\n\n      if (property.kind === \"set\" && property.value.rest) {\n        this.raise(Errors.BadSetterRestParameter, property);\n      }\n    }\n\n    flowObjectTypeSemicolon(): void {\n      if (\n        !this.eat(tt.semi) &&\n        !this.eat(tt.comma) &&\n        !this.match(tt.braceR) &&\n        !this.match(tt.braceBarR)\n      ) {\n        this.unexpected();\n      }\n    }\n\n    flowParseQualifiedTypeIdentifier(\n      startLoc?: Position,\n      id?: N.Identifier,\n    ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n      startLoc ??= this.state.startLoc;\n      let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n        id || this.flowParseRestrictedIdentifier(true);\n\n      while (this.eat(tt.dot)) {\n        const node2 = this.startNodeAt<N.FlowQualifiedTypeIdentifier>(startLoc);\n        node2.qualification = node;\n        node2.id = this.flowParseRestrictedIdentifier(true);\n        node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n      }\n\n      return node;\n    }\n\n    flowParseGenericType(\n      startLoc: Position,\n      id: N.Identifier,\n    ): N.FlowGenericTypeAnnotation {\n      const node = this.startNodeAt<N.FlowGenericTypeAnnotation>(startLoc);\n\n      node.typeParameters = null;\n      node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      }\n\n      return this.finishNode(node, \"GenericTypeAnnotation\");\n    }\n\n    flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n      const node = this.startNode<N.FlowTypeofTypeAnnotation>();\n      this.expect(tt._typeof);\n      node.argument = this.flowParsePrimaryType();\n      return this.finishNode(node, \"TypeofTypeAnnotation\");\n    }\n\n    flowParseTupleType(): N.FlowTupleTypeAnnotation {\n      const node = this.startNode<N.FlowTupleTypeAnnotation>();\n      node.types = [];\n      this.expect(tt.bracketL);\n      // We allow trailing commas\n      while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n        node.types.push(this.flowParseType());\n        if (this.match(tt.bracketR)) break;\n        this.expect(tt.comma);\n      }\n      this.expect(tt.bracketR);\n      return this.finishNode(node, \"TupleTypeAnnotation\");\n    }\n\n    flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n      let name = null;\n      let optional = false;\n      let typeAnnotation = null;\n      const node = this.startNode<N.FlowFunctionTypeParam>();\n      const lh = this.lookahead();\n      const isThis = this.state.type === tt._this;\n\n      if (lh.type === tt.colon || lh.type === tt.question) {\n        if (isThis && !first) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node);\n        }\n        name = this.parseIdentifier(isThis);\n        if (this.eat(tt.question)) {\n          optional = true;\n          if (isThis) {\n            this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n          }\n        }\n        typeAnnotation = this.flowParseTypeInitialiser();\n      } else {\n        typeAnnotation = this.flowParseType();\n      }\n      node.name = name;\n      node.optional = optional;\n      node.typeAnnotation = typeAnnotation;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    reinterpretTypeAsFunctionTypeParam(\n      type: N.FlowType,\n    ): N.FlowFunctionTypeParam {\n      const node = this.startNodeAt<N.FlowFunctionTypeParam>(type.loc.start);\n      node.name = null;\n      node.optional = false;\n      node.typeAnnotation = type;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n      params: N.FlowFunctionTypeParam[];\n      rest: N.FlowFunctionTypeParam | undefined | null;\n      _this: N.FlowFunctionTypeParam | undefined | null;\n    } {\n      let rest: N.FlowFunctionTypeParam | undefined | null = null;\n      let _this: N.FlowFunctionTypeParam | undefined | null = null;\n      if (this.match(tt._this)) {\n        _this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        _this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      if (this.eat(tt.ellipsis)) {\n        rest = this.flowParseFunctionTypeParam(false);\n      }\n      return { params, rest, _this };\n    }\n\n    flowIdentToTypeAnnotation(\n      startLoc: Position,\n      node: Undone<N.FlowType>,\n      id: N.Identifier,\n    ): N.FlowType {\n      switch (id.name) {\n        case \"any\":\n          return this.finishNode(node, \"AnyTypeAnnotation\");\n\n        case \"bool\":\n        case \"boolean\":\n          return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n        case \"mixed\":\n          return this.finishNode(node, \"MixedTypeAnnotation\");\n\n        case \"empty\":\n          return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n        case \"number\":\n          return this.finishNode(node, \"NumberTypeAnnotation\");\n\n        case \"string\":\n          return this.finishNode(node, \"StringTypeAnnotation\");\n\n        case \"symbol\":\n          return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n        default:\n          this.checkNotUnderscore(id.name);\n          return this.flowParseGenericType(startLoc, id);\n      }\n    }\n\n    // The parsing of types roughly parallels the parsing of expressions, and\n    // primary types are kind of like primary expressions...they're the\n    // primitives with which other types are constructed.\n    flowParsePrimaryType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      let tmp;\n      let type;\n      let isGroupedType = false;\n      const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n      switch (this.state.type) {\n        case tt.braceL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: false,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: true,\n          });\n\n        case tt.braceBarL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: true,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: false,\n          });\n\n        case tt.bracketL:\n          this.state.noAnonFunctionType = false;\n          type = this.flowParseTupleType();\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n          return type;\n\n        case tt.lt: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          node.typeParameters = this.flowParseTypeParameterDeclaration();\n          this.expect(tt.parenL);\n          tmp = this.flowParseFunctionTypeParams();\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.parenL: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          this.next();\n\n          // Check to see if this is actually a grouped type\n          if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n            if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n              const token = this.lookahead().type;\n              isGroupedType = token !== tt.question && token !== tt.colon;\n            } else {\n              isGroupedType = true;\n            }\n          }\n\n          if (isGroupedType) {\n            this.state.noAnonFunctionType = false;\n            type = this.flowParseType();\n            this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n            // A `,` or a `) =>` means this is an anonymous function type\n            if (\n              this.state.noAnonFunctionType ||\n              !(\n                this.match(tt.comma) ||\n                (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n              )\n            ) {\n              this.expect(tt.parenR);\n              return type;\n            } else {\n              // Eat a comma if there is one\n              this.eat(tt.comma);\n            }\n          }\n\n          if (type) {\n            tmp = this.flowParseFunctionTypeParams([\n              this.reinterpretTypeAsFunctionTypeParam(type),\n            ]);\n          } else {\n            tmp = this.flowParseFunctionTypeParams();\n          }\n\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          node.typeParameters = null;\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.string:\n          return this.parseLiteral<N.StringLiteralTypeAnnotation>(\n            this.state.value,\n            \"StringLiteralTypeAnnotation\",\n          );\n\n        case tt._true:\n        case tt._false:\n          node.value = this.match(tt._true);\n          this.next();\n          return this.finishNode(\n            node as Undone<N.BooleanLiteralTypeAnnotation>,\n            \"BooleanLiteralTypeAnnotation\",\n          );\n\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            this.next();\n            if (this.match(tt.num)) {\n              return this.parseLiteralAtNode<N.NumberLiteralTypeAnnotation>(\n                -this.state.value,\n                \"NumberLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            if (this.match(tt.bigint)) {\n              return this.parseLiteralAtNode<N.BigIntLiteralTypeAnnotation>(\n                -this.state.value,\n                \"BigIntLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            throw this.raise(\n              FlowErrors.UnexpectedSubtractionOperand,\n              this.state.startLoc,\n            );\n          }\n          this.unexpected();\n          return;\n        case tt.num:\n          return this.parseLiteral(\n            this.state.value,\n            \"NumberLiteralTypeAnnotation\",\n          );\n\n        case tt.bigint:\n          return this.parseLiteral(\n            this.state.value,\n            \"BigIntLiteralTypeAnnotation\",\n          );\n\n        case tt._void:\n          this.next();\n          return this.finishNode(node, \"VoidTypeAnnotation\");\n\n        case tt._null:\n          this.next();\n          return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n        case tt._this:\n          this.next();\n          return this.finishNode(node, \"ThisTypeAnnotation\");\n\n        case tt.star:\n          this.next();\n          return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n        case tt._typeof:\n          return this.flowParseTypeofType();\n\n        default:\n          if (tokenIsKeyword(this.state.type)) {\n            const label = tokenLabelName(this.state.type);\n            this.next();\n            return super.createIdentifier(node as Undone<N.Identifier>, label);\n          } else if (tokenIsIdentifier(this.state.type)) {\n            if (this.isContextual(tt._interface)) {\n              return this.flowParseInterfaceType();\n            }\n\n            return this.flowIdentToTypeAnnotation(\n              startLoc,\n              node,\n              this.parseIdentifier(),\n            );\n          }\n      }\n\n      this.unexpected();\n    }\n\n    flowParsePostfixType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      let type = this.flowParsePrimaryType();\n      let seenOptionalIndexedAccess = false;\n      while (\n        (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n        !this.canInsertSemicolon()\n      ) {\n        const node = this.startNodeAt<N.FlowOtherTypeAnnotation>(startLoc);\n        const optional = this.eat(tt.questionDot);\n        seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n        this.expect(tt.bracketL);\n        if (!optional && this.match(tt.bracketR)) {\n          node.elementType = type;\n          this.next(); // eat `]`\n          type = this.finishNode(node, \"ArrayTypeAnnotation\");\n        } else {\n          node.objectType = type;\n          node.indexType = this.flowParseType();\n          this.expect(tt.bracketR);\n          if (seenOptionalIndexedAccess) {\n            node.optional = optional;\n            type = this.finishNode<N.FlowOptionalIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"OptionalIndexedAccessType\",\n            );\n          } else {\n            type = this.finishNode<N.FlowIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"IndexedAccessType\",\n            );\n          }\n        }\n      }\n      return type;\n    }\n\n    flowParsePrefixType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      if (this.eat(tt.question)) {\n        node.typeAnnotation = this.flowParsePrefixType();\n        return this.finishNode(node, \"NullableTypeAnnotation\");\n      } else {\n        return this.flowParsePostfixType();\n      }\n    }\n\n    flowParseAnonFunctionWithoutParens(): N.FlowType {\n      const param = this.flowParsePrefixType();\n      if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n        // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n        const node = this.startNodeAt<N.FlowFunctionTypeAnnotation>(\n          param.loc.start,\n        );\n        node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n        node.rest = null;\n        node.this = null;\n        node.returnType = this.flowParseType();\n        node.typeParameters = null;\n        return this.finishNode(node, \"FunctionTypeAnnotation\");\n      }\n      return param;\n    }\n\n    flowParseIntersectionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseAND);\n      const type = this.flowParseAnonFunctionWithoutParens();\n      node.types = [type];\n      while (this.eat(tt.bitwiseAND)) {\n        node.types.push(this.flowParseAnonFunctionWithoutParens());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"IntersectionTypeAnnotation\");\n    }\n\n    flowParseUnionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseOR);\n      const type = this.flowParseIntersectionType();\n      node.types = [type];\n      while (this.eat(tt.bitwiseOR)) {\n        node.types.push(this.flowParseIntersectionType());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"UnionTypeAnnotation\");\n    }\n\n    flowParseType(): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      const type = this.flowParseUnionType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParseTypeOrImplicitInstantiation(): N.FlowType {\n      if (this.state.type === tt.name && this.state.value === \"_\") {\n        const startLoc = this.state.startLoc;\n        const node = this.parseIdentifier();\n        return this.flowParseGenericType(startLoc, node);\n      } else {\n        return this.flowParseType();\n      }\n    }\n\n    flowParseTypeAnnotation(): N.TypeAnnotation {\n      const node = this.startNode<N.TypeAnnotation>();\n      node.typeAnnotation = this.flowParseTypeInitialiser();\n      return this.finishNode(node, \"TypeAnnotation\");\n    }\n\n    flowParseTypeAnnotatableIdentifier(\n      allowPrimitiveOverride?: boolean,\n    ): N.Identifier {\n      const ident = allowPrimitiveOverride\n        ? this.parseIdentifier()\n        : this.flowParseRestrictedIdentifier();\n      if (this.match(tt.colon)) {\n        ident.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(ident);\n      }\n      return ident;\n    }\n\n    typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    flowParseVariance(): N.FlowVariance | undefined | null {\n      let variance = null;\n      if (this.match(tt.plusMin)) {\n        variance = this.startNode<N.FlowVariance>();\n        if (this.state.value === \"+\") {\n          variance.kind = \"plus\";\n        } else {\n          variance.kind = \"minus\";\n        }\n        this.next();\n        return this.finishNode(variance, \"Variance\");\n      }\n      return variance;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpressionBody?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      if (allowExpressionBody) {\n        this.forwardNoArrowParamsConversionAt(node, () =>\n          super.parseFunctionBody(node, true, isMethod),\n        );\n        return;\n      }\n\n      super.parseFunctionBody(node, false, isMethod);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        const typeNode = this.startNode<N.TypeAnnotation>();\n\n        [\n          typeNode.typeAnnotation,\n          // @ts-expect-error predicate may not exist\n          node.predicate,\n        ] = this.flowParseTypeAndPredicateInitialiser();\n\n        node.returnType = typeNode.typeAnnotation\n          ? this.finishNode(typeNode, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    // interfaces and enums\n    parseStatementLike(flags: ParseStatementFlag): N.Statement {\n      // strict mode handling of `interface` since it's a reserved word\n      if (this.state.strict && this.isContextual(tt._interface)) {\n        const lookahead = this.lookahead();\n        if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n          const node = this.startNode<N.FlowInterface>();\n          this.next();\n          return this.flowParseInterface(node);\n        }\n      } else if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      const stmt = super.parseStatementLike(flags);\n      // We will parse a flow pragma in any comment before the first statement.\n      if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n        this.flowPragma = null;\n      }\n      return stmt;\n    }\n\n    // declares, interfaces and type aliases\n    parseExpressionStatement(\n      node: N.ExpressionStatement,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.ExpressionStatement {\n      if (expr.type === \"Identifier\") {\n        if (expr.name === \"declare\") {\n          if (\n            this.match(tt._class) ||\n            tokenIsIdentifier(this.state.type) ||\n            this.match(tt._function) ||\n            this.match(tt._var) ||\n            this.match(tt._export)\n          ) {\n            // @ts-expect-error: refine typings\n            return this.flowParseDeclare(node);\n          }\n        } else if (tokenIsIdentifier(this.state.type)) {\n          if (expr.name === \"interface\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseInterface(node);\n          } else if (expr.name === \"type\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseTypeAlias(node);\n          } else if (expr.name === \"opaque\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseOpaqueType(node, false);\n          }\n        }\n      }\n\n      return super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    shouldParseExportDeclaration(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return !this.state.containsEsc;\n      }\n      return super.shouldParseExportDeclaration();\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return this.state.containsEsc;\n      }\n\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseExportDefaultExpression() {\n      if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      return super.parseExportDefaultExpression();\n    }\n\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      if (!this.match(tt.question)) return expr;\n\n      if (this.state.maybeInArrowParameters) {\n        const nextCh = this.lookaheadCharCode();\n        // These tokens cannot start an expression, so if one of them follows\n        // ? then we are probably in an arrow function parameters list and we\n        // don't parse the conditional expression.\n        if (\n          nextCh === charCodes.comma || // (a?, b) => c\n          nextCh === charCodes.equalsTo || // (a? = b) => c\n          nextCh === charCodes.colon || // (a?: b) => c\n          nextCh === charCodes.rightParenthesis // (a?) => c\n        ) {\n          /*:: invariant(refExpressionErrors != null) */\n          this.setOptionalParametersError(refExpressionErrors);\n          return expr;\n        }\n      }\n\n      this.expect(tt.question);\n      const state = this.state.clone();\n      const originalNoArrowAt = this.state.noArrowAt;\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      let { consequent, failed } = this.tryParseConditionalConsequent();\n      let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n      if (failed || invalid.length > 0) {\n        const noArrowAt = [...originalNoArrowAt];\n\n        if (invalid.length > 0) {\n          this.state = state;\n          this.state.noArrowAt = noArrowAt;\n\n          for (let i = 0; i < invalid.length; i++) {\n            noArrowAt.push(invalid[i].start);\n          }\n\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n          [valid, invalid] = this.getArrowLikeExpressions(consequent);\n        }\n\n        if (failed && valid.length > 1) {\n          // if there are two or more possible correct ways of parsing, throw an\n          // error.\n          // e.g.   Source: a ? (b): c => (d): e => f\n          //      Result 1: a ? b : (c => ((d): e => f))\n          //      Result 2: a ? ((b): c => d) : (e => f)\n          this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n        }\n\n        if (failed && valid.length === 1) {\n          this.state = state;\n          noArrowAt.push(valid[0].start);\n          this.state.noArrowAt = noArrowAt;\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n        }\n      }\n\n      this.getArrowLikeExpressions(consequent, true);\n\n      this.state.noArrowAt = originalNoArrowAt;\n      this.expect(tt.colon);\n\n      node.test = expr;\n      node.consequent = consequent;\n      node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n        this.parseMaybeAssign(undefined, undefined),\n      );\n\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n\n    tryParseConditionalConsequent(): {\n      consequent: N.Expression;\n      failed: boolean;\n    } {\n      this.state.noArrowParamsConversionAt.push(this.state.start);\n\n      const consequent = this.parseMaybeAssignAllowIn();\n      const failed = !this.match(tt.colon);\n\n      this.state.noArrowParamsConversionAt.pop();\n\n      return { consequent, failed };\n    }\n\n    // Given an expression, walks through out its arrow functions whose body is\n    // an expression and through out conditional expressions. It returns every\n    // function which has been parsed with a return type but could have been\n    // parenthesized expressions.\n    // These functions are separated into two arrays: one containing the ones\n    // whose parameters can be converted to assignable lists, one containing the\n    // others.\n    getArrowLikeExpressions(\n      node: N.Expression,\n      disallowInvalid?: boolean,\n    ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n      const stack = [node];\n      const arrows: N.ArrowFunctionExpression[] = [];\n\n      while (stack.length !== 0) {\n        const node = stack.pop();\n        if (\n          node.type === \"ArrowFunctionExpression\" &&\n          node.body.type !== \"BlockStatement\"\n        ) {\n          if (node.typeParameters || !node.returnType) {\n            // This is an arrow expression without ambiguity, so check its parameters\n            this.finishArrowValidation(node);\n          } else {\n            arrows.push(node);\n          }\n          stack.push(node.body);\n        } else if (node.type === \"ConditionalExpression\") {\n          stack.push(node.consequent);\n          stack.push(node.alternate);\n        }\n      }\n\n      if (disallowInvalid) {\n        arrows.forEach(node => this.finishArrowValidation(node));\n        return [arrows, []];\n      }\n\n      return partition(arrows, node =>\n        node.params.every(param => this.isAssignable(param, true)),\n      );\n    }\n\n    finishArrowValidation(node: N.ArrowFunctionExpression) {\n      this.toAssignableList(\n        // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n        // has not been converted yet.\n        node.params as any as N.Expression[],\n        node.extra?.trailingCommaLoc,\n        /* isLHS */ false,\n      );\n      // Enter scope, as checkParams defines bindings\n      this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n      // Use super's method to force the parameters to be checked\n      super.checkParams(node, false, true);\n      this.scope.exit();\n    }\n\n    forwardNoArrowParamsConversionAt<T>(\n      node: Undone<N.Node>,\n      parse: () => T,\n    ): T {\n      let result: T;\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        this.state.noArrowParamsConversionAt.push(this.state.start);\n        result = parse();\n        this.state.noArrowParamsConversionAt.pop();\n      } else {\n        result = parse();\n      }\n\n      return result;\n    }\n\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TypeCastExpression>(startLoc);\n        typeCastNode.expression = newNode as N.Expression;\n        typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TypeCastExpression\");\n      }\n\n      return newNode;\n    }\n\n    assertModuleNodeAllowed(node: N.Node) {\n      if (\n        (node.type === \"ImportDeclaration\" &&\n          (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n        (node.type === \"ExportNamedDeclaration\" &&\n          node.exportKind === \"type\") ||\n        (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n      ) {\n        // Allow Flowtype imports and exports in all conditions because\n        // Flow itself does not care about 'sourceType'.\n        return;\n      }\n\n      super.assertModuleNodeAllowed(node);\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (this.isContextual(tt._type)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n\n        if (this.match(tt.braceL)) {\n          // export type { foo, bar };\n          node.specifiers = this.parseExportSpecifiers(\n            /* isInTypeExport */ true,\n          );\n          super.parseExportFrom(node);\n          return null;\n        } else {\n          // export type Foo = Bar;\n          // @ts-expect-error: refine typings\n          return this.flowParseTypeAlias(declarationNode);\n        }\n      } else if (this.isContextual(tt._opaque)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n        // export opaque type Foo = Bar;\n        // @ts-expect-error: refine typings\n        return this.flowParseOpaqueType(declarationNode, false);\n      } else if (this.isContextual(tt._interface)) {\n        node.exportKind = \"type\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseInterface(declarationNode);\n      } else if (this.isContextual(tt._enum)) {\n        node.exportKind = \"value\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseEnumDeclaration(declarationNode);\n      } else {\n        return super.parseExportDeclaration(node);\n      }\n    }\n\n    eatExportStar(\n      node: Undone<N.Node>,\n    ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n      if (super.eatExportStar(node)) return true;\n\n      if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n        (\n          node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>\n        ).exportKind = \"type\";\n        this.next();\n        this.next();\n        return true;\n      }\n\n      return false;\n    }\n\n    maybeParseExportNamespaceSpecifier(\n      node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      const { startLoc } = this.state;\n      const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n      if (hasNamespace && node.exportKind === \"type\") {\n        this.unexpected(startLoc);\n      }\n      return hasNamespace;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n    ) {\n      super.parseClassId(node, isStatement, optionalId);\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const { startLoc } = this.state;\n      if (this.isContextual(tt._declare)) {\n        if (super.parseClassMemberFromModifier(classBody, member)) {\n          // 'declare' is a class element name\n          return;\n        }\n\n        member.declare = true;\n      }\n\n      super.parseClassMember(classBody, member, state);\n\n      if (member.declare) {\n        if (\n          member.type !== \"ClassProperty\" &&\n          member.type !== \"ClassPrivateProperty\" &&\n          member.type !== \"PropertyDefinition\" // Used by estree plugin\n        ) {\n          this.raise(FlowErrors.DeclareClassElement, startLoc);\n        } else if (member.value) {\n          this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n        }\n      }\n    }\n\n    isIterator(word: string): boolean {\n      return word === \"iterator\" || word === \"asyncIterator\";\n    }\n\n    readIterator(): void {\n      const word = super.readWord1();\n      const fullWord = \"@@\" + word;\n\n      // Allow @@iterator and @@asyncIterator as a identifier only inside type\n      if (!this.isIterator(word) || !this.state.inType) {\n        this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n          identifierName: fullWord,\n        });\n      }\n\n      this.finishToken(tt.name, fullWord);\n    }\n\n    // ensure that inside flow types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n        this.finishOp(tt.braceBarL, 2);\n      } else if (\n        this.state.inType &&\n        (code === charCodes.greaterThan || code === charCodes.lessThan)\n      ) {\n        this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n      } else if (this.state.inType && code === charCodes.questionMark) {\n        if (next === charCodes.dot) {\n          this.finishOp(tt.questionDot, 2);\n        } else {\n          // allow double nullable types in Flow: ??string\n          this.finishOp(tt.question, 1);\n        }\n      } else if (\n        isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n      ) {\n        this.state.pos += 2; // eat \"@@\"\n        this.readIterator();\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node.type === \"TypeCastExpression\") {\n        return this.isAssignable(node.expression, isBinding);\n      } else {\n        return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (\n        !isLHS &&\n        node.type === \"AssignmentExpression\" &&\n        node.left.type === \"TypeCastExpression\"\n      ) {\n        node.left = this.typeCastToParameter(node.left) as N.Assignable;\n      }\n      super.toAssignable(node, isLHS);\n    }\n\n    // turn type casts that we found in function parameter head into type annotated params\n    toAssignableList(\n      exprList: N.Expression[],\n      trailingCommaLoc: Position | undefined | null,\n      isLHS: boolean,\n    ): void {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (expr?.type === \"TypeCastExpression\") {\n          exprList[i] = this.typeCastToParameter(expr);\n        }\n      }\n      super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n    }\n\n    // this is a list of nodes, from something like a call expression, we need to filter the\n    // type casts that we've found that are illegal in this context\n    toReferencedList(\n      exprList:\n        | ReadonlyArray<N.Expression | N.SpreadElement>\n        | ReadonlyArray<N.Expression | N.RestElement>,\n      isParenthesizedExpr?: boolean,\n    ):\n      | ReadonlyArray<N.Expression | N.SpreadElement>\n      | ReadonlyArray<N.Expression | N.RestElement> {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (\n          expr &&\n          expr.type === \"TypeCastExpression\" &&\n          !expr.extra?.parenthesized &&\n          (exprList.length > 1 || !isParenthesizedExpr)\n        ) {\n          this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n        }\n      }\n\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      // This could be an array pattern:\n      //   ([a: string, b: string]) => {}\n      // In this case, we don't have to call toReferencedList. We will\n      // call it, if needed, when we are sure that it is a parenthesized\n      // expression by calling toReferencedListDeep.\n      if (canBePattern && !this.state.maybeInArrowParameters) {\n        this.toReferencedList(node.elements);\n      }\n\n      return node;\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"TypeCastExpression\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    // parse class property type annotations\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassPrivateProperty(node);\n    }\n\n    // determine whether or not we're currently in the position where a class method would appear\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    // determine whether or not we're currently in the position where a class property would appear\n    isClassProperty(): boolean {\n      return this.match(tt.colon) || super.isClassProperty();\n    }\n\n    isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n      return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n    }\n\n    // parse type parameters for class methods\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n\n      if (method.params && isConstructor) {\n        const params = method.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n        // estree support\n      } else if (\n        // @ts-expect-error TS does not know about the fact that estree can replace ClassMethod with MethodDefinition\n        method.type === \"MethodDefinition\" &&\n        isConstructor &&\n        // @ts-expect-error estree\n        method.value.params\n      ) {\n        // @ts-expect-error estree\n        const params = method.value.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n      }\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    // parse a the super class type parameters and implements\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      if (\n        node.superClass &&\n        (this.match(tt.lt) ||\n          // handles `class extends C<<T>`\n          this.match(tt.bitShiftL))\n      ) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.superTypeArguments =\n            this.flowParseTypeParameterInstantiationInExpression();\n        } else {\n          node.superTypeParameters =\n            this.flowParseTypeParameterInstantiationInExpression();\n        }\n      }\n      if (this.isContextual(tt._implements)) {\n        this.next();\n        const implemented: N.FlowClassImplements[] = (node.implements = []);\n        do {\n          const node = this.startNode<N.FlowClassImplements>();\n          node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n          if (this.match(tt.lt)) {\n            node.typeParameters = this.flowParseTypeParameterInstantiation();\n          } else {\n            node.typeParameters = null;\n          }\n          implemented.push(this.finishNode(node, \"ClassImplements\"));\n        } while (this.eat(tt.comma));\n      }\n    }\n\n    checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n      super.checkGetterSetterParams(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      if (params.length > 0) {\n        const param = params[0];\n        if (this.isThisParam(param) && method.kind === \"get\") {\n          this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n        } else if (this.isThisParam(param)) {\n          this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n        }\n      }\n    }\n\n    parsePropertyNamePrefixOperator(\n      node: N.ObjectOrClassMember | N.ClassMember,\n    ): void {\n      node.variance = this.flowParseVariance();\n    }\n\n    // parse type parameters for object method shorthand\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      if ((prop as any).variance) {\n        this.unexpected((prop as any).variance.loc.start);\n      }\n      delete (prop as any).variance;\n\n      let typeParameters;\n\n      // method shorthand\n      if (this.match(tt.lt) && !isAccessor) {\n        typeParameters = this.flowParseTypeParameterDeclaration();\n        if (!this.match(tt.parenL)) this.unexpected();\n      }\n\n      const result = super.parseObjPropValue(\n        prop,\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n\n      // add typeParameters if we found them\n      if (typeParameters) {\n        // @ts-expect-error: refine typings\n        (result.value || result).typeParameters = typeParameters;\n      }\n      return result;\n    }\n\n    parseFunctionParamType(param: N.Pattern): N.Pattern {\n      if (this.eat(tt.question)) {\n        if (param.type !== \"Identifier\") {\n          this.raise(FlowErrors.PatternIsOptional, param);\n        }\n        if (this.isThisParam(param)) {\n          this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n        }\n\n        (param as any as N.Identifier).optional = true;\n      }\n      if (this.match(tt.colon)) {\n        param.typeAnnotation = this.flowParseTypeAnnotation();\n      } else if (this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n      }\n\n      if (this.match(tt.eq) && this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamNoDefault, param);\n      }\n\n      this.resetEndLocation(param);\n      return param;\n    }\n\n    parseMaybeDefault(\n      startLoc?: Position | null,\n      left?: N.Pattern | null,\n    ): N.Pattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          FlowErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    parseImportSpecifierLocal<\n      T extends\n        | N.ImportSpecifier\n        | N.ImportDefaultSpecifier\n        | N.ImportNamespaceSpecifier,\n    >(node: N.ImportDeclaration, specifier: Undone<T>, type: T[\"type\"]): void {\n      specifier.local = hasTypeImportKind(node)\n        ? this.flowParseRestrictedIdentifier(\n            /* liberal */ true,\n            /* declaration */ true,\n          )\n        : this.parseIdentifier();\n\n      node.specifiers.push(this.finishImportSpecifier(specifier, type));\n    }\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        if (!isExport) return true;\n        const ch = this.lookaheadCharCode();\n        return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        if (!phase && this.match(tt._default)) {\n          // TODO: Align with our TS AST and always add .exportKind\n          return;\n        }\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? phase : \"value\";\n      } else {\n        if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    // parse import-type/typeof shorthand\n    parseImportSpecifier(\n      specifier: any,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      const firstIdent = specifier.imported;\n\n      let specifierTypeKind = null;\n      if (firstIdent.type === \"Identifier\") {\n        if (firstIdent.name === \"type\") {\n          specifierTypeKind = \"type\";\n        } else if (firstIdent.name === \"typeof\") {\n          specifierTypeKind = \"typeof\";\n        }\n      }\n\n      let isBinding = false;\n      if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n        const as_ident = this.parseIdentifier(true);\n        if (\n          specifierTypeKind !== null &&\n          !tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type as ,` or `import {type as }`\n          specifier.imported = as_ident;\n          specifier.importKind = specifierTypeKind;\n          specifier.local = cloneIdentifier(as_ident);\n        } else {\n          // `import {type as foo`\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n          specifier.local = this.parseIdentifier();\n        }\n      } else {\n        if (\n          specifierTypeKind !== null &&\n          tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type foo`\n          specifier.imported = this.parseIdentifier(true);\n          specifier.importKind = specifierTypeKind;\n        } else {\n          if (importedIsString) {\n            /*:: invariant(firstIdent instanceof N.StringLiteral) */\n            throw this.raise(Errors.ImportBindingIsString, specifier, {\n              importName: firstIdent.value,\n            });\n          }\n          /*:: invariant(firstIdent instanceof N.Node) */\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n        }\n\n        if (this.eatContextual(tt._as)) {\n          specifier.local = this.parseIdentifier();\n        } else {\n          isBinding = true;\n          specifier.local = cloneIdentifier(specifier.imported);\n        }\n      }\n\n      const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n      if (isInTypeOnlyImport && specifierIsTypeImport) {\n        this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n      }\n\n      if (isInTypeOnlyImport || specifierIsTypeImport) {\n        this.checkReservedType(\n          specifier.local.name,\n          specifier.local.loc.start,\n          /* declaration */ true,\n        );\n      }\n\n      if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n        this.checkReservedWord(\n          specifier.local.name,\n          specifier.loc.start,\n          true,\n          true,\n        );\n      }\n\n      return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n    }\n\n    parseBindingAtom(): N.Pattern {\n      switch (this.state.type) {\n        case tt._this:\n          // \"this\" may be the name of a parameter, so allow it.\n          return this.parseIdentifier(/* liberal */ true);\n        default:\n          return super.parseBindingAtom();\n      }\n    }\n\n    // parse function type parameters - function foo<T>() {}\n    parseFunctionParams(\n      node: Undone<N.Function>,\n      isConstructor: boolean,\n    ): void {\n      // @ts-expect-error kind may not index node\n      const kind = node.kind;\n      if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // parse flow type annotations on variable declarator heads - let foo: string = bar\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (this.match(tt.colon)) {\n        decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = true;\n        node.returnType = this.flowParseTypeAnnotation();\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      }\n\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    // todo description\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    // We need to support type parameter declarations for arrow functions. This\n    // is tricky. There are three situations we need to handle\n    //\n    // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n    //    fails, we'll try an arrow function. If that fails, we'll throw the JSX\n    //    error.\n    // 2. This is an arrow function. We'll parse the type parameter declaration,\n    //    parse the rest, make sure the rest is an arrow function, and go from\n    //    there\n    // 3. This is neither. Just call the super method\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      let state = null;\n\n      let jsx;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` and `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (jsx?.error || this.match(tt.lt)) {\n        state = state || this.state.clone();\n\n        let typeParameters: N.TypeParameterDeclaration;\n\n        const arrow = this.tryParse((abort: () => never) => {\n          typeParameters = this.flowParseTypeParameterDeclaration();\n\n          const arrowExpression = this.forwardNoArrowParamsConversionAt(\n            typeParameters,\n            () => {\n              const result = super.parseMaybeAssign(\n                refExpressionErrors,\n                afterLeftParse,\n              );\n\n              this.resetStartLocationFromNode(result, typeParameters);\n\n              return result;\n            },\n          );\n\n          // <T>(() => {});\n          // <T>(() => {}: any);\n          if (arrowExpression.extra?.parenthesized) abort();\n\n          // The above can return a TypeCastExpression when the arrow\n          // expression is not wrapped in parens. See also `this.parseParenItem`.\n          // (<T>() => {}: any);\n          const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n          if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n          expr.typeParameters = typeParameters;\n          this.resetStartLocationFromNode(expr, typeParameters);\n\n          return arrowExpression;\n        }, state);\n\n        let arrowExpression:\n          | N.ArrowFunctionExpression\n          | N.TypeCastExpression\n          | undefined\n          | null = null;\n\n        if (\n          arrow.node &&\n          this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n            \"ArrowFunctionExpression\"\n        ) {\n          if (!arrow.error && !arrow.aborted) {\n            // <T> async () => {}\n            // @ts-expect-error: refine tryParse typings\n            if (arrow.node.async) {\n              /*:: invariant(typeParameters) */\n              this.raise(\n                FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n                typeParameters,\n              );\n            }\n            return arrow.node;\n          }\n\n          // @ts-expect-error: refine typings\n          arrowExpression = arrow.node;\n        }\n\n        // If we are here, both JSX and Flow parsing attempts failed.\n        // Give the precedence to the JSX error, except if JSX had an\n        // unrecoverable error while Flow didn't.\n        // If the error is recoverable, we can only re-report it if there is\n        // a node we can return.\n\n        if (jsx?.node) {\n          /*:: invariant(jsx.failState) */\n          this.state = jsx.failState;\n          return jsx.node;\n        }\n\n        if (arrowExpression) {\n          /*:: invariant(arrow.failState) */\n          this.state = arrow.failState;\n          return arrowExpression;\n        }\n\n        if (jsx?.thrown) throw jsx.error;\n        if (arrow.thrown) throw arrow.error;\n\n        /*:: invariant(typeParameters) */\n        throw this.raise(\n          FlowErrors.UnexpectedTokenAfterTypeParameter,\n          typeParameters,\n        );\n      }\n\n      return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n    }\n\n    // handle return types for arrow functions\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // @ts-expect-error todo(flow->ts)\n        const result = this.tryParse<N.TypeAnnotation>(() => {\n          const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n          this.state.noAnonFunctionType = true;\n\n          const typeNode = this.startNode<N.TypeAnnotation>();\n\n          [\n            typeNode.typeAnnotation,\n            // @ts-expect-error (destructuring not supported yet)\n            node.predicate,\n          ] = this.flowParseTypeAndPredicateInitialiser();\n\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n          if (this.canInsertSemicolon()) this.unexpected();\n          if (!this.match(tt.arrow)) this.unexpected();\n\n          return typeNode;\n        });\n\n        if (result.thrown) return null;\n        /*:: invariant(result.node) */\n\n        if (result.error) this.state = result.failState;\n\n        // assign after it is clear it is an arrow\n        // @ts-expect-error todo(flow->ts)\n        node.returnType = result.node.typeAnnotation\n          ? this.finishNode(result.node, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseArrow(node);\n    }\n\n    shouldParseArrow(params: Array<N.Node>): boolean {\n      return this.match(tt.colon) || super.shouldParseArrow(params);\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params:\n        | Array<N.Expression | N.SpreadElement>\n        | Array<N.Expression | N.RestElement>,\n    ): void {\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        node.params = params as N.ArrowFunctionExpression[\"params\"];\n      } else {\n        super.setArrowFunctionParameters(node, params);\n      }\n    }\n\n    checkParams(\n      node: N.Function,\n      allowDuplicates: boolean,\n      isArrowFunction?: boolean | null,\n      strictModeChanged: boolean = true,\n    ): void {\n      if (\n        isArrowFunction &&\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        return;\n      }\n\n      // ensure the `this` param is first, if it exists\n      for (let i = 0; i < node.params.length; i++) {\n        if (this.isThisParam(node.params[i]) && i > 0) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n        }\n      }\n\n      super.checkParams(\n        node,\n        allowDuplicates,\n        isArrowFunction,\n        strictModeChanged,\n      );\n    }\n\n    parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n      return super.parseParenAndDistinguishExpression(\n        canBeArrow &&\n          !this.state.noArrowAt.includes(\n            this.sourceToOffsetPos(this.state.start),\n          ),\n      );\n    }\n\n    parseSubscripts(\n      base: N.Expression,\n      startLoc: Position,\n      noCalls?: boolean | null,\n    ): N.Expression {\n      if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.state.noArrowAt.includes(startLoc.index)\n      ) {\n        this.next();\n\n        const node = this.startNodeAt<N.CallExpression>(startLoc);\n        node.callee = base;\n        node.arguments = super.parseCallExpressionArguments(tt.parenR);\n        base = this.finishNode(node, \"CallExpression\");\n      } else if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.match(tt.lt)\n      ) {\n        const state = this.state.clone();\n        const arrow = this.tryParse(\n          abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n          state,\n        );\n\n        /*:: invariant(arrow.node != null) */\n        // @ts-expect-error: refine tryParse typings\n        if (!arrow.error && !arrow.aborted) return arrow.node;\n\n        const result = this.tryParse(\n          () => super.parseSubscripts(base, startLoc, noCalls),\n          state,\n        );\n\n        if (result.node && !result.error) return result.node;\n\n        if (arrow.node) {\n          this.state = arrow.failState;\n          // @ts-expect-error: refine tryParse typings\n          return arrow.node;\n        }\n\n        if (result.node) {\n          this.state = result.failState;\n          return result.node;\n        }\n\n        throw arrow.error || result.error;\n      }\n\n      return super.parseSubscripts(base, startLoc, noCalls);\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      subscriptState: N.ParseSubscriptState,\n    ): N.Expression {\n      if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n        subscriptState.optionalChainMember = true;\n        if (noCalls) {\n          subscriptState.stop = true;\n          return base;\n        }\n        this.next();\n        const node = this.startNodeAt<N.OptionalCallExpression>(startLoc);\n        node.callee = base;\n        node.typeArguments =\n          this.flowParseTypeParameterInstantiationInExpression();\n        this.expect(tt.parenL);\n        node.arguments = this.parseCallExpressionArguments(tt.parenR);\n        node.optional = true;\n        return this.finishCallExpression(node, /* optional */ true);\n      } else if (\n        !noCalls &&\n        this.shouldParseTypes() &&\n        (this.match(tt.lt) ||\n          // also handles `new C<<T>`\n          this.match(tt.bitShiftL))\n      ) {\n        const node = this.startNodeAt<\n          N.OptionalCallExpression | N.CallExpression\n        >(startLoc);\n        node.callee = base;\n\n        const result = this.tryParse(() => {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationCallOrNew();\n          this.expect(tt.parenL);\n          node.arguments = super.parseCallExpressionArguments(tt.parenR);\n          if (subscriptState.optionalChainMember) {\n            (node as Undone<N.OptionalCallExpression>).optional = false;\n          }\n          return this.finishCallExpression(\n            node,\n            subscriptState.optionalChainMember,\n          );\n        });\n\n        if (result.node) {\n          if (result.error) this.state = result.failState;\n          return result.node;\n        }\n      }\n\n      return super.parseSubscript(\n        base,\n\n        startLoc,\n        noCalls,\n        subscriptState,\n      );\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      let targs = null;\n      if (this.shouldParseTypes() && this.match(tt.lt)) {\n        targs = this.tryParse(() =>\n          this.flowParseTypeParameterInstantiationCallOrNew(),\n        ).node;\n      }\n      node.typeArguments = targs;\n    }\n\n    parseAsyncArrowWithTypeParameters(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined | null {\n      const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n      this.parseFunctionParams(node, false);\n      if (!this.parseArrow(node)) return;\n      return super.parseArrowExpression(\n        node,\n        /* params */ undefined,\n        /* isAsync */ true,\n      );\n    }\n\n    readToken_mult_modulo(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.asterisk &&\n        next === charCodes.slash &&\n        this.state.hasFlowComment\n      ) {\n        this.state.hasFlowComment = false;\n        this.state.pos += 2;\n        this.nextToken();\n        return;\n      }\n\n      super.readToken_mult_modulo(code);\n    }\n\n    readToken_pipe_amp(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.verticalBar &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        // '|}'\n        this.finishOp(tt.braceBarR, 2);\n        return;\n      }\n\n      super.readToken_pipe_amp(code);\n    }\n\n    parseTopLevel(file: N.File, program: N.Program): N.File {\n      const fileNode = super.parseTopLevel(file, program);\n      if (this.state.hasFlowComment) {\n        this.raise(\n          FlowErrors.UnterminatedFlowComment,\n          this.state.curPosition(),\n        );\n      }\n      return fileNode;\n    }\n\n    skipBlockComment(): N.CommentBlock | undefined {\n      if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n        if (this.state.hasFlowComment) {\n          throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n        }\n        this.hasFlowCommentCompletion();\n        const commentSkip = this.skipFlowComment();\n        if (commentSkip) {\n          this.state.pos += commentSkip;\n          this.state.hasFlowComment = true;\n        }\n        return;\n      }\n\n      return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n    }\n\n    skipFlowComment(): number | false {\n      const { pos } = this.state;\n      let shiftToFirstNonWhiteSpace = 2;\n      while (\n        [charCodes.space, charCodes.tab].includes(\n          // @ts-expect-error testing whether a number is included\n          this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n        )\n      ) {\n        shiftToFirstNonWhiteSpace++;\n      }\n\n      const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n      const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n      if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n        return shiftToFirstNonWhiteSpace + 2; // check for /*::\n      }\n      if (\n        this.input.slice(\n          shiftToFirstNonWhiteSpace + pos,\n          shiftToFirstNonWhiteSpace + pos + 12,\n        ) === \"flow-include\"\n      ) {\n        return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n      }\n      if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n        return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n      }\n      return false;\n    }\n\n    hasFlowCommentCompletion(): void {\n      const end = this.input.indexOf(\"*/\", this.state.pos);\n      if (end === -1) {\n        throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n      }\n    }\n\n    // Flow enum parsing\n\n    flowEnumErrorBooleanMemberNotInitialized(\n      loc: Position,\n      {\n        enumName,\n        memberName,\n      }: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n        memberName,\n        enumName,\n      });\n    }\n\n    flowEnumErrorInvalidMemberInitializer(\n      loc: Position,\n      enumContext: EnumContext,\n    ) {\n      return this.raise(\n        !enumContext.explicitType\n          ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n          : enumContext.explicitType === \"symbol\"\n            ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n            : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n        loc,\n        enumContext,\n      );\n    }\n\n    flowEnumErrorNumberMemberNotInitialized(\n      loc: Position,\n      details: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n    }\n\n    flowEnumErrorStringMemberInconsistentlyInitialized(\n      node: N.Node,\n      details: {\n        enumName: string;\n      },\n    ): void {\n      this.raise(\n        FlowErrors.EnumStringMemberInconsistentlyInitialized,\n        node,\n        details,\n      );\n    }\n\n    flowEnumMemberInit(): EnumMemberInit {\n      const startLoc = this.state.startLoc;\n      const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n      switch (this.state.type) {\n        case tt.num: {\n          const literal = this.parseNumericLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"number\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt.string: {\n          const literal = this.parseStringLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"string\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt._true:\n        case tt._false: {\n          const literal = this.parseBooleanLiteral(this.match(tt._true));\n          if (endOfInit()) {\n            return {\n              type: \"boolean\",\n              loc: literal.loc.start,\n              value: literal,\n            };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        default:\n          return { type: \"invalid\", loc: startLoc };\n      }\n    }\n\n    flowEnumMemberRaw(): {\n      id: N.Identifier;\n      init: EnumMemberInit;\n    } {\n      const loc = this.state.startLoc;\n      const id = this.parseIdentifier(true);\n      const init = this.eat(tt.eq)\n        ? this.flowEnumMemberInit()\n        : { type: \"none\" as const, loc };\n      return { id, init };\n    }\n\n    flowEnumCheckExplicitTypeMismatch(\n      loc: Position,\n      context: EnumContext,\n      expectedType: EnumExplicitType,\n    ): void {\n      const { explicitType } = context;\n      if (explicitType === null) {\n        return;\n      }\n      if (explicitType !== expectedType) {\n        this.flowEnumErrorInvalidMemberInitializer(loc, context);\n      }\n    }\n\n    flowEnumMembers({\n      enumName,\n      explicitType,\n    }: {\n      enumName: string;\n      explicitType: EnumExplicitType;\n    }): {\n      members: {\n        booleanMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumBooleanMember\" }\n        >[];\n        numberMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumNumberMember\" }\n        >[];\n        stringMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumStringMember\" }\n        >[];\n        defaultedMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumDefaultedMember\" }\n        >[];\n      };\n      hasUnknownMembers: boolean;\n    } {\n      const seenNames = new Set();\n      const members = {\n        // @ts-expect-error: migrate to Babel types\n        booleanMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        numberMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        stringMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        defaultedMembers: [],\n      };\n      let hasUnknownMembers = false;\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.ellipsis)) {\n          hasUnknownMembers = true;\n          break;\n        }\n        const memberNode = this.startNode<N.FlowEnumMember>();\n        const { id, init } = this.flowEnumMemberRaw();\n        const memberName = id.name;\n        if (memberName === \"\") {\n          continue;\n        }\n        if (/^[a-z]/.test(memberName)) {\n          this.raise(FlowErrors.EnumInvalidMemberName, id, {\n            memberName,\n            suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n            enumName,\n          });\n        }\n        if (seenNames.has(memberName)) {\n          this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n            memberName,\n            enumName,\n          });\n        }\n        seenNames.add(memberName);\n        const context = { enumName, explicitType, memberName };\n        memberNode.id = id;\n        switch (init.type) {\n          case \"boolean\": {\n            this.flowEnumCheckExplicitTypeMismatch(\n              init.loc,\n              context,\n              \"boolean\",\n            );\n            memberNode.init = init.value;\n            members.booleanMembers.push(\n              this.finishNode(memberNode, \"EnumBooleanMember\"),\n            );\n            break;\n          }\n          case \"number\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n            memberNode.init = init.value;\n            members.numberMembers.push(\n              this.finishNode(memberNode, \"EnumNumberMember\"),\n            );\n            break;\n          }\n          case \"string\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n            memberNode.init = init.value;\n            members.stringMembers.push(\n              this.finishNode(memberNode, \"EnumStringMember\"),\n            );\n            break;\n          }\n          case \"invalid\": {\n            throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n          }\n          case \"none\": {\n            switch (explicitType) {\n              case \"boolean\":\n                this.flowEnumErrorBooleanMemberNotInitialized(\n                  init.loc,\n                  context,\n                );\n                break;\n              case \"number\":\n                this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n                break;\n              default:\n                members.defaultedMembers.push(\n                  this.finishNode(memberNode, \"EnumDefaultedMember\"),\n                );\n            }\n          }\n        }\n\n        if (!this.match(tt.braceR)) {\n          this.expect(tt.comma);\n        }\n      }\n      return { members, hasUnknownMembers };\n    }\n\n    flowEnumStringMembers(\n      initializedMembers: Array<N.Node>,\n      defaultedMembers: Array<N.Node>,\n      {\n        enumName,\n      }: {\n        enumName: string;\n      },\n    ): Array<N.Node> {\n      if (initializedMembers.length === 0) {\n        return defaultedMembers;\n      } else if (defaultedMembers.length === 0) {\n        return initializedMembers;\n      } else if (defaultedMembers.length > initializedMembers.length) {\n        for (const member of initializedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return defaultedMembers;\n      } else {\n        for (const member of defaultedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return initializedMembers;\n      }\n    }\n\n    flowEnumParseExplicitType({\n      enumName,\n    }: {\n      enumName: string;\n    }): EnumExplicitType {\n      if (!this.eatContextual(tt._of)) return null;\n\n      if (!tokenIsIdentifier(this.state.type)) {\n        throw this.raise(\n          FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n          this.state.startLoc,\n          {\n            enumName,\n          },\n        );\n      }\n\n      const { value } = this.state;\n      this.next();\n\n      if (\n        value !== \"boolean\" &&\n        value !== \"number\" &&\n        value !== \"string\" &&\n        value !== \"symbol\"\n      ) {\n        this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n          enumName,\n          invalidEnumType: value,\n        });\n      }\n\n      return value;\n    }\n\n    flowEnumBody(node: Undone<N.FlowEnumBody>, id: N.Identifier): N.Node {\n      const enumName = id.name;\n      const nameLoc = id.loc.start;\n      const explicitType = this.flowEnumParseExplicitType({ enumName });\n      this.expect(tt.braceL);\n      const { members, hasUnknownMembers } = this.flowEnumMembers({\n        enumName,\n        explicitType,\n      });\n      node.hasUnknownMembers = hasUnknownMembers;\n\n      switch (explicitType) {\n        case \"boolean\":\n          node.explicitType = true;\n          node.members = members.booleanMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumBooleanBody\");\n        case \"number\":\n          node.explicitType = true;\n          node.members = members.numberMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumNumberBody\");\n        case \"string\":\n          node.explicitType = true;\n          node.members = this.flowEnumStringMembers(\n            members.stringMembers,\n            members.defaultedMembers,\n            { enumName },\n          );\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumStringBody\");\n        case \"symbol\":\n          node.members = members.defaultedMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumSymbolBody\");\n        default: {\n          // `explicitType` is `null`\n          const empty = () => {\n            node.members = [];\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          };\n          node.explicitType = false;\n\n          const boolsLen = members.booleanMembers.length;\n          const numsLen = members.numberMembers.length;\n          const strsLen = members.stringMembers.length;\n          const defaultedLen = members.defaultedMembers.length;\n\n          if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n            return empty();\n          } else if (!boolsLen && !numsLen) {\n            node.members = this.flowEnumStringMembers(\n              members.stringMembers,\n              members.defaultedMembers,\n              { enumName },\n            );\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.booleanMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumBooleanBody\");\n          } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.numberMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumNumberBody\");\n          } else {\n            this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n              enumName,\n            });\n            return empty();\n          }\n        }\n      }\n    }\n\n    flowParseEnumDeclaration(\n      node: Undone<N.FlowEnumDeclaration>,\n    ): N.FlowEnumDeclaration {\n      const id = this.parseIdentifier();\n      node.id = id;\n      node.body = this.flowEnumBody(this.startNode(), id);\n      return this.finishNode(node, \"EnumDeclaration\");\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      if (this.shouldParseTypes()) {\n        if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationInExpression();\n        }\n      }\n\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    // check if the next token is a tt.lt\n    isLookaheadToken_lt(): boolean {\n      const next = this.nextTokenStart();\n      if (this.input.charCodeAt(next) === charCodes.lessThan) {\n        const afterNext = this.input.charCodeAt(next + 1);\n        return (\n          afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n        );\n      }\n      return false;\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    maybeUnwrapTypeCastExpression(node: N.Node) {\n      return node.type === \"TypeCastExpression\" ? node.expression : node;\n    }\n  };\n","const entities: {\n  __proto__: null;\n  [name: string]: string;\n} = {\n  __proto__: null,\n  quot: \"\\u0022\",\n  amp: \"&\",\n  apos: \"\\u0027\",\n  lt: \"<\",\n  gt: \">\",\n  nbsp: \"\\u00A0\",\n  iexcl: \"\\u00A1\",\n  cent: \"\\u00A2\",\n  pound: \"\\u00A3\",\n  curren: \"\\u00A4\",\n  yen: \"\\u00A5\",\n  brvbar: \"\\u00A6\",\n  sect: \"\\u00A7\",\n  uml: \"\\u00A8\",\n  copy: \"\\u00A9\",\n  ordf: \"\\u00AA\",\n  laquo: \"\\u00AB\",\n  not: \"\\u00AC\",\n  shy: \"\\u00AD\",\n  reg: \"\\u00AE\",\n  macr: \"\\u00AF\",\n  deg: \"\\u00B0\",\n  plusmn: \"\\u00B1\",\n  sup2: \"\\u00B2\",\n  sup3: \"\\u00B3\",\n  acute: \"\\u00B4\",\n  micro: \"\\u00B5\",\n  para: \"\\u00B6\",\n  middot: \"\\u00B7\",\n  cedil: \"\\u00B8\",\n  sup1: \"\\u00B9\",\n  ordm: \"\\u00BA\",\n  raquo: \"\\u00BB\",\n  frac14: \"\\u00BC\",\n  frac12: \"\\u00BD\",\n  frac34: \"\\u00BE\",\n  iquest: \"\\u00BF\",\n  Agrave: \"\\u00C0\",\n  Aacute: \"\\u00C1\",\n  Acirc: \"\\u00C2\",\n  Atilde: \"\\u00C3\",\n  Auml: \"\\u00C4\",\n  Aring: \"\\u00C5\",\n  AElig: \"\\u00C6\",\n  Ccedil: \"\\u00C7\",\n  Egrave: \"\\u00C8\",\n  Eacute: \"\\u00C9\",\n  Ecirc: \"\\u00CA\",\n  Euml: \"\\u00CB\",\n  Igrave: \"\\u00CC\",\n  Iacute: \"\\u00CD\",\n  Icirc: \"\\u00CE\",\n  Iuml: \"\\u00CF\",\n  ETH: \"\\u00D0\",\n  Ntilde: \"\\u00D1\",\n  Ograve: \"\\u00D2\",\n  Oacute: \"\\u00D3\",\n  Ocirc: \"\\u00D4\",\n  Otilde: \"\\u00D5\",\n  Ouml: \"\\u00D6\",\n  times: \"\\u00D7\",\n  Oslash: \"\\u00D8\",\n  Ugrave: \"\\u00D9\",\n  Uacute: \"\\u00DA\",\n  Ucirc: \"\\u00DB\",\n  Uuml: \"\\u00DC\",\n  Yacute: \"\\u00DD\",\n  THORN: \"\\u00DE\",\n  szlig: \"\\u00DF\",\n  agrave: \"\\u00E0\",\n  aacute: \"\\u00E1\",\n  acirc: \"\\u00E2\",\n  atilde: \"\\u00E3\",\n  auml: \"\\u00E4\",\n  aring: \"\\u00E5\",\n  aelig: \"\\u00E6\",\n  ccedil: \"\\u00E7\",\n  egrave: \"\\u00E8\",\n  eacute: \"\\u00E9\",\n  ecirc: \"\\u00EA\",\n  euml: \"\\u00EB\",\n  igrave: \"\\u00EC\",\n  iacute: \"\\u00ED\",\n  icirc: \"\\u00EE\",\n  iuml: \"\\u00EF\",\n  eth: \"\\u00F0\",\n  ntilde: \"\\u00F1\",\n  ograve: \"\\u00F2\",\n  oacute: \"\\u00F3\",\n  ocirc: \"\\u00F4\",\n  otilde: \"\\u00F5\",\n  ouml: \"\\u00F6\",\n  divide: \"\\u00F7\",\n  oslash: \"\\u00F8\",\n  ugrave: \"\\u00F9\",\n  uacute: \"\\u00FA\",\n  ucirc: \"\\u00FB\",\n  uuml: \"\\u00FC\",\n  yacute: \"\\u00FD\",\n  thorn: \"\\u00FE\",\n  yuml: \"\\u00FF\",\n  OElig: \"\\u0152\",\n  oelig: \"\\u0153\",\n  Scaron: \"\\u0160\",\n  scaron: \"\\u0161\",\n  Yuml: \"\\u0178\",\n  fnof: \"\\u0192\",\n  circ: \"\\u02C6\",\n  tilde: \"\\u02DC\",\n  Alpha: \"\\u0391\",\n  Beta: \"\\u0392\",\n  Gamma: \"\\u0393\",\n  Delta: \"\\u0394\",\n  Epsilon: \"\\u0395\",\n  Zeta: \"\\u0396\",\n  Eta: \"\\u0397\",\n  Theta: \"\\u0398\",\n  Iota: \"\\u0399\",\n  Kappa: \"\\u039A\",\n  Lambda: \"\\u039B\",\n  Mu: \"\\u039C\",\n  Nu: \"\\u039D\",\n  Xi: \"\\u039E\",\n  Omicron: \"\\u039F\",\n  Pi: \"\\u03A0\",\n  Rho: \"\\u03A1\",\n  Sigma: \"\\u03A3\",\n  Tau: \"\\u03A4\",\n  Upsilon: \"\\u03A5\",\n  Phi: \"\\u03A6\",\n  Chi: \"\\u03A7\",\n  Psi: \"\\u03A8\",\n  Omega: \"\\u03A9\",\n  alpha: \"\\u03B1\",\n  beta: \"\\u03B2\",\n  gamma: \"\\u03B3\",\n  delta: \"\\u03B4\",\n  epsilon: \"\\u03B5\",\n  zeta: \"\\u03B6\",\n  eta: \"\\u03B7\",\n  theta: \"\\u03B8\",\n  iota: \"\\u03B9\",\n  kappa: \"\\u03BA\",\n  lambda: \"\\u03BB\",\n  mu: \"\\u03BC\",\n  nu: \"\\u03BD\",\n  xi: \"\\u03BE\",\n  omicron: \"\\u03BF\",\n  pi: \"\\u03C0\",\n  rho: \"\\u03C1\",\n  sigmaf: \"\\u03C2\",\n  sigma: \"\\u03C3\",\n  tau: \"\\u03C4\",\n  upsilon: \"\\u03C5\",\n  phi: \"\\u03C6\",\n  chi: \"\\u03C7\",\n  psi: \"\\u03C8\",\n  omega: \"\\u03C9\",\n  thetasym: \"\\u03D1\",\n  upsih: \"\\u03D2\",\n  piv: \"\\u03D6\",\n  ensp: \"\\u2002\",\n  emsp: \"\\u2003\",\n  thinsp: \"\\u2009\",\n  zwnj: \"\\u200C\",\n  zwj: \"\\u200D\",\n  lrm: \"\\u200E\",\n  rlm: \"\\u200F\",\n  ndash: \"\\u2013\",\n  mdash: \"\\u2014\",\n  lsquo: \"\\u2018\",\n  rsquo: \"\\u2019\",\n  sbquo: \"\\u201A\",\n  ldquo: \"\\u201C\",\n  rdquo: \"\\u201D\",\n  bdquo: \"\\u201E\",\n  dagger: \"\\u2020\",\n  Dagger: \"\\u2021\",\n  bull: \"\\u2022\",\n  hellip: \"\\u2026\",\n  permil: \"\\u2030\",\n  prime: \"\\u2032\",\n  Prime: \"\\u2033\",\n  lsaquo: \"\\u2039\",\n  rsaquo: \"\\u203A\",\n  oline: \"\\u203E\",\n  frasl: \"\\u2044\",\n  euro: \"\\u20AC\",\n  image: \"\\u2111\",\n  weierp: \"\\u2118\",\n  real: \"\\u211C\",\n  trade: \"\\u2122\",\n  alefsym: \"\\u2135\",\n  larr: \"\\u2190\",\n  uarr: \"\\u2191\",\n  rarr: \"\\u2192\",\n  darr: \"\\u2193\",\n  harr: \"\\u2194\",\n  crarr: \"\\u21B5\",\n  lArr: \"\\u21D0\",\n  uArr: \"\\u21D1\",\n  rArr: \"\\u21D2\",\n  dArr: \"\\u21D3\",\n  hArr: \"\\u21D4\",\n  forall: \"\\u2200\",\n  part: \"\\u2202\",\n  exist: \"\\u2203\",\n  empty: \"\\u2205\",\n  nabla: \"\\u2207\",\n  isin: \"\\u2208\",\n  notin: \"\\u2209\",\n  ni: \"\\u220B\",\n  prod: \"\\u220F\",\n  sum: \"\\u2211\",\n  minus: \"\\u2212\",\n  lowast: \"\\u2217\",\n  radic: \"\\u221A\",\n  prop: \"\\u221D\",\n  infin: \"\\u221E\",\n  ang: \"\\u2220\",\n  and: \"\\u2227\",\n  or: \"\\u2228\",\n  cap: \"\\u2229\",\n  cup: \"\\u222A\",\n  int: \"\\u222B\",\n  there4: \"\\u2234\",\n  sim: \"\\u223C\",\n  cong: \"\\u2245\",\n  asymp: \"\\u2248\",\n  ne: \"\\u2260\",\n  equiv: \"\\u2261\",\n  le: \"\\u2264\",\n  ge: \"\\u2265\",\n  sub: \"\\u2282\",\n  sup: \"\\u2283\",\n  nsub: \"\\u2284\",\n  sube: \"\\u2286\",\n  supe: \"\\u2287\",\n  oplus: \"\\u2295\",\n  otimes: \"\\u2297\",\n  perp: \"\\u22A5\",\n  sdot: \"\\u22C5\",\n  lceil: \"\\u2308\",\n  rceil: \"\\u2309\",\n  lfloor: \"\\u230A\",\n  rfloor: \"\\u230B\",\n  lang: \"\\u2329\",\n  rang: \"\\u232A\",\n  loz: \"\\u25CA\",\n  spades: \"\\u2660\",\n  clubs: \"\\u2663\",\n  hearts: \"\\u2665\",\n  diams: \"\\u2666\",\n} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n  tokenComesBeforeExpression,\n  tokenIsKeyword,\n  tokenLabelName,\n  type TokenType,\n  tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n  AttributeIsEmpty:\n    \"JSX attributes must only be assigned a non-empty expression.\",\n  MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n    `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n  MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n  UnexpectedSequenceExpression:\n    \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n  // FIXME: Unify with Errors.UnexpectedToken\n  UnexpectedToken: ({\n    unexpected,\n    HTMLEntity,\n  }: {\n    unexpected: string;\n    HTMLEntity: string;\n  }) =>\n    `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n  UnsupportedJsxValue:\n    \"JSX value should be either an expression or a quoted JSX text.\",\n  UnterminatedJsxContent: \"Unterminated JSX contents.\",\n  UnwrappedAdjacentJSXElements:\n    \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n  return object\n    ? object.type === \"JSXOpeningFragment\" ||\n        object.type === \"JSXClosingFragment\"\n    : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n  object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n  if (object.type === \"JSXIdentifier\") {\n    return object.name;\n  }\n\n  if (object.type === \"JSXNamespacedName\") {\n    return object.namespace.name + \":\" + object.name.name;\n  }\n\n  if (object.type === \"JSXMemberExpression\") {\n    return (\n      getQualifiedJSXName(object.object) +\n      \".\" +\n      getQualifiedJSXName(object.property)\n    );\n  }\n\n  // istanbul ignore next\n  // @ts-expect-error - object is 'never'\n  throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n  jsxParseOpeningElementAfterName(\n    node: N.JSXOpeningElement,\n  ): N.JSXOpeningElement;\n}\n\nexport type ClassWithMixin<\n  T extends new (...args: any) => any,\n  M extends object,\n> = T extends new (...args: infer P) => infer I\n  ? new (...args: P) => I & M\n  : never;\n\nexport default (superClass: typeof Parser) =>\n  class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n    // Reads inline JSX contents token.\n\n    jsxReadToken(): void {\n      let out = \"\";\n      let chunkStart = this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(\n            JsxErrors.UnterminatedJsxContent,\n            this.state.startLoc,\n          );\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n\n        switch (ch) {\n          case charCodes.lessThan:\n          case charCodes.leftCurlyBrace:\n            if (this.state.pos === this.state.start) {\n              if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n                ++this.state.pos;\n                this.finishToken(tt.jsxTagStart);\n              } else {\n                super.getTokenFromCode(ch);\n              }\n              return;\n            }\n            out += this.input.slice(chunkStart, this.state.pos);\n            this.finishToken(tt.jsxText, out);\n            return;\n\n          case charCodes.ampersand:\n            out += this.input.slice(chunkStart, this.state.pos);\n            out += this.jsxReadEntity();\n            chunkStart = this.state.pos;\n            break;\n\n          case charCodes.greaterThan:\n          case charCodes.rightCurlyBrace:\n            if (process.env.BABEL_8_BREAKING) {\n              this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n                unexpected: this.input[this.state.pos],\n                HTMLEntity:\n                  ch === charCodes.rightCurlyBrace ? \"&rbrace;\" : \"&gt;\",\n              });\n            }\n          /* falls through */\n\n          default:\n            if (isNewLine(ch)) {\n              out += this.input.slice(chunkStart, this.state.pos);\n              out += this.jsxReadNewLine(true);\n              chunkStart = this.state.pos;\n            } else {\n              ++this.state.pos;\n            }\n        }\n      }\n    }\n\n    jsxReadNewLine(normalizeCRLF: boolean): string {\n      const ch = this.input.charCodeAt(this.state.pos);\n      let out;\n      ++this.state.pos;\n      if (\n        ch === charCodes.carriageReturn &&\n        this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n      ) {\n        ++this.state.pos;\n        out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      ++this.state.curLine;\n      this.state.lineStart = this.state.pos;\n\n      return out;\n    }\n\n    jsxReadString(quote: number): void {\n      let out = \"\";\n      let chunkStart = ++this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n        if (ch === quote) break;\n        if (ch === charCodes.ampersand) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadEntity();\n          chunkStart = this.state.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadNewLine(false);\n          chunkStart = this.state.pos;\n        } else {\n          ++this.state.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.state.pos++);\n      this.finishToken(tt.string, out);\n    }\n\n    jsxReadEntity(): string {\n      const startPos = ++this.state.pos;\n      if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n        ++this.state.pos;\n\n        let radix = 10;\n        if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n          radix = 16;\n          ++this.state.pos;\n        }\n\n        const codePoint = this.readInt(\n          radix,\n          /* len */ undefined,\n          /* forceLen */ false,\n          /* allowNumSeparator */ \"bail\",\n        );\n        if (\n          codePoint !== null &&\n          this.codePointAtPos(this.state.pos) === charCodes.semicolon\n        ) {\n          ++this.state.pos;\n          return String.fromCodePoint(codePoint);\n        }\n      } else {\n        let count = 0;\n        let semi = false;\n        while (\n          count++ < 10 &&\n          this.state.pos < this.length &&\n          !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n        ) {\n          ++this.state.pos;\n        }\n\n        if (semi) {\n          const desc = this.input.slice(startPos, this.state.pos);\n          const entity = XHTMLEntities[desc];\n          ++this.state.pos;\n\n          if (entity) {\n            return entity;\n          }\n        }\n      }\n\n      // Not a valid entity\n      this.state.pos = startPos;\n      return \"&\";\n    }\n\n    // Read a JSX identifier (valid tag or attribute name).\n    //\n    // Optimized version since JSX identifiers can\"t contain\n    // escape characters and so can be read as single slice.\n    // Also assumes that first character was already checked\n    // by isIdentifierStart in readToken.\n\n    jsxReadWord(): void {\n      let ch;\n      const start = this.state.pos;\n      do {\n        ch = this.input.charCodeAt(++this.state.pos);\n      } while (isIdentifierChar(ch) || ch === charCodes.dash);\n      this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsxParseIdentifier(): N.JSXIdentifier {\n      const node = this.startNode<N.JSXIdentifier>();\n      if (this.match(tt.jsxName)) {\n        node.name = this.state.value;\n      } else if (tokenIsKeyword(this.state.type)) {\n        node.name = tokenLabelName(this.state.type);\n      } else {\n        this.unexpected();\n      }\n      this.next();\n      return this.finishNode(node, \"JSXIdentifier\");\n    }\n\n    // Parse namespaced identifier.\n\n    jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n      const startLoc = this.state.startLoc;\n      const name = this.jsxParseIdentifier();\n      if (!this.eat(tt.colon)) return name;\n\n      const node = this.startNodeAt<N.JSXNamespacedName>(startLoc);\n      node.namespace = name;\n      node.name = this.jsxParseIdentifier();\n      return this.finishNode(node, \"JSXNamespacedName\");\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsxParseElementName():\n      | N.JSXIdentifier\n      | N.JSXNamespacedName\n      | N.JSXMemberExpression {\n      const startLoc = this.state.startLoc;\n      let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n        this.jsxParseNamespacedName();\n      if (node.type === \"JSXNamespacedName\") {\n        return node;\n      }\n      while (this.eat(tt.dot)) {\n        const newNode = this.startNodeAt<N.JSXMemberExpression>(startLoc);\n        newNode.object = node;\n        newNode.property = this.jsxParseIdentifier();\n        node = this.finishNode(newNode, \"JSXMemberExpression\");\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsxParseAttributeValue():\n      | N.JSXExpressionContainer\n      | N.JSXElement\n      | N.StringLiteral {\n      let node;\n      switch (this.state.type) {\n        case tt.braceL:\n          node = this.startNode();\n          this.setContext(tc.brace);\n          this.next();\n          node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n          if (node.expression.type === \"JSXEmptyExpression\") {\n            this.raise(JsxErrors.AttributeIsEmpty, node);\n          }\n          return node;\n\n        case tt.jsxTagStart:\n        case tt.string:\n          return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n        default:\n          throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n      }\n    }\n\n    // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n    // and so it should start at the end of last read token (left brace) and finish\n    // at the beginning of the next one (right brace).\n\n    jsxParseEmptyExpression(): N.JSXEmptyExpression {\n      const node = this.startNodeAt(this.state.lastTokEndLoc);\n      return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n    }\n\n    // Parse JSX spread child\n\n    jsxParseSpreadChild(node: Undone<N.JSXSpreadChild>): N.JSXSpreadChild {\n      this.next(); // ellipsis\n      node.expression = this.parseExpression();\n      this.setContext(tc.j_expr);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXSpreadChild\");\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsxParseExpressionContainer(\n      node: Undone<N.JSXExpressionContainer>,\n      previousContext: TokContext,\n    ): N.JSXExpressionContainer {\n      if (this.match(tt.braceR)) {\n        node.expression = this.jsxParseEmptyExpression();\n      } else {\n        const expression = this.parseExpression();\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            expression.type === \"SequenceExpression\" &&\n            !expression.extra?.parenthesized\n          ) {\n            this.raise(\n              JsxErrors.UnexpectedSequenceExpression,\n              expression.expressions[1],\n            );\n          }\n        }\n\n        node.expression = expression;\n      }\n      this.setContext(previousContext);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXExpressionContainer\");\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n      const node = this.startNode<N.JSXAttribute | N.JSXSpreadAttribute>();\n      if (this.match(tt.braceL)) {\n        this.setContext(tc.brace);\n        this.next();\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssignAllowIn();\n        this.setContext(tc.j_oTag);\n        this.state.canStartJSXElement = true;\n        this.expect(tt.braceR);\n        return this.finishNode(node, \"JSXSpreadAttribute\");\n      }\n      node.name = this.jsxParseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n      return this.finishNode(node, \"JSXAttribute\");\n    }\n\n    // Parses JSX opening tag starting after \"<\".\n\n    jsxParseOpeningElementAt(\n      startLoc: Position,\n    ): N.JSXOpeningElement | N.JSXOpeningFragment {\n      const node = this.startNodeAt<N.JSXOpeningElement | N.JSXOpeningFragment>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXOpeningFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      return this.jsxParseOpeningElementAfterName(\n        node as Undone<N.JSXOpeningElement>,\n      );\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: Undone<N.JSXOpeningElement>,\n    ): N.JSXOpeningElement {\n      const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n      while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n        attributes.push(this.jsxParseAttribute());\n      }\n      node.attributes = attributes;\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXOpeningElement\");\n    }\n\n    // Parses JSX closing tag starting after \"</\".\n\n    jsxParseClosingElementAt(\n      startLoc: Position,\n    ): N.JSXClosingElement | N.JSXClosingFragment {\n      const node = this.startNodeAt<N.JSXClosingFragment | N.JSXClosingElement>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXClosingFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXClosingElement\");\n    }\n\n    // Parses entire JSX element, including it\"s opening tag\n    // (starting after \"<\"), attributes, contents and closing tag.\n\n    jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n      const node = this.startNodeAt<N.JSXElement | N.JSXFragment>(startLoc);\n      const children = [];\n      const openingElement = this.jsxParseOpeningElementAt(startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.state.type) {\n            case tt.jsxTagStart:\n              startLoc = this.state.startLoc;\n              this.next();\n              if (this.eat(tt.slash)) {\n                closingElement = this.jsxParseClosingElementAt(startLoc);\n                break contents;\n              }\n              children.push(this.jsxParseElementAt(startLoc));\n              break;\n\n            case tt.jsxText:\n              children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n              break;\n\n            case tt.braceL: {\n              const node = this.startNode<\n                N.JSXSpreadChild | N.JSXExpressionContainer\n              >();\n              this.setContext(tc.brace);\n              this.next();\n              if (this.match(tt.ellipsis)) {\n                children.push(this.jsxParseSpreadChild(node));\n              } else {\n                children.push(\n                  this.jsxParseExpressionContainer(node, tc.j_expr),\n                );\n              }\n\n              break;\n            }\n            // istanbul ignore next - should never happen\n            default:\n              this.unexpected();\n          }\n        }\n\n        if (\n          isFragment(openingElement) &&\n          !isFragment(closingElement) &&\n          closingElement !== null\n        ) {\n          this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n        } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n          this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n            openingTagName: getQualifiedJSXName(openingElement.name),\n          });\n        } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n          if (\n            getQualifiedJSXName(closingElement.name) !==\n            getQualifiedJSXName(openingElement.name)\n          ) {\n            this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n              openingTagName: getQualifiedJSXName(openingElement.name),\n            });\n          }\n        }\n      }\n\n      if (isFragment(openingElement)) {\n        node.openingFragment = openingElement;\n        node.closingFragment = closingElement;\n      } else {\n        node.openingElement = openingElement;\n        node.closingElement = closingElement;\n      }\n      node.children = children;\n      if (this.match(tt.lt)) {\n        throw this.raise(\n          JsxErrors.UnwrappedAdjacentJSXElements,\n          this.state.startLoc,\n        );\n      }\n\n      return isFragment(openingElement)\n        ? this.finishNode(node, \"JSXFragment\")\n        : this.finishNode(node, \"JSXElement\");\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsxParseElement(): N.JSXElement | N.JSXFragment {\n      const startLoc = this.state.startLoc;\n      this.next();\n      return this.jsxParseElementAt(startLoc);\n    }\n\n    setContext(newContext: TokContext) {\n      const { context } = this.state;\n      context[context.length - 1] = newContext;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      if (this.match(tt.jsxTagStart)) {\n        return this.jsxParseElement();\n      } else if (\n        this.match(tt.lt) &&\n        this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n      ) {\n        // In case we encounter an lt token here it will always be the start of\n        // jsx as the lt sign is not allowed in places that expect an expression\n        this.replaceToken(tt.jsxTagStart);\n        return this.jsxParseElement();\n      } else {\n        return super.parseExprAtom(refExpressionErrors);\n      }\n    }\n\n    skipSpace() {\n      const curContext = this.curContext();\n      if (!curContext.preserveSpace) super.skipSpace();\n    }\n\n    getTokenFromCode(code: number): void {\n      const context = this.curContext();\n\n      if (context === tc.j_expr) {\n        this.jsxReadToken();\n        return;\n      }\n\n      if (context === tc.j_oTag || context === tc.j_cTag) {\n        if (isIdentifierStart(code)) {\n          this.jsxReadWord();\n          return;\n        }\n\n        if (code === charCodes.greaterThan) {\n          ++this.state.pos;\n          this.finishToken(tt.jsxTagEnd);\n          return;\n        }\n\n        if (\n          (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n          context === tc.j_oTag\n        ) {\n          this.jsxReadString(code);\n          return;\n        }\n      }\n\n      if (\n        code === charCodes.lessThan &&\n        this.state.canStartJSXElement &&\n        this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n      ) {\n        ++this.state.pos;\n        this.finishToken(tt.jsxTagStart);\n        return;\n      }\n\n      super.getTokenFromCode(code);\n    }\n\n    updateContext(prevType: TokenType): void {\n      const { context, type } = this.state;\n      if (type === tt.slash && prevType === tt.jsxTagStart) {\n        // do not consider JSX expr -> JSX open tag -> ... anymore\n        // reconsider as closing tag context\n        context.splice(-2, 2, tc.j_cTag);\n        this.state.canStartJSXElement = false;\n      } else if (type === tt.jsxTagStart) {\n        // start opening tag context\n        context.push(tc.j_oTag);\n      } else if (type === tt.jsxTagEnd) {\n        const out = context[context.length - 1];\n        if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n          context.pop();\n          this.state.canStartJSXElement =\n            context[context.length - 1] === tc.j_expr;\n        } else {\n          this.setContext(tc.j_expr);\n          this.state.canStartJSXElement = true;\n        }\n      } else {\n        this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n      }\n    }\n  };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n  Types = 1 << 0,\n  // enums (which are also in .types)\n  Enums = 1 << 1,\n  // const enums (which are also in .enums and .types)\n  ConstEnums = 1 << 2,\n  // classes (which are also in .lexical) and interface (which are also in .types)\n  Classes = 1 << 3,\n  // namespaces and ambient functions (or classes) are too difficult to track,\n  // especially without type analysis.\n  // We need to track them anyway, to avoid \"X is not defined\" errors\n  // when exporting them.\n  ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n  tsNames: Map<string, TsNameType> = new Map();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n  importsStack: Set<string>[] = [];\n\n  createScope(flags: ScopeFlag): TypeScriptScope {\n    this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n    return new TypeScriptScope(flags);\n  }\n\n  enter(flags: ScopeFlag): void {\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.push(new Set());\n    }\n\n    super.enter(flags);\n  }\n\n  exit() {\n    const flags = super.exit();\n\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.pop();\n    }\n\n    return flags;\n  }\n\n  hasImport(name: string, allowShadow?: boolean) {\n    const len = this.importsStack.length;\n    if (this.importsStack[len - 1].has(name)) {\n      return true;\n    }\n    if (!allowShadow && len > 1) {\n      for (let i = 0; i < len - 1; i++) {\n        if (this.importsStack[i].has(name)) return true;\n      }\n    }\n    return false;\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n      if (this.hasImport(name, true)) {\n        this.parser.raise(Errors.VarRedeclaration, loc, {\n          identifierName: name,\n        });\n      }\n      this.importsStack[this.importsStack.length - 1].add(name);\n      return;\n    }\n\n    const scope = this.currentScope();\n    let type = scope.tsNames.get(name) || 0;\n\n    if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n      this.maybeExportDefined(scope, name);\n      scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n\n    if (bindingType & BindingFlag.KIND_TYPE) {\n      if (!(bindingType & BindingFlag.KIND_VALUE)) {\n        // \"Value\" bindings have already been registered by the superclass.\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        this.maybeExportDefined(scope, name);\n      }\n      type = type | TsNameType.Types;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n      type = type | TsNameType.Enums;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n      type = type | TsNameType.ConstEnums;\n    }\n    if (bindingType & BindingFlag.FLAG_CLASS) {\n      type = type | TsNameType.Classes;\n    }\n    if (type) scope.tsNames.set(name, type);\n  }\n\n  isRedeclaredInScope(\n    scope: TypeScriptScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    const type = scope.tsNames.get(name);\n    if ((type & TsNameType.Enums) > 0) {\n      if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n        // Enums can be merged with other enums if they are both\n        //  const or both non-const.\n        const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n        const wasConst = (type & TsNameType.ConstEnums) > 0;\n        return isConst !== wasConst;\n      }\n      return true;\n    }\n    if (\n      bindingType & BindingFlag.FLAG_CLASS &&\n      (type & TsNameType.Classes) > 0\n    ) {\n      if (scope.names.get(name) & NameType.Lexical) {\n        // Classes can be merged with interfaces\n        return !!(bindingType & BindingFlag.KIND_VALUE);\n      } else {\n        // Interface can be merged with other classes or interfaces\n        return false;\n      }\n    }\n    if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n      return true;\n    }\n\n    return super.isRedeclaredInScope(scope, name, bindingType);\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n\n    if (this.hasImport(name)) return;\n\n    const len = this.scopeStack.length;\n    for (let i = len - 1; i >= 0; i--) {\n      const scope = this.scopeStack[i];\n      const type = scope.tsNames.get(name);\n      if (\n        (type & TsNameType.Types) > 0 ||\n        (type & TsNameType.ExportOnlyBindings) > 0\n      ) {\n        return;\n      }\n    }\n\n    super.checkLocalExport(id);\n  }\n}\n","import * as charCodes from \"charcodes\";\nimport { tt, type TokenType } from \"../tokenizer/types.ts\";\nimport type {\n  AssignmentPattern,\n  TSParameterProperty,\n  Decorator,\n  Expression,\n  Identifier,\n  Node,\n  Pattern,\n  RestElement,\n  SpreadElement,\n  ObjectOrClassMember,\n  ClassMember,\n  ObjectMember,\n  TsNamedTypeElementBase,\n  PrivateName,\n  ObjectExpression,\n  ObjectPattern,\n  ArrayPattern,\n  AssignmentProperty,\n  Assignable,\n} from \"../types.ts\";\nimport type { Pos, Position } from \"../util/location.ts\";\nimport {\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n} from \"../util/identifier.ts\";\nimport { NodeUtils, type Undone } from \"./node.ts\";\nimport { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"./util.ts\";\nimport { Errors, type LValAncestor } from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nconst unwrapParenthesizedExpression = (node: Node): Node => {\n  return node.type === \"ParenthesizedExpression\"\n    ? unwrapParenthesizedExpression(node.expression)\n    : node;\n};\n\nexport const enum ParseBindingListFlags {\n  ALLOW_EMPTY = 1 << 0,\n  IS_FUNCTION_PARAMS = 1 << 1,\n  IS_CONSTRUCTOR_PARAMS = 1 << 2,\n}\n\nexport default abstract class LValParser extends NodeUtils {\n  // Forward-declaration: defined in expression.js\n  abstract parseIdentifier(liberal?: boolean): Identifier;\n  abstract parseMaybeAssign(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n    refNeedsArrowPos?: Pos | null,\n  ): Expression;\n\n  abstract parseMaybeAssignAllowIn(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n    refNeedsArrowPos?: Pos | null,\n  ): Expression;\n\n  abstract parseObjectLike<T extends ObjectPattern | ObjectExpression>(\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): T;\n  abstract parseObjPropValue(\n    prop: any,\n    startLoc: Position | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void;\n  abstract parsePropertyName(\n    prop: ObjectOrClassMember | ClassMember | TsNamedTypeElementBase,\n  ): void;\n  abstract parsePrivateName(): PrivateName;\n  // Forward-declaration: defined in statement.js\n  abstract parseDecorator(): Decorator;\n\n  /**\n   * Convert existing expression atom to assignable pattern\n   * if possible. Also checks invalid destructuring targets:\n   *\n   * - Parenthesized Destructuring patterns\n   * - RestElement is not the last element\n   * - Missing `=` in assignment pattern\n   *\n   * NOTE: There is a corresponding \"isAssignable\" method.\n   * When this one is updated, please check if also that one needs to be updated.\n   *\n   * @param node The expression atom\n   * @param isLHS Whether we are parsing a LeftHandSideExpression.\n   *              If isLHS is `true`, the following cases are allowed: `[(a)] = [0]`, `[(a.b)] = [0]`\n   *              If isLHS is `false`, we are in an arrow function parameters list.\n   */\n  toAssignable(node: Node, isLHS: boolean = false): asserts node is Assignable {\n    let parenthesized = undefined;\n    if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n      parenthesized = unwrapParenthesizedExpression(node);\n      if (isLHS) {\n        // an LHS can be reinterpreted to a binding pattern but not vice versa.\n        // therefore a parenthesized identifier is ambiguous until we are sure it is an assignment expression\n        // i.e. `([(a) = []] = []) => {}`\n        // see also `recordArrowParameterBindingError` signature in packages/babel-parser/src/util/expression-scope.js\n        if (parenthesized.type === \"Identifier\") {\n          this.expressionScope.recordArrowParameterBindingError(\n            Errors.InvalidParenthesizedAssignment,\n            node,\n          );\n        } else if (\n          parenthesized.type !== \"MemberExpression\" &&\n          !this.isOptionalMemberExpression(parenthesized)\n        ) {\n          // A parenthesized member expression can be in LHS but not in pattern.\n          // If the LHS is later interpreted as a pattern, `checkLVal` will throw for member expression binding\n          // i.e. `([(a.b) = []] = []) => {}`\n          this.raise(Errors.InvalidParenthesizedAssignment, node);\n        }\n      } else {\n        this.raise(Errors.InvalidParenthesizedAssignment, node);\n      }\n    }\n\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        break;\n\n      case \"ObjectExpression\":\n        (node as Node).type = \"ObjectPattern\";\n        for (\n          let i = 0, length = node.properties.length, last = length - 1;\n          i < length;\n          i++\n        ) {\n          const prop = node.properties[i];\n          const isLast = i === last;\n          this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n          if (\n            isLast &&\n            (prop as Node).type === \"RestElement\" &&\n            node.extra?.trailingCommaLoc\n          ) {\n            this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n          }\n        }\n        break;\n\n      case \"ObjectProperty\": {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n        break;\n      }\n\n      case \"SpreadElement\": {\n        throw new Error(\n          \"Internal @babel/parser error (this is a bug, please report it).\" +\n            \" SpreadElement should be converted by .toAssignable's caller.\",\n        );\n      }\n\n      case \"ArrayExpression\":\n        (node as Node).type = \"ArrayPattern\";\n        this.toAssignableList(\n          node.elements,\n          node.extra?.trailingCommaLoc,\n          isLHS,\n        );\n        break;\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") {\n          this.raise(Errors.MissingEqInAssignment, node.left.loc.end);\n        }\n\n        (node as Node).type = \"AssignmentPattern\";\n        delete node.operator;\n        this.toAssignable(node.left, isLHS);\n        break;\n\n      case \"ParenthesizedExpression\":\n        /*::invariant (parenthesized !== undefined) */\n        this.toAssignable(parenthesized, isLHS);\n        break;\n\n      default:\n      // We don't know how to deal with this node. It will\n      // be reported by a later call to checkLVal\n    }\n  }\n\n  toAssignableObjectExpressionProp(\n    prop: Node,\n    isLast: boolean,\n    isLHS: boolean,\n  ) {\n    if (prop.type === \"ObjectMethod\") {\n      this.raise(\n        prop.kind === \"get\" || prop.kind === \"set\"\n          ? Errors.PatternHasAccessor\n          : Errors.PatternHasMethod,\n        prop.key,\n      );\n    } else if (prop.type === \"SpreadElement\") {\n      (prop as Node).type = \"RestElement\";\n      const arg = prop.argument;\n      this.checkToRestConversion(arg, /* allowPattern */ false);\n      this.toAssignable(arg, isLHS);\n\n      if (!isLast) {\n        this.raise(Errors.RestTrailingComma, prop);\n      }\n    } else {\n      this.toAssignable(prop, isLHS);\n    }\n  }\n\n  // Convert list of expression atoms to binding list.\n\n  toAssignableList(\n    exprList: (Expression | SpreadElement | RestElement)[],\n    trailingCommaLoc: Position | undefined | null,\n    isLHS: boolean,\n  ): void {\n    const end = exprList.length - 1;\n\n    for (let i = 0; i <= end; i++) {\n      const elt = exprList[i];\n      if (!elt) continue;\n\n      if (elt.type === \"SpreadElement\") {\n        (elt as unknown as RestElement).type = \"RestElement\";\n        const arg = elt.argument;\n        this.checkToRestConversion(arg, /* allowPattern */ true);\n        this.toAssignable(arg, isLHS);\n      } else {\n        this.toAssignable(elt, isLHS);\n      }\n\n      if (elt.type === \"RestElement\") {\n        if (i < end) {\n          this.raise(Errors.RestTrailingComma, elt);\n        } else if (trailingCommaLoc) {\n          this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n        }\n      }\n    }\n  }\n\n  isAssignable(node: Node, isBinding?: boolean): boolean {\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        return true;\n\n      case \"ObjectExpression\": {\n        const last = node.properties.length - 1;\n        return node.properties.every((prop, i) => {\n          return (\n            prop.type !== \"ObjectMethod\" &&\n            (i === last || prop.type !== \"SpreadElement\") &&\n            this.isAssignable(prop)\n          );\n        });\n      }\n\n      case \"ObjectProperty\":\n        return this.isAssignable(node.value);\n\n      case \"SpreadElement\":\n        return this.isAssignable(node.argument);\n\n      case \"ArrayExpression\":\n        return node.elements.every(\n          element => element === null || this.isAssignable(element),\n        );\n\n      case \"AssignmentExpression\":\n        return node.operator === \"=\";\n\n      case \"ParenthesizedExpression\":\n        return this.isAssignable(node.expression);\n\n      case \"MemberExpression\":\n      case \"OptionalMemberExpression\":\n        return !isBinding;\n\n      default:\n        return false;\n    }\n  }\n\n  // Convert list of expression atoms to a list of\n\n  toReferencedList(\n    exprList:\n      | ReadonlyArray<Expression | SpreadElement>\n      | ReadonlyArray<Expression | RestElement>,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isParenthesizedExpr?: boolean,\n  ):\n    | ReadonlyArray<Expression | SpreadElement>\n    | ReadonlyArray<Expression | RestElement> {\n    return exprList;\n  }\n\n  toReferencedListDeep(\n    exprList:\n      | ReadonlyArray<Expression | SpreadElement>\n      | ReadonlyArray<Expression | RestElement>,\n    isParenthesizedExpr?: boolean,\n  ): void {\n    this.toReferencedList(exprList, isParenthesizedExpr);\n\n    for (const expr of exprList) {\n      if (expr?.type === \"ArrayExpression\") {\n        this.toReferencedListDeep(expr.elements);\n      }\n    }\n  }\n\n  // Parses spread element.\n\n  parseSpread(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): SpreadElement {\n    const node = this.startNode<SpreadElement>();\n    this.next();\n    node.argument = this.parseMaybeAssignAllowIn(\n      refExpressionErrors,\n      undefined,\n    );\n    return this.finishNode(node, \"SpreadElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  // https://tc39.es/ecma262/#prod-BindingRestElement\n  parseRestBinding(this: Parser): RestElement {\n    const node = this.startNode<RestElement>();\n    this.next(); // eat `...`\n    node.argument = this.parseBindingAtom();\n    return this.finishNode(node, \"RestElement\");\n  }\n\n  // Parses lvalue (assignable) atom.\n  parseBindingAtom(this: Parser): Pattern {\n    // https://tc39.es/ecma262/#prod-BindingPattern\n    switch (this.state.type) {\n      case tt.bracketL: {\n        const node = this.startNode<ArrayPattern>();\n        this.next();\n        // @ts-expect-error: Fixme: TSParameterProperty can not be assigned to node.elements\n        node.elements = this.parseBindingList(\n          tt.bracketR,\n          charCodes.rightSquareBracket,\n          ParseBindingListFlags.ALLOW_EMPTY,\n        );\n        return this.finishNode(node, \"ArrayPattern\");\n      }\n\n      case tt.braceL:\n        return this.parseObjectLike(tt.braceR, true);\n    }\n\n    // https://tc39.es/ecma262/#prod-BindingIdentifier\n    return this.parseIdentifier();\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingElementList\n  parseBindingList(\n    this: Parser,\n    close: TokenType,\n    closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n    flags: ParseBindingListFlags,\n  ): Array<Pattern | TSParameterProperty> {\n    const allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;\n\n    const elts: Array<Pattern | TSParameterProperty> = [];\n    let first = true;\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n      }\n      if (allowEmpty && this.match(tt.comma)) {\n        elts.push(null);\n      } else if (this.eat(close)) {\n        break;\n      } else if (this.match(tt.ellipsis)) {\n        let rest: Pattern = this.parseRestBinding();\n        if (\n          (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n          flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n        ) {\n          rest = this.parseFunctionParamType(rest);\n        }\n        elts.push(rest);\n        if (!this.checkCommaAfterRest(closeCharCode)) {\n          this.expect(close);\n          break;\n        }\n      } else {\n        const decorators = [];\n        if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n          this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);\n        }\n        // invariant: hasPlugin(\"decorators-legacy\")\n        while (this.match(tt.at)) {\n          decorators.push(this.parseDecorator());\n        }\n        elts.push(this.parseAssignableListItem(flags, decorators));\n      }\n    }\n    return elts;\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  parseBindingRestProperty(\n    this: Parser,\n    prop: Undone<RestElement>,\n  ): RestElement {\n    this.next(); // eat '...'\n    // Don't use parseRestBinding() as we only allow Identifier here.\n    prop.argument = this.parseIdentifier();\n    this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n    return this.finishNode(prop, \"RestElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingProperty\n  parseBindingProperty(this: Parser): AssignmentProperty | RestElement {\n    const { type, startLoc } = this.state;\n    if (type === tt.ellipsis) {\n      return this.parseBindingRestProperty(this.startNode());\n    }\n\n    const prop = this.startNode<AssignmentProperty>();\n    if (type === tt.privateName) {\n      this.expectPlugin(\"destructuringPrivate\", startLoc);\n      this.classScope.usePrivateName(this.state.value, startLoc);\n      prop.key = this.parsePrivateName();\n    } else {\n      this.parsePropertyName(prop);\n    }\n    prop.method = false;\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      false /* isGenerator */,\n      false /* isAsync */,\n      true /* isPattern */,\n      false /* isAccessor */,\n    );\n  }\n\n  parseAssignableListItem(\n    this: Parser,\n    flags: ParseBindingListFlags,\n    decorators: Decorator[],\n  ): Pattern | TSParameterProperty {\n    const left = this.parseMaybeDefault();\n    if (\n      (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n      flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n    ) {\n      this.parseFunctionParamType(left);\n    }\n    const elt = this.parseMaybeDefault(left.loc.start, left);\n    if (decorators.length) {\n      left.decorators = decorators;\n    }\n    return elt;\n  }\n\n  // Used by flow/typescript plugin to add type annotations to binding elements\n  parseFunctionParamType(param: Pattern): Pattern {\n    return param;\n  }\n\n  // Parses assignment pattern around given atom if possible.\n  // https://tc39.es/ecma262/#prod-BindingElement\n  parseMaybeDefault(\n    this: Parser,\n    startLoc?: Position | null,\n    left?: Pattern | null,\n  ): Pattern {\n    startLoc ??= this.state.startLoc;\n    left = left ?? this.parseBindingAtom();\n    if (!this.eat(tt.eq)) return left;\n\n    const node = this.startNodeAt<AssignmentPattern>(startLoc);\n    node.left = left;\n    node.right = this.parseMaybeAssignAllowIn();\n    return this.finishNode(node, \"AssignmentPattern\");\n  }\n  /**\n   * Return information use in determining whether a Node of a given type is an LVal,\n   * possibly given certain additional context information.\n   *\n   * Subclasser notes: This method has kind of a lot of mixed, but related,\n   * responsibilities. If we can definitively determine with the information\n   * provided that this either *is* or *isn't* a valid `LVal`, then the return\n   * value is easy: just return `true` or `false`. However, if it is a valid\n   * LVal *ancestor*, and thus its descendants must be subsequently visited to\n   * continue the \"investigation\", then this method should return the relevant\n   * child key as a `string`. In some special cases, you additionally want to\n   * convey that this node should be treated as if it were parenthesized. In\n   * that case, a tuple of [key: string, parenthesized: boolean] is returned.\n   * The `string`-only return option is actually just a shorthand for:\n   * `[key: string, parenthesized: false]`.\n   *\n   * @param type A Node `type` string\n   * @param isUnparenthesizedInAssign\n   *        Whether the node in question is unparenthesized and its parent\n   *        is either an assignment pattern or an assignment expression.\n   * @param binding\n   *        The binding operation that is being considered for this potential\n   *        LVal.\n   * @returns `true` or `false` if we can immediately determine whether the node\n   *          type in question can be treated as an `LVal`.\n   *          A `string` key to traverse if we must check this child.\n   *          A `[string, boolean]` tuple if we need to check this child and\n   *          treat is as parenthesized.\n   */\n  isValidLVal(\n    type: string,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isUnparenthesizedInAssign: boolean,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    binding: BindingFlag,\n  ): string | boolean | [string, boolean] {\n    switch (type) {\n      case \"AssignmentPattern\":\n        return \"left\";\n      case \"RestElement\":\n        return \"argument\";\n      case \"ObjectProperty\":\n        return \"value\";\n      case \"ParenthesizedExpression\":\n        return \"expression\";\n      case \"ArrayPattern\":\n        return \"elements\";\n      case \"ObjectPattern\":\n        return \"properties\";\n    }\n    return false;\n  }\n\n  // Overridden by the estree plugin\n  isOptionalMemberExpression(expression: Node): boolean {\n    return expression.type === \"OptionalMemberExpression\";\n  }\n\n  /**\n   * Verify that a target expression is an lval (something that can be assigned to).\n   *\n   * @param expression The expression in question to check.\n   * @param ancestor\n   *        The relevant ancestor to provide context information for the error\n   *        if the check fails.\n   * @param binding\n   *        The desired binding type. If the given expression is an identifier\n   *        and `binding` is not `BindingFlag.TYPE_NONE`, `checkLVal` will register binding\n   *        to the parser scope See also `src/util/scopeflags.js`\n   * @param checkClashes\n   *        An optional string set to check if an identifier name is included.\n   *        `checkLVal` will add checked identifier name to `checkClashes` It is\n   *        used in tracking duplicates in function parameter lists. If it is\n   *        false, `checkLVal` will skip duplicate checks\n   * @param strictModeChanged\n   *        Whether an identifier has been parsed in a sloppy context but should\n   *        be reinterpreted as strict-mode. e.g. `(arguments) => { \"use strict \"}`\n   * @param hasParenthesizedAncestor\n   *        This is only used internally during recursive calls, and you should\n   *        not have to set it yourself.\n   */\n\n  checkLVal(\n    expression:\n      | Expression\n      | ObjectMember\n      | RestElement\n      | Pattern\n      | TSParameterProperty,\n    ancestor: LValAncestor,\n    binding: BindingFlag = BindingFlag.TYPE_NONE,\n    checkClashes: Set<string> | false = false,\n    strictModeChanged: boolean = false,\n    hasParenthesizedAncestor: boolean = false,\n  ): void {\n    const type = expression.type;\n\n    // If we find here an ObjectMethod, it's because this was originally\n    // an ObjectExpression which has then been converted.\n    // toAssignable already reported this error with a nicer message.\n    if (this.isObjectMethod(expression)) return;\n\n    const isOptionalMemberExpression =\n      this.isOptionalMemberExpression(expression);\n\n    if (isOptionalMemberExpression || type === \"MemberExpression\") {\n      if (isOptionalMemberExpression) {\n        this.expectPlugin(\"optionalChainingAssign\", expression.loc.start);\n        if (ancestor.type !== \"AssignmentExpression\") {\n          this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n            ancestor,\n          });\n        }\n      }\n\n      if (binding !== BindingFlag.TYPE_NONE) {\n        this.raise(Errors.InvalidPropertyBindingPattern, expression);\n      }\n      return;\n    }\n\n    if (type === \"Identifier\") {\n      this.checkIdentifier(expression, binding, strictModeChanged);\n\n      const { name } = expression;\n\n      if (checkClashes) {\n        if (checkClashes.has(name)) {\n          this.raise(Errors.ParamDupe, expression);\n        } else {\n          checkClashes.add(name);\n        }\n      }\n\n      return;\n    }\n\n    const validity = this.isValidLVal(\n      type,\n      !(hasParenthesizedAncestor || expression.extra?.parenthesized) &&\n        ancestor.type === \"AssignmentExpression\",\n      binding,\n    );\n\n    if (validity === true) return;\n    if (validity === false) {\n      const ParseErrorClass =\n        binding === BindingFlag.TYPE_NONE\n          ? Errors.InvalidLhs\n          : Errors.InvalidLhsBinding;\n\n      this.raise(ParseErrorClass, expression, { ancestor });\n      return;\n    }\n\n    let key: string, isParenthesizedExpression: boolean;\n    if (typeof validity === \"string\") {\n      key = validity;\n      isParenthesizedExpression = type === \"ParenthesizedExpression\";\n    } else {\n      [key, isParenthesizedExpression] = validity;\n    }\n\n    const nextAncestor =\n      type === \"ArrayPattern\" || type === \"ObjectPattern\"\n        ? ({ type } as const)\n        : ancestor;\n\n    // @ts-expect-error key may not index expression.\n    const val = expression[key];\n    if (Array.isArray(val)) {\n      for (const child of val) {\n        if (child) {\n          this.checkLVal(\n            child,\n            nextAncestor,\n            binding,\n            checkClashes,\n            strictModeChanged,\n            isParenthesizedExpression,\n          );\n        }\n      }\n    } else if (val) {\n      this.checkLVal(\n        val,\n        nextAncestor,\n        binding,\n        checkClashes,\n        strictModeChanged,\n        isParenthesizedExpression,\n      );\n    }\n  }\n\n  checkIdentifier(\n    at: Identifier,\n    bindingType: BindingFlag,\n    strictModeChanged: boolean = false,\n  ) {\n    if (\n      this.state.strict &&\n      (strictModeChanged\n        ? isStrictBindReservedWord(at.name, this.inModule)\n        : isStrictBindOnlyReservedWord(at.name))\n    ) {\n      if (bindingType === BindingFlag.TYPE_NONE) {\n        this.raise(Errors.StrictEvalArguments, at, { referenceName: at.name });\n      } else {\n        this.raise(Errors.StrictEvalArgumentsBinding, at, {\n          bindingName: at.name,\n        });\n      }\n    }\n\n    if (bindingType & BindingFlag.FLAG_NO_LET_IN_LEXICAL && at.name === \"let\") {\n      this.raise(Errors.LetInLexicalBinding, at);\n    }\n\n    if (!(bindingType & BindingFlag.TYPE_NONE)) {\n      this.declareNameFromIdentifier(at, bindingType);\n    }\n  }\n\n  declareNameFromIdentifier(identifier: Identifier, binding: BindingFlag) {\n    this.scope.declareName(identifier.name, binding, identifier.loc.start);\n  }\n\n  checkToRestConversion(node: Node, allowPattern: boolean): void {\n    switch (node.type) {\n      case \"ParenthesizedExpression\":\n        this.checkToRestConversion(node.expression, allowPattern);\n        break;\n      case \"Identifier\":\n      case \"MemberExpression\":\n        break;\n      case \"ArrayExpression\":\n      case \"ObjectExpression\":\n        if (allowPattern) break;\n      /* falls through */\n      default:\n        this.raise(Errors.InvalidRestAssignmentPattern, node);\n    }\n  }\n\n  checkCommaAfterRest(\n    close: (typeof charCodes)[keyof typeof charCodes],\n  ): boolean {\n    if (!this.match(tt.comma)) {\n      return false;\n    }\n\n    this.raise(\n      this.lookaheadCharCode() === close\n        ? Errors.RestTrailingComma\n        : Errors.ElementAfterRest,\n      this.state.startLoc,\n    );\n\n    return true;\n  }\n}\n","import type State from \"../../tokenizer/state.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsTSDeclarationStart,\n  tokenIsTSTypeOperator,\n  tokenOperatorPrecedence,\n  tokenIsKeywordOrIdentifier,\n  tt,\n  type TokenType,\n  tokenIsTemplate,\n  tokenCanStartExpression,\n} from \"../../tokenizer/types.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../../util/location.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport { ScopeFlag, BindingFlag } from \"../../util/scopeflags.ts\";\nimport TypeScriptScopeHandler from \"./scope.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { ParamKind } from \"../../util/production-parameter.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport { cloneIdentifier, type Undone } from \"../../parser/node.ts\";\nimport type { Pattern } from \"../../types.ts\";\nimport type { Expression } from \"../../types.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\nimport { ParseBindingListFlags } from \"../../parser/lval.ts\";\nimport { OptionFlags } from \"../../options.ts\";\n\ntype TsModifier =\n  | \"readonly\"\n  | \"abstract\"\n  | \"declare\"\n  | \"static\"\n  | \"override\"\n  | \"const\"\n  | N.Accessibility\n  | N.VarianceAnnotations;\n\nfunction nonNull<T>(x?: T | null): T {\n  if (x == null) {\n    throw new Error(`Unexpected ${x} value.`);\n  }\n  return x;\n}\n\nfunction assert(x: boolean): void {\n  if (!x) {\n    throw new Error(\"Assert fail\");\n  }\n}\n\ntype ParsingContext =\n  | \"EnumMembers\"\n  | \"HeritageClauseElement\"\n  | \"TupleElementTypes\"\n  | \"TypeMembers\"\n  | \"TypeParametersOrArguments\";\n\ntype ModifierBase = {\n  accessibility?: N.Accessibility;\n} & {\n  [key in TsModifier]?: boolean | undefined | null;\n};\n\n/* eslint sort-keys: \"error\" */\nconst TSErrors = ParseErrorEnum`typescript`({\n  AbstractMethodHasImplementation: ({ methodName }: { methodName: string }) =>\n    `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n  AbstractPropertyHasInitializer: ({\n    propertyName,\n  }: {\n    propertyName: string;\n  }) =>\n    `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n  AccessorCannotBeOptional:\n    \"An 'accessor' property cannot be declared optional.\",\n  AccessorCannotDeclareThisParameter:\n    \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n  AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n  ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n  ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n  ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n    \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n  ConstructorHasTypeParameters:\n    \"Type parameters cannot appear on a constructor declaration.\",\n  DeclareAccessor: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `'declare' is not allowed in ${kind}ters.`,\n  DeclareClassFieldHasInitializer:\n    \"Initializers are not allowed in ambient contexts.\",\n  DeclareFunctionHasImplementation:\n    \"An implementation cannot be declared in ambient contexts.\",\n  DuplicateAccessibilityModifier:\n    // `Accessibility modifier already seen: ${modifier}` would be more helpful.\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ({ modifier }: { modifier: N.Accessibility }) =>\n      `Accessibility modifier already seen.`,\n  DuplicateModifier: ({ modifier }: { modifier: TsModifier }) =>\n    `Duplicate modifier: '${modifier}'.`,\n  // `token` matches the terminology used by typescript:\n  // https://github.com/microsoft/TypeScript/blob/main/src/compiler/types.ts#L2915\n  EmptyHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n    `'${token}' list cannot be empty.`,\n  EmptyTypeArguments: \"Type argument list cannot be empty.\",\n  EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n  ExpectedAmbientAfterExportDeclare:\n    \"'export declare' must be followed by an ambient declaration.\",\n  ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` modifier\",\n  IncompatibleModifiers: ({\n    modifiers,\n  }: {\n    modifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n  IndexSignatureHasAbstract:\n    \"Index signatures cannot have the 'abstract' modifier.\",\n  IndexSignatureHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n  IndexSignatureHasDeclare:\n    \"Index signatures cannot have the 'declare' modifier.\",\n  IndexSignatureHasOverride:\n    \"'override' modifier cannot appear on an index signature.\",\n  IndexSignatureHasStatic:\n    \"Index signatures cannot have the 'static' modifier.\",\n  InitializerNotAllowedInAmbientContext:\n    \"Initializers are not allowed in ambient contexts.\",\n  InvalidModifierOnTypeMember: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type member.`,\n  InvalidModifierOnTypeParameter: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type parameter.`,\n  InvalidModifierOnTypeParameterPositions: ({\n    modifier,\n  }: {\n    modifier: TsModifier;\n  }) =>\n    `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n  InvalidModifiersOrder: ({\n    orderedModifiers,\n  }: {\n    orderedModifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n  InvalidPropertyAccessAfterInstantiationExpression:\n    \"Invalid property access after an instantiation expression. \" +\n    \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n  InvalidTupleMemberLabel:\n    \"Tuple members must be labeled with a simple identifier.\",\n  MissingInterfaceName:\n    \"'interface' declarations must be followed by an identifier.\",\n  NonAbstractClassHasAbstractMethod:\n    \"Abstract methods can only appear within an abstract class.\",\n  NonClassMethodPropertyHasAbstractModifer:\n    \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n  OptionalTypeBeforeRequired:\n    \"A required element cannot follow an optional element.\",\n  OverrideNotInSubClass:\n    \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n  PatternIsOptional:\n    \"A binding pattern parameter cannot be optional in an implementation signature.\",\n  PrivateElementHasAbstract:\n    \"Private elements cannot have the 'abstract' modifier.\",\n  PrivateElementHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Private elements cannot have an accessibility modifier ('${modifier}').`,\n  ReadonlyForMethodSignature:\n    \"'readonly' modifier can only appear on a property declaration or index signature.\",\n  ReservedArrowTypeParam:\n    \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n  ReservedTypeAssertion:\n    \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n  SetAccessorCannotHaveOptionalParameter:\n    \"A 'set' accessor cannot have an optional parameter.\",\n  SetAccessorCannotHaveRestParameter:\n    \"A 'set' accessor cannot have rest parameter.\",\n  SetAccessorCannotHaveReturnType:\n    \"A 'set' accessor cannot have a return type annotation.\",\n  SingleTypeParameterWithoutTrailingComma: ({\n    typeParameterName,\n  }: {\n    typeParameterName: string;\n  }) =>\n    `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n  StaticBlockCannotHaveModifier:\n    \"Static class blocks cannot have any modifier.\",\n  TupleOptionalAfterType:\n    \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n  TypeAnnotationAfterAssign:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeImportCannotSpecifyDefaultAndNamed:\n    \"A type-only import can specify a default import or named bindings, but not both.\",\n  TypeModifierIsUsedInTypeExports:\n    \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n  TypeModifierIsUsedInTypeImports:\n    \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n  UnexpectedParameterModifier:\n    \"A parameter property is only allowed in a constructor implementation.\",\n  UnexpectedReadonly:\n    \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n  UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n  UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n  UnsupportedImportTypeArgument:\n    \"Argument in a type import must be a string literal.\",\n  UnsupportedParameterPropertyKind:\n    \"A parameter property may not be declared using a binding pattern.\",\n  UnsupportedSignatureParameterKind: ({ type }: { type: string }) =>\n    `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n});\n\n/* eslint-disable sort-keys */\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\n// It also doesn't handle \"intrinsic\", since usually it's not a keyword.\nfunction keywordTypeFromName(value: string): N.TsKeywordTypeType | undefined {\n  switch (value) {\n    case \"any\":\n      return \"TSAnyKeyword\";\n    case \"boolean\":\n      return \"TSBooleanKeyword\";\n    case \"bigint\":\n      return \"TSBigIntKeyword\";\n    case \"never\":\n      return \"TSNeverKeyword\";\n    case \"number\":\n      return \"TSNumberKeyword\";\n    case \"object\":\n      return \"TSObjectKeyword\";\n    case \"string\":\n      return \"TSStringKeyword\";\n    case \"symbol\":\n      return \"TSSymbolKeyword\";\n    case \"undefined\":\n      return \"TSUndefinedKeyword\";\n    case \"unknown\":\n      return \"TSUnknownKeyword\";\n    default:\n      return undefined;\n  }\n}\n\nfunction tsIsAccessModifier(modifier: string): modifier is N.Accessibility {\n  return (\n    modifier === \"private\" || modifier === \"public\" || modifier === \"protected\"\n  );\n}\n\nfunction tsIsVarianceAnnotations(\n  modifier: string,\n): modifier is N.VarianceAnnotations {\n  return modifier === \"in\" || modifier === \"out\";\n}\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class TypeScriptParserMixin extends superClass implements Parser {\n    getScopeHandler(): new (...args: any) => TypeScriptScopeHandler {\n      return TypeScriptScopeHandler;\n    }\n\n    tsIsIdentifier(): boolean {\n      // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n      // See https://github.com/Microsoft/TypeScript/issues/15008\n      return tokenIsIdentifier(this.state.type);\n    }\n\n    tsTokenCanFollowModifier() {\n      return (\n        this.match(tt.bracketL) ||\n        this.match(tt.braceL) ||\n        this.match(tt.star) ||\n        this.match(tt.ellipsis) ||\n        this.match(tt.privateName) ||\n        this.isLiteralPropertyName()\n      );\n    }\n\n    tsNextTokenOnSameLineAndCanFollowModifier() {\n      this.next();\n      if (this.hasPrecedingLineBreak()) {\n        return false;\n      }\n      return this.tsTokenCanFollowModifier();\n    }\n\n    tsNextTokenCanFollowModifier() {\n      // Note: TypeScript's implementation is much more complicated because\n      // more things are considered modifiers there.\n      // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n      if (this.match(tt._static)) {\n        this.next();\n        return this.tsTokenCanFollowModifier();\n      }\n      return this.tsNextTokenOnSameLineAndCanFollowModifier();\n    }\n\n    /** Parses a modifier matching one the given modifier names. */\n    tsParseModifier<T extends TsModifier>(\n      allowedModifiers: T[],\n      stopOnStartOfClassStaticBlock?: boolean,\n    ): T | undefined | null {\n      if (\n        !tokenIsIdentifier(this.state.type) &&\n        this.state.type !== tt._in &&\n        this.state.type !== tt._const\n      ) {\n        return undefined;\n      }\n\n      const modifier = this.state.value;\n      if (allowedModifiers.includes(modifier)) {\n        if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n          return undefined;\n        }\n        if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n          return modifier;\n        }\n      }\n      return undefined;\n    }\n\n    /** Parses a list of modifiers, in any order.\n     *  If you need a specific order, you must call this function multiple times:\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"public\"] });\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"abstract\", \"readonly\"] });\n     */\n    tsParseModifiers<N extends ModifierBase>(\n      {\n        allowedModifiers,\n        disallowedModifiers,\n        stopOnStartOfClassStaticBlock,\n        errorTemplate = TSErrors.InvalidModifierOnTypeMember,\n      }: {\n        allowedModifiers: readonly TsModifier[];\n        disallowedModifiers?: TsModifier[];\n        stopOnStartOfClassStaticBlock?: boolean;\n        errorTemplate?: typeof TSErrors.InvalidModifierOnTypeMember;\n      },\n      modified: N,\n    ): void {\n      const enforceOrder = (\n        loc: Position,\n        modifier: TsModifier,\n        before: TsModifier,\n        after: TsModifier,\n      ) => {\n        if (modifier === before && modified[after]) {\n          this.raise(TSErrors.InvalidModifiersOrder, loc, {\n            orderedModifiers: [before, after],\n          });\n        }\n      };\n      const incompatible = (\n        loc: Position,\n        modifier: TsModifier,\n        mod1: TsModifier,\n        mod2: TsModifier,\n      ) => {\n        if (\n          (modified[mod1] && modifier === mod2) ||\n          (modified[mod2] && modifier === mod1)\n        ) {\n          this.raise(TSErrors.IncompatibleModifiers, loc, {\n            modifiers: [mod1, mod2],\n          });\n        }\n      };\n\n      for (;;) {\n        const { startLoc } = this.state;\n        const modifier: TsModifier | undefined | null = this.tsParseModifier(\n          allowedModifiers.concat(disallowedModifiers ?? []),\n          stopOnStartOfClassStaticBlock,\n        );\n\n        if (!modifier) break;\n\n        if (tsIsAccessModifier(modifier)) {\n          if (modified.accessibility) {\n            this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n              modifier,\n            });\n          } else {\n            enforceOrder(startLoc, modifier, modifier, \"override\");\n            enforceOrder(startLoc, modifier, modifier, \"static\");\n            enforceOrder(startLoc, modifier, modifier, \"readonly\");\n\n            modified.accessibility = modifier;\n          }\n        } else if (tsIsVarianceAnnotations(modifier)) {\n          if (modified[modifier]) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          }\n          modified[modifier] = true;\n\n          enforceOrder(startLoc, modifier, \"in\", \"out\");\n        } else {\n          if (Object.hasOwn(modified, modifier)) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          } else {\n            enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"static\", \"override\");\n            enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n\n            incompatible(startLoc, modifier, \"declare\", \"override\");\n            incompatible(startLoc, modifier, \"static\", \"abstract\");\n          }\n          modified[modifier] = true;\n        }\n\n        if (disallowedModifiers?.includes(modifier)) {\n          this.raise(errorTemplate, startLoc, {\n            modifier,\n          });\n        }\n      }\n    }\n\n    tsIsListTerminator(kind: ParsingContext): boolean {\n      switch (kind) {\n        case \"EnumMembers\":\n        case \"TypeMembers\":\n          return this.match(tt.braceR);\n        case \"HeritageClauseElement\":\n          return this.match(tt.braceL);\n        case \"TupleElementTypes\":\n          return this.match(tt.bracketR);\n        case \"TypeParametersOrArguments\":\n          return this.match(tt.gt);\n      }\n    }\n\n    tsParseList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n    ): T[] {\n      const result: T[] = [];\n      while (!this.tsIsListTerminator(kind)) {\n        // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n        result.push(parseElement());\n      }\n      return result;\n    }\n\n    tsParseDelimitedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      return nonNull(\n        this.tsParseDelimitedListWorker(\n          kind,\n          parseElement,\n          /* expectSuccess */ true,\n          refTrailingCommaPos,\n        ),\n      );\n    }\n\n    /**\n     * If !expectSuccess, returns undefined instead of failing to parse.\n     * If expectSuccess, parseElement should always return a defined value.\n     */\n    tsParseDelimitedListWorker<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T | undefined,\n      expectSuccess: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] | undefined {\n      const result: T[] = [];\n      let trailingCommaPos = -1;\n\n      for (;;) {\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n        trailingCommaPos = -1;\n\n        const element = parseElement();\n        if (element == null) {\n          return undefined;\n        }\n        result.push(element);\n\n        if (this.eat(tt.comma)) {\n          trailingCommaPos = this.state.lastTokStartLoc.index;\n          continue;\n        }\n\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n\n        if (expectSuccess) {\n          // This will fail with an error about a missing comma\n          this.expect(tt.comma);\n        }\n        return undefined;\n      }\n\n      if (refTrailingCommaPos) {\n        refTrailingCommaPos.value = trailingCommaPos;\n      }\n\n      return result;\n    }\n\n    tsParseBracketedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      bracket: boolean,\n      skipFirstToken: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      if (!skipFirstToken) {\n        if (bracket) {\n          this.expect(tt.bracketL);\n        } else {\n          this.expect(tt.lt);\n        }\n      }\n\n      const result = this.tsParseDelimitedList(\n        kind,\n        parseElement,\n        refTrailingCommaPos,\n      );\n\n      if (bracket) {\n        this.expect(tt.bracketR);\n      } else {\n        this.expect(tt.gt);\n      }\n\n      return result;\n    }\n\n    tsParseImportType(): N.TsImportType {\n      const node = this.startNode<N.TsImportType>();\n      this.expect(tt._import);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n        if (process.env.BABEL_8_BREAKING) {\n          // Consume as an non-conditional type so that we can recover from this error\n          node.argument = this.tsParseNonConditionalType() as any;\n        } else {\n          node.argument = super.parseExprAtom() as any;\n        }\n      } else {\n        if (process.env.BABEL_8_BREAKING) {\n          node.argument = this.tsParseLiteralTypeNode();\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          node.argument = this.parseStringLiteral(this.state.value);\n        }\n      }\n      if (this.eat(tt.comma) && !this.match(tt.parenR)) {\n        node.options = super.parseMaybeAssignAllowIn();\n        this.eat(tt.comma);\n      } else {\n        node.options = null;\n      }\n      this.expect(tt.parenR);\n\n      if (this.eat(tt.dot)) {\n        // In this instance, the entity name will actually itself be a\n        // qualifier, so allow it to be a reserved word as well.\n        node.qualifier = this.tsParseEntityName();\n      }\n      if (this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSImportType\");\n    }\n\n    tsParseEntityName(allowReservedWords: boolean = true): N.TsEntityName {\n      let entity: N.TsEntityName = this.parseIdentifier(allowReservedWords);\n      while (this.eat(tt.dot)) {\n        const node: Undone<N.TsQualifiedName> =\n          this.startNodeAtNode<N.TsQualifiedName>(entity);\n        node.left = entity;\n        node.right = this.parseIdentifier(allowReservedWords);\n        entity = this.finishNode(node, \"TSQualifiedName\");\n      }\n      return entity;\n    }\n\n    tsParseTypeReference(): N.TsTypeReference {\n      const node = this.startNode<N.TsTypeReference>();\n      node.typeName = this.tsParseEntityName();\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSTypeReference\");\n    }\n\n    tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n      this.next();\n      const node = this.startNodeAtNode<N.TsTypePredicate>(lhs);\n      node.parameterName = lhs;\n      node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n      node.asserts = false;\n      return this.finishNode(node, \"TSTypePredicate\");\n    }\n\n    tsParseThisTypeNode(): N.TsThisType {\n      const node = this.startNode<N.TsThisType>();\n      this.next();\n      return this.finishNode(node, \"TSThisType\");\n    }\n\n    tsParseTypeQuery(): N.TsTypeQuery {\n      const node = this.startNode<N.TsTypeQuery>();\n      this.expect(tt._typeof);\n      if (this.match(tt._import)) {\n        node.exprName = this.tsParseImportType();\n      } else {\n        node.exprName = this.tsParseEntityName();\n      }\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSTypeQuery\");\n    }\n\n    tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\"],\n      disallowedModifiers: [\n        \"const\",\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseConstModifier = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"const\"],\n      // for better error recovery\n      disallowedModifiers: [\"in\", \"out\"],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n    });\n\n    tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\", \"const\"],\n      disallowedModifiers: [\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseTypeParameter(\n      parseModifiers: (node: Undone<N.TsTypeParameter>) => void,\n    ): N.TsTypeParameter {\n      const node = this.startNode<N.TsTypeParameter>();\n\n      parseModifiers(node);\n\n      node.name = this.tsParseTypeParameterName();\n      node.constraint = this.tsEatThenParseType(tt._extends);\n      node.default = this.tsEatThenParseType(tt.eq);\n      return this.finishNode(node, \"TSTypeParameter\");\n    }\n\n    tsTryParseTypeParameters(\n      parseModifiers: (node: N.TsTypeParameter) => void,\n    ): N.TsTypeParameterDeclaration | undefined | null {\n      if (this.match(tt.lt)) {\n        return this.tsParseTypeParameters(parseModifiers);\n      }\n    }\n\n    tsParseTypeParameters(parseModifiers: (node: N.TsTypeParameter) => void) {\n      const node = this.startNode<N.TsTypeParameterDeclaration>();\n\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      const refTrailingCommaPos = { value: -1 };\n\n      node.params = this.tsParseBracketedList(\n        \"TypeParametersOrArguments\",\n        this.tsParseTypeParameter.bind(this, parseModifiers),\n        /* bracket */ false,\n        /* skipFirstToken */ true,\n        refTrailingCommaPos,\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeParameters, node);\n      }\n      if (refTrailingCommaPos.value !== -1) {\n        this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n      }\n      return this.finishNode(node, \"TSTypeParameterDeclaration\");\n    }\n\n    // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n    // but here it's always false, because this is only used for types.\n    tsFillSignature(\n      returnToken: TokenType,\n      signature: Undone<N.TsSignatureDeclaration>,\n    ): void {\n      // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n      const returnTokenRequired = returnToken === tt.arrow;\n\n      // https://github.com/babel/babel/issues/9231\n      const paramsKey = process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\";\n      const returnTypeKey = process.env.BABEL_8_BREAKING\n        ? \"returnType\"\n        : \"typeAnnotation\";\n\n      signature.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      this.expect(tt.parenL);\n      signature[paramsKey] = this.tsParseBindingListForSignature();\n      if (returnTokenRequired) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      } else if (this.match(returnToken)) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      }\n    }\n\n    tsParseBindingListForSignature(): Array<\n      N.Identifier | N.RestElement | N.ObjectPattern | N.ArrayPattern\n    > {\n      const list = super.parseBindingList(\n        tt.parenR,\n        charCodes.rightParenthesis,\n        ParseBindingListFlags.IS_FUNCTION_PARAMS,\n      );\n      for (const pattern of list) {\n        const { type } = pattern;\n        if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n          this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n            type,\n          });\n        }\n      }\n      return list as Exclude<\n        (typeof list)[0],\n        N.AssignmentPattern | N.TSParameterProperty\n      >[];\n    }\n\n    tsParseTypeMemberSemicolon(): void {\n      if (!this.eat(tt.comma) && !this.isLineTerminator()) {\n        this.expect(tt.semi);\n      }\n    }\n\n    tsParseSignatureMember(\n      kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n      node: Undone<\n        N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration\n      >,\n    ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n      this.tsFillSignature(tt.colon, node);\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, kind);\n    }\n\n    tsIsUnambiguouslyIndexSignature() {\n      this.next(); // Skip '{'\n      if (tokenIsIdentifier(this.state.type)) {\n        this.next();\n        return this.match(tt.colon);\n      }\n      return false;\n    }\n\n    tsTryParseIndexSignature(\n      node: Undone<N.TsIndexSignature>,\n    ): N.TsIndexSignature | undefined {\n      if (\n        !(\n          this.match(tt.bracketL) &&\n          this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n        )\n      ) {\n        return;\n      }\n\n      this.expect(tt.bracketL);\n      const id = this.parseIdentifier();\n      id.typeAnnotation = this.tsParseTypeAnnotation();\n      this.resetEndLocation(id); // set end position to end of type\n\n      this.expect(tt.bracketR);\n      node.parameters = [id];\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, \"TSIndexSignature\");\n    }\n\n    tsParsePropertyOrMethodSignature(\n      node: N.TsPropertySignature | N.TsMethodSignature,\n      readonly: boolean,\n    ): N.TsPropertySignature | N.TsMethodSignature {\n      if (this.eat(tt.question)) node.optional = true;\n      const nodeAny: any = node;\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        if (readonly) {\n          this.raise(TSErrors.ReadonlyForMethodSignature, node);\n        }\n        const method: N.TsMethodSignature = nodeAny;\n        if (method.kind && this.match(tt.lt)) {\n          this.raise(\n            TSErrors.AccessorCannotHaveTypeParameters,\n            this.state.curPosition(),\n          );\n        }\n        this.tsFillSignature(tt.colon, method);\n        this.tsParseTypeMemberSemicolon();\n        const paramsKey = process.env.BABEL_8_BREAKING\n          ? \"params\"\n          : \"parameters\";\n        const returnTypeKey = process.env.BABEL_8_BREAKING\n          ? \"returnType\"\n          : \"typeAnnotation\";\n        if (method.kind === \"get\") {\n          if (method[paramsKey].length > 0) {\n            this.raise(Errors.BadGetterArity, this.state.curPosition());\n            if (this.isThisParam(method[paramsKey][0])) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n        } else if (method.kind === \"set\") {\n          if (method[paramsKey].length !== 1) {\n            this.raise(Errors.BadSetterArity, this.state.curPosition());\n          } else {\n            const firstParameter = method[paramsKey][0];\n            if (this.isThisParam(firstParameter)) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (\n              firstParameter.type === \"Identifier\" &&\n              firstParameter.optional\n            ) {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveOptionalParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (firstParameter.type === \"RestElement\") {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveRestParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n          if (method[returnTypeKey]) {\n            this.raise(\n              TSErrors.SetAccessorCannotHaveReturnType,\n              method[returnTypeKey],\n            );\n          }\n        } else {\n          method.kind = \"method\";\n        }\n        return this.finishNode(method, \"TSMethodSignature\");\n      } else {\n        const property: N.TsPropertySignature = nodeAny;\n        if (readonly) property.readonly = true;\n        const type = this.tsTryParseTypeAnnotation();\n        if (type) property.typeAnnotation = type;\n        this.tsParseTypeMemberSemicolon();\n        return this.finishNode(property, \"TSPropertySignature\");\n      }\n    }\n\n    tsParseTypeMember(): N.TsTypeElement {\n      const node: any = this.startNode();\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n      }\n\n      if (this.match(tt._new)) {\n        const id = this.startNode<N.Identifier>();\n        this.next();\n        if (this.match(tt.parenL) || this.match(tt.lt)) {\n          return this.tsParseSignatureMember(\n            \"TSConstructSignatureDeclaration\",\n            node,\n          );\n        } else {\n          node.key = this.createIdentifier(id, \"new\");\n          return this.tsParsePropertyOrMethodSignature(node, false);\n        }\n      }\n\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\"readonly\"],\n          disallowedModifiers: [\n            \"declare\",\n            \"abstract\",\n            \"private\",\n            \"protected\",\n            \"public\",\n            \"static\",\n            \"override\",\n          ],\n        },\n        node,\n      );\n\n      const idx = this.tsTryParseIndexSignature(node);\n      if (idx) {\n        return idx;\n      }\n\n      super.parsePropertyName(node);\n      if (\n        !node.computed &&\n        node.key.type === \"Identifier\" &&\n        (node.key.name === \"get\" || node.key.name === \"set\") &&\n        this.tsTokenCanFollowModifier()\n      ) {\n        node.kind = node.key.name;\n        super.parsePropertyName(node);\n      }\n      return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n    }\n\n    tsParseTypeLiteral(): N.TsTypeLiteral {\n      const node = this.startNode<N.TsTypeLiteral>();\n      node.members = this.tsParseObjectTypeMembers();\n      return this.finishNode(node, \"TSTypeLiteral\");\n    }\n\n    tsParseObjectTypeMembers(): Array<N.TsTypeElement> {\n      this.expect(tt.braceL);\n      const members = this.tsParseList(\n        \"TypeMembers\",\n        this.tsParseTypeMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return members;\n    }\n\n    tsIsStartOfMappedType(): boolean {\n      this.next();\n      if (this.eat(tt.plusMin)) {\n        return this.isContextual(tt._readonly);\n      }\n      if (this.isContextual(tt._readonly)) {\n        this.next();\n      }\n      if (!this.match(tt.bracketL)) {\n        return false;\n      }\n      this.next();\n      if (!this.tsIsIdentifier()) {\n        return false;\n      }\n      this.next();\n      return this.match(tt._in);\n    }\n\n    tsParseMappedType(): N.TsMappedType {\n      const node = this.startNode<N.TsMappedType>();\n\n      this.expect(tt.braceL);\n\n      if (this.match(tt.plusMin)) {\n        node.readonly = this.state.value;\n        this.next();\n        this.expectContextual(tt._readonly);\n      } else if (this.eatContextual(tt._readonly)) {\n        node.readonly = true;\n      }\n\n      this.expect(tt.bracketL);\n      if (process.env.BABEL_8_BREAKING) {\n        node.key = this.tsParseTypeParameterName() as N.Identifier;\n        node.constraint = this.tsExpectThenParseType(tt._in);\n      } else {\n        const typeParameter = this.startNode<N.TsTypeParameter>();\n        typeParameter.name = this.tsParseTypeParameterName();\n        typeParameter.constraint = this.tsExpectThenParseType(tt._in);\n        // @ts-expect-error for Babel 7\n        node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      }\n      node.nameType = this.eatContextual(tt._as) ? this.tsParseType() : null;\n\n      this.expect(tt.bracketR);\n\n      if (this.match(tt.plusMin)) {\n        node.optional = this.state.value;\n        this.next();\n        this.expect(tt.question);\n      } else if (this.eat(tt.question)) {\n        node.optional = true;\n      }\n\n      node.typeAnnotation = this.tsTryParseType();\n      this.semicolon();\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"TSMappedType\");\n    }\n\n    tsParseTupleType(): N.TsTupleType {\n      const node = this.startNode<N.TsTupleType>();\n      node.elementTypes = this.tsParseBracketedList(\n        \"TupleElementTypes\",\n        this.tsParseTupleElementType.bind(this),\n        /* bracket */ true,\n        /* skipFirstToken */ false,\n      );\n\n      // Validate the elementTypes to ensure that no mandatory elements\n      // follow optional elements\n      let seenOptionalElement = false;\n      node.elementTypes.forEach(elementNode => {\n        const { type } = elementNode;\n\n        if (\n          seenOptionalElement &&\n          type !== \"TSRestType\" &&\n          type !== \"TSOptionalType\" &&\n          !(type === \"TSNamedTupleMember\" && elementNode.optional)\n        ) {\n          this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n        }\n\n        seenOptionalElement ||=\n          (type === \"TSNamedTupleMember\" && elementNode.optional) ||\n          type === \"TSOptionalType\";\n      });\n\n      return this.finishNode(node, \"TSTupleType\");\n    }\n\n    tsParseTupleElementType(): N.TsNamedTupleMember | N.TsType {\n      // parses `...TsType[]`\n\n      const { startLoc } = this.state;\n\n      const rest = this.eat(tt.ellipsis);\n\n      let labeled: boolean;\n      let label: N.Identifier;\n      let optional: boolean;\n      let type: N.TsNamedTupleMember | N.TsType;\n\n      const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n      const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n      if (chAfterWord === charCodes.colon) {\n        labeled = true;\n        optional = false;\n        label = this.parseIdentifier(true);\n        this.expect(tt.colon);\n        type = this.tsParseType();\n      } else if (chAfterWord === charCodes.questionMark) {\n        optional = true;\n        const startLoc = this.state.startLoc;\n        const wordName = this.state.value;\n        const typeOrLabel = this.tsParseNonArrayType();\n\n        if (this.lookaheadCharCode() === charCodes.colon) {\n          labeled = true;\n          label = this.createIdentifier(\n            this.startNodeAt<N.Identifier>(startLoc),\n            wordName,\n          );\n          this.expect(tt.question);\n          this.expect(tt.colon);\n          type = this.tsParseType();\n        } else {\n          labeled = false;\n          type = typeOrLabel;\n          this.expect(tt.question);\n        }\n      } else {\n        type = this.tsParseType();\n        optional = this.eat(tt.question);\n        // In this case (labeled === true) could be only in invalid label.\n        // E.g. [x.y:type]\n        // An error is raised while processing node.\n        labeled = this.eat(tt.colon);\n      }\n\n      if (labeled) {\n        let labeledNode: Undone<N.TsNamedTupleMember>;\n        if (label) {\n          labeledNode = this.startNodeAtNode<N.TsNamedTupleMember>(label);\n          labeledNode.optional = optional;\n          labeledNode.label = label;\n          labeledNode.elementType = type;\n\n          if (this.eat(tt.question)) {\n            labeledNode.optional = true;\n            this.raise(\n              TSErrors.TupleOptionalAfterType,\n              this.state.lastTokStartLoc,\n            );\n          }\n        } else {\n          labeledNode = this.startNodeAtNode<N.TsNamedTupleMember>(type);\n          labeledNode.optional = optional;\n          this.raise(TSErrors.InvalidTupleMemberLabel, type);\n          // @ts-expect-error This produces an invalid AST, but at least we don't drop\n          // nodes representing the invalid source.\n          labeledNode.label = type;\n          labeledNode.elementType = this.tsParseType();\n        }\n        type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n      } else if (optional) {\n        const optionalTypeNode = this.startNodeAtNode<N.TsOptionalType>(type);\n        optionalTypeNode.typeAnnotation = type;\n        type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n      }\n\n      if (rest) {\n        const restNode = this.startNodeAt<N.TsRestType>(startLoc);\n        restNode.typeAnnotation = type;\n        type = this.finishNode(restNode, \"TSRestType\");\n      }\n\n      return type;\n    }\n\n    tsParseParenthesizedType(): N.TsParenthesizedType {\n      const node = this.startNode<N.TsParenthesizedType>();\n      this.expect(tt.parenL);\n      node.typeAnnotation = this.tsParseType();\n      this.expect(tt.parenR);\n      return this.finishNode(node, \"TSParenthesizedType\");\n    }\n\n    tsParseFunctionOrConstructorType(\n      type: \"TSFunctionType\" | \"TSConstructorType\",\n      abstract?: boolean,\n    ): N.TsFunctionOrConstructorType {\n      const node = this.startNode<\n        N.TsFunctionOrConstructorType | N.TsConstructorType\n      >();\n      if (type === \"TSConstructorType\") {\n        (node as Undone<N.TsConstructorType>).abstract = !!abstract;\n        if (abstract) this.next();\n        this.next(); // eat `new`\n      }\n      this.tsInAllowConditionalTypesContext(() =>\n        this.tsFillSignature(tt.arrow, node),\n      );\n      return this.finishNode(node, type);\n    }\n\n    tsParseLiteralTypeNode(): N.TsLiteralType {\n      const node = this.startNode<N.TsLiteralType>();\n      switch (this.state.type) {\n        case tt.num:\n        case tt.bigint:\n        case tt.string:\n        case tt._true:\n        case tt._false:\n          // For compatibility to estree we cannot call parseLiteral directly here\n          // @ts-expect-error refine typings\n          node.literal = super.parseExprAtom();\n          break;\n        default:\n          this.unexpected();\n      }\n      return this.finishNode(node, \"TSLiteralType\");\n    }\n\n    tsParseTemplateLiteralType(): N.TsLiteralType {\n      const node = this.startNode<N.TsLiteralType>();\n      node.literal = super.parseTemplate(false);\n      return this.finishNode(node, \"TSLiteralType\");\n    }\n\n    parseTemplateSubstitution(): N.TsType | N.Expression {\n      if (this.state.inType) return this.tsParseType();\n      return super.parseTemplateSubstitution();\n    }\n\n    tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n      const thisKeyword = this.tsParseThisTypeNode();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        return this.tsParseThisTypePredicate(thisKeyword);\n      } else {\n        return thisKeyword;\n      }\n    }\n\n    tsParseNonArrayType(): N.TsType {\n      switch (this.state.type) {\n        case tt.string:\n        case tt.num:\n        case tt.bigint:\n        case tt._true:\n        case tt._false:\n          return this.tsParseLiteralTypeNode();\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            const node = this.startNode<N.TsLiteralType>();\n            const nextToken = this.lookahead();\n            if (nextToken.type !== tt.num && nextToken.type !== tt.bigint) {\n              this.unexpected();\n            }\n            // @ts-expect-error: parseMaybeUnary must returns unary expression\n            node.literal = this.parseMaybeUnary();\n            return this.finishNode(node, \"TSLiteralType\");\n          }\n          break;\n        case tt._this:\n          return this.tsParseThisTypeOrThisTypePredicate();\n        case tt._typeof:\n          return this.tsParseTypeQuery();\n        case tt._import:\n          return this.tsParseImportType();\n        case tt.braceL:\n          return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n            ? this.tsParseMappedType()\n            : this.tsParseTypeLiteral();\n        case tt.bracketL:\n          return this.tsParseTupleType();\n        case tt.parenL:\n          if (process.env.BABEL_8_BREAKING) {\n            if (\n              !(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)\n            ) {\n              const startLoc = this.state.startLoc;\n              this.next();\n              const type = this.tsParseType();\n              this.expect(tt.parenR);\n              this.addExtra(type, \"parenthesized\", true);\n              this.addExtra(type, \"parenStart\", startLoc.index);\n              return type;\n            }\n          }\n\n          return this.tsParseParenthesizedType();\n        case tt.templateNonTail:\n        case tt.templateTail:\n          return this.tsParseTemplateLiteralType();\n        default: {\n          const { type } = this.state;\n          if (\n            tokenIsIdentifier(type) ||\n            type === tt._void ||\n            type === tt._null\n          ) {\n            const nodeType =\n              type === tt._void\n                ? \"TSVoidKeyword\"\n                : type === tt._null\n                  ? \"TSNullKeyword\"\n                  : keywordTypeFromName(this.state.value);\n            if (\n              nodeType !== undefined &&\n              this.lookaheadCharCode() !== charCodes.dot\n            ) {\n              const node = this.startNode<N.TsKeywordType>();\n              this.next();\n              return this.finishNode(node, nodeType);\n            }\n            return this.tsParseTypeReference();\n          }\n        }\n      }\n\n      this.unexpected();\n    }\n\n    tsParseArrayTypeOrHigher(): N.TsType {\n      let type = this.tsParseNonArrayType();\n      while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n        if (this.match(tt.bracketR)) {\n          const node = this.startNodeAtNode<N.TsArrayType>(type);\n          node.elementType = type;\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSArrayType\");\n        } else {\n          const node = this.startNodeAtNode<N.TsIndexedAccessType>(type);\n          node.objectType = type;\n          node.indexType = this.tsParseType();\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSIndexedAccessType\");\n        }\n      }\n      return type;\n    }\n\n    tsParseTypeOperator(): N.TsTypeOperator {\n      const node = this.startNode<N.TsTypeOperator>();\n      const operator = this.state.value;\n      this.next(); // eat operator\n      node.operator = operator;\n      node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n      if (operator === \"readonly\") {\n        this.tsCheckTypeAnnotationForReadOnly(node);\n      }\n\n      return this.finishNode(node, \"TSTypeOperator\");\n    }\n\n    tsCheckTypeAnnotationForReadOnly(node: Undone<N.TsTypeOperator>) {\n      switch (node.typeAnnotation.type) {\n        case \"TSTupleType\":\n        case \"TSArrayType\":\n          return;\n        default:\n          this.raise(TSErrors.UnexpectedReadonly, node);\n      }\n    }\n\n    tsParseInferType(): N.TsInferType {\n      const node = this.startNode<N.TsInferType>();\n      this.expectContextual(tt._infer);\n      const typeParameter = this.startNode<N.TsTypeParameter>();\n      typeParameter.name = this.tsParseTypeParameterName();\n      typeParameter.constraint = this.tsTryParse(() =>\n        this.tsParseConstraintForInferType(),\n      );\n      node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      return this.finishNode(node, \"TSInferType\");\n    }\n\n    tsParseConstraintForInferType() {\n      if (this.eat(tt._extends)) {\n        const constraint = this.tsInDisallowConditionalTypesContext(() =>\n          this.tsParseType(),\n        );\n        if (\n          this.state.inDisallowConditionalTypesContext ||\n          !this.match(tt.question)\n        ) {\n          return constraint;\n        }\n      }\n    }\n\n    tsParseTypeOperatorOrHigher(): N.TsType {\n      const isTypeOperator =\n        tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n      return isTypeOperator\n        ? this.tsParseTypeOperator()\n        : this.isContextual(tt._infer)\n          ? this.tsParseInferType()\n          : this.tsInAllowConditionalTypesContext(() =>\n              this.tsParseArrayTypeOrHigher(),\n            );\n    }\n\n    tsParseUnionOrIntersectionType(\n      kind: \"TSUnionType\" | \"TSIntersectionType\",\n      parseConstituentType: () => N.TsType,\n      operator: TokenType,\n    ): N.TsType {\n      const node = this.startNode<N.TsUnionType | N.TsIntersectionType>();\n      const hasLeadingOperator = this.eat(operator);\n      const types = [];\n      do {\n        types.push(parseConstituentType());\n      } while (this.eat(operator));\n      if (types.length === 1 && !hasLeadingOperator) {\n        return types[0];\n      }\n      node.types = types;\n      return this.finishNode(node, kind);\n    }\n\n    tsParseIntersectionTypeOrHigher(): N.TsType {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSIntersectionType\",\n        this.tsParseTypeOperatorOrHigher.bind(this),\n        tt.bitwiseAND,\n      );\n    }\n\n    tsParseUnionTypeOrHigher() {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSUnionType\",\n        this.tsParseIntersectionTypeOrHigher.bind(this),\n        tt.bitwiseOR,\n      );\n    }\n\n    tsIsStartOfFunctionType() {\n      if (this.match(tt.lt)) {\n        return true;\n      }\n      return (\n        this.match(tt.parenL) &&\n        this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n      );\n    }\n\n    tsSkipParameterStart(): boolean {\n      if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n        this.next();\n        return true;\n      }\n\n      if (this.match(tt.braceL)) {\n        // Return true if we can parse an object pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          this.parseObjectLike(tt.braceR, true);\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      if (this.match(tt.bracketL)) {\n        this.next();\n        // Return true if we can parse an array pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          super.parseBindingList(\n            tt.bracketR,\n            charCodes.rightSquareBracket,\n            ParseBindingListFlags.ALLOW_EMPTY,\n          );\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      return false;\n    }\n\n    tsIsUnambiguouslyStartOfFunctionType(): boolean {\n      this.next();\n      if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n        // ( )\n        // ( ...\n        return true;\n      }\n      if (this.tsSkipParameterStart()) {\n        if (\n          this.match(tt.colon) ||\n          this.match(tt.comma) ||\n          this.match(tt.question) ||\n          this.match(tt.eq)\n        ) {\n          // ( xxx :\n          // ( xxx ,\n          // ( xxx ?\n          // ( xxx =\n          return true;\n        }\n        if (this.match(tt.parenR)) {\n          this.next();\n          if (this.match(tt.arrow)) {\n            // ( xxx ) =>\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n\n    tsParseTypeOrTypePredicateAnnotation(\n      returnToken: TokenType,\n    ): N.TsTypeAnnotation {\n      return this.tsInType(() => {\n        const t = this.startNode<N.TsTypeAnnotation>();\n        this.expect(returnToken);\n\n        const node = this.startNode<N.TsTypePredicate>();\n\n        const asserts = !!this.tsTryParse(\n          this.tsParseTypePredicateAsserts.bind(this),\n        );\n\n        if (asserts && this.match(tt._this)) {\n          // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n          // : asserts this is type\n          let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n          // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n          // : asserts this\n          if (thisTypePredicate.type === \"TSThisType\") {\n            node.parameterName = thisTypePredicate;\n            node.asserts = true;\n            (node as N.TsTypePredicate).typeAnnotation = null;\n            thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n          } else {\n            this.resetStartLocationFromNode(thisTypePredicate, node);\n            thisTypePredicate.asserts = true;\n          }\n          t.typeAnnotation = thisTypePredicate;\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        const typePredicateVariable =\n          this.tsIsIdentifier() &&\n          this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n        if (!typePredicateVariable) {\n          if (!asserts) {\n            // : type\n            return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n          }\n\n          // : asserts foo\n          node.parameterName = this.parseIdentifier();\n          node.asserts = asserts;\n          (node as N.TsTypePredicate).typeAnnotation = null;\n          t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        // : asserts foo is type\n        const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n        node.parameterName = typePredicateVariable;\n        node.typeAnnotation = type;\n        node.asserts = asserts;\n        t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n        return this.finishNode(t, \"TSTypeAnnotation\");\n      });\n    }\n\n    tsTryParseTypeOrTypePredicateAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n    }\n\n    tsTryParseTypeAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeAnnotation();\n      }\n    }\n\n    tsTryParseType(): N.TsType | undefined {\n      return this.tsEatThenParseType(tt.colon);\n    }\n\n    tsParseTypePredicatePrefix(): N.Identifier | undefined {\n      const id = this.parseIdentifier();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        this.next();\n        return id;\n      }\n    }\n\n    tsParseTypePredicateAsserts(): boolean {\n      if (this.state.type !== tt._asserts) {\n        return false;\n      }\n      const containsEsc = this.state.containsEsc;\n      this.next();\n      if (!tokenIsIdentifier(this.state.type) && !this.match(tt._this)) {\n        return false;\n      }\n\n      if (containsEsc) {\n        this.raise(\n          Errors.InvalidEscapedReservedWord,\n          this.state.lastTokStartLoc,\n          {\n            reservedWord: \"asserts\",\n          },\n        );\n      }\n\n      return true;\n    }\n\n    tsParseTypeAnnotation(\n      eatColon = true,\n      t: Undone<N.TsTypeAnnotation> = this.startNode<N.TsTypeAnnotation>(),\n    ): N.TsTypeAnnotation {\n      this.tsInType(() => {\n        if (eatColon) this.expect(tt.colon);\n        t.typeAnnotation = this.tsParseType();\n      });\n      return this.finishNode(t, \"TSTypeAnnotation\");\n    }\n\n    /** Be sure to be in a type context before calling this, using `tsInType`. */\n    tsParseType(): N.TsType {\n      // Need to set `state.inType` so that we don't parse JSX in a type context.\n      assert(this.state.inType);\n      const type = this.tsParseNonConditionalType();\n\n      if (\n        this.state.inDisallowConditionalTypesContext ||\n        this.hasPrecedingLineBreak() ||\n        !this.eat(tt._extends)\n      ) {\n        return type;\n      }\n      const node = this.startNodeAtNode<N.TsConditionalType>(type);\n      node.checkType = type;\n\n      node.extendsType = this.tsInDisallowConditionalTypesContext(() =>\n        this.tsParseNonConditionalType(),\n      );\n\n      this.expect(tt.question);\n      node.trueType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      this.expect(tt.colon);\n      node.falseType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      return this.finishNode(node, \"TSConditionalType\");\n    }\n\n    isAbstractConstructorSignature(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.lookahead().type === tt._new\n      );\n    }\n\n    tsParseNonConditionalType(): N.TsType {\n      if (this.tsIsStartOfFunctionType()) {\n        return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n      }\n      if (this.match(tt._new)) {\n        // As in `new () => Date`\n        return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n      } else if (this.isAbstractConstructorSignature()) {\n        // As in `abstract new () => Date`\n        return this.tsParseFunctionOrConstructorType(\n          \"TSConstructorType\",\n          /* abstract */ true,\n        );\n      }\n      return this.tsParseUnionTypeOrHigher();\n    }\n\n    tsParseTypeAssertion(): N.TsTypeAssertion {\n      if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n        this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n      }\n\n      const node = this.startNode<N.TsTypeAssertion>();\n      node.typeAnnotation = this.tsInType(() => {\n        this.next(); // \"<\"\n        return this.match(tt._const)\n          ? this.tsParseTypeReference()\n          : this.tsParseType();\n      });\n      this.expect(tt.gt);\n      node.expression = this.parseMaybeUnary();\n      return this.finishNode(node, \"TSTypeAssertion\");\n    }\n\n    tsParseHeritageClause(token: \"extends\"): Array<N.TSInterfaceHeritage>;\n    tsParseHeritageClause(token: \"implements\"): Array<N.TSClassImplements>;\n    tsParseHeritageClause(\n      token: \"extends\" | \"implements\",\n    ): Array<N.TSClassImplements> | Array<N.TSInterfaceHeritage> {\n      const originalStartLoc = this.state.startLoc;\n\n      const delimitedList = this.tsParseDelimitedList(\n        \"HeritageClauseElement\",\n        () => {\n          const node = this.startNode<\n            N.TSClassImplements | N.TSInterfaceHeritage\n          >();\n          node.expression = this.tsParseEntityName();\n          if (process.env.BABEL_8_BREAKING) {\n            if (this.match(tt.lt)) {\n              node.typeArguments = this.tsParseTypeArguments();\n            }\n            return this.finishNode(\n              node,\n              token === \"extends\" ? \"TSInterfaceHeritage\" : \"TSClassImplements\",\n            );\n          } else {\n            if (this.match(tt.lt)) {\n              // @ts-expect-error Babel 7 vs Babel 8\n              node.typeParameters = this.tsParseTypeArguments();\n            }\n\n            return this.finishNode(\n              node,\n              // @ts-expect-error Babel 7 vs Babel 8\n              \"TSExpressionWithTypeArguments\",\n            );\n          }\n        },\n      );\n\n      if (!delimitedList.length) {\n        this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n          token,\n        });\n      }\n\n      return delimitedList as\n        | Array<N.TSClassImplements>\n        | Array<N.TSInterfaceHeritage>;\n    }\n\n    tsParseInterfaceDeclaration(\n      node: Undone<N.TsInterfaceDeclaration>,\n      properties: {\n        declare?: true;\n      } = {},\n    ): N.TsInterfaceDeclaration | null {\n      if (this.hasFollowingLineBreak()) return null;\n      this.expectContextual(tt._interface);\n      if (properties.declare) node.declare = true;\n      if (tokenIsIdentifier(this.state.type)) {\n        node.id = this.parseIdentifier();\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_INTERFACE);\n      } else {\n        node.id = null;\n        this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n      }\n\n      node.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (this.eat(tt._extends)) {\n        node.extends = this.tsParseHeritageClause(\"extends\");\n      }\n      const body = this.startNode<N.TSInterfaceBody>();\n      body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n      node.body = this.finishNode(body, \"TSInterfaceBody\");\n      return this.finishNode(node, \"TSInterfaceDeclaration\");\n    }\n\n    tsParseTypeAliasDeclaration(\n      node: N.TsTypeAliasDeclaration,\n    ): N.TsTypeAliasDeclaration {\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_TYPE);\n\n      node.typeAnnotation = this.tsInType(() => {\n        node.typeParameters = this.tsTryParseTypeParameters(\n          this.tsParseInOutModifiers,\n        );\n\n        this.expect(tt.eq);\n\n        if (\n          this.isContextual(tt._intrinsic) &&\n          this.lookahead().type !== tt.dot\n        ) {\n          const node = this.startNode<N.TsKeywordType>();\n          this.next();\n          return this.finishNode(node, \"TSIntrinsicKeyword\");\n        }\n\n        return this.tsParseType();\n      });\n\n      this.semicolon();\n      return this.finishNode(node, \"TSTypeAliasDeclaration\");\n    }\n\n    // Parse in top level normal context if we are in a JSX context\n    tsInTopLevelContext<T>(cb: () => T): T {\n      if (this.curContext() !== tc.brace) {\n        const oldContext = this.state.context;\n        this.state.context = [oldContext[0]];\n        try {\n          return cb();\n        } finally {\n          this.state.context = oldContext;\n        }\n      } else {\n        return cb();\n      }\n    }\n\n    /**\n     * Runs `cb` in a type context.\n     * This should be called one token *before* the first type token,\n     * so that the call to `next()` is run in type context.\n     */\n    tsInType<T>(cb: () => T): T {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inType = oldInType;\n      }\n    }\n\n    tsInDisallowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsInAllowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = false;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsEatThenParseType(token: TokenType): N.TsType | undefined {\n      if (this.match(token)) {\n        return this.tsNextThenParseType();\n      }\n    }\n\n    tsExpectThenParseType(token: TokenType): N.TsType {\n      return this.tsInType(() => {\n        this.expect(token);\n        return this.tsParseType();\n      });\n    }\n\n    tsNextThenParseType(): N.TsType {\n      return this.tsInType(() => {\n        this.next();\n        return this.tsParseType();\n      });\n    }\n\n    tsParseEnumMember(): N.TsEnumMember {\n      const node = this.startNode<N.TsEnumMember>();\n      // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n      node.id = this.match(tt.string)\n        ? super.parseStringLiteral(this.state.value)\n        : this.parseIdentifier(/* liberal */ true);\n      if (this.eat(tt.eq)) {\n        node.initializer = super.parseMaybeAssignAllowIn();\n      }\n      return this.finishNode(node, \"TSEnumMember\");\n    }\n\n    tsParseEnumDeclaration(\n      node: Undone<N.TsEnumDeclaration>,\n      properties: {\n        const?: true;\n        declare?: true;\n      } = {},\n    ): N.TsEnumDeclaration {\n      if (properties.const) node.const = true;\n      if (properties.declare) node.declare = true;\n      this.expectContextual(tt._enum);\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(\n        node.id,\n        node.const ? BindingFlag.TYPE_TS_CONST_ENUM : BindingFlag.TYPE_TS_ENUM,\n      );\n\n      if (process.env.BABEL_8_BREAKING) {\n        node.body = this.tsParseEnumBody();\n      } else {\n        this.expect(tt.braceL);\n        node.members = this.tsParseDelimitedList(\n          \"EnumMembers\",\n          this.tsParseEnumMember.bind(this),\n        );\n        this.expect(tt.braceR);\n      }\n      return this.finishNode(node, \"TSEnumDeclaration\");\n    }\n\n    tsParseEnumBody(): N.TsEnumBody {\n      const node = this.startNode<N.TsEnumBody>();\n      this.expect(tt.braceL);\n      node.members = this.tsParseDelimitedList(\n        \"EnumMembers\",\n        this.tsParseEnumMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return this.finishNode(node, \"TSEnumBody\");\n    }\n\n    tsParseModuleBlock(): N.TsModuleBlock {\n      const node = this.startNode<N.TsModuleBlock>();\n      this.scope.enter(ScopeFlag.OTHER);\n\n      this.expect(tt.braceL);\n      // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n      super.parseBlockOrModuleBlockBody(\n        (node.body = []),\n        /* directives */ undefined,\n        /* topLevel */ true,\n        /* end */ tt.braceR,\n      );\n      this.scope.exit();\n      return this.finishNode(node, \"TSModuleBlock\");\n    }\n\n    tsParseModuleOrNamespaceDeclaration(\n      node: Undone<N.TsModuleDeclaration>,\n      nested: boolean = false,\n    ): N.TsModuleDeclaration {\n      node.id = process.env.BABEL_8_BREAKING\n        ? this.tsParseEntityName()\n        : this.parseIdentifier();\n\n      if (\n        process.env.BABEL_8_BREAKING ? node.id.type === \"Identifier\" : !nested\n      ) {\n        // @ts-expect-error checked above\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_NAMESPACE);\n      }\n\n      if (!process.env.BABEL_8_BREAKING && this.eat(tt.dot)) {\n        const inner = this.startNode<N.TsModuleDeclaration>();\n        this.tsParseModuleOrNamespaceDeclaration(inner, true);\n        // @ts-expect-error Fixme: refine typings\n        node.body = inner;\n      } else {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      }\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseAmbientExternalModuleDeclaration(\n      node: N.TsModuleDeclaration,\n    ): N.TsModuleDeclaration {\n      if (this.isContextual(tt._global)) {\n        node.kind = \"global\";\n        if (!process.env.BABEL_8_BREAKING) {\n          node.global = true;\n        }\n        node.id = this.parseIdentifier();\n      } else if (this.match(tt.string)) {\n        node.kind = \"module\";\n        node.id = super.parseStringLiteral(this.state.value);\n      } else {\n        this.unexpected();\n      }\n      if (this.match(tt.braceL)) {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      } else {\n        this.semicolon();\n      }\n\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseImportEqualsDeclaration(\n      node: Undone<N.TsImportEqualsDeclaration>,\n      maybeDefaultIdentifier?: N.Identifier | null,\n      isExport?: boolean,\n    ): N.TsImportEqualsDeclaration {\n      node.isExport = isExport || false;\n      node.id = maybeDefaultIdentifier || this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_VALUE_IMPORT);\n      this.expect(tt.eq);\n      const moduleReference = this.tsParseModuleReference();\n      if (\n        node.importKind === \"type\" &&\n        moduleReference.type !== \"TSExternalModuleReference\"\n      ) {\n        this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n      }\n      node.moduleReference = moduleReference;\n      this.semicolon();\n      return this.finishNode(node, \"TSImportEqualsDeclaration\");\n    }\n\n    tsIsExternalModuleReference(): boolean {\n      return (\n        this.isContextual(tt._require) &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      );\n    }\n\n    tsParseModuleReference(): N.TsModuleReference {\n      return this.tsIsExternalModuleReference()\n        ? this.tsParseExternalModuleReference()\n        : this.tsParseEntityName(/* allowReservedWords */ false);\n    }\n\n    tsParseExternalModuleReference(): N.TsExternalModuleReference {\n      const node = this.startNode<N.TsExternalModuleReference>();\n      this.expectContextual(tt._require);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.unexpected();\n      }\n      // For compatibility to estree we cannot call parseLiteral directly here\n      node.expression = super.parseExprAtom() as N.StringLiteral;\n      this.expect(tt.parenR);\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node, \"TSExternalModuleReference\");\n    }\n\n    // Utilities\n\n    tsLookAhead<T>(f: () => T): T {\n      const state = this.state.clone();\n      const res = f();\n      this.state = state;\n      return res;\n    }\n\n    tsTryParseAndCatch<T extends N.NodeBase | undefined | null>(\n      f: () => T,\n    ): T | undefined | null {\n      const result = this.tryParse(\n        abort =>\n          // @ts-expect-error todo(flow->ts)\n          f() || abort(),\n      );\n\n      if (result.aborted || !result.node) return;\n      if (result.error) this.state = result.failState;\n      // @ts-expect-error refine typings\n      return result.node;\n    }\n\n    tsTryParse<T>(f: () => T | undefined | false): T | undefined {\n      const state = this.state.clone();\n      const result = f();\n      if (result !== undefined && result !== false) {\n        return result;\n      }\n      this.state = state;\n    }\n\n    tsTryParseDeclare(nany: any): N.Declaration | undefined {\n      if (this.isLineTerminator()) {\n        return;\n      }\n      let startType = this.state.type;\n      let kind: \"let\" | null;\n\n      if (this.isContextual(tt._let)) {\n        startType = tt._var;\n        kind = \"let\";\n      }\n\n      // @ts-expect-error refine typings\n      return this.tsInAmbientContext(() => {\n        switch (startType) {\n          case tt._function:\n            nany.declare = true;\n            return super.parseFunctionStatement(\n              nany,\n              /* async */ false,\n              /* isHangingDeclaration */ false,\n            );\n          case tt._class:\n            // While this is also set by tsParseExpressionStatement, we need to set it\n            // before parsing the class declaration to know how to register it in the scope.\n            nany.declare = true;\n            return this.parseClass(\n              nany,\n              /* isStatement */ true,\n              /* optionalId */ false,\n            );\n          case tt._enum:\n            return this.tsParseEnumDeclaration(nany, { declare: true });\n          case tt._global:\n            return this.tsParseAmbientExternalModuleDeclaration(nany);\n          case tt._const:\n          case tt._var:\n            if (!this.match(tt._const) || !this.isLookaheadContextual(\"enum\")) {\n              nany.declare = true;\n              return this.parseVarStatement(\n                nany,\n                kind || this.state.value,\n                true,\n              );\n            }\n\n            // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n            this.expect(tt._const);\n            return this.tsParseEnumDeclaration(nany, {\n              const: true,\n              declare: true,\n            });\n          case tt._interface: {\n            const result = this.tsParseInterfaceDeclaration(nany, {\n              declare: true,\n            });\n            if (result) return result;\n          }\n          // fallthrough\n          default:\n            if (tokenIsIdentifier(startType)) {\n              return this.tsParseDeclaration(\n                nany,\n                this.state.value,\n                /* next */ true,\n                /* decorators */ null,\n              );\n            }\n        }\n      });\n    }\n\n    // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n    tsTryParseExportDeclaration(): N.Declaration | undefined {\n      return this.tsParseDeclaration(\n        this.startNode(),\n        this.state.value,\n        /* next */ true,\n        /* decorators */ null,\n      );\n    }\n\n    tsParseExpressionStatement(\n      node: Undone<N.TsModuleDeclaration>,\n      expr: N.Identifier,\n      decorators: N.Decorator[] | null,\n    ): N.Declaration | undefined {\n      switch (expr.name) {\n        case \"declare\": {\n          const declaration = this.tsTryParseDeclare(node);\n          if (declaration) {\n            declaration.declare = true;\n          }\n          return declaration;\n        }\n        case \"global\":\n          // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n          // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n          if (this.match(tt.braceL)) {\n            this.scope.enter(ScopeFlag.TS_MODULE);\n            this.prodParam.enter(ParamKind.PARAM);\n            const mod = node;\n            mod.kind = \"global\";\n            if (!process.env.BABEL_8_BREAKING) {\n              node.global = true;\n            }\n            mod.id = expr;\n            mod.body = this.tsParseModuleBlock();\n            this.scope.exit();\n            this.prodParam.exit();\n            return this.finishNode(mod, \"TSModuleDeclaration\");\n          }\n          break;\n\n        default:\n          return this.tsParseDeclaration(\n            node,\n            expr.name,\n            /* next */ false,\n            decorators,\n          );\n      }\n    }\n\n    // Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n    tsParseDeclaration(\n      node: any,\n      value: string,\n      next: boolean,\n      decorators: N.Decorator[] | null,\n    ): N.Declaration | undefined | null {\n      // no declaration apart from enum can be followed by a line break.\n      switch (value) {\n        case \"abstract\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            (this.match(tt._class) || tokenIsIdentifier(this.state.type))\n          ) {\n            return this.tsParseAbstractDeclaration(node, decorators);\n          }\n          break;\n\n        case \"module\":\n          if (this.tsCheckLineTerminator(next)) {\n            if (this.match(tt.string)) {\n              return this.tsParseAmbientExternalModuleDeclaration(node);\n            } else if (tokenIsIdentifier(this.state.type)) {\n              node.kind = \"module\";\n              return this.tsParseModuleOrNamespaceDeclaration(node);\n            }\n          }\n          break;\n\n        case \"namespace\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            node.kind = \"namespace\";\n            return this.tsParseModuleOrNamespaceDeclaration(node);\n          }\n          break;\n\n        case \"type\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            return this.tsParseTypeAliasDeclaration(node);\n          }\n          break;\n      }\n    }\n\n    tsCheckLineTerminator(next: boolean) {\n      if (next) {\n        if (this.hasFollowingLineBreak()) return false;\n        this.next();\n        return true;\n      }\n      return !this.isLineTerminator();\n    }\n\n    tsTryParseGenericAsyncArrowFunction(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined {\n      if (!this.match(tt.lt)) return;\n\n      const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n      this.state.maybeInArrowParameters = true;\n\n      const res: Undone<N.ArrowFunctionExpression> | undefined =\n        this.tsTryParseAndCatch(() => {\n          const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n          node.typeParameters = this.tsParseTypeParameters(\n            this.tsParseConstModifier,\n          );\n          // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n          super.parseFunctionParams(node);\n          node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n          this.expect(tt.arrow);\n          return node;\n        });\n\n      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n      if (!res) return;\n\n      return super.parseArrowExpression(\n        res,\n        /* params are already set */ null,\n        /* async */ true,\n      );\n    }\n\n    // Used when parsing type arguments from ES or JSX productions, where the first token\n    // has been created without state.inType. Thus we need to re-scan the lt token.\n    tsParseTypeArgumentsInExpression():\n      | N.TsTypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.tsParseTypeArguments();\n    }\n\n    tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n      const node = this.startNode<N.TsTypeParameterInstantiation>();\n      node.params = this.tsInType(() =>\n        this.tsInTopLevelContext(() => {\n          this.expect(tt.lt);\n          return this.tsParseDelimitedList(\n            \"TypeParametersOrArguments\",\n            this.tsParseType.bind(this),\n          );\n        }),\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeArguments, node);\n      } else if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n      return this.finishNode(node, \"TSTypeParameterInstantiation\");\n    }\n\n    tsIsDeclarationStart(): boolean {\n      return tokenIsTSDeclarationStart(this.state.type);\n    }\n\n    // ======================================================\n    // OVERRIDES\n    // ======================================================\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.tsIsDeclarationStart()) return false;\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseAssignableListItem(\n      flags: ParseBindingListFlags,\n      decorators: N.Decorator[],\n    ): N.Pattern | N.TSParameterProperty {\n      // Store original location to include modifiers in range\n      const startLoc = this.state.startLoc;\n\n      const modified: ModifierBase = {};\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\n            \"public\",\n            \"private\",\n            \"protected\",\n            \"override\",\n            \"readonly\",\n          ],\n        },\n        modified,\n      );\n      const accessibility = modified.accessibility;\n      const override = modified.override;\n      const readonly = modified.readonly;\n      if (\n        !(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) &&\n        (accessibility || readonly || override)\n      ) {\n        this.raise(TSErrors.UnexpectedParameterModifier, startLoc);\n      }\n\n      const left = this.parseMaybeDefault();\n      if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n        this.parseFunctionParamType(left);\n      }\n      const elt = this.parseMaybeDefault(left.loc.start, left);\n      if (accessibility || readonly || override) {\n        const pp = this.startNodeAt<N.TSParameterProperty>(startLoc);\n        if (decorators.length) {\n          pp.decorators = decorators;\n        }\n        if (accessibility) pp.accessibility = accessibility;\n        if (readonly) pp.readonly = readonly;\n        if (override) pp.override = override;\n        if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n          this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);\n        }\n        pp.parameter = elt as any as N.Identifier | N.AssignmentPattern;\n        return this.finishNode(pp, \"TSParameterProperty\");\n      }\n\n      if (decorators.length) {\n        left.decorators = decorators;\n      }\n\n      return elt;\n    }\n\n    isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n      return (\n        (node.type === \"TSParameterProperty\" &&\n          super.isSimpleParameter(node.parameter)) ||\n        super.isSimpleParameter(node)\n      );\n    }\n\n    tsDisallowOptionalPattern(node: Undone<N.Function>) {\n      for (const param of node.params) {\n        if (\n          param.type !== \"Identifier\" &&\n          (param as any).optional &&\n          !this.state.isAmbientContext\n        ) {\n          this.raise(TSErrors.PatternIsOptional, param);\n        }\n      }\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params: N.Expression[],\n      trailingCommaLoc?: Position | null,\n    ): void {\n      super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n      this.tsDisallowOptionalPattern(node);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n\n      const bodilessType =\n        type === \"FunctionDeclaration\"\n          ? \"TSDeclareFunction\"\n          : type === \"ClassMethod\" || type === \"ClassPrivateMethod\"\n            ? \"TSDeclareMethod\"\n            : undefined;\n      if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n        return this.finishNode(node, bodilessType);\n      }\n      if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n        this.raise(TSErrors.DeclareFunctionHasImplementation, node);\n        if ((node as Undone<N.FunctionDeclaration>).declare) {\n          return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n        }\n      }\n      this.tsDisallowOptionalPattern(node);\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    registerFunctionStatementId(node: N.Function): void {\n      if (!node.body && node.id) {\n        // Function ids are validated after parsing their body.\n        // For bodiless function, we need to do it here.\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_AMBIENT);\n      } else {\n        super.registerFunctionStatementId(node);\n      }\n    }\n\n    tsCheckForInvalidTypeCasts(items: Array<N.Expression | N.SpreadElement>) {\n      items.forEach(node => {\n        if (node?.type === \"TSTypeCastExpression\") {\n          this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n        }\n      });\n    }\n\n    toReferencedList(\n      exprList: Array<N.Expression | undefined | null>,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isInParens?: boolean,\n    ): Array<N.Expression | undefined | null> {\n      // Handles invalid scenarios like: `f(a:b)`, `(a:b);`, and `(a:b,c:d)`.\n      //\n      // Note that `f<T>(a:b)` goes through a different path and is handled\n      // in `parseSubscript` directly.\n      this.tsCheckForInvalidTypeCasts(exprList);\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      if (node.type === \"ArrayExpression\") {\n        this.tsCheckForInvalidTypeCasts(node.elements);\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n        // When ! is consumed as a postfix operator (non-null assertion),\n        // disallow JSX tag forming after. e.g. When parsing `p! < n.p!`\n        // `<n.p` can not be a start of JSX tag\n        this.state.canStartJSXElement = false;\n        this.next();\n\n        const nonNullExpression =\n          this.startNodeAt<N.TsNonNullExpression>(startLoc);\n        nonNullExpression.expression = base;\n        return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n      }\n\n      let isOptionalCall = false;\n      if (\n        this.match(tt.questionDot) &&\n        this.lookaheadCharCode() === charCodes.lessThan\n      ) {\n        if (noCalls) {\n          state.stop = true;\n          return base;\n        }\n        state.optionalChainMember = isOptionalCall = true;\n        this.next();\n      }\n\n      // handles 'f<<T>'\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        let missingParenErrorLoc;\n        // tsTryParseAndCatch is expensive, so avoid if not necessary.\n        // There are number of things we are going to \"maybe\" parse, like type arguments on\n        // tagged template expressions. If any of them fail, walk it back and continue.\n        const result = this.tsTryParseAndCatch(() => {\n          if (!noCalls && this.atPossibleAsyncArrow(base)) {\n            // Almost certainly this is a generic async function `async <T>() => ...\n            // But it might be a call with a type argument `async<T>();`\n            const asyncArrowFn =\n              this.tsTryParseGenericAsyncArrowFunction(startLoc);\n            if (asyncArrowFn) {\n              return asyncArrowFn;\n            }\n          }\n\n          const typeArguments = this.tsParseTypeArgumentsInExpression();\n          if (!typeArguments) return;\n\n          if (isOptionalCall && !this.match(tt.parenL)) {\n            missingParenErrorLoc = this.state.curPosition();\n            return;\n          }\n\n          if (tokenIsTemplate(this.state.type)) {\n            const result = super.parseTaggedTemplateExpression(\n              base,\n              startLoc,\n              state,\n            );\n            if (process.env.BABEL_8_BREAKING) {\n              result.typeArguments = typeArguments;\n            } else {\n              result.typeParameters = typeArguments;\n            }\n            return result;\n          }\n\n          if (!noCalls && this.eat(tt.parenL)) {\n            const node = this.startNodeAt<\n              N.CallExpression | N.OptionalCallExpression\n            >(startLoc);\n            node.callee = base;\n            // @ts-expect-error (won't be any undefined arguments)\n            node.arguments = this.parseCallExpressionArguments(tt.parenR);\n\n            // Handles invalid case: `f<T>(a:b)`\n            this.tsCheckForInvalidTypeCasts(node.arguments);\n\n            if (process.env.BABEL_8_BREAKING) {\n              node.typeArguments = typeArguments;\n            } else {\n              node.typeParameters = typeArguments;\n            }\n\n            if (state.optionalChainMember) {\n              (node as Undone<N.OptionalCallExpression>).optional =\n                isOptionalCall;\n            }\n\n            return this.finishCallExpression(node, state.optionalChainMember);\n          }\n\n          const tokenType = this.state.type;\n          if (\n            // a<b>>c is not (a<b>)>c, but a<(b>>c)\n            tokenType === tt.gt ||\n            // a<b>>>c is not (a<b>)>>c, but a<(b>>>c)\n            tokenType === tt.bitShiftR ||\n            // a<b>c is (a<b)>c\n            (tokenType !== tt.parenL &&\n              tokenCanStartExpression(tokenType) &&\n              !this.hasPrecedingLineBreak())\n          ) {\n            // Bail out.\n            return;\n          }\n\n          const node = this.startNodeAt<N.TsInstantiationExpression>(startLoc);\n          node.expression = base;\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments = typeArguments;\n          } else {\n            node.typeParameters = typeArguments;\n          }\n          return this.finishNode(node, \"TSInstantiationExpression\");\n        });\n\n        if (missingParenErrorLoc) {\n          this.unexpected(missingParenErrorLoc, tt.parenL);\n        }\n\n        if (result) {\n          if (\n            result.type === \"TSInstantiationExpression\" &&\n            (this.match(tt.dot) ||\n              (this.match(tt.questionDot) &&\n                this.lookaheadCharCode() !== charCodes.leftParenthesis))\n          ) {\n            this.raise(\n              TSErrors.InvalidPropertyAccessAfterInstantiationExpression,\n              this.state.startLoc,\n            );\n          }\n          return result;\n        }\n      }\n\n      return super.parseSubscript(base, startLoc, noCalls, state);\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      const { callee } = node;\n      if (\n        callee.type === \"TSInstantiationExpression\" &&\n        !callee.extra?.parenthesized\n      ) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = callee.typeArguments;\n        } else {\n          node.typeParameters = callee.typeParameters;\n        }\n        node.callee = callee.expression;\n      }\n    }\n\n    parseExprOp(\n      left: N.Expression,\n      leftStartLoc: Position,\n      minPrec: number,\n    ): N.Expression {\n      let isSatisfies: boolean;\n      if (\n        tokenOperatorPrecedence(tt._in) > minPrec &&\n        !this.hasPrecedingLineBreak() &&\n        (this.isContextual(tt._as) ||\n          (isSatisfies = this.isContextual(tt._satisfies)))\n      ) {\n        const node = this.startNodeAt<\n          N.TsAsExpression | N.TsSatisfiesExpression\n        >(leftStartLoc);\n        node.expression = left;\n        node.typeAnnotation = this.tsInType(() => {\n          this.next(); // \"as\" or \"satisfies\"\n          if (this.match(tt._const)) {\n            if (isSatisfies) {\n              this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n                keyword: \"const\",\n              });\n            }\n            return this.tsParseTypeReference();\n          }\n\n          return this.tsParseType();\n        });\n        this.finishNode(\n          node,\n          isSatisfies ? \"TSSatisfiesExpression\" : \"TSAsExpression\",\n        );\n        // rescan `<`, `>` because they were scanned when this.state.inType was true\n        this.reScan_lt_gt();\n        return this.parseExprOp(\n          // @ts-expect-error todo(flow->ts)\n          node,\n          leftStartLoc,\n          minPrec,\n        );\n      }\n\n      return super.parseExprOp(left, leftStartLoc, minPrec);\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ): void {\n      // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n      // And we have a type checker anyway, so don't bother having the parser do it.\n      if (!this.state.isAmbientContext) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          TSErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    /*\n    Don't bother doing this check in TypeScript code because:\n    1. We may have a nested export statement with the same name:\n      export const x = 0;\n      export namespace N {\n        export const x = 1;\n      }\n    2. We have a type checker to warn us about this sort of thing.\n    */\n    checkDuplicateExports() {}\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        const ch = this.lookaheadCharCode();\n        return isExport\n          ? ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk\n          : ch !== charCodes.equalsTo;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? \"type\" : \"value\";\n      } else {\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    ): N.AnyImport {\n      if (this.match(tt.string)) {\n        node.importKind = \"value\";\n        return super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      let importNode;\n      if (\n        tokenIsIdentifier(this.state.type) &&\n        this.lookaheadCharCode() === charCodes.equalsTo\n      ) {\n        node.importKind = \"value\";\n        return this.tsParseImportEqualsDeclaration(\n          node as Undone<N.TsImportEqualsDeclaration>,\n        );\n      } else if (this.isContextual(tt._type)) {\n        const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n          node as Undone<N.ImportDeclaration>,\n          /* isExport */ false,\n        );\n        if (this.lookaheadCharCode() === charCodes.equalsTo) {\n          return this.tsParseImportEqualsDeclaration(\n            node as Undone<N.TsImportEqualsDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        } else {\n          importNode = super.parseImportSpecifiersAndAfter(\n            node as Undone<N.ImportDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        }\n      } else {\n        importNode = super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      // `import type` can only be used on imports with named imports or with a\n      // default import - but not both\n      if (\n        importNode.importKind === \"type\" &&\n        // @ts-expect-error refine typings\n        importNode.specifiers.length > 1 &&\n        // @ts-expect-error refine typings\n        importNode.specifiers[0].type === \"ImportDefaultSpecifier\"\n      ) {\n        this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n      }\n\n      return importNode;\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      if (this.match(tt._import)) {\n        // `export import A = B;`\n        this.next(); // eat `tt._import`\n        const nodeImportEquals = node as Undone<N.TsImportEqualsDeclaration>;\n        let maybeDefaultIdentifier: N.Identifier | null = null;\n        if (\n          this.isContextual(tt._type) &&\n          // We pass false here, because we are parsing an `import ... =`\n          this.isPotentialImportPhase(/* isExport */ false)\n        ) {\n          maybeDefaultIdentifier = this.parseMaybeImportPhase(\n            nodeImportEquals,\n            /* isExport */ false,\n          );\n        } else {\n          nodeImportEquals.importKind = \"value\";\n        }\n        return this.tsParseImportEqualsDeclaration(\n          nodeImportEquals,\n          maybeDefaultIdentifier,\n          /* isExport */ true,\n        );\n      } else if (this.eat(tt.eq)) {\n        // `export = x;`\n        const assign = node as Undone<N.TsExportAssignment>;\n        assign.expression = super.parseExpression();\n        this.semicolon();\n        this.sawUnambiguousESM = true;\n        return this.finishNode(assign, \"TSExportAssignment\");\n      } else if (this.eatContextual(tt._as)) {\n        // `export as namespace A;`\n        const decl = node as Undone<N.TsNamespaceExportDeclaration>;\n        // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n        this.expectContextual(tt._namespace);\n        decl.id = this.parseIdentifier();\n        this.semicolon();\n        return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n      } else {\n        return super.parseExport(\n          node as Undone<N.ExportAllDeclaration | N.ExportDefaultDeclaration>,\n          decorators,\n        );\n      }\n    }\n\n    isAbstractClass(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.lookahead().type === tt._class\n      );\n    }\n\n    parseExportDefaultExpression(): N.ExportDefaultDeclaration[\"declaration\"] {\n      if (this.isAbstractClass()) {\n        const cls = this.startNode<N.Class>();\n        this.next(); // Skip \"abstract\"\n        cls.abstract = true;\n        return this.parseClass(cls, true, true);\n      }\n\n      // export default interface allowed in:\n      // https://github.com/Microsoft/TypeScript/pull/16040\n      if (this.match(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(\n          this.startNode<N.TsInterfaceDeclaration>(),\n        );\n        if (result) return result;\n      }\n\n      return super.parseExportDefaultExpression();\n    }\n\n    parseVarStatement(\n      node: N.VariableDeclaration,\n      kind: \"var\" | \"let\" | \"const\" | \"using\",\n      allowMissingInitializer: boolean = false,\n    ) {\n      const { isAmbientContext } = this.state;\n      const declaration = super.parseVarStatement(\n        node,\n        kind,\n        allowMissingInitializer || isAmbientContext,\n      );\n\n      if (!isAmbientContext) return declaration;\n\n      for (const { id, init } of declaration.declarations) {\n        // Empty initializer is the easy case that we want.\n        if (!init) continue;\n\n        // var and let aren't ever allowed initializers.\n        if (kind !== \"const\" || !!id.typeAnnotation) {\n          this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n        } else if (\n          !isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))\n        ) {\n          this.raise(\n            TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference,\n            init,\n          );\n        }\n      }\n\n      return declaration;\n    }\n\n    parseStatementContent(\n      flags: ParseStatementFlag,\n      decorators?: N.Decorator[] | null,\n    ): N.Statement {\n      if (this.match(tt._const) && this.isLookaheadContextual(\"enum\")) {\n        const node = this.startNode<N.TsEnumDeclaration>();\n        this.expect(tt._const); // eat 'const'\n        return this.tsParseEnumDeclaration(node, { const: true });\n      }\n\n      if (this.isContextual(tt._enum)) {\n        return this.tsParseEnumDeclaration(\n          this.startNode<N.TsEnumDeclaration>(),\n        );\n      }\n\n      if (this.isContextual(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(this.startNode());\n        if (result) return result;\n      }\n\n      return super.parseStatementContent(flags, decorators);\n    }\n\n    parseAccessModifier(): N.Accessibility | undefined | null {\n      return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n    }\n\n    tsHasSomeModifiers(member: any, modifiers: readonly TsModifier[]): boolean {\n      return modifiers.some(modifier => {\n        if (tsIsAccessModifier(modifier)) {\n          return member.accessibility === modifier;\n        }\n        return !!member[modifier];\n      });\n    }\n\n    tsIsStartOfStaticBlocks() {\n      return (\n        this.isContextual(tt._static) &&\n        this.lookaheadCharCode() === charCodes.leftCurlyBrace\n      );\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const modifiers = [\n        \"declare\",\n        \"private\",\n        \"public\",\n        \"protected\",\n        \"override\",\n        \"abstract\",\n        \"readonly\",\n        \"static\",\n      ] as const;\n      this.tsParseModifiers(\n        {\n          allowedModifiers: modifiers,\n          disallowedModifiers: [\"in\", \"out\"],\n          stopOnStartOfClassStaticBlock: true,\n          errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n        },\n        member,\n      );\n\n      const callParseClassMemberWithIsStatic = () => {\n        if (this.tsIsStartOfStaticBlocks()) {\n          this.next(); // eat \"static\"\n          this.next(); // eat \"{\"\n          if (this.tsHasSomeModifiers(member, modifiers)) {\n            this.raise(\n              TSErrors.StaticBlockCannotHaveModifier,\n              this.state.curPosition(),\n            );\n          }\n          super.parseClassStaticBlock(classBody, member as N.StaticBlock);\n        } else {\n          this.parseClassMemberWithIsStatic(\n            classBody,\n            member,\n            state,\n            !!member.static,\n          );\n        }\n      };\n      if (member.declare) {\n        this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n      } else {\n        callParseClassMemberWithIsStatic();\n      }\n    }\n\n    parseClassMemberWithIsStatic(\n      classBody: N.ClassBody,\n      member: Undone<N.ClassMember | N.TsIndexSignature>,\n      state: N.ParseClassMemberState,\n      isStatic: boolean,\n    ): void {\n      const idx = this.tsTryParseIndexSignature(\n        member as Undone<N.TsIndexSignature>,\n      );\n      if (idx) {\n        classBody.body.push(idx);\n\n        if ((member as any).abstract) {\n          this.raise(TSErrors.IndexSignatureHasAbstract, member);\n        }\n        if ((member as any).accessibility) {\n          this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n            modifier: (member as any).accessibility,\n          });\n        }\n        if ((member as any).declare) {\n          this.raise(TSErrors.IndexSignatureHasDeclare, member);\n        }\n        if ((member as any).override) {\n          this.raise(TSErrors.IndexSignatureHasOverride, member);\n        }\n\n        return;\n      }\n\n      if (!this.state.inAbstractClass && (member as any).abstract) {\n        this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n      }\n\n      if ((member as any).override) {\n        if (!state.hadSuperClass) {\n          this.raise(TSErrors.OverrideNotInSubClass, member);\n        }\n      }\n\n      /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n      super.parseClassMemberWithIsStatic(\n        classBody,\n        member as Undone<N.ClassMember>,\n        state,\n        isStatic,\n      );\n    }\n\n    parsePostMemberNameModifiers(\n      methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n    ): void {\n      const optional = this.eat(tt.question);\n      if (optional) methodOrProp.optional = true;\n\n      if ((methodOrProp as any).readonly && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n      }\n\n      if ((methodOrProp as any).declare && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n      }\n    }\n\n    // Note: The reason we do this in `parseExpressionStatement` and not `parseStatement`\n    // is that e.g. `type()` is valid JS, so we must try parsing that first.\n    // If it's really a type, we will parse `type` as the statement, and can correct it here\n    // by parsing the rest.\n    // @ts-expect-error plugin overrides interfaces\n    parseExpressionStatement(\n      node: Undone<N.ExpressionStatement>,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.Statement {\n      const decl =\n        expr.type === \"Identifier\"\n          ? // @ts-expect-error refine typings\n            this.tsParseExpressionStatement(node, expr, decorators)\n          : undefined;\n      return decl || super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n    shouldParseExportDeclaration(): boolean {\n      if (this.tsIsDeclarationStart()) return true;\n      return super.shouldParseExportDeclaration();\n    }\n\n    // An apparent conditional expression could actually be an optional parameter in an arrow function.\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      // only do the expensive clone if there is a question mark\n      // and if we come from inside parens\n      if (!this.state.maybeInArrowParameters || !this.match(tt.question)) {\n        return super.parseConditional(\n          expr,\n\n          startLoc,\n          refExpressionErrors,\n        );\n      }\n\n      const result = this.tryParse(() =>\n        super.parseConditional(expr, startLoc),\n      );\n\n      if (!result.node) {\n        if (result.error) {\n          /*:: invariant(refExpressionErrors != null) */\n          super.setOptionalParametersError(refExpressionErrors, result.error);\n        }\n\n        return expr;\n      }\n      if (result.error) this.state = result.failState;\n      return result.node;\n    }\n\n    // Note: These \"type casts\" are *not* valid TS expressions.\n    // But we parse them here and change them when completing the arrow function.\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TsTypeCastExpression>(startLoc);\n        typeCastNode.expression = node as N.Expression;\n        typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n      }\n\n      return node;\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (!this.state.isAmbientContext && this.isContextual(tt._declare)) {\n        return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n      }\n\n      // Store original location\n      const startLoc = this.state.startLoc;\n\n      const isDeclare = this.eatContextual(tt._declare);\n\n      if (\n        isDeclare &&\n        (this.isContextual(tt._declare) || !this.shouldParseExportDeclaration())\n      ) {\n        throw this.raise(\n          TSErrors.ExpectedAmbientAfterExportDeclare,\n          this.state.startLoc,\n        );\n      }\n\n      const isIdentifier = tokenIsIdentifier(this.state.type);\n      const declaration: N.Declaration | undefined | null =\n        (isIdentifier && this.tsTryParseExportDeclaration()) ||\n        super.parseExportDeclaration(node);\n\n      if (!declaration) return null;\n\n      if (\n        declaration.type === \"TSInterfaceDeclaration\" ||\n        declaration.type === \"TSTypeAliasDeclaration\" ||\n        isDeclare\n      ) {\n        node.exportKind = \"type\";\n      }\n\n      if (isDeclare) {\n        // Reset location to include `declare` in range\n        this.resetStartLocation(declaration, startLoc);\n\n        declaration.declare = true;\n      }\n\n      return declaration;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType?: BindingFlag,\n    ): void {\n      if ((!isStatement || optionalId) && this.isContextual(tt._implements)) {\n        return;\n      }\n\n      super.parseClassId(\n        node,\n        isStatement,\n        optionalId,\n        (node as any).declare\n          ? BindingFlag.TYPE_TS_AMBIENT\n          : BindingFlag.TYPE_CLASS,\n      );\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n    }\n\n    parseClassPropertyAnnotation(\n      node: N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty,\n    ): void {\n      if (!node.optional) {\n        if (this.eat(tt.bang)) {\n          node.definite = true;\n        } else if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n    }\n\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      this.parseClassPropertyAnnotation(node);\n\n      if (\n        this.state.isAmbientContext &&\n        !(node.readonly && !node.typeAnnotation) &&\n        this.match(tt.eq)\n      ) {\n        this.raise(\n          TSErrors.DeclareClassFieldHasInitializer,\n          this.state.startLoc,\n        );\n      }\n      if (node.abstract && this.match(tt.eq)) {\n        const { key } = node;\n        this.raise(\n          TSErrors.AbstractPropertyHasInitializer,\n          this.state.startLoc,\n          {\n            propertyName:\n              key.type === \"Identifier\" && !node.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          },\n        );\n      }\n\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (node.abstract) {\n        this.raise(TSErrors.PrivateElementHasAbstract, node);\n      }\n\n      if (node.accessibility) {\n        this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n          modifier: node.accessibility,\n        });\n      }\n\n      this.parseClassPropertyAnnotation(node);\n      return super.parseClassPrivateProperty(node);\n    }\n\n    parseClassAccessorProperty(\n      node: N.ClassAccessorProperty,\n    ): N.ClassAccessorProperty {\n      this.parseClassPropertyAnnotation(node);\n      if (node.optional) {\n        this.raise(TSErrors.AccessorCannotBeOptional, node);\n      }\n      return super.parseClassAccessorProperty(node);\n    }\n\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters && isConstructor) {\n        this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n      }\n\n      // @ts-expect-error declare does not exist in ClassMethod\n      const { declare = false, kind } = method;\n\n      if (declare && (kind === \"get\" || kind === \"set\")) {\n        this.raise(TSErrors.DeclareAccessor, method, { kind });\n      }\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    declareClassPrivateMethodInScope(\n      node: N.ClassPrivateMethod | N.TSDeclareMethod,\n      kind: number,\n    ) {\n      if (node.type === \"TSDeclareMethod\") return;\n      // This happens when using the \"estree\" plugin.\n      if (\n        (node as N.Node).type === \"MethodDefinition\" &&\n        !Object.hasOwn(\n          (node as unknown as N.EstreeMethodDefinition).value,\n          \"body\",\n        )\n      ) {\n        return;\n      }\n\n      super.declareClassPrivateMethodInScope(node, kind);\n    }\n\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      // handle `extends f<<T>\n      if (node.superClass && (this.match(tt.lt) || this.match(tt.bitShiftL))) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.superTypeArguments = this.tsParseTypeArgumentsInExpression();\n        } else {\n          node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n        }\n      }\n      if (this.eatContextual(tt._implements)) {\n        node.implements = this.tsParseHeritageClause(\"implements\");\n      }\n    }\n\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) prop.typeParameters = typeParameters;\n\n      return super.parseObjPropValue(\n        prop,\n\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n    }\n\n    parseFunctionParams(node: N.Function, isConstructor: boolean): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // `let x: number;`\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\" | \"using\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (\n        decl.id.type === \"Identifier\" &&\n        !this.hasPrecedingLineBreak() &&\n        this.eat(tt.bang)\n      ) {\n        decl.definite = true;\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) {\n        decl.id.typeAnnotation = type;\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeAnnotation();\n      }\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n      let state: State | undefined | null;\n      let jsx;\n      let typeCast;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        // Prefer to parse JSX if possible. But may be an arrow fn.\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` or `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (!jsx?.error && !this.match(tt.lt)) {\n        return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n      }\n\n      // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n      // If the state was cloned in the JSX parsing branch above but there\n      // have been any error in the tryParse call, this.state is set to state\n      // so we still need to clone it.\n      if (!state || state === this.state) state = this.state.clone();\n\n      let typeParameters: N.TsTypeParameterDeclaration | undefined | null;\n      // We need to explicitly annotate 'abort' for microsoft/TypeScript#58170\n      const arrow = this.tryParse((abort: () => never) => {\n        // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n        typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n        const expr = super.parseMaybeAssign(\n          refExpressionErrors,\n          afterLeftParse,\n        );\n\n        if (\n          expr.type !== \"ArrowFunctionExpression\" ||\n          expr.extra?.parenthesized\n        ) {\n          abort();\n        }\n\n        // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n        if (typeParameters?.params.length !== 0) {\n          this.resetStartLocationFromNode(expr, typeParameters);\n        }\n        expr.typeParameters = typeParameters;\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            this.hasPlugin(\"jsx\") &&\n            expr.typeParameters.params.length === 1 &&\n            !expr.typeParameters.extra?.trailingComma\n          ) {\n            // report error if single type parameter used without trailing comma.\n            const parameter = expr.typeParameters\n              .params[0] as N.TsTypeParameter;\n            if (!parameter.constraint) {\n              // A single type parameter must either have constraints\n              // or a trailing comma, otherwise it's ambiguous with JSX.\n              this.raise(\n                TSErrors.SingleTypeParameterWithoutTrailingComma,\n                createPositionWithColumnOffset(parameter.loc.end, 1),\n                {\n                  typeParameterName: process.env.BABEL_8_BREAKING\n                    ? (parameter.name as N.Identifier).name\n                    : (parameter.name as string),\n                },\n              );\n            }\n          }\n        }\n\n        return expr;\n      }, state);\n\n      /*:: invariant(arrow.node != null) */\n      if (!arrow.error && !arrow.aborted) {\n        // This error is reported outside of the this.tryParse call so that\n        // in case of <T>(x) => 2, we don't consider <T>(x) as a type assertion\n        // because of this error.\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (!jsx) {\n        // Try parsing a type cast instead of an arrow function.\n        // This will never happen outside of JSX.\n        // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n        assert(!this.hasPlugin(\"jsx\"));\n\n        // This will start with a type assertion (via parseMaybeUnary).\n        // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n        typeCast = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n        /*:: invariant(!typeCast.aborted) */\n        /*:: invariant(typeCast.node != null) */\n        if (!typeCast.error) return typeCast.node;\n      }\n\n      if (jsx?.node) {\n        /*:: invariant(jsx.failState) */\n        this.state = jsx.failState;\n        return jsx.node;\n      }\n\n      if (arrow.node) {\n        /*:: invariant(arrow.failState) */\n        this.state = arrow.failState;\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (typeCast?.node) {\n        /*:: invariant(typeCast.failState) */\n        this.state = typeCast.failState;\n        return typeCast.node;\n      }\n\n      throw jsx?.error || arrow.error || typeCast?.error;\n    }\n\n    reportReservedArrowTypeParam(node: any) {\n      if (\n        node.params.length === 1 &&\n        !node.params[0].constraint &&\n        !node.extra?.trailingComma &&\n        this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")\n      ) {\n        this.raise(TSErrors.ReservedArrowTypeParam, node);\n      }\n    }\n\n    // Handle type assertions\n    parseMaybeUnary(\n      refExpressionErrors?: ExpressionErrors | null,\n      sawUnary?: boolean,\n    ): N.Expression {\n      if (!this.hasPlugin(\"jsx\") && this.match(tt.lt)) {\n        return this.tsParseTypeAssertion();\n      }\n      return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n    }\n\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // This is different from how the TS parser does it.\n        // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n        const result = this.tryParse(abort => {\n          const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n            tt.colon,\n          );\n          if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n          return returnType;\n        });\n\n        if (result.aborted) return;\n\n        if (!result.thrown) {\n          if (result.error) this.state = result.failState;\n          // @ts-expect-error refine typings\n          node.returnType = result.node;\n        }\n      }\n\n      return super.parseArrow(node);\n    }\n\n    // Allow type annotations inside of a parameter list.\n    parseFunctionParamType(param: N.Pattern) {\n      if (this.eat(tt.question)) {\n        (param as any as N.Identifier).optional = true;\n      }\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) param.typeAnnotation = type;\n      this.resetEndLocation(param);\n\n      return param;\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      switch (node.type) {\n        case \"TSTypeCastExpression\":\n          return this.isAssignable(node.expression, isBinding);\n        case \"TSParameterProperty\":\n          return true;\n        default:\n          return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      switch (node.type) {\n        case \"ParenthesizedExpression\":\n          this.toAssignableParenthesizedExpression(node, isLHS);\n          break;\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n          if (isLHS) {\n            this.expressionScope.recordArrowParameterBindingError(\n              TSErrors.UnexpectedTypeCastInParameter,\n              node,\n            );\n          } else {\n            this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n          }\n          this.toAssignable(node.expression, isLHS);\n          break;\n        case \"AssignmentExpression\":\n          if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n            node.left = this.typeCastToParameter(node.left) as N.Assignable;\n          }\n        /* fall through */\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableParenthesizedExpression(\n      node: N.ParenthesizedExpression,\n      isLHS: boolean,\n    ): void {\n      switch (node.expression.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n        case \"ParenthesizedExpression\":\n          this.toAssignable(node.expression, isLHS);\n          break;\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    checkToRestConversion(node: N.Node, allowPattern: boolean): void {\n      switch (node.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n        case \"TSNonNullExpression\":\n          this.checkToRestConversion(node.expression, false);\n          break;\n        default:\n          super.checkToRestConversion(node, allowPattern);\n      }\n    }\n\n    isValidLVal(\n      type:\n        | \"TSTypeCastExpression\"\n        | \"TSParameterProperty\"\n        | \"TSNonNullExpression\"\n        | \"TSInstantiationExpression\"\n        | \"TSAsExpression\"\n        | \"TSSatisfiesExpression\"\n        | \"TSTypeAssertion\",\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      switch (type) {\n        // Allow \"typecasts\" to appear on the left of assignment expressions,\n        // because it may be in an arrow function.\n        // e.g. `const f = (foo: number = 0) => foo;`\n        case \"TSTypeCastExpression\":\n          return true;\n        case \"TSParameterProperty\":\n          return \"parameter\";\n        case \"TSNonNullExpression\":\n        case \"TSInstantiationExpression\":\n          return \"expression\";\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n          return (\n            (binding !== BindingFlag.TYPE_NONE || !isUnparenthesizedInAssign) &&\n            ([\"expression\", true] as [string, boolean])\n          );\n        default:\n          return super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n      }\n    }\n\n    parseBindingAtom(): N.Pattern {\n      if (this.state.type === tt._this) {\n        return this.parseIdentifier(/* liberal */ true);\n      }\n      return super.parseBindingAtom();\n    }\n\n    parseMaybeDecoratorArguments(\n      expr: N.Expression,\n      startLoc: Position,\n    ): N.Expression {\n      // handles `@f<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n        if (this.match(tt.parenL)) {\n          const call = super.parseMaybeDecoratorArguments(\n            expr,\n            startLoc,\n          ) as N.CallExpression;\n          if (process.env.BABEL_8_BREAKING) {\n            call.typeArguments = typeArguments;\n          } else {\n            call.typeParameters = typeArguments;\n          }\n\n          return call;\n        }\n\n        this.unexpected(null, tt.parenL);\n      }\n\n      return super.parseMaybeDecoratorArguments(expr, startLoc);\n    }\n\n    checkCommaAfterRest(\n      close: (typeof charCodes)[keyof typeof charCodes],\n    ): boolean {\n      if (\n        this.state.isAmbientContext &&\n        this.match(tt.comma) &&\n        this.lookaheadCharCode() === close\n      ) {\n        this.next();\n        return false;\n      }\n      return super.checkCommaAfterRest(close);\n    }\n\n    // === === === === === === === === === === === === === === === ===\n    // Note: All below methods are duplicates of something in flow.js.\n    // Not sure what the best way to combine these is.\n    // === === === === === === === === === === === === === === === ===\n\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    isClassProperty(): boolean {\n      return (\n        this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n      );\n    }\n\n    parseMaybeDefault(\n      startLoc?: Position | null,\n      left?: Pattern | null,\n    ): N.Pattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    // ensure that inside types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      if (this.state.inType) {\n        if (code === charCodes.greaterThan) {\n          this.finishOp(tt.gt, 1);\n          return;\n        }\n        if (code === charCodes.lessThan) {\n          this.finishOp(tt.lt, 1);\n          return;\n        }\n      }\n      super.getTokenFromCode(code);\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    toAssignableList(\n      exprList: Expression[],\n      trailingCommaLoc: Position | undefined | null,\n      isLHS: boolean,\n    ): void {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (expr?.type === \"TSTypeCastExpression\") {\n          exprList[i] = this.typeCastToParameter(expr);\n        }\n      }\n      super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n    }\n\n    typeCastToParameter(node: N.TsTypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    shouldParseArrow(params: Array<N.Node>) {\n      if (this.match(tt.colon)) {\n        return params.every(expr => this.isAssignable(expr, true));\n      }\n      return super.shouldParseArrow(params);\n    }\n\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    canHaveLeadingDecorator() {\n      // Avoid unnecessary lookahead in checking for abstract class unless needed!\n      return super.canHaveLeadingDecorator() || this.isAbstractClass();\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      // handles `<Component<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsTryParseAndCatch(() =>\n          this.tsParseTypeArgumentsInExpression(),\n        );\n        if (typeArguments) {\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments = typeArguments;\n          } else {\n            node.typeParameters = typeArguments;\n          }\n        }\n      }\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    getGetterSetterExpectedParamCount(\n      method: N.ObjectMethod | N.ClassMethod,\n    ): number {\n      const baseCount = super.getGetterSetterExpectedParamCount(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      const firstParam = params[0];\n      const hasContextParam = firstParam && this.isThisParam(firstParam);\n\n      return hasContextParam ? baseCount + 1 : baseCount;\n    }\n\n    parseCatchClauseParam(): N.Pattern {\n      const param = super.parseCatchClauseParam();\n      const type = this.tsTryParseTypeAnnotation();\n\n      if (type) {\n        param.typeAnnotation = type;\n        this.resetEndLocation(param);\n      }\n\n      return param;\n    }\n\n    tsInAmbientContext<T>(cb: () => T): T {\n      const { isAmbientContext: oldIsAmbientContext, strict: oldStrict } =\n        this.state;\n      this.state.isAmbientContext = true;\n      this.state.strict = false;\n      try {\n        return cb();\n      } finally {\n        this.state.isAmbientContext = oldIsAmbientContext;\n        this.state.strict = oldStrict;\n      }\n    }\n\n    parseClass<T extends N.Class>(\n      node: Undone<T>,\n      isStatement: boolean,\n      optionalId?: boolean,\n    ): T {\n      const oldInAbstractClass = this.state.inAbstractClass;\n      this.state.inAbstractClass = !!(node as any).abstract;\n      try {\n        return super.parseClass(node, isStatement, optionalId);\n      } finally {\n        this.state.inAbstractClass = oldInAbstractClass;\n      }\n    }\n\n    tsParseAbstractDeclaration(\n      node: any,\n      decorators: N.Decorator[] | null,\n    ): N.ClassDeclaration | N.TsInterfaceDeclaration | undefined | null {\n      if (this.match(tt._class)) {\n        node.abstract = true;\n        return this.maybeTakeDecorators(\n          decorators,\n          this.parseClass<N.ClassDeclaration>(\n            node as N.ClassDeclaration,\n            /* isStatement */ true,\n            /* optionalId */ false,\n          ),\n        );\n      } else if (this.isContextual(tt._interface)) {\n        // for invalid abstract interface\n\n        // To avoid\n        //   abstract interface\n        //   Foo {}\n        if (!this.hasFollowingLineBreak()) {\n          node.abstract = true;\n          this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, node);\n          return this.tsParseInterfaceDeclaration(\n            node as N.TsInterfaceDeclaration,\n          );\n        }\n      } else {\n        this.unexpected(null, tt._class);\n      }\n    }\n\n    parseMethod<\n      T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope?: boolean,\n    ) {\n      const method = super.parseMethod<T>(\n        node,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error todo(flow->ts) property not defined for all types in union\n      if (method.abstract) {\n        const hasEstreePlugin = this.hasPlugin(\"estree\");\n        const methodFn = hasEstreePlugin\n          ? // @ts-expect-error estree typings\n            method.value\n          : method;\n        if (methodFn.body) {\n          const { key } = method;\n          this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n            methodName:\n              key.type === \"Identifier\" && !method.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          });\n        }\n      }\n      return method;\n    }\n\n    tsParseTypeParameterName(): N.Identifier | string {\n      const typeName: N.Identifier = this.parseIdentifier();\n      return process.env.BABEL_8_BREAKING ? typeName : typeName.name;\n    }\n\n    shouldParseAsAmbientContext(): boolean {\n      return !!this.getPluginOption(\"typescript\", \"dts\");\n    }\n\n    parse() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.parse();\n    }\n\n    getExpression() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.getExpression();\n    }\n\n    parseExportSpecifier(\n      node: Undone<N.ExportSpecifier>,\n      isString: boolean,\n      isInTypeExport: boolean,\n      isMaybeTypeOnly: boolean,\n    ) {\n      if (!isString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          node,\n          /* isImport */ false,\n          isInTypeExport,\n        );\n        return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n      }\n      node.exportKind = \"value\";\n      return super.parseExportSpecifier(\n        node,\n        isString,\n        isInTypeExport,\n        isMaybeTypeOnly,\n      );\n    }\n\n    parseImportSpecifier(\n      specifier: Undone<N.ImportSpecifier>,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      if (!importedIsString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          specifier,\n          /* isImport */ true,\n          isInTypeOnlyImport,\n        );\n        return this.finishNode<N.ImportSpecifier>(specifier, \"ImportSpecifier\");\n      }\n      specifier.importKind = \"value\";\n      return super.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        isInTypeOnlyImport,\n        isMaybeTypeOnly,\n        isInTypeOnlyImport\n          ? BindingFlag.TYPE_TS_TYPE_IMPORT\n          : BindingFlag.TYPE_TS_VALUE_IMPORT,\n      );\n    }\n\n    parseTypeOnlyImportExportSpecifier(\n      node: any,\n      isImport: boolean,\n      isInTypeOnlyImportExport: boolean,\n    ): void {\n      const leftOfAsKey = isImport ? \"imported\" : \"local\";\n      const rightOfAsKey = isImport ? \"local\" : \"exported\";\n\n      let leftOfAs = node[leftOfAsKey];\n      let rightOfAs;\n\n      let hasTypeSpecifier = false;\n      let canParseAsKeyword = true;\n\n      const loc = leftOfAs.loc.start;\n\n      // https://github.com/microsoft/TypeScript/blob/fc4f9d83d5939047aa6bb2a43965c6e9bbfbc35b/src/compiler/parser.ts#L7411-L7456\n      // import { type } from \"mod\";          - hasTypeSpecifier: false, leftOfAs: type\n      // import { type as } from \"mod\";       - hasTypeSpecifier: true,  leftOfAs: as\n      // import { type as as } from \"mod\";    - hasTypeSpecifier: false, leftOfAs: type, rightOfAs: as\n      // import { type as as as } from \"mod\"; - hasTypeSpecifier: true,  leftOfAs: as,   rightOfAs: as\n      if (this.isContextual(tt._as)) {\n        // { type as ...? }\n        const firstAs = this.parseIdentifier();\n        if (this.isContextual(tt._as)) {\n          // { type as as ...? }\n          const secondAs = this.parseIdentifier();\n          if (tokenIsKeywordOrIdentifier(this.state.type)) {\n            // { type as as something }\n            hasTypeSpecifier = true;\n            leftOfAs = firstAs;\n            rightOfAs = isImport\n              ? this.parseIdentifier()\n              : this.parseModuleExportName();\n            canParseAsKeyword = false;\n          } else {\n            // { type as as }\n            rightOfAs = secondAs;\n            canParseAsKeyword = false;\n          }\n        } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n          // { type as something }\n          canParseAsKeyword = false;\n          rightOfAs = isImport\n            ? this.parseIdentifier()\n            : this.parseModuleExportName();\n        } else {\n          // { type as }\n          hasTypeSpecifier = true;\n          leftOfAs = firstAs;\n        }\n      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n        // { type something ...? }\n        hasTypeSpecifier = true;\n        if (isImport) {\n          leftOfAs = this.parseIdentifier(true);\n          if (!this.isContextual(tt._as)) {\n            this.checkReservedWord(\n              leftOfAs.name,\n              leftOfAs.loc.start,\n              true,\n              true,\n            );\n          }\n        } else {\n          leftOfAs = this.parseModuleExportName();\n        }\n      }\n      if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n        this.raise(\n          isImport\n            ? TSErrors.TypeModifierIsUsedInTypeImports\n            : TSErrors.TypeModifierIsUsedInTypeExports,\n          loc,\n        );\n      }\n\n      node[leftOfAsKey] = leftOfAs;\n      node[rightOfAsKey] = rightOfAs;\n\n      const kindKey = isImport ? \"importKind\" : \"exportKind\";\n      node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n      if (canParseAsKeyword && this.eatContextual(tt._as)) {\n        node[rightOfAsKey] = isImport\n          ? this.parseIdentifier()\n          : this.parseModuleExportName();\n      }\n      if (!node[rightOfAsKey]) {\n        node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);\n      }\n      if (isImport) {\n        this.checkIdentifier(\n          node[rightOfAsKey],\n          hasTypeSpecifier\n            ? BindingFlag.TYPE_TS_TYPE_IMPORT\n            : BindingFlag.TYPE_TS_VALUE_IMPORT,\n        );\n      }\n    }\n  };\n\nfunction isPossiblyLiteralEnum(expression: N.Expression): boolean {\n  if (expression.type !== \"MemberExpression\") return false;\n\n  const { computed, property } = expression;\n\n  if (\n    computed &&\n    property.type !== \"StringLiteral\" &&\n    (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)\n  ) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n\n// If a const declaration has no type annotation and is initialized to\n// a string literal, numeric literal, or enum reference, then it is\n// allowed. In an ideal world, we'd check whether init was *actually* an\n// enum reference, but we allow anything that \"could be\" a literal enum\n// in `isPossiblyLiteralEnum` since we don't have all the information\n// that the typescript compiler has.\nfunction isValidAmbientConstInitializer(\n  expression: N.Expression,\n  estree: boolean,\n): boolean {\n  const { type } = expression;\n  if (expression.extra?.parenthesized) {\n    return false;\n  }\n  if (estree) {\n    if (type === \"Literal\") {\n      const { value } = expression;\n      if (typeof value === \"string\" || typeof value === \"boolean\") {\n        return true;\n      }\n    }\n  } else {\n    if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n      return true;\n    }\n  }\n  if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n    return true;\n  }\n  if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n    return true;\n  }\n  if (isPossiblyLiteralEnum(expression)) {\n    return true;\n  }\n  return false;\n}\n\nfunction isNumber(expression: N.Expression, estree: boolean): boolean {\n  if (estree) {\n    return (\n      expression.type === \"Literal\" &&\n      (typeof expression.value === \"number\" || \"bigint\" in expression)\n    );\n  }\n  return (\n    expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\"\n  );\n}\n\nfunction isNegativeNumber(expression: N.Expression, estree: boolean): boolean {\n  if (expression.type === \"UnaryExpression\") {\n    const { operator, argument } = expression;\n    if (operator === \"-\" && isNumber(argument, estree)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isUncomputedMemberExpressionChain(expression: N.Expression): boolean {\n  if (expression.type === \"Identifier\") return true;\n  if (expression.type !== \"MemberExpression\" || expression.computed) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n","import * as charCodes from \"charcodes\";\n\nimport { tokenLabelName, tt } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport { ParseErrorEnum } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { Position } from \"../util/location.ts\";\n\ntype PossiblePlaceholders = {\n  Identifier: N.Identifier;\n  StringLiteral: N.StringLiteral;\n  Expression: N.Expression;\n  Statement: N.Statement;\n  Declaration: N.Declaration;\n  BlockStatement: N.BlockStatement;\n  ClassBody: N.ClassBody;\n  Pattern: N.Pattern;\n};\nexport type PlaceholderTypes = keyof PossiblePlaceholders;\n\ntype NodeOf<T extends keyof PossiblePlaceholders> = PossiblePlaceholders[T];\n// todo: when there  is proper union type for Node\n// type NodeOf<T extends PlaceholderTypes> = Extract<N.Node, { type: T }>;\n\n// todo: Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T extends PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\n/* eslint sort-keys: \"error\" */\nconst PlaceholderErrors = ParseErrorEnum`placeholders`({\n  ClassNameIsRequired: \"A class name is required.\",\n  UnexpectedSpace: \"Unexpected space in placeholder.\",\n});\n\nexport default (superClass: typeof Parser) =>\n  class PlaceholdersParserMixin extends superClass implements Parser {\n    parsePlaceholder<T extends PlaceholderTypes>(\n      expectedNode: T,\n    ): /*?N.Placeholder<T>*/ MaybePlaceholder<T> | undefined {\n      if (this.match(tt.placeholder)) {\n        const node = this.startNode<N.Placeholder<T>>();\n        this.next();\n        this.assertNoSpace();\n\n        // We can't use this.parseIdentifier because\n        // we don't want nested placeholders.\n        node.name = super.parseIdentifier(/* liberal */ true);\n\n        this.assertNoSpace();\n        this.expect(tt.placeholder);\n        return this.finishPlaceholder(node, expectedNode);\n      }\n    }\n\n    finishPlaceholder<T extends PlaceholderTypes>(\n      node: Undone<N.Placeholder> | Undone<NodeOf<PlaceholderTypes>>,\n      expectedNode: T,\n    ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n      let placeholder = node as unknown as N.Placeholder<T>;\n\n      if (!placeholder.expectedNode || !placeholder.type) {\n        placeholder = this.finishNode(\n          placeholder,\n          \"Placeholder\",\n        ) as unknown as N.Placeholder<T>;\n      }\n\n      placeholder.expectedNode = expectedNode;\n      return placeholder as unknown as MaybePlaceholder<T>;\n    }\n\n    /* ============================================================ *\n     * tokenizer/index.js                                           *\n     * ============================================================ */\n\n    getTokenFromCode(code: number) {\n      if (\n        code === charCodes.percentSign &&\n        this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n      ) {\n        this.finishOp(tt.placeholder, 2);\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(\n      refExpressionErrors?: ExpressionErrors | null,\n    ): MaybePlaceholder<\"Expression\"> {\n      return (\n        this.parsePlaceholder(\"Expression\") ||\n        super.parseExprAtom(refExpressionErrors)\n      );\n    }\n\n    parseIdentifier(liberal?: boolean): MaybePlaceholder<\"Identifier\"> {\n      // NOTE: This function only handles identifiers outside of\n      // expressions and binding patterns, since they are already\n      // handled by the parseExprAtom and parseBindingAtom functions.\n      // This is needed, for example, to parse \"class %%NAME%% {}\".\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal)\n      );\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ) {\n      // Sometimes we call #checkReservedWord(node.name), expecting\n      // that node is an Identifier. If it is a Placeholder, name\n      // will be undefined.\n      if (word !== undefined) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/lval.js                                               *\n     * ============================================================ */\n\n    parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n      return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"Placeholder\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean): void {\n      if (\n        node &&\n        node.type === \"Placeholder\" &&\n        node.expectedNode === \"Expression\"\n      ) {\n        node.expectedNode = \"Pattern\";\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/statement.js                                          *\n     * ============================================================ */\n\n    chStartsBindingIdentifier(ch: number, pos: number): boolean {\n      if (super.chStartsBindingIdentifier(ch, pos)) {\n        return true;\n      }\n\n      // Accept \"let %%\" as the start of \"let %%placeholder%%\", as though the\n      // placeholder were an identifier.\n      const nextToken = this.lookahead();\n      if (nextToken.type === tt.placeholder) {\n        return true;\n      }\n\n      return false;\n    }\n\n    verifyBreakContinue(\n      node: N.BreakStatement | N.ContinueStatement,\n      isBreak: boolean,\n    ) {\n      // @ts-expect-error: node.label could be Placeholder\n      if (node.label && node.label.type === \"Placeholder\") return;\n      super.verifyBreakContinue(node, isBreak);\n    }\n\n    // @ts-expect-error Plugin will override parser interface\n    parseExpressionStatement(\n      node: MaybePlaceholder<\"Statement\">,\n      expr: MaybePlaceholder<\"Expression\">,\n    ): MaybePlaceholder<\"Statement\"> {\n      // @ts-expect-error placeholder typings\n      if (expr.type !== \"Placeholder\" || expr.extra?.parenthesized) {\n        // @ts-expect-error placeholder typings\n        return super.parseExpressionStatement(node, expr);\n      }\n\n      if (this.match(tt.colon)) {\n        // @ts-expect-error placeholder typings\n        const stmt: N.LabeledStatement = node;\n        stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n        this.next();\n        stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n        return this.finishNode(stmt, \"LabeledStatement\");\n      }\n\n      this.semicolon();\n      const stmtPlaceholder = node as unknown as N.Placeholder<\"Statement\">;\n      stmtPlaceholder.name = (expr as N.Placeholder).name;\n      return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n    }\n\n    parseBlock(\n      allowDirectives?: boolean,\n      createNewLexicalScope?: boolean,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): MaybePlaceholder<\"BlockStatement\"> {\n      return (\n        this.parsePlaceholder(\"BlockStatement\") ||\n        super.parseBlock(\n          allowDirectives,\n          createNewLexicalScope,\n          afterBlockParse,\n        )\n      );\n    }\n\n    parseFunctionId(\n      requireId?: boolean,\n    ): MaybePlaceholder<\"Identifier\"> | undefined | null {\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId)\n      );\n    }\n    // @ts-expect-error Plugin will override parser interface\n    parseClass<T extends N.Class>(\n      node: T,\n      isStatement: /* T === ClassDeclaration */ boolean,\n      optionalId?: boolean,\n    ): T {\n      const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n      this.next();\n      const oldStrict = this.state.strict;\n\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (placeholder) {\n        if (\n          this.match(tt._extends) ||\n          this.match(tt.placeholder) ||\n          this.match(tt.braceL)\n        ) {\n          node.id = placeholder;\n        } else if (optionalId || !isStatement) {\n          node.id = null;\n          node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n          return this.finishNode(node, type);\n        } else {\n          throw this.raise(\n            PlaceholderErrors.ClassNameIsRequired,\n            this.state.startLoc,\n          );\n        }\n      } else {\n        this.parseClassId(node, isStatement, optionalId);\n      }\n\n      super.parseClassSuper(node);\n      node.body =\n        this.parsePlaceholder(\"ClassBody\") ||\n        super.parseClassBody(!!node.superClass, oldStrict);\n      return this.finishNode(node, type);\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseExport(node, decorators);\n\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // export %%DECL%%;\n        node2.specifiers = [];\n        node2.source = null;\n        node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n        return this.finishNode(node2, \"ExportNamedDeclaration\");\n      }\n\n      // export %%NAME%% from \"foo\";\n      this.expectPlugin(\"exportDefaultFrom\");\n      const specifier = this.startNode<N.ExportDefaultSpecifier>();\n      specifier.exported = placeholder;\n      node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n      return super.parseExport(node2, decorators);\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.match(tt._default)) {\n        const next = this.nextTokenStart();\n        if (this.isUnparsedContextual(next, \"from\")) {\n          if (\n            this.input.startsWith(\n              tokenLabelName(tt.placeholder),\n              this.nextTokenStartSince(next + 4),\n            )\n          ) {\n            return true;\n          }\n        }\n      }\n      return super.isExportDefaultSpecifier();\n    }\n\n    maybeParseExportDefaultSpecifier(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      maybeDefaultIdentifier: N.Identifier | null,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      if ((node as N.ExportNamedDeclaration).specifiers?.length) {\n        // \"export %%NAME%%\" has already been parsed by #parseExport.\n        return true;\n      }\n      return super.maybeParseExportDefaultSpecifier(\n        node,\n        maybeDefaultIdentifier,\n      );\n    }\n\n    checkExport(node: N.ExportNamedDeclaration): void {\n      const { specifiers } = node;\n      if (specifiers?.length) {\n        node.specifiers = specifiers.filter(\n          // @ts-expect-error placeholder typings\n          node => node.exported.type === \"Placeholder\",\n        );\n      }\n      super.checkExport(node);\n      node.specifiers = specifiers;\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration>,\n    ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseImport(node);\n\n      node.specifiers = [];\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // import %%STRING%%;\n        node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n        this.semicolon();\n        return this.finishNode(node, \"ImportDeclaration\");\n      }\n\n      // import %%DEFAULT%% ...\n      const specifier =\n        this.startNodeAtNode<N.ImportDefaultSpecifier>(placeholder);\n      specifier.local = placeholder;\n      node.specifiers.push(\n        this.finishNode(specifier, \"ImportDefaultSpecifier\"),\n      );\n\n      if (this.eat(tt.comma)) {\n        // import %%DEFAULT%%, * as ...\n        const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n        // import %%DEFAULT%%, { ...\n        if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n      }\n\n      this.expectContextual(tt._from);\n      node.source = this.parseImportSource();\n      this.semicolon();\n      return this.finishNode(node, \"ImportDeclaration\");\n    }\n\n    parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n      // import ... from %%STRING%%;\n\n      return (\n        this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource()\n      );\n    }\n\n    // Throws if the current token and the prev one are separated by a space.\n    assertNoSpace(): void {\n      if (\n        this.state.start >\n        this.offsetToSourcePos(this.state.lastTokEndLoc.index)\n      ) {\n        this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);\n      }\n    }\n  };\n","import type Parser from \"../parser/index.ts\";\nimport { tokenIsIdentifier, tt } from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nexport default (superClass: typeof Parser) =>\n  class V8IntrinsicMixin extends superClass implements Parser {\n    parseV8Intrinsic(): N.Expression {\n      if (this.match(tt.modulo)) {\n        const v8IntrinsicStartLoc = this.state.startLoc;\n        // let the `loc` of Identifier starts from `%`\n        const node = this.startNode<N.Identifier>();\n        this.next(); // eat '%'\n        if (tokenIsIdentifier(this.state.type)) {\n          const name = this.parseIdentifierName();\n          const identifier = this.createIdentifier(node, name);\n          // @ts-expect-error: avoid mutating AST types\n          identifier.type = \"V8IntrinsicIdentifier\";\n          if (this.match(tt.parenL)) {\n            return identifier;\n          }\n        }\n        this.unexpected(v8IntrinsicStartLoc);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      return (\n        this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors)\n      );\n    }\n  };\n","import type Parser from \"./parser/index.ts\";\nimport type { PluginConfig } from \"./typings.ts\";\n\nexport type Plugin = PluginConfig;\n\nexport type PluginList = PluginConfig[];\n\nexport type MixinPlugin = (\n  superClass: new (...args: any) => Parser,\n) => new (...args: any) => Parser;\n\nconst PIPELINE_PROPOSALS = process.env.BABEL_8_BREAKING\n  ? [\"fsharp\", \"hack\"]\n  : [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\n\nexport function validatePlugins(pluginsMap: Map<string, any>) {\n  if (pluginsMap.has(\"decorators\")) {\n    if (pluginsMap.has(\"decorators-legacy\")) {\n      throw new Error(\n        \"Cannot use the decorators and decorators-legacy plugin together\",\n      );\n    }\n\n    const decoratorsBeforeExport =\n      pluginsMap.get(\"decorators\").decoratorsBeforeExport;\n    if (\n      decoratorsBeforeExport != null &&\n      typeof decoratorsBeforeExport !== \"boolean\"\n    ) {\n      throw new Error(\n        \"'decoratorsBeforeExport' must be a boolean, if specified.\",\n      );\n    }\n\n    const allowCallParenthesized =\n      pluginsMap.get(\"decorators\").allowCallParenthesized;\n    if (\n      allowCallParenthesized != null &&\n      typeof allowCallParenthesized !== \"boolean\"\n    ) {\n      throw new Error(\"'allowCallParenthesized' must be a boolean.\");\n    }\n  }\n\n  if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n    throw new Error(\"Cannot combine flow and typescript plugins.\");\n  }\n\n  if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n    throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n  }\n\n  if (pluginsMap.has(\"pipelineOperator\")) {\n    const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n\n    if (!PIPELINE_PROPOSALS.includes(proposal)) {\n      const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n      throw new Error(\n        `\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`,\n      );\n    }\n\n    const tupleSyntaxIsHash = process.env.BABEL_8_BREAKING\n      ? pluginsMap.has(\"recordAndTuple\")\n      : pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\";\n\n    if (proposal === \"hack\") {\n      if (pluginsMap.has(\"placeholders\")) {\n        throw new Error(\n          \"Cannot combine placeholders plugin and Hack-style pipes.\",\n        );\n      }\n\n      if (pluginsMap.has(\"v8intrinsic\")) {\n        throw new Error(\n          \"Cannot combine v8intrinsic plugin and Hack-style pipes.\",\n        );\n      }\n\n      const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n\n      if (!TOPIC_TOKENS.includes(topicToken)) {\n        const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n\n        throw new Error(\n          `\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`,\n        );\n      }\n\n      if (topicToken === \"#\" && tupleSyntaxIsHash) {\n        throw new Error(\n          `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n        );\n      }\n    } else if (proposal === \"smart\" && tupleSyntaxIsHash) {\n      throw new Error(\n        `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"smart\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n      );\n    }\n  }\n\n  if (pluginsMap.has(\"moduleAttributes\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.\",\n      );\n    } else {\n      if (\n        pluginsMap.has(\"deprecatedImportAssert\") ||\n        pluginsMap.has(\"importAssertions\")\n      ) {\n        throw new Error(\n          \"Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.\",\n        );\n      }\n      const moduleAttributesVersionPluginOption =\n        pluginsMap.get(\"moduleAttributes\").version;\n      if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n        throw new Error(\n          \"The 'moduleAttributes' plugin requires a 'version' option,\" +\n            \" representing the last proposal update. Currently, the\" +\n            \" only supported value is 'may-2020'.\",\n        );\n      }\n    }\n  }\n  if (pluginsMap.has(\"importAssertions\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`importAssertions` has been removed in Babel 8, please use import attributes instead.\" +\n          \" To use the non-standard `assert` syntax you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else if (pluginsMap.has(\"deprecatedImportAssert\")) {\n      throw new Error(\n        \"Cannot combine importAssertions and deprecatedImportAssert plugins.\",\n      );\n    }\n  }\n  if (\n    !pluginsMap.has(\"deprecatedImportAssert\") &&\n    pluginsMap.has(\"importAttributes\") &&\n    pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax\n  ) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"The 'importAttributes' plugin has been removed in Babel 8. If you need to enable support \" +\n          \"for the deprecated `assert` syntax, you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else {\n      pluginsMap.set(\"deprecatedImportAssert\", {});\n    }\n  }\n\n  if (pluginsMap.has(\"recordAndTuple\")) {\n    const syntaxType = pluginsMap.get(\"recordAndTuple\").syntaxType;\n    if (syntaxType != null) {\n      if (process.env.BABEL_8_BREAKING) {\n        if (syntaxType === \"hash\") {\n          throw new Error(\n            'The syntaxType option is no longer required in Babel 8. You can safely remove { syntaxType: \"hash\" } from the recordAndTuple config.',\n          );\n        } else {\n          throw new Error(\n            'The syntaxType option is no longer required in Babel 8. Please remove { syntaxType: \"bar\" } from the recordAndTuple config and migrate to the hash syntax #{} and #[].',\n          );\n        }\n      } else {\n        const RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\n        if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {\n          throw new Error(\n            \"The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: \" +\n              RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"),\n          );\n        }\n      }\n    }\n  }\n\n  if (\n    pluginsMap.has(\"asyncDoExpressions\") &&\n    !pluginsMap.has(\"doExpressions\")\n  ) {\n    const error = new Error(\n      \"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\",\n    );\n    // @ts-expect-error so @babel/core can provide better error message\n    error.missingPlugins = \"doExpressions\";\n    throw error;\n  }\n\n  if (\n    pluginsMap.has(\"optionalChainingAssign\") &&\n    pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\"\n  ) {\n    throw new Error(\n      \"The 'optionalChainingAssign' plugin requires a 'version' option,\" +\n        \" representing the last proposal update. Currently, the\" +\n        \" only supported value is '2023-07'.\",\n    );\n  }\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (pluginsMap.has(\"decimal\")) {\n      throw new Error(\n        \"The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n      );\n    }\n    if (pluginsMap.has(\"importReflection\")) {\n      throw new Error(\n        \"The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and \" +\n          \"replace 'import module' with 'import source' in your code.\",\n      );\n    }\n  }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree.ts\";\nimport flow from \"./plugins/flow/index.ts\";\nimport jsx from \"./plugins/jsx/index.ts\";\nimport typescript from \"./plugins/typescript/index.ts\";\nimport placeholders from \"./plugins/placeholders.ts\";\nimport v8intrinsic from \"./plugins/v8intrinsic.ts\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins = {\n  estree,\n  jsx,\n  flow,\n  typescript,\n  v8intrinsic,\n  placeholders,\n};\n\nexport const mixinPluginNames = Object.keys(mixinPlugins) as ReadonlyArray<\n  \"estree\" | \"jsx\" | \"flow\" | \"typescript\" | \"v8intrinsic\" | \"placeholders\"\n>;\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {\n  tokenCanStartExpression,\n  tokenIsAssignment,\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsOperator,\n  tokenIsPostfix,\n  tokenIsPrefix,\n  tokenIsRightAssociative,\n  tokenIsTemplate,\n  tokenKeywordOrIdentifierIsKeyword,\n  tokenLabelName,\n  tokenOperatorPrecedence,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport LValParser from \"./lval.ts\";\nimport {\n  isKeyword,\n  isReservedWord,\n  isStrictReservedWord,\n  isStrictBindReservedWord,\n  isIdentifierStart,\n  canBeReservedWord,\n} from \"../util/identifier.ts\";\nimport {\n  type Position,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport * as charCodes from \"charcodes\";\nimport { ScopeFlag, BindingFlag } from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newArrowHeadScope,\n  newAsyncArrowScope,\n  newExpressionScope,\n} from \"../util/expression-scope.ts\";\nimport { Errors, type ParseError } from \"../parse-error.ts\";\nimport {\n  UnparenthesizedPipeBodyDescriptions,\n  type UnparenthesizedPipeBodyTypes,\n} from \"../parse-error/pipeline-operator-errors.ts\";\nimport { setInnerComments } from \"./comments.ts\";\nimport { cloneIdentifier, type Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\n\nimport { OptionFlags, type SourceType } from \"../options.ts\";\n\nexport default abstract class ExpressionParser extends LValParser {\n  // Forward-declaration: defined in statement.js\n  abstract parseBlock(\n    allowDirectives?: boolean,\n    createNewLexicalScope?: boolean,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement;\n  abstract parseClass(\n    node: N.Class,\n    isStatement: boolean,\n    optionalId?: boolean,\n  ): N.Class;\n  abstract parseDecorators(allowExport?: boolean): void;\n  abstract parseFunction<T extends N.NormalFunction>(\n    node: T,\n    statement?: number,\n    allowExpressionBody?: boolean,\n    isAsync?: boolean,\n  ): T;\n  abstract parseFunctionParams(node: N.Function, isConstructor?: boolean): void;\n  abstract parseBlockOrModuleBlockBody(\n    body: N.Statement[],\n    directives: N.Directive[] | null | undefined,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void;\n  abstract parseProgram(\n    program: N.Program,\n    end: TokenType,\n    sourceType?: SourceType,\n  ): N.Program;\n\n  // For object literal, check if property __proto__ has been used more than once.\n  // If the expression is a destructuring assignment, then __proto__ may appear\n  // multiple times. Otherwise, __proto__ is a duplicated key.\n\n  // For record expression, check if property __proto__ exists\n\n  checkProto(\n    prop: N.ObjectMember | N.SpreadElement,\n    isRecord: boolean | undefined | null,\n    protoRef: {\n      used: boolean;\n    },\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void {\n    if (\n      prop.type === \"SpreadElement\" ||\n      this.isObjectMethod(prop) ||\n      prop.computed ||\n      prop.shorthand\n    ) {\n      return;\n    }\n\n    const key = prop.key as\n      | N.Identifier\n      | N.StringLiteral\n      | N.NumericLiteral\n      | N.BigIntLiteral;\n    // It is either an Identifier or a String/NumericLiteral\n    const name = key.type === \"Identifier\" ? key.name : key.value;\n\n    if (name === \"__proto__\") {\n      if (isRecord) {\n        this.raise(Errors.RecordNoProto, key);\n        return;\n      }\n      if (protoRef.used) {\n        if (refExpressionErrors) {\n          // Store the first redefinition's position, otherwise ignore because\n          // we are parsing ambiguous pattern\n          if (refExpressionErrors.doubleProtoLoc === null) {\n            refExpressionErrors.doubleProtoLoc = key.loc.start;\n          }\n        } else {\n          this.raise(Errors.DuplicateProto, key);\n        }\n      }\n\n      protoRef.used = true;\n    }\n  }\n\n  shouldExitDescending(\n    expr: N.Expression | N.PrivateName,\n    potentialArrowAt: number,\n  ): expr is N.ArrowFunctionExpression {\n    return (\n      expr.type === \"ArrowFunctionExpression\" &&\n      this.offsetToSourcePos(expr.start) === potentialArrowAt\n    );\n  }\n\n  // Convenience method to parse an Expression only\n  getExpression(this: Parser): N.Expression & N.ParserOutput {\n    this.enterInitialScopes();\n    this.nextToken();\n    const expr = this.parseExpression() as N.Expression & N.ParserOutput;\n    if (!this.match(tt.eof)) {\n      this.unexpected();\n    }\n    // Unlike parseTopLevel, we need to drain remaining commentStacks\n    // because the top level node is _not_ Program.\n    this.finalizeRemainingComments();\n    expr.comments = this.comments;\n    expr.errors = this.state.errors;\n    if (this.optionFlags & OptionFlags.Tokens) {\n      expr.tokens = this.tokens;\n    }\n    return expr;\n  }\n\n  // ### Expression parsing\n\n  // These nest, from the most general expression type at the top to\n  // 'atomic', nondivisible expression types at the bottom. Most of\n  // the functions will simply let the function (s) below them parse,\n  // and, *if* the syntactic construct they handle is present, wrap\n  // the AST node that the inner parser gave them in another node.\n\n  // Parse a full expression.\n  // - `disallowIn`\n  //   is used to forbid the `in` operator (in for loops initialization expressions)\n  //   When `disallowIn` is true, the production parameter [In] is not present.\n\n  // - `refExpressionErrors `\n  //   provides reference for storing '=' operator inside shorthand\n  //   property assignment in contexts where both object expression\n  //   and object pattern might appear (so it's possible to raise\n  //   delayed syntax error at correct position).\n\n  parseExpression(\n    this: Parser,\n    disallowIn?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    if (disallowIn) {\n      return this.disallowInAnd(() =>\n        this.parseExpressionBase(refExpressionErrors),\n      );\n    }\n    return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n  }\n\n  // https://tc39.es/ecma262/#prod-Expression\n  parseExpressionBase(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const expr = this.parseMaybeAssign(refExpressionErrors);\n    if (this.match(tt.comma)) {\n      const node = this.startNodeAt<N.SequenceExpression>(startLoc);\n      node.expressions = [expr];\n      while (this.eat(tt.comma)) {\n        node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n      }\n      this.toReferencedList(node.expressions);\n      return this.finishNode(node, \"SequenceExpression\");\n    }\n    return expr;\n  }\n\n  // Set [~In] parameter for assignment expression\n  parseMaybeAssignDisallowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.disallowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // Set [+In] parameter for assignment expression\n  parseMaybeAssignAllowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.allowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // This method is only used by\n  // the typescript and flow plugins.\n  setOptionalParametersError(\n    refExpressionErrors: ExpressionErrors,\n    resultError?: ParseError<any>,\n  ) {\n    refExpressionErrors.optionalParametersLoc =\n      resultError?.loc ?? this.state.startLoc;\n  }\n\n  // Parse an assignment expression. This includes applications of\n  // operators like `+=`.\n  // https://tc39.es/ecma262/#prod-AssignmentExpression\n  parseMaybeAssign(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    if (this.isContextual(tt._yield)) {\n      if (this.prodParam.hasYield) {\n        let left = this.parseYield();\n        if (afterLeftParse) {\n          left = afterLeftParse.call(this, left, startLoc);\n        }\n        return left;\n      }\n    }\n\n    let ownExpressionErrors;\n    if (refExpressionErrors) {\n      ownExpressionErrors = false;\n    } else {\n      refExpressionErrors = new ExpressionErrors();\n      ownExpressionErrors = true;\n    }\n    const { type } = this.state;\n\n    if (type === tt.parenL || tokenIsIdentifier(type)) {\n      this.state.potentialArrowAt = this.state.start;\n    }\n\n    let left = this.parseMaybeConditional(refExpressionErrors);\n    if (afterLeftParse) {\n      left = afterLeftParse.call(this, left, startLoc);\n    }\n    if (tokenIsAssignment(this.state.type)) {\n      const node = this.startNodeAt<N.AssignmentExpression>(startLoc);\n      const operator = this.state.value;\n      node.operator = operator;\n\n      if (this.match(tt.eq)) {\n        this.toAssignable(left, /* isLHS */ true);\n        node.left = left;\n\n        const startIndex = startLoc.index;\n        if (\n          refExpressionErrors.doubleProtoLoc != null &&\n          refExpressionErrors.doubleProtoLoc.index >= startIndex\n        ) {\n          refExpressionErrors.doubleProtoLoc = null; // reset because double __proto__ is valid in assignment expression\n        }\n        if (\n          refExpressionErrors.shorthandAssignLoc != null &&\n          refExpressionErrors.shorthandAssignLoc.index >= startIndex\n        ) {\n          refExpressionErrors.shorthandAssignLoc = null; // reset because shorthand default was used correctly\n        }\n        if (\n          refExpressionErrors.privateKeyLoc != null &&\n          refExpressionErrors.privateKeyLoc.index >= startIndex\n        ) {\n          this.checkDestructuringPrivate(refExpressionErrors);\n          refExpressionErrors.privateKeyLoc = null; // reset because `({ #x: x })` is an assignable pattern\n        }\n      } else {\n        node.left = left as unknown as N.Assignable; // checked a few lines further down\n      }\n\n      this.next();\n      node.right = this.parseMaybeAssign();\n      this.checkLVal(left, this.finishNode(node, \"AssignmentExpression\"));\n      // @ts-expect-error todo(flow->ts) improve node types\n      return node;\n    } else if (ownExpressionErrors) {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n\n    return left;\n  }\n\n  // Parse a ternary conditional (`?:`) operator.\n  // https://tc39.es/ecma262/#prod-ConditionalExpression\n\n  parseMaybeConditional(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprOps(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseConditional(expr, startLoc, refExpressionErrors);\n  }\n\n  parseConditional(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (this.eat(tt.question)) {\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssignAllowIn();\n      this.expect(tt.colon);\n      node.alternate = this.parseMaybeAssign();\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n    return expr;\n  }\n\n  parseMaybeUnaryOrPrivate(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression | N.PrivateName {\n    return this.match(tt.privateName)\n      ? this.parsePrivateName()\n      : this.parseMaybeUnary(refExpressionErrors);\n  }\n\n  // Start the precedence parser.\n  // https://tc39.es/ecma262/#prod-ShortCircuitExpression\n\n  parseExprOps(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseExprOp(expr, startLoc, -1);\n  }\n\n  // Parse binary operators with the operator precedence parsing\n  // algorithm. `left` is the left-hand side of the operator.\n  // `minPrec` provides context that allows the function to stop and\n  // defer further parser to one of its callers when it encounters an\n  // operator that has a lower precedence than the set it is parsing.\n\n  parseExprOp(\n    this: Parser,\n    left: N.Expression | N.PrivateName,\n    leftStartLoc: Position,\n    minPrec: number,\n  ): N.Expression {\n    if (this.isPrivateName(left)) {\n      // https://tc39.es/ecma262/#prod-RelationalExpression\n      // RelationalExpression [In, Yield, Await]\n      //   [+In] PrivateIdentifier in ShiftExpression[?Yield, ?Await]\n\n      const value = this.getPrivateNameSV(left);\n\n      if (\n        minPrec >= tokenOperatorPrecedence(tt._in) ||\n        !this.prodParam.hasIn ||\n        !this.match(tt._in)\n      ) {\n        this.raise(Errors.PrivateInExpectedIn, left, {\n          identifierName: value,\n        });\n      }\n\n      this.classScope.usePrivateName(value, left.loc.start);\n    }\n\n    const op = this.state.type;\n    if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(tt._in))) {\n      let prec = tokenOperatorPrecedence(op);\n      if (prec > minPrec) {\n        if (op === tt.pipeline) {\n          this.expectPlugin(\"pipelineOperator\");\n          if (this.state.inFSharpPipelineDirectBody) {\n            // PrivateName must be followed by `in`, but we have `|>`\n            return left as N.Expression;\n          }\n          this.checkPipelineAtInfixOperator(left as N.Expression, leftStartLoc);\n        }\n        const node = this.startNodeAt<N.LogicalExpression | N.BinaryExpression>(\n          leftStartLoc,\n        );\n        node.left = left;\n        node.operator = this.state.value;\n\n        const logical = op === tt.logicalOR || op === tt.logicalAND;\n        const coalesce = op === tt.nullishCoalescing;\n\n        if (coalesce) {\n          // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n          // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n          prec = tokenOperatorPrecedence(tt.logicalAND);\n        }\n\n        this.next();\n\n        if (\n          op === tt.pipeline &&\n          // @ts-expect-error Remove this in Babel 8\n          this.hasPlugin([\"pipelineOperator\", { proposal: \"minimal\" }])\n        ) {\n          if (this.state.type === tt._await && this.prodParam.hasAwait) {\n            throw this.raise(\n              Errors.UnexpectedAwaitAfterPipelineBody,\n              this.state.startLoc,\n            );\n          }\n        }\n\n        node.right = this.parseExprOpRightExpr(op, prec);\n        const finishedNode = this.finishNode(\n          node,\n          logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\",\n        );\n        /* this check is for all ?? operators\n         * a ?? b && c for this example\n         * when op is coalesce and nextOp is logical (&&), throw at the pos of nextOp that it can not be mixed.\n         * Symmetrically it also throws when op is logical and nextOp is coalesce\n         */\n        const nextOp = this.state.type;\n        if (\n          (coalesce && (nextOp === tt.logicalOR || nextOp === tt.logicalAND)) ||\n          (logical && nextOp === tt.nullishCoalescing)\n        ) {\n          throw this.raise(\n            Errors.MixingCoalesceWithLogical,\n            this.state.startLoc,\n          );\n        }\n\n        return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n      }\n    }\n    // PrivateName is followed by `in` and handled by the previous if statement\n    return left as N.Expression;\n  }\n\n  // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n  // operator expressions, then apply any operator-specific functions.\n\n  parseExprOpRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    switch (op) {\n      case tt.pipeline:\n        switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n          case \"hack\":\n            return this.withTopicBindingContext(() => {\n              return this.parseHackPipeBody();\n            });\n\n          // @ts-expect-error Remove this in Babel 8\n          case \"smart\":\n            return this.withTopicBindingContext(() => {\n              if (this.prodParam.hasYield && this.isContextual(tt._yield)) {\n                throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);\n              }\n              return this.parseSmartPipelineBodyInStyle(\n                this.parseExprOpBaseRightExpr(op, prec),\n                startLoc,\n              );\n            });\n\n          case \"fsharp\":\n            return this.withSoloAwaitPermittingContext(() => {\n              return this.parseFSharpPipelineBody(prec);\n            });\n        }\n\n      // Falls through.\n      default:\n        return this.parseExprOpBaseRightExpr(op, prec);\n    }\n  }\n\n  // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n  // binary-operator expressions without applying any operator-specific functions.\n\n  parseExprOpBaseRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    return this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      tokenIsRightAssociative(op) ? prec - 1 : prec,\n    );\n  }\n\n  parseHackPipeBody(this: Parser): N.Expression {\n    const { startLoc } = this.state;\n    const body = this.parseMaybeAssign();\n    const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(\n      // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type '\"ArrowFunctionExpression\" | \"YieldExpression\" | \"AssignmentExpression\" | \"ConditionalExpression\"'.\n      body.type,\n    );\n\n    // TODO: Check how to handle type casts in Flow and TS once they are supported\n    if (requiredParentheses && !body.extra?.parenthesized) {\n      this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n        type: body.type as UnparenthesizedPipeBodyTypes,\n      });\n    }\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      // A Hack pipe body must use the topic reference at least once.\n      this.raise(Errors.PipeTopicUnused, startLoc);\n    }\n\n    return body;\n  }\n\n  checkExponentialAfterUnary(\n    node: N.AwaitExpression | Undone<N.UnaryExpression>,\n  ) {\n    if (this.match(tt.exponent)) {\n      this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n    }\n  }\n\n  // Parse unary operators, both prefix and postfix.\n  // https://tc39.es/ecma262/#prod-UnaryExpression\n  parseMaybeUnary(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    sawUnary?: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const isAwait = this.isContextual(tt._await);\n\n    if (isAwait && this.recordAwaitIfAllowed()) {\n      this.next();\n      const expr = this.parseAwait(startLoc);\n      if (!sawUnary) this.checkExponentialAfterUnary(expr);\n      return expr;\n    }\n    const update = this.match(tt.incDec);\n    const node = this.startNode<N.UnaryExpression | N.UpdateExpression>();\n    if (tokenIsPrefix(this.state.type)) {\n      node.operator = this.state.value;\n      node.prefix = true;\n\n      if (this.match(tt._throw)) {\n        this.expectPlugin(\"throwExpressions\");\n      }\n      const isDelete = this.match(tt._delete);\n      this.next();\n\n      node.argument = this.parseMaybeUnary(null, true);\n\n      this.checkExpressionErrors(refExpressionErrors, true);\n\n      if (this.state.strict && isDelete) {\n        const arg = node.argument;\n\n        if (arg.type === \"Identifier\") {\n          this.raise(Errors.StrictDelete, node);\n        } else if (this.hasPropertyAsPrivateName(arg)) {\n          this.raise(Errors.DeletePrivateField, node);\n        }\n      }\n\n      if (!update) {\n        if (!sawUnary) {\n          this.checkExponentialAfterUnary(node as Undone<N.UnaryExpression>);\n        }\n        return this.finishNode(node, \"UnaryExpression\");\n      }\n    }\n\n    const expr = this.parseUpdate(\n      // @ts-expect-error using \"Undone\" node as \"done\"\n      node,\n      update,\n      refExpressionErrors,\n    );\n\n    if (isAwait) {\n      const { type } = this.state;\n      const startsExpr = this.hasPlugin(\"v8intrinsic\")\n        ? tokenCanStartExpression(type)\n        : tokenCanStartExpression(type) && !this.match(tt.modulo);\n      if (startsExpr && !this.isAmbiguousAwait()) {\n        this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n        return this.parseAwait(startLoc);\n      }\n    }\n\n    return expr;\n  }\n\n  // https://tc39.es/ecma262/#prod-UpdateExpression\n  parseUpdate(\n    this: Parser,\n    node: N.Expression,\n    update: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (update) {\n      const updateExpressionNode = node as Undone<N.UpdateExpression>;\n      this.checkLVal(\n        updateExpressionNode.argument,\n        this.finishNode(updateExpressionNode, \"UpdateExpression\"),\n      );\n      return node;\n    }\n\n    const startLoc = this.state.startLoc;\n    let expr = this.parseExprSubscripts(refExpressionErrors);\n    if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n    while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n      const node = this.startNodeAt<N.UpdateExpression>(startLoc);\n      node.operator = this.state.value;\n      node.prefix = false;\n      node.argument = expr;\n      this.next();\n      this.checkLVal(expr, (expr = this.finishNode(node, \"UpdateExpression\")));\n    }\n    return expr;\n  }\n\n  // Parse call, dot, and `[]`-subscript expressions.\n  // https://tc39.es/ecma262/#prod-LeftHandSideExpression\n  parseExprSubscripts(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprAtom(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseSubscripts(expr, startLoc);\n  }\n\n  parseSubscripts(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls?: boolean | null,\n  ): N.Expression {\n    const state = {\n      optionalChainMember: false,\n      maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n      stop: false,\n    };\n    do {\n      base = this.parseSubscript(base, startLoc, noCalls, state);\n\n      // After parsing a subscript, this isn't \"async\" for sure.\n      state.maybeAsyncArrow = false;\n    } while (!state.stop);\n    return base;\n  }\n\n  /**\n   * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n   *   state.optionalChainMember to indicate that the member is currently in OptionalChain\n   */\n  parseSubscript(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const { type } = this.state;\n    if (!noCalls && type === tt.doubleColon) {\n      return this.parseBind(base, startLoc, noCalls, state);\n    } else if (tokenIsTemplate(type)) {\n      return this.parseTaggedTemplateExpression(base, startLoc, state);\n    }\n\n    let optional = false;\n\n    if (type === tt.questionDot) {\n      if (noCalls) {\n        this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n        if (this.lookaheadCharCode() === charCodes.leftParenthesis) {\n          // stop at `?.` when parsing `new a?.()`\n          state.stop = true;\n          return base;\n        }\n      }\n      state.optionalChainMember = optional = true;\n      this.next();\n    }\n\n    if (!noCalls && this.match(tt.parenL)) {\n      return this.parseCoverCallAndAsyncArrowHead(\n        base,\n        startLoc,\n        state,\n        optional,\n      );\n    } else {\n      const computed = this.eat(tt.bracketL);\n      if (computed || optional || this.eat(tt.dot)) {\n        return this.parseMember(base, startLoc, state, computed, optional);\n      } else {\n        state.stop = true;\n        return base;\n      }\n    }\n  }\n\n  // base[?Yield, ?Await] [ Expression[+In, ?Yield, ?Await] ]\n  // base[?Yield, ?Await] . IdentifierName\n  // base[?Yield, ?Await] . PrivateIdentifier\n  //   where `base` is one of CallExpression, MemberExpression and OptionalChain\n  parseMember(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    computed: boolean,\n    optional: boolean,\n  ): N.OptionalMemberExpression | N.MemberExpression {\n    const node = this.startNodeAt<\n      N.OptionalMemberExpression | N.MemberExpression\n    >(startLoc);\n    node.object = base;\n    node.computed = computed;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(tt.bracketR);\n    } else if (this.match(tt.privateName)) {\n      if (base.type === \"Super\") {\n        this.raise(Errors.SuperPrivateField, startLoc);\n      }\n      this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n      node.property = this.parsePrivateName();\n    } else {\n      node.property = this.parseIdentifier(true);\n    }\n\n    if (state.optionalChainMember) {\n      (node as N.OptionalMemberExpression).optional = optional;\n      return this.finishNode(node, \"OptionalMemberExpression\");\n    } else {\n      return this.finishNode(node, \"MemberExpression\");\n    }\n  }\n\n  // https://github.com/tc39/proposal-bind-operator#syntax\n  parseBind(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const node = this.startNodeAt<N.BindExpression>(startLoc);\n    node.object = base;\n    this.next(); // eat '::'\n    node.callee = this.parseNoCallExpr();\n    state.stop = true;\n    return this.parseSubscripts(\n      this.finishNode(node, \"BindExpression\"),\n      startLoc,\n      noCalls,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead\n  // CoverCallExpressionAndAsyncArrowHead\n  // CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]\n  // OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await]\n  parseCoverCallAndAsyncArrowHead(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    optional: boolean,\n  ): N.Expression {\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    let refExpressionErrors: ExpressionErrors | null = null;\n\n    this.state.maybeInArrowParameters = true;\n    this.next(); // eat `(`\n\n    const node = this.startNodeAt<N.CallExpression | N.OptionalCallExpression>(\n      startLoc,\n    );\n    node.callee = base;\n    const { maybeAsyncArrow, optionalChainMember } = state;\n\n    if (maybeAsyncArrow) {\n      this.expressionScope.enter(newAsyncArrowScope());\n      refExpressionErrors = new ExpressionErrors();\n    }\n\n    if (optionalChainMember) {\n      // @ts-expect-error when optionalChainMember is true, node must be an optional call\n      node.optional = optional;\n    }\n\n    if (optional) {\n      node.arguments = this.parseCallExpressionArguments(tt.parenR);\n    } else {\n      node.arguments = this.parseCallExpressionArguments(\n        tt.parenR,\n        base.type !== \"Super\",\n        node,\n        refExpressionErrors,\n      );\n    }\n    let finishedNode:\n      | N.CallExpression\n      | N.OptionalCallExpression\n      | N.ArrowFunctionExpression = this.finishCallExpression(\n      node,\n      optionalChainMember,\n    );\n\n    if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n      /*:: invariant(refExpressionErrors != null) */\n      state.stop = true;\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      finishedNode = this.parseAsyncArrowFromCallExpression(\n        this.startNodeAt<N.ArrowFunctionExpression>(startLoc),\n        finishedNode as N.CallExpression,\n      );\n    } else {\n      if (maybeAsyncArrow) {\n        this.checkExpressionErrors(refExpressionErrors, true);\n        this.expressionScope.exit();\n      }\n      this.toReferencedArguments(finishedNode);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return finishedNode;\n  }\n\n  toReferencedArguments(\n    node: N.CallExpression | N.OptionalCallExpression,\n    isParenthesizedExpr?: boolean,\n  ) {\n    this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n  }\n\n  // MemberExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  // CallExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  parseTaggedTemplateExpression(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n  ): N.TaggedTemplateExpression {\n    const node = this.startNodeAt<N.TaggedTemplateExpression>(startLoc);\n    node.tag = base;\n    node.quasi = this.parseTemplate(true);\n    if (state.optionalChainMember) {\n      this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n    }\n    return this.finishNode(node, \"TaggedTemplateExpression\");\n  }\n\n  atPossibleAsyncArrow(base: N.Expression): boolean {\n    return (\n      base.type === \"Identifier\" &&\n      base.name === \"async\" &&\n      this.state.lastTokEndLoc.index === base.end &&\n      !this.canInsertSemicolon() &&\n      // check there are no escape sequences, such as \\u{61}sync\n      base.end - base.start === 5 &&\n      this.offsetToSourcePos(base.start) === this.state.potentialArrowAt\n    );\n  }\n\n  finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n    node: Undone<T>,\n    optional: boolean,\n  ): T {\n    if (node.callee.type === \"Import\") {\n      if (node.arguments.length === 0 || node.arguments.length > 2) {\n        this.raise(Errors.ImportCallArity, node);\n      } else {\n        for (const arg of node.arguments) {\n          if (arg.type === \"SpreadElement\") {\n            this.raise(Errors.ImportCallSpreadArgument, arg);\n          }\n        }\n      }\n    }\n    return this.finishNode(\n      node,\n      optional ? \"OptionalCallExpression\" : \"CallExpression\",\n    );\n  }\n\n  parseCallExpressionArguments(\n    this: Parser,\n    close: TokenType,\n    allowPlaceholder?: boolean,\n    nodeForExtra?: Undone<N.Node> | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): Array<N.Expression> {\n    const elts: N.Expression[] = [];\n    let first = true;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(\n        this.parseExprListItem(false, refExpressionErrors, allowPlaceholder),\n      );\n    }\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return elts;\n  }\n\n  shouldParseAsyncArrow(): boolean {\n    return this.match(tt.arrow) && !this.canInsertSemicolon();\n  }\n\n  parseAsyncArrowFromCallExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    call: N.CallExpression,\n  ): N.ArrowFunctionExpression {\n    this.resetPreviousNodeTrailingComments(call);\n    this.expect(tt.arrow);\n    this.parseArrowExpression(\n      node,\n      call.arguments,\n      true,\n      call.extra?.trailingCommaLoc,\n    );\n    // mark inner comments of `async()` as inner comments of `async () =>`\n    if (call.innerComments) {\n      setInnerComments(node, call.innerComments);\n    }\n    // mark trailing comments of `async` to be inner comments\n    if (call.callee.trailingComments) {\n      setInnerComments(node, call.callee.trailingComments);\n    }\n    return node as N.ArrowFunctionExpression;\n  }\n\n  // Parse a no-call expression (like argument of `new` or `::` operators).\n  // https://tc39.es/ecma262/#prod-MemberExpression\n  parseNoCallExpr(this: Parser): N.Expression {\n    const startLoc = this.state.startLoc;\n    return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n  }\n\n  // Parse an atomic expression — either a single token that is an\n  // expression, an expression started by a keyword like `function` or\n  // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n  // or `{}`.\n\n  // https://tc39.es/ecma262/#prod-PrimaryExpression\n  // https://tc39.es/ecma262/#prod-AsyncArrowFunction\n  // PrimaryExpression\n  // Super\n  // Import\n  // AsyncArrowFunction\n\n  parseExprAtom(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    let node;\n    let decorators: N.Decorator[] | null = null;\n\n    const { type } = this.state;\n    switch (type) {\n      case tt._super:\n        return this.parseSuper();\n\n      case tt._import:\n        node = this.startNode<N.MetaProperty | N.Import | N.ImportExpression>();\n        this.next();\n\n        if (this.match(tt.dot)) {\n          return this.parseImportMetaProperty(node as Undone<N.MetaProperty>);\n        }\n\n        if (this.match(tt.parenL)) {\n          if (this.optionFlags & OptionFlags.CreateImportExpressions) {\n            return this.parseImportCall(node as Undone<N.ImportExpression>);\n          } else {\n            return this.finishNode(node, \"Import\");\n          }\n        } else {\n          this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);\n          return this.finishNode(node, \"Import\");\n        }\n\n      case tt._this:\n        node = this.startNode<N.ThisExpression>();\n        this.next();\n        return this.finishNode(node, \"ThisExpression\");\n\n      case tt._do: {\n        return this.parseDo(this.startNode(), false);\n      }\n\n      case tt.slash:\n      case tt.slashAssign: {\n        this.readRegexp();\n        return this.parseRegExpLiteral(this.state.value);\n      }\n\n      case tt.num:\n        return this.parseNumericLiteral(this.state.value);\n\n      case tt.bigint:\n        return this.parseBigIntLiteral(this.state.value);\n\n      case tt.string:\n        return this.parseStringLiteral(this.state.value);\n\n      case tt._null:\n        return this.parseNullLiteral();\n\n      case tt._true:\n        return this.parseBooleanLiteral(true);\n      case tt._false:\n        return this.parseBooleanLiteral(false);\n\n      case tt.parenL: {\n        const canBeArrow = this.state.potentialArrowAt === this.state.start;\n        return this.parseParenAndDistinguishExpression(canBeArrow);\n      }\n\n      case tt.bracketBarL:\n      case tt.bracketHashL: {\n        return this.parseArrayLike(\n          this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR,\n          /* canBePattern */ false,\n          /* isTuple */ true,\n        );\n      }\n      case tt.bracketL: {\n        return this.parseArrayLike(\n          tt.bracketR,\n          /* canBePattern */ true,\n          /* isTuple */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt.braceBarL:\n      case tt.braceHashL: {\n        return this.parseObjectLike(\n          this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ true,\n        );\n      }\n      case tt.braceL: {\n        return this.parseObjectLike(\n          tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt._function:\n        return this.parseFunctionOrFunctionSent();\n\n      case tt.at:\n        decorators = this.parseDecorators();\n      // fall through\n      case tt._class:\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            this.startNode<N.ClassExpression>(),\n          ),\n          false,\n        );\n\n      case tt._new:\n        return this.parseNewOrNewTarget();\n\n      case tt.templateNonTail:\n      case tt.templateTail:\n        return this.parseTemplate(false);\n\n      // BindExpression[Yield]\n      //   :: MemberExpression[?Yield]\n      case tt.doubleColon: {\n        node = this.startNode<N.BindExpression>();\n        this.next();\n        node.object = null;\n        const callee = (node.callee = this.parseNoCallExpr());\n        if (callee.type === \"MemberExpression\") {\n          return this.finishNode(node, \"BindExpression\");\n        } else {\n          throw this.raise(Errors.UnsupportedBind, callee);\n        }\n      }\n\n      case tt.privateName: {\n        // Standalone private names are only allowed in \"#x in obj\"\n        // expressions, and they are directly handled by callers of\n        // parseExprOp. If we reach this, the input is always invalid.\n        // We can throw a better error message and recover, rather than\n        // just throwing \"Unexpected token\" (which is the default\n        // behavior of this big switch statement).\n        this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n          identifierName: this.state.value,\n        });\n        return this.parsePrivateName() as unknown as N.Expression;\n      }\n\n      case tt.moduloAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.modulo, \"%\");\n      }\n\n      case tt.xorAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.bitwiseXOR, \"^\");\n      }\n\n      case tt.doubleCaret:\n      case tt.doubleAt: {\n        return this.parseTopicReference(\"hack\");\n      }\n\n      case tt.bitwiseXOR:\n      case tt.modulo:\n      case tt.hash: {\n        const pipeProposal = this.getPluginOption(\n          \"pipelineOperator\",\n          \"proposal\",\n        );\n\n        if (pipeProposal) {\n          return this.parseTopicReference(pipeProposal);\n        }\n        this.unexpected();\n        break;\n      }\n\n      case tt.lt: {\n        const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n        if (\n          isIdentifierStart(lookaheadCh) || // Element/Type Parameter <foo>\n          lookaheadCh === charCodes.greaterThan // Fragment <>\n        ) {\n          this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n        } else {\n          this.unexpected();\n        }\n        break;\n      }\n\n      default:\n        if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n          return this.parseDecimalLiteral(this.state.value);\n        }\n\n        if (tokenIsIdentifier(type)) {\n          if (\n            this.isContextual(tt._module) &&\n            this.lookaheadInLineCharCode() === charCodes.leftCurlyBrace\n          ) {\n            return this.parseModuleExpression();\n          }\n          const canBeArrow = this.state.potentialArrowAt === this.state.start;\n          const containsEsc = this.state.containsEsc;\n          const id = this.parseIdentifier();\n\n          if (\n            !containsEsc &&\n            id.name === \"async\" &&\n            !this.canInsertSemicolon()\n          ) {\n            const { type } = this.state;\n            if (type === tt._function) {\n              this.resetPreviousNodeTrailingComments(id);\n              this.next();\n              return this.parseAsyncFunctionExpression(\n                this.startNodeAtNode(id),\n              );\n            } else if (tokenIsIdentifier(type)) {\n              // If the next token begins with \"=\", commit to parsing an async\n              // arrow function. (Peeking ahead for \"=\" lets us avoid a more\n              // expensive full-token lookahead on this common path.)\n              if (this.lookaheadCharCode() === charCodes.equalsTo) {\n                // although `id` is not used in async arrow unary function,\n                // we don't need to reset `async`'s trailing comments because\n                // it will be attached to the upcoming async arrow binding identifier\n                return this.parseAsyncArrowUnaryFunction(\n                  this.startNodeAtNode(id),\n                );\n              } else {\n                // Otherwise, treat \"async\" as an identifier and let calling code\n                // deal with the current tt.name token.\n                return id;\n              }\n            } else if (type === tt._do) {\n              this.resetPreviousNodeTrailingComments(id);\n              return this.parseDo(this.startNodeAtNode(id), true);\n            }\n          }\n\n          if (\n            canBeArrow &&\n            this.match(tt.arrow) &&\n            !this.canInsertSemicolon()\n          ) {\n            this.next();\n            return this.parseArrowExpression(\n              this.startNodeAtNode(id),\n              [id],\n              false,\n            );\n          }\n\n          return id;\n        } else {\n          this.unexpected();\n        }\n    }\n  }\n\n  // This helper method should only be called\n  // when the parser has reached a potential Hack pipe topic token\n  // that is followed by an equals sign.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  // If we find ^= or %= in an expression position\n  // (i.e., the tt.moduloAssign or tt.xorAssign token types), and if the\n  // Hack-pipes proposal is active with ^ or % as its topicToken, then the ^ or\n  // % could be the topic token (e.g., in x |> ^==y or x |> ^===y), and so we\n  // reparse the current token as ^ or %.\n  // Otherwise, this throws an unexpected-token error.\n  parseTopicReferenceThenEqualsSign(\n    topicTokenType: TokenType,\n    topicTokenValue: string,\n  ): N.Expression {\n    const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n    if (pipeProposal) {\n      // Set the most-recent token to be a topic token\n      // given by the tokenType and tokenValue.\n      // Now the next readToken() call (in parseTopicReference)\n      // will consume that “topic token”.\n      this.state.type = topicTokenType;\n      this.state.value = topicTokenValue;\n      // Rewind the tokenizer to the end of the “topic token”, so that the\n      // following token starts at the equals sign after that topic token.\n      this.state.pos--;\n      this.state.end--;\n      // This is safe to do since the preceding character was either ^ or %, and\n      // thus not a newline.\n      this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n      // Now actually consume the topic token.\n      return this.parseTopicReference(pipeProposal);\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // This helper method should only be called\n  // when the proposal-pipeline-operator plugin is active,\n  // and when the parser has reached a potential Hack pipe topic token.\n  // Although a pipe-operator proposal is assumed to be active,\n  // its configuration might not match the current token’s type.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  parseTopicReference(pipeProposal: string): N.Expression {\n    const node = this.startNode<N.TopicReference>();\n    const startLoc = this.state.startLoc;\n    const tokenType = this.state.type;\n\n    // Consume the current token.\n    this.next();\n\n    // If the pipe-operator plugin’s configuration matches the current token’s type,\n    // then this will return `node`, will have been finished as a topic reference.\n    // Otherwise, this will throw a `PipeTopicUnconfiguredToken` error.\n    return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n  }\n\n  // This helper method attempts to finish the given `node`\n  // into a topic-reference node for the given `pipeProposal`.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  //\n  // The method assumes that any topic token was consumed before it was called.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // and if the given `tokenType` matches the plugin’s configuration,\n  // then this method will return the finished `node`.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // but if the given `tokenType` does not match the plugin’s configuration,\n  // then this method will throw a `PipeTopicUnconfiguredToken` error.\n  finishTopicReference<\n    T extends N.PipelinePrimaryTopicReference | N.TopicReference,\n  >(\n    node: Undone<T>,\n    startLoc: Position,\n    pipeProposal: string,\n    tokenType: TokenType,\n  ): T {\n    if (\n      this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)\n    ) {\n      // The token matches the plugin’s configuration.\n      // The token is therefore a topic reference.\n\n      // Determine the node type for the topic reference\n      // that is appropriate for the active pipe-operator proposal.\n      const nodeType =\n        pipeProposal === \"smart\"\n          ? \"PipelinePrimaryTopicReference\"\n          : // The proposal must otherwise be \"hack\",\n            // as enforced by testTopicReferenceConfiguration.\n            \"TopicReference\";\n\n      if (!this.topicReferenceIsAllowedInCurrentContext()) {\n        this.raise(\n          // The topic reference is not allowed in the current context:\n          // it is outside of a pipe body.\n          // Raise recoverable errors.\n          pipeProposal === \"smart\"\n            ? Errors.PrimaryTopicNotAllowed\n            : // In this case, `pipeProposal === \"hack\"` is true.\n              Errors.PipeTopicUnbound,\n          startLoc,\n        );\n      }\n\n      // Register the topic reference so that its pipe body knows\n      // that its topic was used at least once.\n      this.registerTopicReference();\n\n      return this.finishNode(node, nodeType);\n    } else {\n      // The token does not match the plugin’s configuration.\n      throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n        token: tokenLabelName(tokenType),\n      });\n    }\n  }\n\n  // This helper method tests whether the given token type\n  // matches the pipelineOperator parser plugin’s configuration.\n  // If the active pipe proposal is Hack style,\n  // and if the given token is the same as the plugin configuration’s `topicToken`,\n  // then this is a valid topic reference.\n  // If the active pipe proposal is smart mix,\n  // then the topic token must always be `#`.\n  // If the active pipe proposal is neither (e.g., \"minimal\" or \"fsharp\"),\n  // then an error is thrown.\n  testTopicReferenceConfiguration(\n    pipeProposal: string,\n    startLoc: Position,\n    tokenType: TokenType,\n  ): boolean {\n    switch (pipeProposal) {\n      case \"hack\": {\n        return this.hasPlugin([\n          \"pipelineOperator\",\n          {\n            // @ts-expect-error token must have a label\n            topicToken: tokenLabelName(tokenType),\n          },\n        ]);\n      }\n      case \"smart\":\n        return tokenType === tt.hash;\n      default:\n        throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n    }\n  }\n\n  // async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]\n  parseAsyncArrowUnaryFunction(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n  ): N.ArrowFunctionExpression {\n    // We don't need to push a new ParameterDeclarationScope here since we are sure\n    // 1) it is an async arrow, 2) no biding pattern is allowed in params\n    this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n    const params = [this.parseIdentifier()];\n    this.prodParam.exit();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n    }\n    this.expect(tt.arrow);\n    // let foo = async bar => {};\n    return this.parseArrowExpression(node, params, true);\n  }\n\n  // https://github.com/tc39/proposal-do-expressions\n  // https://github.com/tc39/proposal-async-do-expressions\n  parseDo(\n    this: Parser,\n    node: Undone<N.DoExpression>,\n    isAsync: boolean,\n  ): N.DoExpression {\n    this.expectPlugin(\"doExpressions\");\n    if (isAsync) {\n      this.expectPlugin(\"asyncDoExpressions\");\n    }\n    node.async = isAsync;\n    this.next(); // eat `do`\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    if (isAsync) {\n      // AsyncDoExpression :\n      // async [no LineTerminator here] do Block[~Yield, +Await, ~Return]\n      this.prodParam.enter(ParamKind.PARAM_AWAIT);\n      node.body = this.parseBlock();\n      this.prodParam.exit();\n    } else {\n      node.body = this.parseBlock();\n    }\n\n    this.state.labels = oldLabels;\n    return this.finishNode(node, \"DoExpression\");\n  }\n\n  // Parse the `super` keyword\n  parseSuper(): N.Super {\n    const node = this.startNode<N.Super>();\n    this.next(); // eat `super`\n    if (\n      this.match(tt.parenL) &&\n      !this.scope.allowDirectSuper &&\n      !(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)\n    ) {\n      this.raise(Errors.SuperNotAllowed, node);\n    } else if (\n      !this.scope.allowSuper &&\n      !(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)\n    ) {\n      this.raise(Errors.UnexpectedSuper, node);\n    }\n\n    if (\n      !this.match(tt.parenL) &&\n      !this.match(tt.bracketL) &&\n      !this.match(tt.dot)\n    ) {\n      this.raise(Errors.UnsupportedSuper, node);\n    }\n\n    return this.finishNode(node, \"Super\");\n  }\n\n  parsePrivateName(): N.PrivateName {\n    const node = this.startNode<N.PrivateName>();\n    const id = this.startNodeAt<N.Identifier>(\n      // The position is hardcoded because we merge `#` and name into a single\n      // tt.privateName token\n      createPositionWithColumnOffset(this.state.startLoc, 1),\n    );\n    const name = this.state.value;\n    this.next(); // eat #name;\n    node.id = this.createIdentifier(id, name);\n    return this.finishNode(node, \"PrivateName\");\n  }\n\n  parseFunctionOrFunctionSent(\n    this: Parser,\n  ): N.FunctionExpression | N.MetaProperty {\n    const node = this.startNode<N.FunctionExpression | N.MetaProperty>();\n\n    // We do not do parseIdentifier here because when parseFunctionOrFunctionSent\n    // is called we already know that the current token is a \"name\" with the value \"function\"\n    // This will improve perf a tiny little bit as we do not do validation but more importantly\n    // here is that parseIdentifier will remove an item from the expression stack\n    // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n    this.next(); // eat `function`\n\n    if (this.prodParam.hasYield && this.match(tt.dot)) {\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"function\",\n      );\n      this.next(); // eat `.`\n      // https://github.com/tc39/proposal-function.sent#syntax-1\n      if (this.match(tt._sent)) {\n        this.expectPlugin(\"functionSent\");\n      } else if (!this.hasPlugin(\"functionSent\")) {\n        // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n        this.unexpected();\n      }\n      return this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"sent\",\n      );\n    }\n    return this.parseFunction(node as Undone<N.FunctionExpression>);\n  }\n\n  parseMetaProperty(\n    node: Undone<N.MetaProperty>,\n    meta: N.Identifier,\n    propertyName: string,\n  ): N.MetaProperty {\n    node.meta = meta;\n\n    const containsEsc = this.state.containsEsc;\n\n    node.property = this.parseIdentifier(true);\n\n    if (node.property.name !== propertyName || containsEsc) {\n      this.raise(Errors.UnsupportedMetaProperty, node.property, {\n        target: meta.name,\n        onlyValidPropertyName: propertyName,\n      });\n    }\n\n    return this.finishNode(node, \"MetaProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportMeta\n  parseImportMetaProperty(\n    this: Parser,\n    node: Undone<N.MetaProperty | N.ImportExpression>,\n  ): N.MetaProperty | N.ImportExpression {\n    const id = this.createIdentifier(\n      this.startNodeAtNode<N.Identifier>(node),\n      \"import\",\n    );\n    this.next(); // eat `.`\n\n    if (this.isContextual(tt._meta)) {\n      if (!this.inModule) {\n        this.raise(Errors.ImportMetaOutsideModule, id);\n      }\n      this.sawUnambiguousESM = true;\n    } else if (this.isContextual(tt._source) || this.isContextual(tt._defer)) {\n      const isSource = this.isContextual(tt._source);\n\n      this.expectPlugin(\n        isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\",\n      );\n      if (!(this.optionFlags & OptionFlags.CreateImportExpressions)) {\n        throw this.raise(\n          Errors.DynamicImportPhaseRequiresImportExpressions,\n          this.state.startLoc,\n          {\n            phase: this.state.value,\n          },\n        );\n      }\n      this.next();\n      (node as Undone<N.ImportExpression>).phase = isSource\n        ? \"source\"\n        : \"defer\";\n      return this.parseImportCall(node as Undone<N.ImportExpression>);\n    }\n\n    return this.parseMetaProperty(node as Undone<N.MetaProperty>, id, \"meta\");\n  }\n\n  parseLiteralAtNode<T extends N.Node>(\n    value: any,\n    type: T[\"type\"],\n    node: any,\n  ): T {\n    this.addExtra(node, \"rawValue\", value);\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.value = value;\n    this.next();\n    return this.finishNode<T>(node, type);\n  }\n\n  parseLiteral<T extends N.Node>(value: any, type: T[\"type\"]): T {\n    const node = this.startNode();\n    return this.parseLiteralAtNode(value, type, node);\n  }\n\n  parseStringLiteral(value: any) {\n    return this.parseLiteral<N.StringLiteral>(value, \"StringLiteral\");\n  }\n\n  parseNumericLiteral(value: any) {\n    return this.parseLiteral<N.NumericLiteral>(value, \"NumericLiteral\");\n  }\n\n  parseBigIntLiteral(value: any) {\n    return this.parseLiteral<N.BigIntLiteral>(value, \"BigIntLiteral\");\n  }\n\n  // TODO: Remove this in Babel 8\n  parseDecimalLiteral(value: any) {\n    return this.parseLiteral<N.DecimalLiteral>(value, \"DecimalLiteral\");\n  }\n\n  parseRegExpLiteral(value: {\n    value: any;\n    pattern: string;\n    flags: N.RegExpLiteral[\"flags\"];\n  }) {\n    const node = this.startNode<N.RegExpLiteral>();\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.pattern = value.pattern;\n    node.flags = value.flags;\n    this.next();\n    return this.finishNode(node, \"RegExpLiteral\");\n  }\n\n  parseBooleanLiteral(value: boolean) {\n    const node = this.startNode<N.BooleanLiteral>();\n    node.value = value;\n    this.next();\n    return this.finishNode(node, \"BooleanLiteral\");\n  }\n\n  parseNullLiteral() {\n    const node = this.startNode<N.NullLiteral>();\n    this.next();\n    return this.finishNode(node, \"NullLiteral\");\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverParenthesizedExpressionAndArrowParameterList\n  parseParenAndDistinguishExpression(\n    this: Parser,\n    canBeArrow: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    let val;\n    this.next(); // eat `(`\n    this.expressionScope.enter(newArrowHeadScope());\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.maybeInArrowParameters = true;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    const innerStartLoc = this.state.startLoc;\n    const exprList: (N.Expression | N.RestElement)[] = [];\n    const refExpressionErrors = new ExpressionErrors();\n    let first = true;\n    let spreadStartLoc;\n    let optionalCommaStartLoc;\n\n    while (!this.match(tt.parenR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(\n          tt.comma,\n          refExpressionErrors.optionalParametersLoc === null\n            ? null\n            : refExpressionErrors.optionalParametersLoc,\n        );\n        if (this.match(tt.parenR)) {\n          optionalCommaStartLoc = this.state.startLoc;\n          break;\n        }\n      }\n\n      if (this.match(tt.ellipsis)) {\n        const spreadNodeStartLoc = this.state.startLoc;\n        spreadStartLoc = this.state.startLoc;\n        exprList.push(\n          this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc),\n        );\n\n        if (!this.checkCommaAfterRest(charCodes.rightParenthesis)) {\n          break;\n        }\n      } else {\n        exprList.push(\n          this.parseMaybeAssignAllowIn(\n            refExpressionErrors,\n            this.parseParenItem,\n          ),\n        );\n      }\n    }\n\n    const innerEndLoc = this.state.lastTokEndLoc;\n    this.expect(tt.parenR);\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    let arrowNode = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n    if (\n      canBeArrow &&\n      this.shouldParseArrow(exprList) &&\n      (arrowNode = this.parseArrow(arrowNode))\n    ) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      this.parseArrowExpression(arrowNode, exprList, false);\n      // @ts-expect-error todo(flow->ts) improve node types\n      return arrowNode;\n    }\n    this.expressionScope.exit();\n\n    if (!exprList.length) {\n      this.unexpected(this.state.lastTokStartLoc);\n    }\n    if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n    if (spreadStartLoc) this.unexpected(spreadStartLoc);\n    this.checkExpressionErrors(refExpressionErrors, true);\n\n    this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n    if (exprList.length > 1) {\n      val = this.startNodeAt<N.SequenceExpression>(innerStartLoc);\n      val.expressions = exprList as N.Expression[];\n      // finish node at current location so it can pick up comments after `)`\n      this.finishNode(val, \"SequenceExpression\");\n      this.resetEndLocation(val, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n\n    return this.wrapParenthesis(\n      startLoc,\n      // @ts-expect-error todo(flow->ts)\n      val,\n    );\n  }\n\n  wrapParenthesis(startLoc: Position, expression: N.Expression): N.Expression {\n    if (!(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)) {\n      this.addExtra(expression, \"parenthesized\", true);\n      this.addExtra(expression, \"parenStart\", startLoc.index);\n\n      this.takeSurroundingComments(\n        expression,\n        startLoc.index,\n        this.state.lastTokEndLoc.index,\n      );\n\n      return expression;\n    }\n\n    const parenExpression =\n      this.startNodeAt<N.ParenthesizedExpression>(startLoc);\n    parenExpression.expression = expression;\n    return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- `params` is used in typescript plugin\n  shouldParseArrow(params: Array<N.Node>): boolean {\n    return !this.canInsertSemicolon();\n  }\n\n  parseArrow(\n    node: Undone<N.ArrowFunctionExpression>,\n  ): Undone<N.ArrowFunctionExpression> | undefined {\n    if (this.eat(tt.arrow)) {\n      return node;\n    }\n  }\n\n  parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n    node: T,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    startLoc: Position,\n  ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n    return node;\n  }\n\n  parseNewOrNewTarget(this: Parser): N.NewExpression | N.MetaProperty {\n    const node = this.startNode<N.NewExpression | N.MetaProperty>();\n    this.next();\n    if (this.match(tt.dot)) {\n      // https://tc39.es/ecma262/#prod-NewTarget\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"new\",\n      );\n      this.next();\n      const metaProp = this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"target\",\n      );\n\n      if (\n        !this.scope.inNonArrowFunction &&\n        !this.scope.inClass &&\n        !(this.optionFlags & OptionFlags.AllowNewTargetOutsideFunction)\n      ) {\n        this.raise(Errors.UnexpectedNewTarget, metaProp);\n      }\n\n      return metaProp;\n    }\n\n    return this.parseNew(node as Undone<N.NewExpression>);\n  }\n\n  // New's precedence is slightly tricky. It must allow its argument to\n  // be a `[]` or dot subscript expression, but not a call — at least,\n  // not without wrapping it in parentheses. Thus, it uses the noCalls\n  // argument to parseSubscripts to prevent it from consuming the\n  // argument list.\n  // https://tc39.es/ecma262/#prod-NewExpression\n  parseNew(this: Parser, node: Undone<N.NewExpression>): N.NewExpression {\n    this.parseNewCallee(node);\n\n    if (this.eat(tt.parenL)) {\n      const args = this.parseExprList(tt.parenR);\n      this.toReferencedList(args);\n      // (parseExprList should be all non-null in this case)\n      node.arguments = args;\n    } else {\n      node.arguments = [];\n    }\n\n    return this.finishNode(node, \"NewExpression\");\n  }\n\n  parseNewCallee(this: Parser, node: Undone<N.NewExpression>): void {\n    const isImport = this.match(tt._import);\n    const callee = this.parseNoCallExpr();\n    node.callee = callee;\n    if (\n      isImport &&\n      (callee.type === \"Import\" || callee.type === \"ImportExpression\")\n    ) {\n      this.raise(Errors.ImportCallNotNewExpression, callee);\n    }\n  }\n\n  // Parse template expression.\n\n  parseTemplateElement(isTagged: boolean): N.TemplateElement {\n    const { start, startLoc, end, value } = this.state;\n    const elemStart = start + 1;\n    const elem = this.startNodeAt<N.TemplateElement>(\n      createPositionWithColumnOffset(startLoc, 1),\n    );\n    if (value === null) {\n      if (!isTagged) {\n        this.raise(\n          Errors.InvalidEscapeSequenceTemplate,\n          // FIXME: Adding 1 is probably wrong.\n          createPositionWithColumnOffset(\n            this.state.firstInvalidTemplateEscapePos,\n            1,\n          ),\n        );\n      }\n    }\n\n    const isTail = this.match(tt.templateTail);\n    const endOffset = isTail ? -1 : -2;\n    const elemEnd = end + endOffset;\n    elem.value = {\n      raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: value === null ? null : value.slice(1, endOffset),\n    };\n    elem.tail = isTail;\n    this.next();\n    const finishedNode = this.finishNode(elem, \"TemplateElement\");\n    this.resetEndLocation(\n      finishedNode,\n      createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset),\n    );\n    return finishedNode;\n  }\n\n  // https://tc39.es/ecma262/#prod-TemplateLiteral\n  parseTemplate(this: Parser, isTagged: boolean): N.TemplateLiteral {\n    const node = this.startNode<N.TemplateLiteral>();\n    let curElt = this.parseTemplateElement(isTagged);\n    const quasis = [curElt];\n    const substitutions = [];\n    while (!curElt.tail) {\n      substitutions.push(this.parseTemplateSubstitution());\n      this.readTemplateContinuation();\n      quasis.push((curElt = this.parseTemplateElement(isTagged)));\n    }\n    // Type cast from (N.Expression[] | N.TsType[]). parseTemplateSubstitution\n    // returns consistent results.\n    node.expressions = substitutions as N.Expression[] | N.TsType[];\n    node.quasis = quasis;\n    return this.finishNode(node, \"TemplateLiteral\");\n  }\n\n  // This is overwritten by the TypeScript plugin to parse template types\n  parseTemplateSubstitution(this: Parser): N.Expression | N.TsType {\n    return this.parseExpression();\n  }\n\n  // Parse an object literal, binding pattern, or record.\n\n  parseObjectLike(\n    close: TokenType,\n    isPattern: true,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectPattern;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: false | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectExpression;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: true,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.RecordExpression;\n  parseObjectLike<T extends N.ObjectPattern | N.ObjectExpression>(\n    this: Parser,\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    if (isRecord) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const propHash: any = Object.create(null);\n    let first = true;\n    const node = this.startNode<\n      N.ObjectExpression | N.ObjectPattern | N.RecordExpression\n    >();\n\n    node.properties = [];\n    this.next();\n\n    while (!this.match(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          this.addTrailingCommaExtraToNode(node);\n          break;\n        }\n      }\n\n      let prop;\n      if (isPattern) {\n        prop = this.parseBindingProperty();\n      } else {\n        prop = this.parsePropertyDefinition(refExpressionErrors);\n        this.checkProto(prop, isRecord, propHash, refExpressionErrors);\n      }\n\n      if (\n        isRecord &&\n        !this.isObjectProperty(prop) &&\n        prop.type !== \"SpreadElement\"\n      ) {\n        this.raise(Errors.InvalidRecordProperty, prop);\n      }\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-expect-error shorthand may not index prop\n        if (prop.shorthand) {\n          this.addExtra(prop, \"shorthand\", true);\n        }\n      }\n\n      // @ts-expect-error Fixme: refine typings\n      node.properties.push(prop);\n    }\n\n    this.next();\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    let type = \"ObjectExpression\";\n    if (isPattern) {\n      type = \"ObjectPattern\";\n    } else if (isRecord) {\n      type = \"RecordExpression\";\n    }\n    // @ts-expect-error type is well defined\n    return this.finishNode(node, type);\n  }\n\n  addTrailingCommaExtraToNode(node: Undone<N.Node>): void {\n    this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc.index);\n    this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n  }\n\n  // Check grammar production:\n  //   IdentifierName *_opt PropertyName\n  // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors\n  maybeAsyncOrAccessorProp(\n    prop: Undone<N.ObjectProperty>,\n  ): prop is typeof prop & { key: N.Identifier } {\n    return (\n      !prop.computed &&\n      prop.key.type === \"Identifier\" &&\n      (this.isLiteralPropertyName() ||\n        this.match(tt.bracketL) ||\n        this.match(tt.star))\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyDefinition\n  parsePropertyDefinition(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectMember | N.SpreadElement {\n    let decorators = [];\n    if (this.match(tt.at)) {\n      if (this.hasPlugin(\"decorators\")) {\n        this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n      }\n\n      // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n      // the call to this.parseDecorator\n      while (this.match(tt.at)) {\n        decorators.push(this.parseDecorator());\n      }\n    }\n\n    const prop = this.startNode<N.ObjectProperty>();\n    let isAsync = false;\n    let isAccessor = false;\n    let startLoc;\n\n    if (this.match(tt.ellipsis)) {\n      if (decorators.length) this.unexpected();\n      return this.parseSpread();\n    }\n\n    if (decorators.length) {\n      prop.decorators = decorators;\n      decorators = [];\n    }\n\n    prop.method = false;\n\n    if (refExpressionErrors) {\n      startLoc = this.state.startLoc;\n    }\n\n    let isGenerator = this.eat(tt.star);\n    this.parsePropertyNamePrefixOperator(prop);\n    const containsEsc = this.state.containsEsc;\n    this.parsePropertyName(prop, refExpressionErrors);\n\n    if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n      const { key } = prop;\n      const keyName = key.name;\n      // https://tc39.es/ecma262/#prod-AsyncMethod\n      // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod\n      if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n        isAsync = true;\n        this.resetPreviousNodeTrailingComments(key);\n        isGenerator = this.eat(tt.star);\n        this.parsePropertyName(prop);\n      }\n      // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] }\n      // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] }\n      if (keyName === \"get\" || keyName === \"set\") {\n        isAccessor = true;\n        this.resetPreviousNodeTrailingComments(key);\n        prop.kind = keyName;\n        if (this.match(tt.star)) {\n          isGenerator = true;\n          this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n            kind: keyName,\n          });\n          this.next();\n        }\n        this.parsePropertyName(prop);\n      }\n    }\n\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      isGenerator,\n      isAsync,\n      false /* isPattern */,\n      isAccessor,\n      refExpressionErrors,\n    );\n  }\n\n  getGetterSetterExpectedParamCount(\n    method: N.ObjectMethod | N.ClassMethod,\n  ): number {\n    return method.kind === \"get\" ? 0 : 1;\n  }\n\n  // This exists so we can override within the ESTree plugin\n  getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n    return method.params;\n  }\n\n  // get methods aren't allowed to have any parameters\n  // set methods must have exactly 1 parameter which is not a rest parameter\n  checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n    const paramCount = this.getGetterSetterExpectedParamCount(method);\n    const params = this.getObjectOrClassMethodParams(method);\n\n    if (params.length !== paramCount) {\n      this.raise(\n        method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity,\n        method,\n      );\n    }\n\n    if (\n      method.kind === \"set\" &&\n      params[params.length - 1]?.type === \"RestElement\"\n    ) {\n      this.raise(Errors.BadSetterRestParameter, method);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-MethodDefinition\n  parseObjectMethod(\n    this: Parser,\n    prop: Undone<N.ObjectMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n  ): N.ObjectMethod | undefined | null {\n    if (isAccessor) {\n      // isAccessor implies isAsync: false, isPattern: false, isGenerator: false\n      const finishedProp = this.parseMethod(\n        prop,\n        // This _should_ be false, but with error recovery, we allow it to be\n        // set for informational purposes\n        isGenerator,\n        /* isAsync */ false,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n      this.checkGetterSetterParams(finishedProp);\n      return finishedProp;\n    }\n\n    if (isAsync || isGenerator || this.match(tt.parenL)) {\n      if (isPattern) this.unexpected();\n      prop.kind = \"method\";\n      prop.method = true;\n      return this.parseMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n    }\n  }\n\n  // if `isPattern` is true, parse https://tc39.es/ecma262/#prod-BindingProperty\n  // else https://tc39.es/ecma262/#prod-PropertyDefinition\n  parseObjectProperty(\n    this: Parser,\n    prop: Undone<N.ObjectProperty>,\n    startLoc: Position | undefined | null,\n    isPattern: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectProperty | undefined | null {\n    prop.shorthand = false;\n\n    if (this.eat(tt.colon)) {\n      prop.value = isPattern\n        ? this.parseMaybeDefault(this.state.startLoc)\n        : this.parseMaybeAssignAllowIn(refExpressionErrors);\n\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n\n    if (!prop.computed && prop.key.type === \"Identifier\") {\n      // PropertyDefinition:\n      //   IdentifierReference\n      //   CoverInitializedName\n      // Note: `{ eval } = {}` will be checked in `checkLVal` later.\n      this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          cloneIdentifier(prop.key),\n        );\n      } else if (this.match(tt.eq)) {\n        const shorthandAssignLoc = this.state.startLoc;\n        if (refExpressionErrors != null) {\n          if (refExpressionErrors.shorthandAssignLoc === null) {\n            refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n          }\n        } else {\n          this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n        }\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          cloneIdentifier(prop.key),\n        );\n      } else {\n        prop.value = cloneIdentifier(prop.key);\n      }\n      prop.shorthand = true;\n\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n  }\n\n  parseObjPropValue<T extends N.ObjectMember>(\n    this: Parser,\n    prop: Undone<T>,\n    startLoc: Position | undefined | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    const node = (this.parseObjectMethod(\n      prop as Undone<N.ObjectMethod>,\n      isGenerator,\n      isAsync,\n      isPattern,\n      isAccessor,\n    ) ||\n      this.parseObjectProperty(\n        prop as Undone<N.ObjectProperty>,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      )) as T;\n\n    if (!node) this.unexpected();\n\n    return node;\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyName\n  // when refExpressionErrors presents, it will parse private name\n  // and record the position of the first private name\n  parsePropertyName(\n    this: Parser,\n    prop:\n      | Undone<N.ObjectOrClassMember | N.ClassMember>\n      | N.TsNamedTypeElementBase,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void {\n    if (this.eat(tt.bracketL)) {\n      (prop as Undone<N.ObjectOrClassMember>).computed = true;\n      prop.key = this.parseMaybeAssignAllowIn();\n      this.expect(tt.bracketR);\n    } else {\n      // We check if it's valid for it to be a private name when we push it.\n      const { type, value } = this.state;\n      let key;\n      // most un-computed property names are identifiers\n      if (tokenIsKeywordOrIdentifier(type)) {\n        key = this.parseIdentifier(true);\n      } else {\n        switch (type) {\n          case tt.num:\n            key = this.parseNumericLiteral(value);\n            break;\n          case tt.string:\n            key = this.parseStringLiteral(value);\n            break;\n          case tt.bigint:\n            key = this.parseBigIntLiteral(value);\n            break;\n          case tt.privateName: {\n            // the class private key has been handled in parseClassElementName\n            const privateKeyLoc = this.state.startLoc;\n            if (refExpressionErrors != null) {\n              if (refExpressionErrors.privateKeyLoc === null) {\n                refExpressionErrors.privateKeyLoc = privateKeyLoc;\n              }\n            } else {\n              this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n            }\n            key = this.parsePrivateName();\n            break;\n          }\n          default:\n            if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n              key = this.parseDecimalLiteral(value);\n              break;\n            }\n\n            this.unexpected();\n        }\n      }\n      (prop as any).key = key;\n      if (type !== tt.privateName) {\n        // ClassPrivateProperty is never computed, so we don't assign in that case.\n        prop.computed = false;\n      }\n    }\n  }\n\n  // Initialize empty function node.\n\n  initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n    node.id = null;\n    node.generator = false;\n    node.async = isAsync;\n  }\n\n  // Parse object or class method.\n\n  parseMethod<T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod>(\n    this: Parser,\n    node: Undone<T>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowDirectSuper: boolean,\n    type: T[\"type\"],\n    inClassScope: boolean = false,\n  ): T {\n    this.initFunction(node, isAsync);\n    node.generator = isGenerator;\n    this.scope.enter(\n      ScopeFlag.FUNCTION |\n        ScopeFlag.SUPER |\n        (inClassScope ? ScopeFlag.CLASS : 0) |\n        (allowDirectSuper ? ScopeFlag.DIRECT_SUPER : 0),\n    );\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n    this.parseFunctionParams(node, isConstructor);\n    const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n    this.prodParam.exit();\n    this.scope.exit();\n\n    return finishedNode;\n  }\n\n  // parse an array literal or tuple literal\n  // https://tc39.es/ecma262/#prod-ArrayLiteral\n  // https://tc39.es/proposal-record-tuple/#prod-TupleLiteral\n  parseArrayLike(\n    this: Parser,\n    close: TokenType,\n    canBePattern: boolean,\n    isTuple: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ArrayExpression | N.TupleExpression {\n    if (isTuple) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const node = this.startNode<N.ArrayExpression | N.TupleExpression>();\n    this.next();\n    node.elements = this.parseExprList(\n      close,\n      /* allowEmpty */ !isTuple,\n      refExpressionErrors,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return this.finishNode(\n      node,\n      isTuple ? \"TupleExpression\" : \"ArrayExpression\",\n    );\n  }\n\n  // Parse arrow function expression.\n  // If the parameters are provided, they will be converted to an\n  // assignable list.\n  parseArrowExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<N.Expression | N.SpreadElement>\n      | Array<N.Expression | N.RestElement>,\n    isAsync: boolean,\n    trailingCommaLoc?: Position | null,\n  ): N.ArrowFunctionExpression {\n    this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n    let flags = functionFlags(isAsync, false);\n    // ConciseBody[In] :\n    //   [lookahead ≠ {] ExpressionBody[?In, ~Await]\n    //   { FunctionBody[~Yield, ~Await] }\n    if (!this.match(tt.braceL) && this.prodParam.hasIn) {\n      flags |= ParamKind.PARAM_IN;\n    }\n    this.prodParam.enter(flags);\n    this.initFunction(node, isAsync);\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n    if (params) {\n      this.state.maybeInArrowParameters = true;\n      this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n    }\n    this.state.maybeInArrowParameters = false;\n    this.parseFunctionBody(node, true);\n\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return this.finishNode(node, \"ArrowFunctionExpression\");\n  }\n\n  setArrowFunctionParameters(\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<N.Expression | N.SpreadElement>\n      | Array<N.Expression | N.RestElement>,\n    trailingCommaLoc?: Position | null,\n  ): void {\n    this.toAssignableList(params, trailingCommaLoc, false);\n    node.params = params as (N.Pattern | N.TSParameterProperty)[];\n  }\n\n  parseFunctionBodyAndFinish<\n    T extends\n      | N.Function\n      | N.TSDeclareMethod\n      | N.TSDeclareFunction\n      | N.ClassPrivateMethod,\n  >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n    // @ts-expect-error (node is not bodiless if we get here)\n    this.parseFunctionBody(node, false, isMethod);\n    return this.finishNode(node, type);\n  }\n\n  // Parse function body and check parameters.\n  parseFunctionBody(\n    this: Parser,\n    node: Undone<N.Function>,\n    allowExpression?: boolean | null,\n    isMethod: boolean = false,\n  ): void {\n    const isExpression = allowExpression && !this.match(tt.braceL);\n    this.expressionScope.enter(newExpressionScope());\n\n    if (isExpression) {\n      // https://tc39.es/ecma262/#prod-ExpressionBody\n      (node as Undone<N.ArrowFunctionExpression>).body =\n        this.parseMaybeAssign();\n      this.checkParams(node, false, allowExpression, false);\n    } else {\n      const oldStrict = this.state.strict;\n      // Start a new scope with regard to labels\n      // flag (restore them to their old value afterwards).\n      const oldLabels = this.state.labels;\n      this.state.labels = [];\n\n      // FunctionBody[Yield, Await]:\n      //   StatementList[?Yield, ?Await, +Return] opt\n      this.prodParam.enter(\n        this.prodParam.currentFlags() | ParamKind.PARAM_RETURN,\n      );\n      node.body = this.parseBlock(\n        true,\n        false,\n        // Strict mode function checks after we parse the statements in the function body.\n        (hasStrictModeDirective: boolean) => {\n          const nonSimple = !this.isSimpleParamList(node.params);\n\n          if (hasStrictModeDirective && nonSimple) {\n            // This logic is here to align the error location with the ESTree plugin.\n            this.raise(\n              Errors.IllegalLanguageModeDirective,\n              // @ts-expect-error kind may not index node\n              (node.kind === \"method\" || node.kind === \"constructor\") &&\n                // @ts-expect-error key may not index node\n                !!node.key\n                ? // @ts-expect-error node.key has been guarded\n                  node.key.loc.end\n                : node,\n            );\n          }\n\n          const strictModeChanged = !oldStrict && this.state.strict;\n\n          // Add the params to varDeclaredNames to ensure that an error is thrown\n          // if a let/const declaration in the function clashes with one of the params.\n          this.checkParams(\n            node,\n            !this.state.strict && !allowExpression && !isMethod && !nonSimple,\n            allowExpression,\n            strictModeChanged,\n          );\n\n          // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n          if (this.state.strict && node.id) {\n            this.checkIdentifier(\n              node.id,\n              BindingFlag.TYPE_OUTSIDE,\n              strictModeChanged,\n            );\n          }\n        },\n      );\n      this.prodParam.exit();\n      this.state.labels = oldLabels;\n    }\n    this.expressionScope.exit();\n  }\n\n  isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n    return node.type === \"Identifier\";\n  }\n\n  isSimpleParamList(\n    params: ReadonlyArray<N.Pattern | N.TSParameterProperty>,\n  ): boolean {\n    for (let i = 0, len = params.length; i < len; i++) {\n      if (!this.isSimpleParameter(params[i])) return false;\n    }\n    return true;\n  }\n\n  checkParams(\n    node: Undone<N.Function>,\n    allowDuplicates: boolean,\n    isArrowFunction?: boolean | null,\n    strictModeChanged: boolean = true,\n  ): void {\n    const checkClashes = !allowDuplicates && new Set<string>();\n    // We create a fake node with the \"ephemeral\" type `FormalParameters`[1]\n    // since we just store an array of parameters. Perhaps someday we can have\n    // something like class FormalParameters extends Array { ... }, which would\n    // also be helpful when traversing this node.\n    //\n    // 1. https://tc39.es/ecma262/#prod-FormalParameters\n    const formalParameters = { type: \"FormalParameters\" } as const;\n    for (const param of node.params) {\n      this.checkLVal(\n        param,\n        formalParameters,\n        BindingFlag.TYPE_VAR,\n        checkClashes,\n        strictModeChanged,\n      );\n    }\n  }\n\n  // Parses a comma-separated list of expressions, and returns them as\n  // an array. `close` is the token type that ends the list, and\n  // `allowEmpty` can be turned on to allow subsequent commas with\n  // nothing in between them to be parsed as `null` (which is needed\n  // for array literals).\n\n  parseExprList(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    nodeForExtra?: N.Node | null,\n  ): (N.Expression | null)[] {\n    const elts: (N.Expression | null)[] = [];\n    let first = true;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n    }\n    return elts;\n  }\n\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | null;\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: false,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression;\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | N.SpreadElement | N.ArgumentPlaceholder | null {\n    let elt;\n    if (this.match(tt.comma)) {\n      if (!allowEmpty) {\n        this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n          unexpected: \",\",\n        });\n      }\n      elt = null;\n    } else if (this.match(tt.ellipsis)) {\n      const spreadNodeStartLoc = this.state.startLoc;\n\n      elt = this.parseParenItem(\n        this.parseSpread(refExpressionErrors),\n        spreadNodeStartLoc,\n      );\n    } else if (this.match(tt.question)) {\n      this.expectPlugin(\"partialApplication\");\n      if (!allowPlaceholder) {\n        this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n      }\n      const node = this.startNode<N.ArgumentPlaceholder>();\n      this.next();\n      elt = this.finishNode(node, \"ArgumentPlaceholder\");\n    } else {\n      elt = this.parseMaybeAssignAllowIn(\n        refExpressionErrors,\n        this.parseParenItem,\n      );\n    }\n    return elt;\n  }\n\n  // Parse the next token as an identifier. If `liberal` is true (used\n  // when parsing properties), it will also convert keywords into\n  // identifiers.\n  // This shouldn't be used to parse the keywords of meta properties, since they\n  // are not identifiers and cannot contain escape sequences.\n\n  parseIdentifier(liberal?: boolean): N.Identifier {\n    const node = this.startNode<N.Identifier>();\n    const name = this.parseIdentifierName(liberal);\n\n    return this.createIdentifier(node, name);\n  }\n\n  createIdentifier(\n    node: Omit<N.Identifier, \"type\">,\n    name: string,\n  ): N.Identifier {\n    node.name = name;\n    node.loc.identifierName = name;\n\n    return this.finishNode(node, \"Identifier\");\n  }\n\n  parseIdentifierName(liberal?: boolean): string {\n    let name: string;\n\n    const { startLoc, type } = this.state;\n\n    if (tokenIsKeywordOrIdentifier(type)) {\n      name = this.state.value;\n    } else {\n      this.unexpected();\n    }\n\n    const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n    if (liberal) {\n      // If the current token is not used as a keyword, set its type to \"tt.name\".\n      // This will prevent this.next() from throwing about unexpected escapes.\n      if (tokenIsKeyword) {\n        this.replaceToken(tt.name);\n      }\n    } else {\n      this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n    }\n\n    this.next();\n\n    return name;\n  }\n\n  checkReservedWord(\n    word: string,\n    startLoc: Position,\n    checkKeywords: boolean,\n    isBinding: boolean,\n  ): void {\n    // Every JavaScript reserved word is 10 characters or less.\n    if (word.length > 10) {\n      return;\n    }\n    // Most identifiers are not reservedWord-like, they don't need special\n    // treatments afterward, which very likely ends up throwing errors\n    if (!canBeReservedWord(word)) {\n      return;\n    }\n\n    if (checkKeywords && isKeyword(word)) {\n      this.raise(Errors.UnexpectedKeyword, startLoc, {\n        keyword: word,\n      });\n      return;\n    }\n\n    const reservedTest = !this.state.strict\n      ? isReservedWord\n      : isBinding\n        ? isStrictBindReservedWord\n        : isStrictReservedWord;\n\n    if (reservedTest(word, this.inModule)) {\n      this.raise(Errors.UnexpectedReservedWord, startLoc, {\n        reservedWord: word,\n      });\n      return;\n    } else if (word === \"yield\") {\n      if (this.prodParam.hasYield) {\n        this.raise(Errors.YieldBindingIdentifier, startLoc);\n        return;\n      }\n    } else if (word === \"await\") {\n      if (this.prodParam.hasAwait) {\n        this.raise(Errors.AwaitBindingIdentifier, startLoc);\n        return;\n      }\n\n      if (this.scope.inStaticBlock) {\n        this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n        return;\n      }\n\n      this.expressionScope.recordAsyncArrowParametersError(startLoc);\n    } else if (word === \"arguments\") {\n      if (this.scope.inClassAndNotInNonArrowFunction) {\n        this.raise(Errors.ArgumentsInClass, startLoc);\n        return;\n      }\n    }\n  }\n\n  // Returns wether `await` is allowed or not in this context, and if it is\n  // keeps track of it to determine whether a module uses top-level await.\n  recordAwaitIfAllowed(): boolean {\n    const isAwaitAllowed =\n      this.prodParam.hasAwait ||\n      (this.optionFlags & OptionFlags.AllowAwaitOutsideFunction &&\n        !this.scope.inFunction);\n\n    if (isAwaitAllowed && !this.scope.inFunction) {\n      this.state.hasTopLevelAwait = true;\n    }\n\n    return isAwaitAllowed;\n  }\n\n  // Parses await expression inside async function.\n\n  parseAwait(this: Parser, startLoc: Position): N.AwaitExpression {\n    const node = this.startNodeAt<N.AwaitExpression>(startLoc);\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.AwaitExpressionFormalParameter,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n\n    if (this.eat(tt.star)) {\n      this.raise(Errors.ObsoleteAwaitStar, node);\n    }\n\n    if (\n      !this.scope.inFunction &&\n      !(this.optionFlags & OptionFlags.AllowAwaitOutsideFunction)\n    ) {\n      if (this.isAmbiguousAwait()) {\n        this.ambiguousScriptDifferentAst = true;\n      } else {\n        this.sawUnambiguousESM = true;\n      }\n    }\n\n    if (!this.state.soloAwait) {\n      node.argument = this.parseMaybeUnary(null, true);\n    }\n\n    return this.finishNode(node, \"AwaitExpression\");\n  }\n\n  isAmbiguousAwait(): boolean {\n    if (this.hasPrecedingLineBreak()) return true;\n    const { type } = this.state;\n    return (\n      // All the following expressions are ambiguous:\n      //   await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``, await of []\n      type === tt.plusMin ||\n      type === tt.parenL ||\n      type === tt.bracketL ||\n      tokenIsTemplate(type) ||\n      (type === tt._of && !this.state.containsEsc) ||\n      // Sometimes the tokenizer generates tt.slash for regexps, and this is\n      // handler by parseExprAtom\n      type === tt.regexp ||\n      type === tt.slash ||\n      // This code could be parsed both as a modulo operator or as an intrinsic:\n      //   await %x(0)\n      (this.hasPlugin(\"v8intrinsic\") && type === tt.modulo)\n    );\n  }\n\n  // Parses yield expression inside generator.\n\n  parseYield(this: Parser): N.YieldExpression {\n    const node = this.startNode<N.YieldExpression>();\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.YieldInParameter,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n\n    this.next();\n    let delegating = false;\n    let argument: N.Expression | null = null;\n    if (!this.hasPrecedingLineBreak()) {\n      delegating = this.eat(tt.star);\n      switch (this.state.type) {\n        case tt.semi:\n        case tt.eof:\n        case tt.braceR:\n        case tt.parenR:\n        case tt.bracketR:\n        case tt.braceBarR:\n        case tt.colon:\n        case tt.comma:\n          // The above is the complete set of tokens that can\n          // follow an AssignmentExpression, and none of them\n          // can start an AssignmentExpression\n          if (!delegating) break;\n        /* fallthrough */\n        default:\n          argument = this.parseMaybeAssign();\n      }\n    }\n    node.delegate = delegating;\n    node.argument = argument;\n    return this.finishNode(node, \"YieldExpression\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportCall\n  parseImportCall(\n    this: Parser,\n    node: Undone<N.ImportExpression>,\n  ): N.ImportExpression {\n    this.next(); // eat tt.parenL\n    node.source = this.parseMaybeAssignAllowIn();\n    node.options = null;\n    if (this.eat(tt.comma)) {\n      if (!this.match(tt.parenR)) {\n        node.options = this.parseMaybeAssignAllowIn();\n\n        if (this.eat(tt.comma) && !this.match(tt.parenR)) {\n          // keep consuming arguments, to then throw ImportCallArity\n          // instead of \"expected )\"\n          do {\n            this.parseMaybeAssignAllowIn();\n          } while (this.eat(tt.comma) && !this.match(tt.parenR));\n\n          this.raise(Errors.ImportCallArity, node);\n        }\n      }\n    }\n    this.expect(tt.parenR);\n    return this.finishNode(node, \"ImportExpression\");\n  }\n\n  // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n  // of the infix operator `|>`.\n\n  checkPipelineAtInfixOperator(left: N.Expression, leftStartLoc: Position) {\n    // @ts-expect-error Remove this in Babel 8\n    if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n      if (left.type === \"SequenceExpression\") {\n        // Ensure that the pipeline head is not a comma-delimited\n        // sequence expression.\n        this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);\n      }\n    }\n  }\n\n  parseSmartPipelineBodyInStyle(childExpr: N.Expression, startLoc: Position) {\n    if (this.isSimpleReference(childExpr)) {\n      const bodyNode = this.startNodeAt<N.PipelineBareFunction>(startLoc);\n      bodyNode.callee = childExpr;\n      return this.finishNode(bodyNode, \"PipelineBareFunction\");\n    } else {\n      const bodyNode = this.startNodeAt<N.PipelineTopicExpression>(startLoc);\n      this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n      bodyNode.expression = childExpr;\n      return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n    }\n  }\n\n  isSimpleReference(expression: N.Expression): boolean {\n    switch (expression.type) {\n      case \"MemberExpression\":\n        return (\n          !expression.computed && this.isSimpleReference(expression.object)\n        );\n      case \"Identifier\":\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  // This helper method is to be called immediately\n  // after a topic-style smart-mix pipe body is parsed.\n  // The `startLoc` is the starting position of the pipe body.\n\n  checkSmartPipeTopicBodyEarlyErrors(startLoc: Position): void {\n    // If the following token is invalidly `=>`, then throw a human-friendly error\n    // instead of something like 'Unexpected token, expected \";\"'.\n    // For example, `x => x |> y => #` (assuming `#` is the topic reference)\n    // groups into `x => (x |> y) => #`,\n    // and `(x |> y) => #` is an invalid arrow function.\n    // This is because smart-mix `|>` has tighter precedence than `=>`.\n    if (this.match(tt.arrow)) {\n      throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);\n    }\n\n    // A topic-style smart-mix pipe body must use the topic reference at least once.\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      this.raise(Errors.PipelineTopicUnused, startLoc);\n    }\n  }\n\n  // Enable topic references from outer contexts within Hack-style pipe bodies.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references.\n  // The function then calls a callback, then resets the parser\n  // to the old topic-context state that it had before the function was called.\n\n  withTopicBindingContext<T>(callback: () => T): T {\n    const outerContextTopicState = this.state.topicContext;\n    this.state.topicContext = {\n      // Enable the use of the primary topic reference.\n      maxNumOfResolvableTopics: 1,\n      // Hide the use of any topic references from outer contexts.\n      maxTopicIndex: null,\n    };\n\n    try {\n      return callback();\n    } finally {\n      this.state.topicContext = outerContextTopicState;\n    }\n  }\n\n  // This helper method is used only with the deprecated smart-mix pipe proposal.\n  // Disables topic references from outer contexts within syntax constructs\n  // such as the bodies of iteration statements.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references with the smartPipelines plugin. They then run a\n  // callback, then they reset the parser to the old topic-context state that it\n  // had before the function was called.\n\n  withSmartMixTopicForbiddingContext<T>(callback: () => T): T {\n    // @ts-expect-error Remove this in Babel 8\n    if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n      // Reset the parser’s topic context only if the smart-mix pipe proposal is active.\n      const outerContextTopicState = this.state.topicContext;\n      this.state.topicContext = {\n        // Disable the use of the primary topic reference.\n        maxNumOfResolvableTopics: 0,\n        // Hide the use of any topic references from outer contexts.\n        maxTopicIndex: null,\n      };\n\n      try {\n        return callback();\n      } finally {\n        this.state.topicContext = outerContextTopicState;\n      }\n    } else {\n      // If the pipe proposal is \"minimal\", \"fsharp\", or \"hack\",\n      // or if no pipe proposal is active,\n      // then the callback result is returned\n      // without touching any extra parser state.\n      return callback();\n    }\n  }\n\n  withSoloAwaitPermittingContext<T>(callback: () => T): T {\n    const outerContextSoloAwaitState = this.state.soloAwait;\n    this.state.soloAwait = true;\n\n    try {\n      return callback();\n    } finally {\n      this.state.soloAwait = outerContextSoloAwaitState;\n    }\n  }\n\n  allowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToSet = ParamKind.PARAM_IN & ~flags;\n    if (prodParamToSet) {\n      this.prodParam.enter(flags | ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  disallowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToClear = ParamKind.PARAM_IN & flags;\n    if (prodParamToClear) {\n      this.prodParam.enter(flags & ~ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  // Register the use of a topic reference within the current\n  // topic-binding context.\n  registerTopicReference(): void {\n    this.state.topicContext.maxTopicIndex = 0;\n  }\n\n  topicReferenceIsAllowedInCurrentContext(): boolean {\n    return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n  }\n\n  topicReferenceWasUsedInCurrentContext(): boolean {\n    return (\n      this.state.topicContext.maxTopicIndex != null &&\n      this.state.topicContext.maxTopicIndex >= 0\n    );\n  }\n\n  parseFSharpPipelineBody(this: Parser, prec: number): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    this.state.potentialArrowAt = this.state.start;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = true;\n\n    const ret = this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      prec,\n    );\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return ret;\n  }\n\n  // https://github.com/tc39/proposal-js-module-blocks\n  parseModuleExpression(this: Parser): N.ModuleExpression {\n    this.expectPlugin(\"moduleBlocks\");\n    const node = this.startNode<N.ModuleExpression>();\n    this.next(); // eat \"module\"\n    if (!this.match(tt.braceL)) {\n      this.unexpected(null, tt.braceL);\n    }\n    // start program node immediately after `{`\n    const program = this.startNodeAt<N.Program>(this.state.endLoc);\n    this.next(); // eat `{`\n\n    const revertScopes = this.initializeScopes(/** inModule */ true);\n    this.enterInitialScopes();\n\n    try {\n      node.body = this.parseProgram(program, tt.braceR, \"module\");\n    } finally {\n      revertScopes();\n    }\n    return this.finishNode<N.ModuleExpression>(node, \"ModuleExpression\");\n  }\n\n  // Used in Flow plugin\n  parsePropertyNamePrefixOperator(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    prop: Undone<N.ObjectOrClassMember | N.ClassMember>,\n  ): void {}\n}\n","import type * as N from \"../types.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLoop,\n  tokenIsTemplate,\n  tt,\n  type TokenType,\n  getExportedToken,\n} from \"../tokenizer/types.ts\";\nimport ExpressionParser from \"./expression.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../util/identifier.ts\";\nimport * as charCodes from \"charcodes\";\nimport {\n  ScopeFlag,\n  ClassElementType,\n  BindingFlag,\n} from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newExpressionScope,\n  newParameterDeclarationScope,\n} from \"../util/expression-scope.ts\";\nimport { OptionFlags, type SourceType } from \"../options.ts\";\nimport { Token } from \"../tokenizer/index.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../util/location.ts\";\nimport { cloneStringLiteral, cloneIdentifier, type Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\nimport { ParseBindingListFlags } from \"./lval.ts\";\nimport { LoopLabelKind } from \"../tokenizer/state.ts\";\n\nconst loopLabel = { kind: LoopLabelKind.Loop } as const,\n  switchLabel = { kind: LoopLabelKind.Switch } as const;\n\nexport const enum ParseFunctionFlag {\n  Expression = 0b0000,\n  Declaration = 0b0001,\n  HangingDeclaration = 0b0010,\n  NullableId = 0b0100,\n  Async = 0b1000,\n}\n\nexport const enum ParseStatementFlag {\n  StatementOnly = 0b0000,\n  AllowImportExport = 0b0001,\n  AllowDeclaration = 0b0010,\n  AllowFunctionDeclaration = 0b0100,\n  AllowLabeledFunction = 0b1000,\n}\n\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\n\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\n/**\n * Convert tokens for backward Babel 7 compat.\n * tt.privateName => tt.hash + tt.name\n * tt.templateTail => tt.backquote/tt.braceR + tt.template + tt.backquote\n * tt.templateNonTail => tt.backquote/tt.braceR + tt.template + tt.dollarBraceL\n * For performance reasons this routine mutates `tokens`, it is okay\n * here since we execute `parseTopLevel` once for every file.\n */\nfunction babel7CompatTokens(\n  tokens: (Token | N.Comment)[],\n  input: string,\n  startIndex: number,\n) {\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i];\n    const { type } = token;\n    if (typeof type === \"number\") {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (type === tt.privateName) {\n          const { loc, start, value, end } = token;\n          const hashEndPos = start + 1;\n          const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          tokens.splice(\n            i,\n            1,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.hash),\n              value: \"#\",\n              start: start,\n              end: hashEndPos,\n              startLoc: loc.start,\n              endLoc: hashEndLoc,\n            }),\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.name),\n              value: value,\n              start: hashEndPos,\n              end: end,\n              startLoc: hashEndLoc,\n              endLoc: loc.end,\n            }),\n          );\n          i++;\n          continue;\n        }\n\n        if (tokenIsTemplate(type)) {\n          const { loc, start, value, end } = token;\n          const backquoteEnd = start + 1;\n          const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          let startToken;\n          if (input.charCodeAt(start - startIndex) === charCodes.graveAccent) {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          } else {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.braceR),\n              value: \"}\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          }\n          let templateValue,\n            templateElementEnd,\n            templateElementEndLoc,\n            endToken;\n          if (type === tt.templateTail) {\n            // ends with '`'\n            templateElementEnd = end - 1;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n            templateValue = value === null ? null : value.slice(1, -1);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          } else {\n            // ends with `${`\n            templateElementEnd = end - 2;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n            templateValue = value === null ? null : value.slice(1, -2);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.dollarBraceL),\n              value: \"${\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          }\n          tokens.splice(\n            i,\n            1,\n            startToken,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.template),\n              value: templateValue,\n              start: backquoteEnd,\n              end: templateElementEnd,\n              startLoc: backquoteEndLoc,\n              endLoc: templateElementEndLoc,\n            }),\n            endToken,\n          );\n          i += 2;\n          continue;\n        }\n      }\n      // @ts-expect-error: we manipulate `token` for performance reasons\n      token.type = getExportedToken(type);\n    }\n  }\n  return tokens;\n}\nexport default abstract class StatementParser extends ExpressionParser {\n  // ### Statement parsing\n\n  // Parse a program. Initializes the parser, reads any number of\n  // statements, and wraps them in a Program node.  Optionally takes a\n  // `program` argument.  If present, the statements will be appended\n  // to its body instead of creating a new node.\n\n  parseTopLevel(\n    this: Parser,\n    file: Undone<N.File>,\n    program: Undone<N.Program>,\n  ): N.File {\n    file.program = this.parseProgram(program);\n    file.comments = this.comments;\n\n    if (this.optionFlags & OptionFlags.Tokens) {\n      file.tokens = babel7CompatTokens(\n        this.tokens,\n        this.input,\n        this.startIndex,\n      );\n    }\n\n    return this.finishNode(file, \"File\");\n  }\n\n  parseProgram(\n    this: Parser,\n    program: Undone<N.Program>,\n    end: TokenType = tt.eof,\n    sourceType: SourceType = this.options.sourceType,\n  ): N.Program {\n    program.sourceType = sourceType;\n    program.interpreter = this.parseInterpreterDirective();\n    this.parseBlockBody(program, true, true, end);\n    if (this.inModule) {\n      if (\n        !(this.optionFlags & OptionFlags.AllowUndeclaredExports) &&\n        this.scope.undefinedExports.size > 0\n      ) {\n        for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n          this.raise(Errors.ModuleExportUndefined, at, { localName });\n        }\n      }\n      this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n    }\n    let finishedProgram: N.Program;\n    if (end === tt.eof) {\n      // finish at eof for top level program\n      finishedProgram = this.finishNode(program, \"Program\");\n    } else {\n      // finish immediately before the end token\n      finishedProgram = this.finishNodeAt(\n        program,\n        \"Program\",\n        createPositionWithColumnOffset(this.state.startLoc, -1),\n      );\n    }\n    return finishedProgram;\n  }\n\n  /**\n   * cast a Statement to a Directive. This method mutates input statement.\n   */\n  stmtToDirective(stmt: N.Statement): N.Directive {\n    const directive = stmt as any;\n    directive.type = \"Directive\";\n    directive.value = directive.expression;\n    delete directive.expression;\n\n    const directiveLiteral = directive.value;\n    const expressionValue = directiveLiteral.value;\n    const raw = this.input.slice(\n      this.offsetToSourcePos(directiveLiteral.start),\n      this.offsetToSourcePos(directiveLiteral.end),\n    );\n    const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n    this.addExtra(directiveLiteral, \"raw\", raw);\n    this.addExtra(directiveLiteral, \"rawValue\", val);\n    this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n\n    directiveLiteral.type = \"DirectiveLiteral\";\n\n    return directive;\n  }\n\n  parseInterpreterDirective(): N.InterpreterDirective | null {\n    if (!this.match(tt.interpreterDirective)) {\n      return null;\n    }\n\n    const node = this.startNode<N.InterpreterDirective>();\n    node.value = this.state.value;\n    this.next();\n    return this.finishNode(node, \"InterpreterDirective\");\n  }\n\n  isLet(): boolean {\n    if (!this.isContextual(tt._let)) {\n      return false;\n    }\n    return this.hasFollowingBindingAtom();\n  }\n\n  chStartsBindingIdentifier(ch: number, pos: number) {\n    if (isIdentifierStart(ch)) {\n      keywordRelationalOperator.lastIndex = pos;\n      if (keywordRelationalOperator.test(this.input)) {\n        // We have seen `in` or `instanceof` so far, now check if the identifier\n        // ends here\n        const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n        if (!isIdentifierChar(endCh) && endCh !== charCodes.backslash) {\n          return false;\n        }\n      }\n      return true;\n    } else if (ch === charCodes.backslash) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  chStartsBindingPattern(ch: number) {\n    return (\n      ch === charCodes.leftSquareBracket || ch === charCodes.leftCurlyBrace\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `let` and declaration is allowed, check if it\n   * starts a variable declaration so that it should be interpreted as a keyword.\n   */\n  hasFollowingBindingAtom(): boolean {\n    const next = this.nextTokenStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      this.chStartsBindingPattern(nextCh) ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `using` and declaration is allowed, check if it\n   * starts a variable declaration in the same line so that it should be interpreted as\n   * a keyword.\n   */\n  hasInLineFollowingBindingIdentifierOrBrace(): boolean {\n    const next = this.nextTokenInLineStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      nextCh === charCodes.leftCurlyBrace ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  startsUsingForOf(): boolean {\n    const { type, containsEsc } = this.lookahead();\n    if (type === tt._of && !containsEsc) {\n      // `using of` must start a for-lhs-of statement\n      return false;\n    } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) {\n      this.expectPlugin(\"explicitResourceManagement\");\n      return true;\n    }\n  }\n\n  startsAwaitUsing(): boolean {\n    let next = this.nextTokenInLineStart();\n    if (this.isUnparsedContextual(next, \"using\")) {\n      next = this.nextTokenInLineStartSince(next + 5);\n      const nextCh = this.codePointAtPos(next);\n      if (this.chStartsBindingIdentifier(nextCh, next)) {\n        this.expectPlugin(\"explicitResourceManagement\");\n        return true;\n      }\n    }\n    return false;\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleItem\n  parseModuleItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowImportExport |\n        ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        // This function is actually also used to parse StatementItems,\n        // which with Annex B enabled allows labeled functions.\n        ParseStatementFlag.AllowLabeledFunction,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-StatementListItem\n  parseStatementListItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        (!this.options.annexB || this.state.strict\n          ? 0\n          : ParseStatementFlag.AllowLabeledFunction),\n    );\n  }\n\n  parseStatementOrSloppyAnnexBFunctionDeclaration(\n    this: Parser,\n    allowLabeledFunction: boolean = false,\n  ) {\n    let flags: ParseStatementFlag = ParseStatementFlag.StatementOnly;\n    if (this.options.annexB && !this.state.strict) {\n      flags |= ParseStatementFlag.AllowFunctionDeclaration;\n      if (allowLabeledFunction) {\n        flags |= ParseStatementFlag.AllowLabeledFunction;\n      }\n    }\n    return this.parseStatementLike(flags);\n  }\n\n  // Parse a single statement.\n  //\n  // If expecting a statement and finding a slash operator, parse a\n  // regular expression literal. This is to handle cases like\n  // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n  // does not help.\n  // https://tc39.es/ecma262/#prod-Statement\n  parseStatement(this: Parser) {\n    return this.parseStatementLike(ParseStatementFlag.StatementOnly);\n  }\n\n  // ImportDeclaration and ExportDeclaration are also handled here so we can throw recoverable errors\n  // when they are not at the top level\n  parseStatementLike(\n    this: Parser,\n    flags: ParseStatementFlag,\n  ):\n    | N.Statement\n    | N.Declaration\n    | N.ImportDeclaration\n    | N.ExportDefaultDeclaration\n    | N.ExportNamedDeclaration\n    | N.ExportAllDeclaration {\n    let decorators: N.Decorator[] | null = null;\n\n    if (this.match(tt.at)) {\n      decorators = this.parseDecorators(true);\n    }\n    return this.parseStatementContent(flags, decorators);\n  }\n\n  parseStatementContent(\n    this: Parser,\n    flags: ParseStatementFlag,\n    decorators?: N.Decorator[] | null,\n  ): N.Statement {\n    const startType = this.state.type;\n    const node = this.startNode();\n    const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);\n    const allowFunctionDeclaration = !!(\n      flags & ParseStatementFlag.AllowFunctionDeclaration\n    );\n    const topLevel = flags & ParseStatementFlag.AllowImportExport;\n\n    // Most types of statements are recognized by the keyword they\n    // start with. Many are trivial to parse, some require a bit of\n    // complexity.\n\n    switch (startType) {\n      case tt._break:\n        return this.parseBreakContinueStatement(node, /* isBreak */ true);\n      case tt._continue:\n        return this.parseBreakContinueStatement(node, /* isBreak */ false);\n      case tt._debugger:\n        return this.parseDebuggerStatement(node as Undone<N.DebuggerStatement>);\n      case tt._do:\n        return this.parseDoWhileStatement(node as Undone<N.DoWhileStatement>);\n      case tt._for:\n        return this.parseForStatement(node as Undone<N.ForStatement>);\n      case tt._function:\n        if (this.lookaheadCharCode() === charCodes.dot) break;\n        if (!allowFunctionDeclaration) {\n          this.raise(\n            this.state.strict\n              ? Errors.StrictFunction\n              : this.options.annexB\n                ? Errors.SloppyFunctionAnnexB\n                : Errors.SloppyFunction,\n            this.state.startLoc,\n          );\n        }\n        return this.parseFunctionStatement(\n          node as Undone<N.FunctionDeclaration>,\n          false,\n          !allowDeclaration && allowFunctionDeclaration,\n        );\n      case tt._class:\n        if (!allowDeclaration) this.unexpected();\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            node as Undone<N.ClassDeclaration>,\n          ),\n          true,\n        );\n\n      case tt._if:\n        return this.parseIfStatement(node as Undone<N.IfStatement>);\n      case tt._return:\n        return this.parseReturnStatement(node as Undone<N.ReturnStatement>);\n      case tt._switch:\n        return this.parseSwitchStatement(node as Undone<N.SwitchStatement>);\n      case tt._throw:\n        return this.parseThrowStatement(node as Undone<N.ThrowStatement>);\n      case tt._try:\n        return this.parseTryStatement(node as Undone<N.TryStatement>);\n\n      case tt._await:\n        // [+Await] await [no LineTerminator here] using [no LineTerminator here] BindingList[+Using]\n        if (!this.state.containsEsc && this.startsAwaitUsing()) {\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n          } else if (!allowDeclaration) {\n            this.raise(Errors.UnexpectedLexicalDeclaration, node);\n          }\n          this.next(); // eat 'await'\n          return this.parseVarStatement(\n            node as Undone<N.VariableDeclaration>,\n            \"await using\",\n          );\n        }\n        break;\n      case tt._using:\n        // using [no LineTerminator here] BindingList[+Using]\n        if (\n          this.state.containsEsc ||\n          !this.hasInLineFollowingBindingIdentifierOrBrace()\n        ) {\n          break;\n        }\n        this.expectPlugin(\"explicitResourceManagement\");\n        if (!this.scope.inModule && this.scope.inTopLevel) {\n          this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n        } else if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          \"using\",\n        );\n      case tt._let: {\n        if (this.state.containsEsc) {\n          break;\n        }\n        // `let [` is an explicit negative lookahead for\n        // ExpressionStatement, so special-case it first.\n        const next = this.nextTokenStart();\n        const nextCh = this.codePointAtPos(next);\n        if (nextCh !== charCodes.leftSquareBracket) {\n          if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n          if (\n            !this.chStartsBindingIdentifier(nextCh, next) &&\n            nextCh !== charCodes.leftCurlyBrace\n          ) {\n            break;\n          }\n        }\n      }\n      // fall through\n      case tt._const: {\n        if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n      }\n      // fall through\n      case tt._var: {\n        const kind = this.state.value;\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          kind,\n        );\n      }\n      case tt._while:\n        return this.parseWhileStatement(node as Undone<N.WhileStatement>);\n      case tt._with:\n        return this.parseWithStatement(node as Undone<N.WithStatement>);\n      case tt.braceL:\n        return this.parseBlock();\n      case tt.semi:\n        return this.parseEmptyStatement(node as Undone<N.EmptyStatement>);\n      case tt._import: {\n        const nextTokenCharCode = this.lookaheadCharCode();\n        if (\n          nextTokenCharCode === charCodes.leftParenthesis || // import()\n          nextTokenCharCode === charCodes.dot // import.meta\n        ) {\n          break;\n        }\n      }\n      // fall through\n      case tt._export: {\n        if (\n          !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n          !topLevel\n        ) {\n          this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n        }\n\n        this.next(); // eat `import`/`export`\n\n        let result;\n        if (startType === tt._import) {\n          result = this.parseImport(node as Undone<N.ImportDeclaration>);\n\n          if (\n            result.type === \"ImportDeclaration\" &&\n            (!result.importKind || result.importKind === \"value\")\n          ) {\n            this.sawUnambiguousESM = true;\n          }\n        } else {\n          result = this.parseExport(\n            node as Undone<\n              | N.ExportAllDeclaration\n              | N.ExportDefaultDeclaration\n              | N.ExportDefaultDeclaration\n            >,\n            decorators,\n          );\n\n          if (\n            (result.type === \"ExportNamedDeclaration\" &&\n              (!result.exportKind || result.exportKind === \"value\")) ||\n            (result.type === \"ExportAllDeclaration\" &&\n              (!result.exportKind || result.exportKind === \"value\")) ||\n            result.type === \"ExportDefaultDeclaration\"\n          ) {\n            this.sawUnambiguousESM = true;\n          }\n        }\n\n        this.assertModuleNodeAllowed(result);\n\n        return result;\n      }\n\n      default: {\n        if (this.isAsyncFunction()) {\n          if (!allowDeclaration) {\n            this.raise(\n              Errors.AsyncFunctionInSingleStatementContext,\n              this.state.startLoc,\n            );\n          }\n          this.next(); // eat 'async'\n          return this.parseFunctionStatement(\n            node as Undone<N.FunctionDeclaration>,\n            true,\n            !allowDeclaration && allowFunctionDeclaration,\n          );\n        }\n      }\n    }\n\n    // If the statement does not start with a statement keyword or a\n    // brace, it's an ExpressionStatement or LabeledStatement. We\n    // simply start parsing an expression, and afterwards, if the\n    // next token is a colon and the expression was a simple\n    // Identifier node, we switch to interpreting it as a label.\n    const maybeName = this.state.value;\n    const expr = this.parseExpression();\n\n    if (\n      tokenIsIdentifier(startType) &&\n      expr.type === \"Identifier\" &&\n      this.eat(tt.colon)\n    ) {\n      return this.parseLabeledStatement(\n        node as Undone<N.LabeledStatement>,\n        maybeName,\n        expr,\n        flags,\n      );\n    } else {\n      return this.parseExpressionStatement(\n        node as Undone<N.ExpressionStatement>,\n        expr,\n        decorators,\n      );\n    }\n  }\n\n  assertModuleNodeAllowed(node: N.Node): void {\n    if (\n      !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n      !this.inModule\n    ) {\n      this.raise(Errors.ImportOutsideModule, node);\n    }\n  }\n\n  decoratorsEnabledBeforeExport(): boolean {\n    if (this.hasPlugin(\"decorators-legacy\")) return true;\n    return (\n      this.hasPlugin(\"decorators\") &&\n      this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== false\n    );\n  }\n\n  // Attach the decorators to the given class.\n  // NOTE: This method changes the .start location of the class, and thus\n  // can affect comment attachment. Calling it before or after finalizing\n  // the class node (and thus finalizing its comments) changes how comments\n  // before the `class` keyword or before the final .start location of the\n  // class are attached.\n  maybeTakeDecorators<T extends Undone<N.Class>>(\n    maybeDecorators: N.Decorator[] | null,\n    classNode: T,\n    exportNode?: Undone<N.ExportDefaultDeclaration | N.ExportNamedDeclaration>,\n  ): T {\n    if (maybeDecorators) {\n      if (classNode.decorators?.length) {\n        // Note: decorators attachment is only attempred multiple times\n        // when the class is part of an export declaration.\n        if (\n          typeof this.getPluginOption(\n            \"decorators\",\n            \"decoratorsBeforeExport\",\n          ) !== \"boolean\"\n        ) {\n          // If `decoratorsBeforeExport` was set to `true` or `false`, we\n          // already threw an error about decorators not being in a valid\n          // position.\n          this.raise(\n            Errors.DecoratorsBeforeAfterExport,\n            classNode.decorators[0],\n          );\n        }\n        classNode.decorators.unshift(...maybeDecorators);\n      } else {\n        classNode.decorators = maybeDecorators;\n      }\n      this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n      if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n    }\n    return classNode;\n  }\n\n  canHaveLeadingDecorator(): boolean {\n    return this.match(tt._class);\n  }\n\n  parseDecorators(this: Parser, allowExport?: boolean): N.Decorator[] {\n    const decorators = [];\n    do {\n      decorators.push(this.parseDecorator());\n    } while (this.match(tt.at));\n\n    if (this.match(tt._export)) {\n      if (!allowExport) {\n        this.unexpected();\n      }\n\n      if (!this.decoratorsEnabledBeforeExport()) {\n        this.raise(Errors.DecoratorExportClass, this.state.startLoc);\n      }\n    } else if (!this.canHaveLeadingDecorator()) {\n      throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n    }\n\n    return decorators;\n  }\n\n  parseDecorator(this: Parser): N.Decorator {\n    this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n    const node = this.startNode<N.Decorator>();\n    this.next();\n\n    if (this.hasPlugin(\"decorators\")) {\n      const startLoc = this.state.startLoc;\n      let expr: N.Expression;\n\n      if (this.match(tt.parenL)) {\n        const startLoc = this.state.startLoc;\n        this.next(); // eat '('\n        expr = this.parseExpression();\n        this.expect(tt.parenR);\n        expr = this.wrapParenthesis(startLoc, expr);\n\n        const paramsStartLoc = this.state.startLoc;\n        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n        if (\n          this.getPluginOption(\"decorators\", \"allowCallParenthesized\") ===\n            false &&\n          node.expression !== expr\n        ) {\n          this.raise(\n            Errors.DecoratorArgumentsOutsideParentheses,\n            paramsStartLoc,\n          );\n        }\n      } else {\n        expr = this.parseIdentifier(false);\n\n        while (this.eat(tt.dot)) {\n          const node = this.startNodeAt<N.MemberExpression>(startLoc);\n          node.object = expr;\n          if (this.match(tt.privateName)) {\n            this.classScope.usePrivateName(\n              this.state.value,\n              this.state.startLoc,\n            );\n            node.property = this.parsePrivateName();\n          } else {\n            node.property = this.parseIdentifier(true);\n          }\n          node.computed = false;\n          expr = this.finishNode(node, \"MemberExpression\");\n        }\n\n        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n      }\n    } else {\n      node.expression = this.parseExprSubscripts();\n    }\n    return this.finishNode(node, \"Decorator\");\n  }\n\n  parseMaybeDecoratorArguments(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n  ): N.Expression {\n    if (this.eat(tt.parenL)) {\n      const node = this.startNodeAt<N.CallExpression>(startLoc);\n      node.callee = expr;\n      node.arguments = this.parseCallExpressionArguments(tt.parenR);\n      this.toReferencedList(node.arguments);\n      return this.finishNode(node, \"CallExpression\");\n    }\n\n    return expr;\n  }\n\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: true,\n  ): N.BreakStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: false,\n  ): N.ContinueStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ): N.BreakStatement | N.ContinueStatement {\n    this.next();\n\n    if (this.isLineTerminator()) {\n      node.label = null;\n    } else {\n      node.label = this.parseIdentifier();\n      this.semicolon();\n    }\n\n    this.verifyBreakContinue(node, isBreak);\n\n    return this.finishNode(\n      node,\n      isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n    );\n  }\n\n  verifyBreakContinue(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ) {\n    let i;\n    for (i = 0; i < this.state.labels.length; ++i) {\n      const lab = this.state.labels[i];\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === LoopLabelKind.Loop)) {\n          break;\n        }\n        if (node.label && isBreak) break;\n      }\n    }\n    if (i === this.state.labels.length) {\n      const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n      this.raise(Errors.IllegalBreakContinue, node, { type });\n    }\n  }\n\n  parseDebuggerStatement(\n    node: Undone<N.DebuggerStatement>,\n  ): N.DebuggerStatement {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\");\n  }\n\n  parseHeaderExpression(this: Parser): N.Expression {\n    this.expect(tt.parenL);\n    const val = this.parseExpression();\n    this.expect(tt.parenR);\n    return val;\n  }\n\n  // https://tc39.es/ecma262/#prod-DoWhileStatement\n  parseDoWhileStatement(\n    this: Parser,\n    node: Undone<N.DoWhileStatement>,\n  ): N.DoWhileStatement {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body's body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body's body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    this.expect(tt._while);\n    node.test = this.parseHeaderExpression();\n    this.eat(tt.semi);\n    return this.finishNode(node, \"DoWhileStatement\");\n  }\n\n  // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n  // loop is non-trivial. Basically, we have to parse the init `var`\n  // statement or expression, disallowing the `in` operator (see\n  // the second parameter to `parseExpression`), and then check\n  // whether the next token is `in` or `of`. When there is no init\n  // part (semicolon immediately after the opening parenthesis), it\n  // is a regular `for` loop.\n\n  parseForStatement(\n    this: Parser,\n    node: Undone<N.ForStatement | N.ForInOf>,\n  ): N.ForLike {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    let awaitAt = null;\n\n    if (this.isContextual(tt._await) && this.recordAwaitIfAllowed()) {\n      awaitAt = this.state.startLoc;\n      this.next();\n    }\n    this.scope.enter(ScopeFlag.OTHER);\n    this.expect(tt.parenL);\n\n    if (this.match(tt.semi)) {\n      if (awaitAt !== null) {\n        this.unexpected(awaitAt);\n      }\n      return this.parseFor(node as Undone<N.ForStatement>, null);\n    }\n\n    const startsWithLet = this.isContextual(tt._let);\n    {\n      const startsWithAwaitUsing =\n        this.isContextual(tt._await) && this.startsAwaitUsing();\n      const starsWithUsingDeclaration =\n        startsWithAwaitUsing ||\n        (this.isContextual(tt._using) && this.startsUsingForOf());\n      const isLetOrUsing =\n        (startsWithLet && this.hasFollowingBindingAtom()) ||\n        starsWithUsingDeclaration;\n\n      if (this.match(tt._var) || this.match(tt._const) || isLetOrUsing) {\n        const initNode = this.startNode<N.VariableDeclaration>();\n        let kind;\n        if (startsWithAwaitUsing) {\n          kind = \"await using\";\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n          }\n          this.next(); // eat 'await'\n        } else {\n          kind = this.state.value;\n        }\n        this.next();\n        this.parseVar(initNode, true, kind);\n        const init = this.finishNode(initNode, \"VariableDeclaration\");\n\n        const isForIn = this.match(tt._in);\n        if (isForIn && starsWithUsingDeclaration) {\n          this.raise(Errors.ForInUsing, init);\n        }\n        if (\n          (isForIn || this.isContextual(tt._of)) &&\n          init.declarations.length === 1\n        ) {\n          return this.parseForIn(node as Undone<N.ForInOf>, init, awaitAt);\n        }\n        if (awaitAt !== null) {\n          this.unexpected(awaitAt);\n        }\n        return this.parseFor(node as Undone<N.ForStatement>, init);\n      }\n    }\n\n    // Check whether the first token is possibly a contextual keyword, so that\n    // we can forbid `for (async of` if this turns out to be a for-of loop.\n    const startsWithAsync = this.isContextual(tt._async);\n\n    const refExpressionErrors = new ExpressionErrors();\n    const init = this.parseExpression(true, refExpressionErrors);\n    const isForOf = this.isContextual(tt._of);\n    if (isForOf) {\n      // Check for leading tokens that are forbidden in for-of loops:\n      if (startsWithLet) {\n        this.raise(Errors.ForOfLet, init);\n      }\n\n      if (\n        // `for await (async of []);` is allowed.\n        awaitAt === null &&\n        startsWithAsync &&\n        init.type === \"Identifier\"\n      ) {\n        // This catches the case where the `async` in `for (async of` was\n        // parsed as an identifier. If it was parsed as the start of an async\n        // arrow function (e.g. `for (async of => {} of []);`), the LVal check\n        // further down will raise a more appropriate error.\n        this.raise(Errors.ForOfAsync, init);\n      }\n    }\n    if (isForOf || this.match(tt._in)) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.toAssignable(init, /* isLHS */ true);\n      const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n      this.checkLVal(init, { type });\n      return this.parseForIn(\n        node as Undone<N.ForInStatement | N.ForOfStatement>,\n        // @ts-expect-error init has been transformed to an assignable\n        init,\n        awaitAt,\n      );\n    } else {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n    if (awaitAt !== null) {\n      this.unexpected(awaitAt);\n    }\n    return this.parseFor(node as Undone<N.ForStatement>, init);\n  }\n\n  // https://tc39.es/ecma262/#prod-HoistableDeclaration\n  parseFunctionStatement(\n    this: Parser,\n    node: Undone<N.FunctionDeclaration>,\n    isAsync: boolean,\n    isHangingDeclaration: boolean,\n  ): N.FunctionDeclaration {\n    this.next(); // eat 'function'\n    return this.parseFunction(\n      node,\n      ParseFunctionFlag.Declaration |\n        (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) |\n        (isAsync ? ParseFunctionFlag.Async : 0),\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-IfStatement\n  parseIfStatement(this: Parser, node: Undone<N.IfStatement>) {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    // Annex B.3.3\n    // https://tc39.es/ecma262/#sec-functiondeclarations-in-ifstatement-statement-clauses\n    node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n    node.alternate = this.eat(tt._else)\n      ? this.parseStatementOrSloppyAnnexBFunctionDeclaration()\n      : null;\n    return this.finishNode(node, \"IfStatement\");\n  }\n\n  parseReturnStatement(this: Parser, node: Undone<N.ReturnStatement>) {\n    if (\n      !this.prodParam.hasReturn &&\n      !(this.optionFlags & OptionFlags.AllowReturnOutsideFunction)\n    ) {\n      this.raise(Errors.IllegalReturn, this.state.startLoc);\n    }\n\n    this.next();\n\n    // In `return` (and `break`/`continue`), the keywords with\n    // optional arguments, we eagerly look for a semicolon or the\n    // possibility to insert one.\n\n    if (this.isLineTerminator()) {\n      node.argument = null;\n    } else {\n      node.argument = this.parseExpression();\n      this.semicolon();\n    }\n\n    return this.finishNode(node, \"ReturnStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-SwitchStatement\n  parseSwitchStatement(this: Parser, node: Undone<N.SwitchStatement>) {\n    this.next();\n    node.discriminant = this.parseHeaderExpression();\n    const cases: N.SwitchStatement[\"cases\"] = (node.cases = []);\n    this.expect(tt.braceL);\n    this.state.labels.push(switchLabel);\n    this.scope.enter(ScopeFlag.OTHER);\n\n    // Statements under must be grouped (by label) in SwitchCase\n    // nodes. `cur` is used to keep the node that we are currently\n    // adding statements to.\n\n    let cur;\n    for (let sawDefault; !this.match(tt.braceR); ) {\n      if (this.match(tt._case) || this.match(tt._default)) {\n        const isCase = this.match(tt._case);\n        if (cur) this.finishNode(cur, \"SwitchCase\");\n        // @ts-expect-error Fixme\n        cases.push((cur = this.startNode<N.SwitchCase>()));\n        cur.consequent = [];\n        this.next();\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) {\n            this.raise(\n              Errors.MultipleDefaultsInSwitch,\n              this.state.lastTokStartLoc,\n            );\n          }\n          sawDefault = true;\n          cur.test = null;\n        }\n        this.expect(tt.colon);\n      } else {\n        if (cur) {\n          cur.consequent.push(this.parseStatementListItem());\n        } else {\n          this.unexpected();\n        }\n      }\n    }\n    this.scope.exit();\n    if (cur) this.finishNode(cur, \"SwitchCase\");\n    this.next(); // Closing brace\n    this.state.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\");\n  }\n\n  parseThrowStatement(this: Parser, node: Undone<N.ThrowStatement>) {\n    this.next();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);\n    }\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\");\n  }\n\n  parseCatchClauseParam(this: Parser): N.Pattern {\n    const param = this.parseBindingAtom();\n\n    this.scope.enter(\n      this.options.annexB && param.type === \"Identifier\"\n        ? ScopeFlag.SIMPLE_CATCH\n        : 0,\n    );\n    this.checkLVal(\n      param,\n      { type: \"CatchClause\" },\n      BindingFlag.TYPE_CATCH_PARAM,\n    );\n\n    return param;\n  }\n\n  parseTryStatement(\n    this: Parser,\n    node: Undone<N.TryStatement>,\n  ): N.TryStatement {\n    this.next();\n\n    node.block = this.parseBlock();\n    node.handler = null;\n\n    if (this.match(tt._catch)) {\n      const clause = this.startNode<N.CatchClause>();\n      this.next();\n      if (this.match(tt.parenL)) {\n        this.expect(tt.parenL);\n        clause.param = this.parseCatchClauseParam();\n        this.expect(tt.parenR);\n      } else {\n        clause.param = null;\n        this.scope.enter(ScopeFlag.OTHER);\n      }\n\n      // Parse the catch clause's body.\n      clause.body =\n        // For the smartPipelines plugin: Disable topic references from outer\n        // contexts within the catch clause's body.\n        this.withSmartMixTopicForbiddingContext(() =>\n          // Parse the catch clause's body.\n          this.parseBlock(false, false),\n        );\n\n      this.scope.exit();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n\n    node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n    if (!node.handler && !node.finalizer) {\n      this.raise(Errors.NoCatchOrFinally, node);\n    }\n\n    return this.finishNode(node, \"TryStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-VariableStatement\n  // https://tc39.es/ecma262/#prod-LexicalDeclaration\n  parseVarStatement(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): N.VariableDeclaration {\n    this.next();\n    this.parseVar(node, false, kind, allowMissingInitializer);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\");\n  }\n\n  // https://tc39.es/ecma262/#prod-WhileStatement\n  parseWhileStatement(\n    this: Parser,\n    node: Undone<N.WhileStatement>,\n  ): N.WhileStatement {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"WhileStatement\");\n  }\n\n  parseWithStatement(\n    this: Parser,\n    node: Undone<N.WithStatement>,\n  ): N.WithStatement {\n    if (this.state.strict) {\n      this.raise(Errors.StrictWith, this.state.startLoc);\n    }\n    this.next();\n    node.object = this.parseHeaderExpression();\n\n    // Parse the statement body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the with statement's body.\n      // They are permitted in function default-parameter expressions, which are\n      // part of the outer context, outside of the with statement's body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the statement body.\n        this.parseStatement(),\n      );\n\n    return this.finishNode(node, \"WithStatement\");\n  }\n\n  parseEmptyStatement(node: Undone<N.EmptyStatement>): N.EmptyStatement {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-LabelledStatement\n  parseLabeledStatement(\n    this: Parser,\n    node: Undone<N.LabeledStatement>,\n    maybeName: string,\n    expr: N.Identifier,\n    flags: ParseStatementFlag,\n  ): N.LabeledStatement {\n    for (const label of this.state.labels) {\n      if (label.name === maybeName) {\n        this.raise(Errors.LabelRedeclaration, expr, {\n          labelName: maybeName,\n        });\n      }\n    }\n\n    const kind = tokenIsLoop(this.state.type)\n      ? LoopLabelKind.Loop\n      : this.match(tt._switch)\n        ? LoopLabelKind.Switch\n        : null;\n    for (let i = this.state.labels.length - 1; i >= 0; i--) {\n      const label = this.state.labels[i];\n      if (label.statementStart === node.start) {\n        label.statementStart = this.sourceToOffsetPos(this.state.start);\n        label.kind = kind;\n      } else {\n        break;\n      }\n    }\n\n    this.state.labels.push({\n      name: maybeName,\n      kind: kind,\n      statementStart: this.sourceToOffsetPos(this.state.start),\n    });\n    // https://tc39.es/ecma262/#prod-LabelledItem\n    node.body =\n      flags & ParseStatementFlag.AllowLabeledFunction\n        ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true)\n        : this.parseStatement();\n\n    this.state.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\");\n  }\n\n  parseExpressionStatement(\n    node: Undone<N.ExpressionStatement>,\n    expr: N.Expression,\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    decorators: N.Decorator[] | null,\n  ) {\n    node.expression = expr;\n    this.semicolon();\n    return this.finishNode(node, \"ExpressionStatement\");\n  }\n\n  // Parse a semicolon-enclosed block of statements, handling `\"use\n  // strict\"` declarations when `allowDirectives` is true (used for\n  // function bodies).\n\n  parseBlock(\n    this: Parser,\n    allowDirectives: boolean = false,\n    createNewLexicalScope: boolean = true,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement {\n    const node = this.startNode<N.BlockStatement>();\n    if (allowDirectives) {\n      this.state.strictErrors.clear();\n    }\n    this.expect(tt.braceL);\n    if (createNewLexicalScope) {\n      this.scope.enter(ScopeFlag.OTHER);\n    }\n    this.parseBlockBody(\n      node,\n      allowDirectives,\n      false,\n      tt.braceR,\n      afterBlockParse,\n    );\n    if (createNewLexicalScope) {\n      this.scope.exit();\n    }\n    return this.finishNode(node, \"BlockStatement\");\n  }\n\n  isValidDirective(stmt: N.Statement): boolean {\n    return (\n      stmt.type === \"ExpressionStatement\" &&\n      stmt.expression.type === \"StringLiteral\" &&\n      !stmt.expression.extra.parenthesized\n    );\n  }\n\n  parseBlockBody(\n    this: Parser,\n    node: Undone<N.BlockStatementLike>,\n    allowDirectives: boolean | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const body: N.BlockStatementLike[\"body\"] = (node.body = []);\n    const directives: N.BlockStatementLike[\"directives\"] = (node.directives =\n      []);\n    this.parseBlockOrModuleBlockBody(\n      body,\n      allowDirectives ? directives : undefined,\n      topLevel,\n      end,\n      afterBlockParse,\n    );\n  }\n\n  // Undefined directives means that directives are not allowed.\n  // https://tc39.es/ecma262/#prod-Block\n  // https://tc39.es/ecma262/#prod-ModuleBody\n  parseBlockOrModuleBlockBody(\n    this: Parser,\n    body: N.Statement[],\n    directives: N.Directive[] | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const oldStrict = this.state.strict;\n    let hasStrictModeDirective = false;\n    let parsedNonDirective = false;\n\n    while (!this.match(end)) {\n      const stmt = topLevel\n        ? this.parseModuleItem()\n        : this.parseStatementListItem();\n\n      if (directives && !parsedNonDirective) {\n        if (this.isValidDirective(stmt)) {\n          const directive = this.stmtToDirective(stmt);\n          directives.push(directive);\n\n          if (\n            !hasStrictModeDirective &&\n            directive.value.value === \"use strict\"\n          ) {\n            hasStrictModeDirective = true;\n            this.setStrict(true);\n          }\n\n          continue;\n        }\n        parsedNonDirective = true;\n        // clear strict errors since the strict mode will not change within the block\n        this.state.strictErrors.clear();\n      }\n      body.push(stmt);\n    }\n\n    afterBlockParse?.call(this, hasStrictModeDirective);\n\n    if (!oldStrict) {\n      this.setStrict(false);\n    }\n\n    this.next();\n  }\n\n  // Parse a regular `for` loop. The disambiguation code in\n  // `parseStatement` will already have parsed the init statement or\n  // expression.\n\n  parseFor(\n    this: Parser,\n    node: Undone<N.ForStatement>,\n    init?: N.VariableDeclaration | N.Expression | null,\n  ): N.ForStatement {\n    node.init = init;\n    this.semicolon(/* allowAsi */ false);\n    node.test = this.match(tt.semi) ? null : this.parseExpression();\n    this.semicolon(/* allowAsi */ false);\n    node.update = this.match(tt.parenR) ? null : this.parseExpression();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"ForStatement\");\n  }\n\n  // Parse a `for`/`in` and `for`/`of` loop, which are almost\n  // same from parser's perspective.\n\n  parseForIn(\n    this: Parser,\n    node: Undone<N.ForInOf>,\n    init: N.VariableDeclaration | N.AssignmentPattern,\n    awaitAt?: Position | null,\n  ): N.ForInOf {\n    const isForIn = this.match(tt._in);\n    this.next();\n\n    if (isForIn) {\n      if (awaitAt !== null) this.unexpected(awaitAt);\n    } else {\n      node.await = awaitAt !== null;\n    }\n\n    if (\n      init.type === \"VariableDeclaration\" &&\n      init.declarations[0].init != null &&\n      (!isForIn ||\n        !this.options.annexB ||\n        this.state.strict ||\n        init.kind !== \"var\" ||\n        init.declarations[0].id.type !== \"Identifier\")\n    ) {\n      this.raise(Errors.ForInOfLoopInitializer, init, {\n        type: isForIn ? \"ForInStatement\" : \"ForOfStatement\",\n      });\n    }\n\n    if (init.type === \"AssignmentPattern\") {\n      this.raise(Errors.InvalidLhs, init, {\n        ancestor: { type: \"ForStatement\" },\n      });\n    }\n\n    node.left = init;\n    node.right = isForIn\n      ? this.parseExpression()\n      : this.parseMaybeAssignAllowIn();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n  }\n\n  // Parse a list of variable declarations.\n\n  parseVar(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    isFor: boolean,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): Undone<N.VariableDeclaration> {\n    const declarations: N.VariableDeclarator[] = (node.declarations = []);\n    node.kind = kind;\n    for (;;) {\n      const decl = this.startNode<N.VariableDeclarator>();\n      this.parseVarId(decl, kind);\n      decl.init = !this.eat(tt.eq)\n        ? null\n        : isFor\n          ? this.parseMaybeAssignDisallowIn()\n          : this.parseMaybeAssignAllowIn();\n\n      if (decl.init === null && !allowMissingInitializer) {\n        if (\n          decl.id.type !== \"Identifier\" &&\n          !(isFor && (this.match(tt._in) || this.isContextual(tt._of)))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            {\n              kind: \"destructuring\",\n            },\n          );\n        } else if (\n          (kind === \"const\" || kind === \"using\" || kind === \"await using\") &&\n          !(this.match(tt._in) || this.isContextual(tt._of))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            { kind },\n          );\n        }\n      }\n      declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(tt.comma)) break;\n    }\n    return node;\n  }\n\n  parseVarId(\n    this: Parser,\n    decl: Undone<N.VariableDeclarator>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  ): void {\n    const id = this.parseBindingAtom();\n    if (kind === \"using\" || kind === \"await using\") {\n      if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n        this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);\n      }\n    }\n    this.checkLVal(\n      id,\n      { type: \"VariableDeclarator\" },\n      kind === \"var\" ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL,\n    );\n    decl.id = id;\n  }\n\n  // https://tc39.es/ecma262/#prod-AsyncFunctionExpression\n  parseAsyncFunctionExpression(\n    this: Parser,\n    node: Undone<N.FunctionExpression>,\n  ): N.FunctionExpression {\n    return this.parseFunction(node, ParseFunctionFlag.Async);\n  }\n\n  // Parse a function declaration or expression (depending on the\n  // ParseFunctionFlag.Declaration flag).\n\n  parseFunction<T extends N.NormalFunction>(\n    this: Parser,\n    node: Undone<T>,\n    flags: ParseFunctionFlag = ParseFunctionFlag.Expression,\n  ): T {\n    const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;\n    const isDeclaration = !!(flags & ParseFunctionFlag.Declaration);\n    const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);\n    const isAsync = !!(flags & ParseFunctionFlag.Async);\n\n    this.initFunction(node, isAsync);\n\n    if (this.match(tt.star)) {\n      if (hangingDeclaration) {\n        this.raise(\n          Errors.GeneratorInSingleStatementContext,\n          this.state.startLoc,\n        );\n      }\n      this.next(); // eat *\n      node.generator = true;\n    }\n\n    if (isDeclaration) {\n      node.id = this.parseFunctionId(requireId);\n    }\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    this.state.maybeInArrowParameters = false;\n    this.scope.enter(ScopeFlag.FUNCTION);\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n    if (!isDeclaration) {\n      node.id = this.parseFunctionId();\n    }\n\n    this.parseFunctionParams(node, /* isConstructor */ false);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the function body. They are permitted in function\n    // default-parameter expressions, outside of the function body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the function body.\n      this.parseFunctionBodyAndFinish(\n        node,\n        isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\",\n      );\n    });\n\n    this.prodParam.exit();\n    this.scope.exit();\n\n    if (isDeclaration && !hangingDeclaration) {\n      // We need to register this _after_ parsing the function body\n      // because of TypeScript body-less function declarations,\n      // which shouldn't be added to the scope.\n      this.registerFunctionStatementId(node as T);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return node as T;\n  }\n\n  parseFunctionId(requireId?: boolean): N.Identifier | undefined | null {\n    return requireId || tokenIsIdentifier(this.state.type)\n      ? this.parseIdentifier()\n      : null;\n  }\n\n  parseFunctionParams(\n    this: Parser,\n    node: Undone<N.Function>,\n    isConstructor?: boolean,\n  ): void {\n    this.expect(tt.parenL);\n    this.expressionScope.enter(newParameterDeclarationScope());\n    node.params = this.parseBindingList(\n      tt.parenR,\n      charCodes.rightParenthesis,\n      ParseBindingListFlags.IS_FUNCTION_PARAMS |\n        (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0),\n    );\n\n    this.expressionScope.exit();\n  }\n\n  registerFunctionStatementId(node: N.Function): void {\n    if (!node.id) return;\n\n    // If it is a regular function declaration in sloppy mode, then it is\n    // subject to Annex B semantics (BindingFlag.TYPE_FUNCTION). Otherwise, the binding\n    // mode depends on properties of the current scope (see\n    // treatFunctionsAsVar).\n    this.scope.declareName(\n      node.id.name,\n      !this.options.annexB || this.state.strict || node.generator || node.async\n        ? this.scope.treatFunctionsAsVar\n          ? BindingFlag.TYPE_VAR\n          : BindingFlag.TYPE_LEXICAL\n        : BindingFlag.TYPE_FUNCTION,\n      node.id.loc.start,\n    );\n  }\n\n  // Parse a class declaration or literal (depending on the\n  // `isStatement` parameter).\n\n  parseClass<T extends N.Class>(\n    this: Parser,\n    node: Undone<T>,\n    isStatement: /* T === ClassDeclaration */ boolean,\n    optionalId?: boolean,\n  ): T {\n    this.next(); // 'class'\n\n    // A class definition is always strict mode code.\n    const oldStrict = this.state.strict;\n    this.state.strict = true;\n\n    this.parseClassId(node, isStatement, optionalId);\n    this.parseClassSuper(node);\n    // this.state.strict is restored in parseClassBody\n    node.body = this.parseClassBody(!!node.superClass, oldStrict);\n\n    return this.finishNode(\n      node,\n      isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n    );\n  }\n\n  isClassProperty(): boolean {\n    return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n  }\n\n  isClassMethod(): boolean {\n    return this.match(tt.parenL);\n  }\n\n  nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n    return (\n      (key.type === \"Identifier\" && key.name === \"constructor\") ||\n      (key.type === \"StringLiteral\" && key.value === \"constructor\")\n    );\n  }\n\n  isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n    return (\n      !method.computed && !method.static && this.nameIsConstructor(method.key)\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassBody\n  parseClassBody(\n    this: Parser,\n    hadSuperClass: boolean,\n    oldStrict: boolean,\n  ): N.ClassBody {\n    this.classScope.enter();\n\n    const state: N.ParseClassMemberState = {\n      hadConstructor: false,\n      hadSuperClass,\n    };\n    let decorators: N.Decorator[] = [];\n    const classBody = this.startNode<N.ClassBody>();\n    classBody.body = [];\n\n    this.expect(tt.braceL);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the class body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the contents within the braces.\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.semi)) {\n          if (decorators.length > 0) {\n            throw this.raise(\n              Errors.DecoratorSemicolon,\n              this.state.lastTokEndLoc,\n            );\n          }\n          continue;\n        }\n\n        if (this.match(tt.at)) {\n          decorators.push(this.parseDecorator());\n          continue;\n        }\n\n        const member = this.startNode<N.ClassMember>();\n\n        // steal the decorators if there are any\n        if (decorators.length) {\n          // @ts-expect-error Fixme\n          member.decorators = decorators;\n          this.resetStartLocationFromNode(member, decorators[0]);\n          decorators = [];\n        }\n\n        this.parseClassMember(classBody, member, state);\n\n        if (\n          // @ts-expect-error Fixme\n          member.kind === \"constructor\" &&\n          // @ts-expect-error Fixme\n          member.decorators &&\n          // @ts-expect-error Fixme\n          member.decorators.length > 0\n        ) {\n          this.raise(Errors.DecoratorConstructor, member);\n        }\n      }\n    });\n\n    this.state.strict = oldStrict;\n\n    this.next(); // eat `}`\n\n    if (decorators.length) {\n      throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n    }\n\n    this.classScope.exit();\n\n    return this.finishNode(classBody, \"ClassBody\");\n  }\n\n  // returns true if the current identifier is a method/field name,\n  // false if it is a modifier\n  parseClassMemberFromModifier(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n  ): boolean {\n    const key = this.parseIdentifier(true); // eats the modifier\n\n    if (this.isClassMethod()) {\n      const method: N.ClassMethod = member as any;\n\n      // a method named like the modifier\n      method.kind = \"method\";\n      method.computed = false;\n      method.key = key;\n      method.static = false;\n      this.pushClassMethod(\n        classBody,\n        method,\n        false,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n      return true;\n    } else if (this.isClassProperty()) {\n      const prop: N.ClassProperty = member as any;\n\n      // a property named like the modifier\n      prop.computed = false;\n      prop.key = key;\n      prop.static = false;\n      classBody.body.push(this.parseClassProperty(prop));\n      return true;\n    }\n    this.resetPreviousNodeTrailingComments(key);\n    return false;\n  }\n\n  parseClassMember(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n  ): void {\n    const isStatic = this.isContextual(tt._static);\n\n    if (isStatic) {\n      if (this.parseClassMemberFromModifier(classBody, member)) {\n        // a class element named 'static'\n        return;\n      }\n      if (this.eat(tt.braceL)) {\n        this.parseClassStaticBlock(classBody, member as any as N.StaticBlock);\n        return;\n      }\n    }\n\n    this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n  }\n\n  parseClassMemberWithIsStatic(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n    isStatic: boolean,\n  ) {\n    const publicMethod = member as N.ClassMethod;\n    const privateMethod = member as N.ClassPrivateMethod;\n    const publicProp = member as N.ClassProperty;\n    const privateProp = member as N.ClassPrivateProperty;\n    const accessorProp = member as N.ClassAccessorProperty;\n\n    const method: typeof publicMethod | typeof privateMethod = publicMethod;\n    const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n    member.static = isStatic;\n    this.parsePropertyNamePrefixOperator(member);\n\n    if (this.eat(tt.star)) {\n      // a generator\n      method.kind = \"method\";\n      const isPrivateName = this.match(tt.privateName);\n      this.parseClassElementName(method);\n\n      if (isPrivateName) {\n        // Private generator method\n        this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n        return;\n      }\n\n      if (this.isNonstaticConstructor(publicMethod)) {\n        this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        true,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n\n      return;\n    }\n\n    const isContextual =\n      !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n    const key = this.parseClassElementName(member);\n    const maybeContextualKw = isContextual ? (key as N.Identifier).name : null;\n    const isPrivate = this.isPrivateName(key);\n    const maybeQuestionTokenStartLoc = this.state.startLoc;\n\n    this.parsePostMemberNameModifiers(publicMember);\n\n    if (this.isClassMethod()) {\n      method.kind = \"method\";\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n        return;\n      }\n\n      // a normal method\n      const isConstructor = this.isNonstaticConstructor(publicMethod);\n      let allowsDirectSuper = false;\n      if (isConstructor) {\n        publicMethod.kind = \"constructor\";\n\n        // TypeScript allows multiple overloaded constructor declarations.\n        if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n          this.raise(Errors.DuplicateConstructor, key);\n        }\n        if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n          this.raise(Errors.OverrideOnConstructor, key);\n        }\n        state.hadConstructor = true;\n        allowsDirectSuper = state.hadSuperClass;\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        false,\n        false,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    } else if (this.isClassProperty()) {\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n      // an async method\n      this.resetPreviousNodeTrailingComments(key);\n      const isGenerator = this.eat(tt.star);\n\n      if (publicMember.optional) {\n        this.unexpected(maybeQuestionTokenStartLoc);\n      }\n\n      method.kind = \"method\";\n      // The so-called parsed name would have been \"async\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(method);\n      this.parsePostMemberNameModifiers(publicMember);\n\n      if (isPrivate) {\n        // private async method\n        this.pushClassPrivateMethod(\n          classBody,\n          privateMethod,\n          isGenerator,\n          true,\n        );\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n        }\n\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          isGenerator,\n          true,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n    } else if (\n      (maybeContextualKw === \"get\" || maybeContextualKw === \"set\") &&\n      !(this.match(tt.star) && this.isLineTerminator())\n    ) {\n      // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n      // a getter or setter\n      this.resetPreviousNodeTrailingComments(key);\n      method.kind = maybeContextualKw;\n      // The so-called parsed name would have been \"get/set\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicMethod);\n\n      if (isPrivate) {\n        // private getter/setter\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n        }\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          false,\n          false,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n\n      this.checkGetterSetterParams(publicMethod);\n    } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n      this.expectPlugin(\"decoratorAutoAccessors\");\n      this.resetPreviousNodeTrailingComments(key);\n\n      // The so-called parsed name would have been \"accessor\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicProp);\n      this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n    } else if (this.isLineTerminator()) {\n      // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassElementName\n  parseClassElementName(\n    this: Parser,\n    member: Undone<N.ClassMember>,\n  ): N.Expression | N.Identifier | N.PrivateName {\n    const { type, value } = this.state;\n    if (\n      (type === tt.name || type === tt.string) &&\n      member.static &&\n      value === \"prototype\"\n    ) {\n      this.raise(Errors.StaticPrototype, this.state.startLoc);\n    }\n\n    if (type === tt.privateName) {\n      if (value === \"constructor\") {\n        this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n      }\n      const key = this.parsePrivateName();\n      member.key = key;\n      return key;\n    }\n\n    this.parsePropertyName(member);\n    return member.key;\n  }\n\n  parseClassStaticBlock(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<\n      N.StaticBlock & {\n        decorators?: Array<N.Decorator>;\n      }\n    >,\n  ) {\n    // Start a new lexical scope\n    this.scope.enter(\n      ScopeFlag.CLASS | ScopeFlag.STATIC_BLOCK | ScopeFlag.SUPER,\n    );\n    // Start a new scope with regard to loop labels\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    // ClassStaticBlockStatementList:\n    //   StatementList[~Yield, ~Await, ~Return] opt\n    this.prodParam.enter(ParamKind.PARAM);\n    const body: N.Statement[] = (member.body = []);\n    this.parseBlockOrModuleBlockBody(body, undefined, false, tt.braceR);\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.labels = oldLabels;\n    classBody.body.push(this.finishNode<N.StaticBlock>(member, \"StaticBlock\"));\n    if (member.decorators?.length) {\n      this.raise(Errors.DecoratorStaticBlock, member);\n    }\n  }\n\n  pushClassProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassProperty,\n  ) {\n    if (!prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    classBody.body.push(this.parseClassProperty(prop));\n  }\n\n  pushClassPrivateProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: Undone<N.ClassPrivateProperty>,\n  ) {\n    const node = this.parseClassPrivateProperty(prop);\n    classBody.body.push(node);\n\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key),\n      ClassElementType.OTHER,\n      node.key.loc.start,\n    );\n  }\n\n  pushClassAccessorProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassAccessorProperty,\n    isPrivate: boolean,\n  ) {\n    if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    const node = this.parseClassAccessorProperty(prop);\n    classBody.body.push(node);\n\n    if (isPrivate) {\n      this.classScope.declarePrivateName(\n        this.getPrivateNameSV(node.key as N.PrivateName),\n        ClassElementType.OTHER,\n        node.key.loc.start,\n      );\n    }\n  }\n\n  pushClassMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowsDirectSuper: boolean,\n  ): void {\n    classBody.body.push(\n      this.parseMethod(\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n        \"ClassMethod\",\n        true,\n      ),\n    );\n  }\n\n  pushClassPrivateMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassPrivateMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n  ): void {\n    const node = this.parseMethod(\n      method,\n      isGenerator,\n      isAsync,\n      /* isConstructor */ false,\n      false,\n      \"ClassPrivateMethod\",\n      true,\n    );\n    classBody.body.push(node);\n\n    const kind =\n      node.kind === \"get\"\n        ? node.static\n          ? ClassElementType.STATIC_GETTER\n          : ClassElementType.INSTANCE_GETTER\n        : node.kind === \"set\"\n          ? node.static\n            ? ClassElementType.STATIC_SETTER\n            : ClassElementType.INSTANCE_SETTER\n          : ClassElementType.OTHER;\n    this.declareClassPrivateMethodInScope(node, kind);\n  }\n\n  declareClassPrivateMethodInScope(\n    node: Undone<N.ClassPrivateMethod | N.TSDeclareMethod>,\n    kind: number,\n  ) {\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key as N.PrivateName),\n      kind,\n      node.key.loc.start,\n    );\n  }\n\n  // Overridden in typescript.js\n  parsePostMemberNameModifiers(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    methodOrProp: Undone<N.ClassMethod | N.ClassProperty>,\n  ): void {}\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassPrivateProperty(\n    this: Parser,\n    node: Undone<N.ClassPrivateProperty>,\n  ): N.ClassPrivateProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassPrivateProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassProperty(this: Parser, node: N.ClassProperty): N.ClassProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassProperty\");\n  }\n\n  parseClassAccessorProperty(\n    this: Parser,\n    node: N.ClassAccessorProperty,\n  ): N.ClassAccessorProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassAccessorProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-Initializer\n  parseInitializer(\n    this: Parser,\n    node: Undone<\n      N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty\n    >,\n  ): void {\n    this.scope.enter(ScopeFlag.CLASS | ScopeFlag.SUPER);\n    this.expressionScope.enter(newExpressionScope());\n    this.prodParam.enter(ParamKind.PARAM);\n    node.value = this.eat(tt.eq) ? this.parseMaybeAssignAllowIn() : null;\n    this.expressionScope.exit();\n    this.prodParam.exit();\n    this.scope.exit();\n  }\n\n  parseClassId(\n    node: Undone<N.Class>,\n    isStatement: boolean,\n    optionalId?: boolean | null,\n    bindingType: BindingFlag = BindingFlag.TYPE_CLASS,\n  ): void {\n    if (tokenIsIdentifier(this.state.type)) {\n      node.id = this.parseIdentifier();\n      if (isStatement) {\n        this.declareNameFromIdentifier(node.id, bindingType);\n      }\n    } else {\n      if (optionalId || !isStatement) {\n        node.id = null;\n      } else {\n        throw this.raise(Errors.MissingClassName, this.state.startLoc);\n      }\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassHeritage\n  parseClassSuper(this: Parser, node: Undone<N.Class>): void {\n    node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n  }\n\n  // Parses module export declaration.\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n\n  parseExport(\n    this: Parser,\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    decorators: N.Decorator[] | null,\n  ): N.AnyExport {\n    const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n      node,\n      /* isExport */ true,\n    );\n    const hasDefault = this.maybeParseExportDefaultSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n    const hasStar = parseAfterDefault && this.eatExportStar(node);\n    const hasNamespace =\n      hasStar && this.maybeParseExportNamespaceSpecifier(node);\n    const parseAfterNamespace =\n      parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n    const isFromRequired = hasDefault || hasStar;\n\n    if (hasStar && !hasNamespace) {\n      if (hasDefault) this.unexpected();\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(node, true);\n\n      return this.finishNode(node, \"ExportAllDeclaration\");\n    }\n\n    const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n    if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n      this.unexpected(null, tt.braceL);\n    }\n\n    if (hasNamespace && parseAfterNamespace) {\n      this.unexpected(null, tt._from);\n    }\n\n    let hasDeclaration;\n    if (isFromRequired || hasSpecifiers) {\n      hasDeclaration = false;\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(\n        node as Undone<N.ExportNamedDeclaration>,\n        isFromRequired,\n      );\n    } else {\n      hasDeclaration = this.maybeParseExportDeclaration(\n        node as Undone<N.ExportNamedDeclaration>,\n      );\n    }\n\n    if (isFromRequired || hasSpecifiers || hasDeclaration) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n      this.checkExport(node2, true, false, !!node2.source);\n      if (node2.declaration?.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, node2.declaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      return this.finishNode(node2, \"ExportNamedDeclaration\");\n    }\n\n    if (this.eat(tt._default)) {\n      const node2 = node as Undone<N.ExportDefaultDeclaration>;\n      // export default ...\n      const decl = this.parseExportDefaultExpression();\n      node2.declaration = decl;\n\n      if (decl.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, decl as N.ClassDeclaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n\n      this.checkExport(node2, true, true);\n\n      return this.finishNode(node2, \"ExportDefaultDeclaration\");\n    }\n\n    this.unexpected(null, tt.braceL);\n  }\n\n  eatExportStar(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n    return this.eat(tt.star);\n  }\n\n  maybeParseExportDefaultSpecifier(\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n      // export defaultObj ...\n      this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier?.loc.start);\n      const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n      const specifier = this.startNodeAtNode<N.ExportDefaultSpecifier>(id);\n      specifier.exported = id;\n      (node as Undone<N.ExportNamedDeclaration>).specifiers = [\n        this.finishNode(specifier, \"ExportDefaultSpecifier\"),\n      ];\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamespaceSpecifier(\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.isContextual(tt._as)) {\n      (node as Undone<N.ExportNamedDeclaration>).specifiers ??= [];\n\n      const specifier = this.startNodeAt<N.ExportNamespaceSpecifier>(\n        this.state.lastTokStartLoc,\n      );\n\n      this.next();\n\n      specifier.exported = this.parseModuleExportName();\n      (node as Undone<N.ExportNamedDeclaration>).specifiers.push(\n        this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamedSpecifiers(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.match(tt.braceL)) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!node2.specifiers) node2.specifiers = [];\n      const isTypeExport = node2.exportKind === \"type\";\n      node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n\n      node2.source = null;\n      node2.declaration = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node2.assertions = [];\n      }\n\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportDeclaration(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration>,\n  ): boolean {\n    if (this.shouldParseExportDeclaration()) {\n      node.specifiers = [];\n      node.source = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node.assertions = [];\n      }\n      node.declaration = this.parseExportDeclaration(node);\n      return true;\n    }\n    return false;\n  }\n\n  isAsyncFunction(): boolean {\n    if (!this.isContextual(tt._async)) return false;\n    const next = this.nextTokenInLineStart();\n    return this.isUnparsedContextual(next, \"function\");\n  }\n\n  parseExportDefaultExpression(\n    this: Parser,\n  ): N.ExportDefaultDeclaration[\"declaration\"] {\n    const expr = this.startNode();\n\n    if (this.match(tt._function)) {\n      this.next();\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId,\n      );\n    } else if (this.isAsyncFunction()) {\n      this.next(); // eat 'async'\n      this.next(); // eat 'function'\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration |\n          ParseFunctionFlag.NullableId |\n          ParseFunctionFlag.Async,\n      );\n    }\n\n    if (this.match(tt._class)) {\n      return this.parseClass(expr as Undone<N.ClassExpression>, true, true);\n    }\n\n    if (this.match(tt.at)) {\n      if (\n        this.hasPlugin(\"decorators\") &&\n        this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n      ) {\n        this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n      }\n      return this.parseClass(\n        this.maybeTakeDecorators(\n          this.parseDecorators(false),\n          this.startNode<N.ClassDeclaration>(),\n        ),\n        true,\n        true,\n      );\n    }\n\n    if (this.match(tt._const) || this.match(tt._var) || this.isLet()) {\n      throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n    }\n\n    const res = this.parseMaybeAssignAllowIn();\n    this.semicolon();\n    return res;\n  }\n\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n  parseExportDeclaration(\n    this: Parser,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    node: Undone<N.ExportNamedDeclaration>,\n  ): N.Declaration | undefined | null {\n    if (this.match(tt._class)) {\n      const node = this.parseClass(\n        this.startNode<N.ClassDeclaration>(),\n        true,\n        false,\n      );\n      return node;\n    }\n    return this.parseStatementListItem() as N.Declaration;\n  }\n\n  isExportDefaultSpecifier(): boolean {\n    const { type } = this.state;\n    if (tokenIsIdentifier(type)) {\n      if ((type === tt._async && !this.state.containsEsc) || type === tt._let) {\n        return false;\n      }\n      if (\n        (type === tt._type || type === tt._interface) &&\n        !this.state.containsEsc\n      ) {\n        const { type: nextType } = this.lookahead();\n        // If we see any variable name other than `from` after `type` keyword,\n        // we consider it as flow/typescript type exports\n        // note that this approach may fail on some pedantic cases\n        // export type from = number\n        if (\n          (tokenIsIdentifier(nextType) && nextType !== tt._from) ||\n          nextType === tt.braceL\n        ) {\n          this.expectOnePlugin([\"flow\", \"typescript\"]);\n          return false;\n        }\n      }\n    } else if (!this.match(tt._default)) {\n      return false;\n    }\n\n    const next = this.nextTokenStart();\n    const hasFrom = this.isUnparsedContextual(next, \"from\");\n    if (\n      this.input.charCodeAt(next) === charCodes.comma ||\n      (tokenIsIdentifier(this.state.type) && hasFrom)\n    ) {\n      return true;\n    }\n    // lookahead again when `export default from` is seen\n    if (this.match(tt._default) && hasFrom) {\n      const nextAfterFrom = this.input.charCodeAt(\n        this.nextTokenStartSince(next + 4),\n      );\n      return (\n        nextAfterFrom === charCodes.quotationMark ||\n        nextAfterFrom === charCodes.apostrophe\n      );\n    }\n    return false;\n  }\n\n  parseExportFrom(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    expect?: boolean,\n  ): void {\n    if (this.eatContextual(tt._from)) {\n      node.source = this.parseImportSource();\n      this.checkExport(node);\n      this.maybeParseImportAttributes(node);\n      this.checkJSONModuleImport(node);\n    } else if (expect) {\n      this.unexpected();\n    }\n\n    this.semicolon();\n  }\n\n  shouldParseExportDeclaration(): boolean {\n    const { type } = this.state;\n    if (type === tt.at) {\n      this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n      if (this.hasPlugin(\"decorators\")) {\n        if (\n          this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n        ) {\n          this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n        }\n\n        return true;\n      }\n    }\n\n    if (this.isContextual(tt._using)) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    if (this.isContextual(tt._await) && this.startsAwaitUsing()) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    return (\n      type === tt._var ||\n      type === tt._const ||\n      type === tt._function ||\n      type === tt._class ||\n      this.isLet() ||\n      this.isAsyncFunction()\n    );\n  }\n\n  checkExport(\n    node: Undone<\n      | N.ExportNamedDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportDefaultDeclaration\n    >,\n    checkNames?: boolean,\n    isDefault?: boolean,\n    isFrom?: boolean,\n  ): void {\n    if (checkNames) {\n      // Check for duplicate exports\n      if (isDefault) {\n        // Default exports\n        this.checkDuplicateExports(node, \"default\");\n        if (this.hasPlugin(\"exportDefaultFrom\")) {\n          const declaration = (node as any as N.ExportDefaultDeclaration)\n            .declaration;\n          if (\n            declaration.type === \"Identifier\" &&\n            declaration.name === \"from\" &&\n            declaration.end - declaration.start === 4 && // does not contain escape\n            !declaration.extra?.parenthesized\n          ) {\n            this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n          }\n        }\n        // @ts-expect-error node.specifiers may not exist\n      } else if (node.specifiers?.length) {\n        // Named exports\n        // @ts-expect-error node.specifiers may not exist\n        for (const specifier of node.specifiers) {\n          const { exported } = specifier;\n          const exportName =\n            exported.type === \"Identifier\" ? exported.name : exported.value;\n          this.checkDuplicateExports(specifier, exportName);\n          if (!isFrom && specifier.local) {\n            const { local } = specifier;\n            if (local.type !== \"Identifier\") {\n              this.raise(Errors.ExportBindingIsString, specifier, {\n                localName: local.value,\n                exportName,\n              });\n            } else {\n              // check for keywords used as local names\n              this.checkReservedWord(local.name, local.loc.start, true, false);\n              // check if export is defined\n              this.scope.checkLocalExport(local);\n            }\n          }\n        }\n      } else if ((node as Undone<N.ExportNamedDeclaration>).declaration) {\n        const decl = (node as Undone<N.ExportNamedDeclaration>).declaration;\n        // Exported declarations\n        if (\n          decl.type === \"FunctionDeclaration\" ||\n          decl.type === \"ClassDeclaration\"\n        ) {\n          const { id } = decl;\n          if (!id) throw new Error(\"Assertion failure\");\n\n          this.checkDuplicateExports(node, id.name);\n        } else if (decl.type === \"VariableDeclaration\") {\n          for (const declaration of decl.declarations) {\n            this.checkDeclaration(declaration.id);\n          }\n        }\n      }\n    }\n  }\n\n  checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n    if (node.type === \"Identifier\") {\n      this.checkDuplicateExports(node, node.name);\n    } else if (node.type === \"ObjectPattern\") {\n      for (const prop of node.properties) {\n        this.checkDeclaration(prop);\n      }\n    } else if (node.type === \"ArrayPattern\") {\n      for (const elem of node.elements) {\n        if (elem) {\n          this.checkDeclaration(elem);\n        }\n      }\n    } else if (node.type === \"ObjectProperty\") {\n      // @ts-expect-error migrate to Babel types\n      this.checkDeclaration(node.value);\n    } else if (node.type === \"RestElement\") {\n      this.checkDeclaration(node.argument);\n    } else if (node.type === \"AssignmentPattern\") {\n      this.checkDeclaration(node.left);\n    }\n  }\n\n  checkDuplicateExports(\n    node: Undone<\n      | N.Identifier\n      | N.StringLiteral\n      | N.ExportNamedDeclaration\n      | N.ExportSpecifier\n      | N.ExportDefaultSpecifier\n    >,\n    exportName: string,\n  ): void {\n    if (this.exportedIdentifiers.has(exportName)) {\n      if (exportName === \"default\") {\n        this.raise(Errors.DuplicateDefaultExport, node);\n      } else {\n        this.raise(Errors.DuplicateExport, node, { exportName });\n      }\n    }\n    this.exportedIdentifiers.add(exportName);\n  }\n\n  // Parses a comma-separated list of module exports.\n\n  parseExportSpecifiers(isInTypeExport: boolean): Array<N.ExportSpecifier> {\n    const nodes = [];\n    let first = true;\n\n    // export { x, y as z } [from '...']\n    this.expect(tt.braceL);\n\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      const isString = this.match(tt.string);\n      const node = this.startNode<N.ExportSpecifier>();\n      node.local = this.parseModuleExportName() as N.Identifier;\n      nodes.push(\n        this.parseExportSpecifier(\n          node,\n          isString,\n          isInTypeExport,\n          isMaybeTypeOnly,\n        ),\n      );\n    }\n\n    return nodes;\n  }\n\n  parseExportSpecifier(\n    node: any,\n    isString: boolean,\n    /* eslint-disable @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    isInTypeExport: boolean,\n    isMaybeTypeOnly: boolean,\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n  ): N.ExportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      node.exported = this.parseModuleExportName();\n    } else if (isString) {\n      node.exported = cloneStringLiteral(node.local);\n    } else if (!node.exported) {\n      node.exported = cloneIdentifier(node.local);\n    }\n    return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleExportName\n  parseModuleExportName(): N.StringLiteral | N.Identifier {\n    if (this.match(tt.string)) {\n      const result = this.parseStringLiteral(this.state.value);\n      const surrogate = loneSurrogate.exec(result.value);\n      if (surrogate) {\n        this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n          surrogateCharCode: surrogate[0].charCodeAt(0),\n        });\n      }\n      return result;\n    }\n    return this.parseIdentifier(true);\n  }\n\n  isJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ): boolean {\n    if (node.assertions != null) {\n      return node.assertions.some(({ key, value }) => {\n        return (\n          value.value === \"json\" &&\n          (key.type === \"Identifier\"\n            ? key.name === \"type\"\n            : key.value === \"type\")\n        );\n      });\n    }\n    return false;\n  }\n\n  checkImportReflection(node: Undone<N.ImportDeclaration>) {\n    const { specifiers } = node;\n    const singleBindingType =\n      specifiers.length === 1 ? specifiers[0].type : null;\n\n    if (node.phase === \"source\") {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(\n          Errors.SourcePhaseImportRequiresDefault,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.phase === \"defer\") {\n      if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n        this.raise(\n          Errors.DeferImportRequiresNamespace,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.module) {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);\n      }\n      if (node.assertions?.length > 0) {\n        this.raise(\n          Errors.ImportReflectionHasAssertion,\n          specifiers[0].loc.start,\n        );\n      }\n    }\n  }\n\n  checkJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ) {\n    // @ts-expect-error Fixme: node.type must be undefined because they are undone\n    if (this.isJSONModuleImport(node) && node.type !== \"ExportAllDeclaration\") {\n      // @ts-expect-error specifiers may not index node\n      const { specifiers } = node;\n      if (specifiers != null) {\n        // @ts-expect-error refine specifier types\n        const nonDefaultNamedSpecifier = specifiers.find(specifier => {\n          let imported;\n          if (specifier.type === \"ExportSpecifier\") {\n            imported = specifier.local;\n          } else if (specifier.type === \"ImportSpecifier\") {\n            imported = specifier.imported;\n          }\n          if (imported !== undefined) {\n            return imported.type === \"Identifier\"\n              ? imported.name !== \"default\"\n              : imported.value !== \"default\";\n          }\n        });\n        if (nonDefaultNamedSpecifier !== undefined) {\n          this.raise(\n            Errors.ImportJSONBindingNotDefault,\n            nonDefaultNamedSpecifier.loc.start,\n          );\n        }\n      }\n    }\n  }\n\n  isPotentialImportPhase(isExport: boolean): boolean {\n    if (isExport) return false;\n    return (\n      this.isContextual(tt._source) ||\n      this.isContextual(tt._defer) ||\n      (!process.env.BABEL_8_BREAKING && this.isContextual(tt._module))\n    );\n  }\n\n  applyImportPhase(\n    node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n    isExport: boolean,\n    phase: string | null,\n    loc?: Position,\n  ): void {\n    if (isExport) {\n      if (!process.env.IS_PUBLISH) {\n        if (\n          (!process.env.BABEL_8_BREAKING && phase === \"module\") ||\n          phase === \"source\"\n        ) {\n          throw new Error(\n            `Assertion failure: export declarations do not support the '${phase}' phase.`,\n          );\n        }\n      }\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && phase === \"module\") {\n      this.expectPlugin(\"importReflection\", loc);\n      (node as N.ImportDeclaration).module = true;\n    } else if (this.hasPlugin(\"importReflection\")) {\n      (node as N.ImportDeclaration).module = false;\n    }\n\n    if (phase === \"source\") {\n      this.expectPlugin(\"sourcePhaseImports\", loc);\n      (node as N.ImportDeclaration).phase = \"source\";\n    } else if (phase === \"defer\") {\n      this.expectPlugin(\"deferredImportEvaluation\", loc);\n      (node as N.ImportDeclaration).phase = \"defer\";\n    } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n      (node as N.ImportDeclaration).phase = null;\n    }\n  }\n\n  /*\n   * Parse `source` in `import source x from \"x\"`, disambiguating\n   * `import source from \"x\"` and `import source from from \"x\"`.\n   *\n   * This function might return an identifier representing the `source`\n   * if it eats `source` and then discovers that it was the default import\n   * binding and not the import reflection.\n   *\n   * This function is also used to parse `import type` and `import typeof`\n   * in the TS and Flow plugins, and for parsing `import defer`.\n   */\n  parseMaybeImportPhase(\n    node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    isExport: boolean,\n  ): N.Identifier | null {\n    if (!this.isPotentialImportPhase(isExport)) {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      return null;\n    }\n\n    const phaseIdentifier = this.parseIdentifier(true);\n\n    const { type } = this.state;\n    const isImportPhase = tokenIsKeywordOrIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n\n    if (isImportPhase) {\n      this.resetPreviousIdentifierLeadingComments(phaseIdentifier);\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        phaseIdentifier.name,\n        phaseIdentifier.loc.start,\n      );\n      return null;\n    } else {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      // `<phase>` is a default binding, return it to the main import declaration parser\n      return phaseIdentifier;\n    }\n  }\n\n  isPrecedingIdImportPhase(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    phase: string,\n  ) {\n    const { type } = this.state;\n    return tokenIsIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n  }\n\n  // Parses import declaration.\n  // https://tc39.es/ecma262/#prod-ImportDeclaration\n\n  parseImport(this: Parser, node: Undone<N.ImportDeclaration>): N.AnyImport {\n    if (this.match(tt.string)) {\n      // import '...'\n      return this.parseImportSourceAndAttributes(node);\n    }\n\n    return this.parseImportSpecifiersAndAfter(\n      node,\n      this.parseMaybeImportPhase(node, /* isExport */ false),\n    );\n  }\n\n  parseImportSpecifiersAndAfter(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): N.AnyImport {\n    node.specifiers = [];\n\n    // check if we have a default import like\n    // import React from \"react\";\n    const hasDefault = this.maybeParseDefaultImportSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    /* we are checking if we do not have a default import, then it is obvious that we need named imports\n     * import { get } from \"axios\";\n     * but if we do have a default import\n     * we need to check if we have a comma after that and\n     * that is where this `|| this.eat` condition comes into play\n     */\n    const parseNext = !hasDefault || this.eat(tt.comma);\n    // if we do have to parse the next set of specifiers, we first check for star imports\n    // import React, * from \"react\";\n    const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n    // now we check if we need to parse the next imports\n    // but only if they are not importing * (everything)\n    if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n    this.expectContextual(tt._from);\n\n    return this.parseImportSourceAndAttributes(node);\n  }\n\n  parseImportSourceAndAttributes(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n  ): N.AnyImport {\n    node.specifiers ??= [];\n    node.source = this.parseImportSource();\n    this.maybeParseImportAttributes(node);\n    this.checkImportReflection(node);\n    this.checkJSONModuleImport(node);\n\n    this.semicolon();\n    return this.finishNode(node, \"ImportDeclaration\");\n  }\n\n  parseImportSource(this: Parser): N.StringLiteral {\n    if (!this.match(tt.string)) this.unexpected();\n    return this.parseExprAtom() as N.StringLiteral;\n  }\n\n  parseImportSpecifierLocal<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    node: Undone<N.ImportDeclaration>,\n    specifier: Undone<T>,\n    type: T[\"type\"],\n  ): void {\n    specifier.local = this.parseIdentifier();\n    node.specifiers.push(this.finishImportSpecifier(specifier, type));\n  }\n\n  finishImportSpecifier<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    specifier: Undone<T>,\n    type: T[\"type\"],\n    bindingType: BindingFlag = BindingFlag.TYPE_LEXICAL,\n  ) {\n    this.checkLVal(specifier.local, { type }, bindingType);\n    return this.finishNode(specifier, type);\n  }\n\n  /**\n   * parse assert entries\n   *\n   * @see {@link https://tc39.es/proposal-import-attributes/#prod-WithEntries WithEntries}\n   */\n  parseImportAttributes(): N.ImportAttribute[] {\n    this.expect(tt.braceL);\n\n    const attrs = [];\n    const attrNames = new Set();\n\n    do {\n      if (this.match(tt.braceR)) {\n        break;\n      }\n\n      const node = this.startNode<N.ImportAttribute>();\n\n      // parse AssertionKey : IdentifierName, StringLiteral\n      const keyName = this.state.value;\n      // check if we already have an entry for an attribute\n      // if a duplicate entry is found, throw an error\n      // for now this logic will come into play only when someone declares `type` twice\n      if (attrNames.has(keyName)) {\n        this.raise(\n          Errors.ModuleAttributesWithDuplicateKeys,\n          this.state.startLoc,\n          {\n            key: keyName,\n          },\n        );\n      }\n      attrNames.add(keyName);\n      if (this.match(tt.string)) {\n        node.key = this.parseStringLiteral(keyName);\n      } else {\n        node.key = this.parseIdentifier(true);\n      }\n      this.expect(tt.colon);\n\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    this.expect(tt.braceR);\n\n    return attrs;\n  }\n\n  /**\n   * parse module attributes\n   * @deprecated It will be removed in Babel 8\n   */\n  parseModuleAttributes() {\n    const attrs: N.ImportAttribute[] = [];\n    const attributes = new Set();\n    do {\n      const node = this.startNode<N.ImportAttribute>();\n      node.key = this.parseIdentifier(true);\n\n      if (node.key.name !== \"type\") {\n        this.raise(Errors.ModuleAttributeDifferentFromType, node.key);\n      }\n\n      if (attributes.has(node.key.name)) {\n        this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {\n          key: node.key.name,\n        });\n      }\n      attributes.add(node.key.name);\n      this.expect(tt.colon);\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    return attrs;\n  }\n\n  maybeParseImportAttributes(\n    node: Undone<\n      N.ImportDeclaration | N.ExportNamedDeclaration | N.ExportAllDeclaration\n    >,\n  ) {\n    let attributes: N.ImportAttribute[];\n    if (!process.env.BABEL_8_BREAKING) {\n      // eslint-disable-next-line no-var\n      var useWith = false;\n    }\n\n    // https://tc39.es/proposal-import-attributes/#prod-WithClause\n    if (this.match(tt._with)) {\n      if (\n        this.hasPrecedingLineBreak() &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      ) {\n        // This will be parsed as a with statement, and we will throw a\n        // better error about it not being supported in strict mode.\n        return;\n      }\n\n      this.next(); // eat `with`\n\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"moduleAttributes\")) {\n        attributes = this.parseModuleAttributes();\n      } else {\n        attributes = this.parseImportAttributes();\n      }\n      if (!process.env.BABEL_8_BREAKING) {\n        useWith = true;\n      }\n    } else if (this.isContextual(tt._assert) && !this.hasPrecedingLineBreak()) {\n      if (\n        !this.hasPlugin(\"deprecatedImportAssert\") &&\n        (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\"))\n      ) {\n        this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);\n      }\n      if (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\")) {\n        this.addExtra(node, \"deprecatedAssertSyntax\", true);\n      }\n      this.next(); // eat `assert`\n      attributes = this.parseImportAttributes();\n    } else {\n      attributes = [];\n    }\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      !useWith &&\n      this.hasPlugin(\"importAssertions\")\n    ) {\n      node.assertions = attributes;\n    } else {\n      node.attributes = attributes;\n    }\n  }\n\n  maybeParseDefaultImportSpecifier(\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): boolean {\n    // import defaultObj, { x, y as z } from '...'\n    if (maybeDefaultIdentifier) {\n      const specifier = this.startNodeAtNode<N.ImportDefaultSpecifier>(\n        maybeDefaultIdentifier,\n      );\n      specifier.local = maybeDefaultIdentifier;\n      node.specifiers.push(\n        this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"),\n      );\n      return true;\n    } else if (\n      // We allow keywords, and parseImportSpecifierLocal will report a recoverable error\n      tokenIsKeywordOrIdentifier(this.state.type)\n    ) {\n      this.parseImportSpecifierLocal(\n        node,\n        this.startNode<N.ImportDefaultSpecifier>(),\n        \"ImportDefaultSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseStarImportSpecifier(node: Undone<N.ImportDeclaration>): boolean {\n    if (this.match(tt.star)) {\n      const specifier = this.startNode<N.ImportNamespaceSpecifier>();\n      this.next();\n      this.expectContextual(tt._as);\n\n      this.parseImportSpecifierLocal(\n        node,\n        specifier,\n        \"ImportNamespaceSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  parseNamedImportSpecifiers(node: Undone<N.ImportDeclaration>) {\n    let first = true;\n    this.expect(tt.braceL);\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        // Detect an attempt to deep destructure\n        if (this.eat(tt.colon)) {\n          throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n        }\n\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n\n      const specifier = this.startNode<N.ImportSpecifier>();\n      const importedIsString = this.match(tt.string);\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      specifier.imported = this.parseModuleExportName();\n      const importSpecifier = this.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        node.importKind === \"type\" || node.importKind === \"typeof\",\n        isMaybeTypeOnly,\n        undefined,\n      );\n      node.specifiers.push(importSpecifier);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportSpecifier\n  parseImportSpecifier(\n    specifier: Undone<N.ImportSpecifier>,\n    importedIsString: boolean,\n    /* used in TypeScript and Flow parser */\n    isInTypeOnlyImport: boolean,\n    isMaybeTypeOnly: boolean,\n    bindingType: BindingFlag | undefined,\n  ): N.ImportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      specifier.local = this.parseIdentifier();\n    } else {\n      const { imported } = specifier;\n      if (importedIsString) {\n        throw this.raise(Errors.ImportBindingIsString, specifier, {\n          importName: (imported as N.StringLiteral).value,\n        });\n      }\n      this.checkReservedWord(\n        (imported as N.Identifier).name,\n        specifier.loc.start,\n        true,\n        true,\n      );\n      if (!specifier.local) {\n        specifier.local = cloneIdentifier(imported);\n      }\n    }\n    return this.finishImportSpecifier(\n      specifier,\n      \"ImportSpecifier\",\n      bindingType,\n    );\n  }\n\n  // This is used in flow and typescript plugin\n  // Determine whether a parameter is a this param\n  isThisParam(\n    param: N.Pattern | N.Identifier | N.TSParameterProperty,\n  ): boolean {\n    return param.type === \"Identifier\" && param.name === \"this\";\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type * as N from \"../types.ts\";\nimport { getOptions, OptionFlags } from \"../options.ts\";\nimport StatementParser from \"./statement.ts\";\nimport ScopeHandler from \"../util/scope.ts\";\n\nexport type PluginsMap = Map<\n  string,\n  {\n    [x: string]: any;\n  }\n>;\n\nexport default class Parser extends StatementParser {\n  // Forward-declaration so typescript plugin can override jsx plugin\n  // todo(flow->ts) - this probably can be removed\n  // abstract jsxParseOpeningElementAfterName(\n  //   node: N.JSXOpeningElement,\n  // ): N.JSXOpeningElement;\n\n  constructor(\n    options: Options | undefined | null,\n    input: string,\n    pluginsMap: PluginsMap,\n  ) {\n    options = getOptions(options);\n    super(options, input);\n\n    this.options = options;\n    this.initializeScopes();\n    this.plugins = pluginsMap;\n    this.filename = options.sourceFilename;\n    this.startIndex = options.startIndex;\n\n    let optionFlags = 0;\n    if (options.allowAwaitOutsideFunction) {\n      optionFlags |= OptionFlags.AllowAwaitOutsideFunction;\n    }\n    if (options.allowReturnOutsideFunction) {\n      optionFlags |= OptionFlags.AllowReturnOutsideFunction;\n    }\n    if (options.allowImportExportEverywhere) {\n      optionFlags |= OptionFlags.AllowImportExportEverywhere;\n    }\n    if (options.allowSuperOutsideMethod) {\n      optionFlags |= OptionFlags.AllowSuperOutsideMethod;\n    }\n    if (options.allowUndeclaredExports) {\n      optionFlags |= OptionFlags.AllowUndeclaredExports;\n    }\n    if (options.allowNewTargetOutsideFunction) {\n      optionFlags |= OptionFlags.AllowNewTargetOutsideFunction;\n    }\n    if (options.ranges) {\n      optionFlags |= OptionFlags.Ranges;\n    }\n    if (options.tokens) {\n      optionFlags |= OptionFlags.Tokens;\n    }\n    if (options.createImportExpressions) {\n      optionFlags |= OptionFlags.CreateImportExpressions;\n    }\n    if (options.createParenthesizedExpressions) {\n      optionFlags |= OptionFlags.CreateParenthesizedExpressions;\n    }\n    if (options.errorRecovery) {\n      optionFlags |= OptionFlags.ErrorRecovery;\n    }\n    if (options.attachComment) {\n      optionFlags |= OptionFlags.AttachComment;\n    }\n    if (options.annexB) {\n      optionFlags |= OptionFlags.AnnexB;\n    }\n\n    this.optionFlags = optionFlags;\n  }\n\n  // This can be overwritten, for example, by the TypeScript plugin.\n  getScopeHandler(): new (...args: any) => ScopeHandler {\n    return ScopeHandler;\n  }\n\n  parse(): N.File {\n    this.enterInitialScopes();\n    const file = this.startNode<N.File>();\n    const program = this.startNode<N.Program>();\n    this.nextToken();\n    file.errors = null;\n    this.parseTopLevel(file, program);\n    file.errors = this.state.errors;\n    file.comments.length = this.state.commentsLen;\n    return file as N.File;\n  }\n}\n","import type { Options } from \"./options.ts\";\nimport {\n  validatePlugins,\n  mixinPluginNames,\n  mixinPlugins,\n} from \"./plugin-utils.ts\";\nimport type {\n  PluginConfig as ParserPlugin,\n  FlowPluginOptions,\n  RecordAndTuplePluginOptions,\n  PipelineOperatorPluginOptions,\n} from \"./typings.ts\";\nimport Parser, { type PluginsMap } from \"./parser/index.ts\";\n\nimport type { ExportedTokenType } from \"./tokenizer/types.ts\";\nimport {\n  getExportedToken,\n  tt as internalTokenTypes,\n  type InternalTokenTypes,\n} from \"./tokenizer/types.ts\";\nexport type { Token } from \"./tokenizer/index.ts\";\n\nimport type { Expression, File } from \"./types.ts\";\nexport type { Expression, File };\n\nexport function parse(input: string, options?: Options): File {\n  if (options?.sourceType === \"unambiguous\") {\n    options = {\n      ...options,\n    };\n    try {\n      options.sourceType = \"module\";\n      const parser = getParser(options, input);\n      const ast = parser.parse();\n\n      if (parser.sawUnambiguousESM) {\n        return ast;\n      }\n\n      if (parser.ambiguousScriptDifferentAst) {\n        // Top level await introduces code which can be both a valid script and\n        // a valid module, but which produces different ASTs:\n        //    await\n        //    0\n        // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n        try {\n          options.sourceType = \"script\";\n          return getParser(options, input).parse();\n        } catch {}\n      } else {\n        // This is both a valid module and a valid script, but\n        // we parse it as a script by default\n        ast.program.sourceType = \"script\";\n      }\n\n      return ast;\n    } catch (moduleError) {\n      try {\n        options.sourceType = \"script\";\n        return getParser(options, input).parse();\n      } catch {}\n\n      throw moduleError;\n    }\n  } else {\n    return getParser(options, input).parse();\n  }\n}\n\nexport function parseExpression(input: string, options?: Options): Expression {\n  const parser = getParser(options, input);\n  if (parser.options.strictMode) {\n    parser.state.strict = true;\n  }\n  return parser.getExpression();\n}\n\nfunction generateExportedTokenTypes(\n  internalTokenTypes: InternalTokenTypes,\n): Record<string, ExportedTokenType> {\n  const tokenTypes: Record<string, ExportedTokenType> = {};\n  for (const typeName of Object.keys(\n    internalTokenTypes,\n  ) as (keyof InternalTokenTypes)[]) {\n    tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n  }\n  return tokenTypes;\n}\n\nexport const tokTypes = generateExportedTokenTypes(internalTokenTypes);\n\nfunction getParser(options: Options | undefined | null, input: string): Parser {\n  let cls = Parser;\n  const pluginsMap: PluginsMap = new Map();\n  if (options?.plugins) {\n    for (const plugin of options.plugins) {\n      let name, opts;\n      if (typeof plugin === \"string\") {\n        name = plugin;\n      } else {\n        [name, opts] = plugin;\n      }\n      if (!pluginsMap.has(name)) {\n        pluginsMap.set(name, opts || {});\n      }\n    }\n    validatePlugins(pluginsMap);\n    cls = getParserClass(pluginsMap);\n  }\n\n  return new cls(options, input, pluginsMap);\n}\n\nconst parserClassCache = new Map<string, new (...args: any) => Parser>();\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(\n  pluginsMap: Map<string, any>,\n): new (...args: any) => Parser {\n  const pluginList = [];\n  for (const name of mixinPluginNames) {\n    if (pluginsMap.has(name)) {\n      pluginList.push(name);\n    }\n  }\n  const key = pluginList.join(\"|\");\n  let cls = parserClassCache.get(key);\n  if (!cls) {\n    cls = Parser;\n    for (const plugin of pluginList) {\n      // @ts-expect-error todo(flow->ts)\n      cls = mixinPlugins[plugin](cls);\n    }\n    parserClassCache.set(key, cls);\n  }\n  return cls;\n}\n\nexport type {\n  FlowPluginOptions,\n  ParserPlugin,\n  PipelineOperatorPluginOptions,\n  RecordAndTuplePluginOptions,\n};\nexport type ParserOptions = Partial<Options>;\n"],"names":["Position","constructor","line","col","index","column","SourceLocation","start","end","filename","identifierName","createPositionWithColumnOffset","position","columnOffset","code","ModuleErrors","ImportMetaOutsideModule","message","ImportOutsideModule","NodeDescriptions","ArrayPattern","AssignmentExpression","AssignmentPattern","ArrowFunctionExpression","ConditionalExpression","CatchClause","ForOfStatement","ForInStatement","ForStatement","FormalParameters","Identifier","ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier","ObjectPattern","ParenthesizedExpression","RestElement","UpdateExpression","true","false","VariableDeclarator","YieldExpression","toNodeDescription","node","type","prefix","StandardErrors","AccessorIsGenerator","kind","ArgumentsInClass","AsyncFunctionInSingleStatementContext","AwaitBindingIdentifier","AwaitBindingIdentifierInStaticBlock","AwaitExpressionFormalParameter","AwaitUsingNotInAsyncContext","AwaitNotInAsyncContext","AwaitNotInAsyncFunction","BadGetterArity","BadSetterArity","BadSetterRestParameter","ConstructorClassField","ConstructorClassPrivateField","ConstructorIsAccessor","ConstructorIsAsync","ConstructorIsGenerator","DeclarationMissingInitializer","DecoratorArgumentsOutsideParentheses","DecoratorBeforeExport","DecoratorsBeforeAfterExport","DecoratorConstructor","DecoratorExportClass","DecoratorSemicolon","DecoratorStaticBlock","DeferImportRequiresNamespace","DeletePrivateField","DestructureNamedImport","DuplicateConstructor","DuplicateDefaultExport","DuplicateExport","exportName","DuplicateProto","DuplicateRegExpFlags","DynamicImportPhaseRequiresImportExpressions","phase","ElementAfterRest","EscapedCharNotAnIdentifier","ExportBindingIsString","localName","ExportDefaultFromAsIdentifier","ForInOfLoopInitializer","ForInUsing","ForOfAsync","ForOfLet","GeneratorInSingleStatementContext","IllegalBreakContinue","IllegalLanguageModeDirective","IllegalReturn","ImportAttributesUseAssert","ImportBindingIsString","importName","ImportCallArity","ImportCallNotNewExpression","ImportCallSpreadArgument","ImportJSONBindingNotDefault","ImportReflectionHasAssertion","ImportReflectionNotBinding","IncompatibleRegExpUVFlags","InvalidBigIntLiteral","InvalidCodePoint","InvalidCoverInitializedName","InvalidDecimal","InvalidDigit","radix","InvalidEscapeSequence","InvalidEscapeSequenceTemplate","InvalidEscapedReservedWord","reservedWord","InvalidIdentifier","InvalidLhs","ancestor","InvalidLhsBinding","InvalidLhsOptionalChaining","InvalidNumber","InvalidOrMissingExponent","InvalidOrUnexpectedToken","unexpected","InvalidParenthesizedAssignment","InvalidPrivateFieldResolution","InvalidPropertyBindingPattern","InvalidRecordProperty","InvalidRestAssignmentPattern","LabelRedeclaration","labelName","LetInLexicalBinding","LineTerminatorBeforeArrow","MalformedRegExpFlags","MissingClassName","MissingEqInAssignment","MissingSemicolon","MissingPlugin","missingPlugin","map","name","JSON","stringify","join","MissingOneOfPlugins","MissingUnicodeEscape","MixingCoalesceWithLogical","ModuleAttributeDifferentFromType","ModuleAttributeInvalidValue","ModuleAttributesWithDuplicateKeys","key","ModuleExportNameHasLoneSurrogate","surrogateCharCode","toString","ModuleExportUndefined","MultipleDefaultsInSwitch","NewlineAfterThrow","NoCatchOrFinally","NumberIdentifier","NumericSeparatorInEscapeSequence","ObsoleteAwaitStar","OptionalChainingNoNew","OptionalChainingNoTemplate","OverrideOnConstructor","ParamDupe","PatternHasAccessor","PatternHasMethod","PrivateInExpectedIn","PrivateNameRedeclaration","RecordExpressionBarIncorrectEndSyntaxType","RecordExpressionBarIncorrectStartSyntaxType","RecordExpressionHashIncorrectStartSyntaxType","RecordNoProto","RestTrailingComma","SloppyFunction","SloppyFunctionAnnexB","SourcePhaseImportRequiresDefault","StaticPrototype","SuperNotAllowed","SuperPrivateField","TrailingDecorator","TupleExpressionBarIncorrectEndSyntaxType","TupleExpressionBarIncorrectStartSyntaxType","TupleExpressionHashIncorrectStartSyntaxType","UnexpectedArgumentPlaceholder","UnexpectedAwaitAfterPipelineBody","UnexpectedDigitAfterHash","UnexpectedImportExport","UnexpectedKeyword","keyword","UnexpectedLeadingDecorator","UnexpectedLexicalDeclaration","UnexpectedNewTarget","UnexpectedNumericSeparator","UnexpectedPrivateField","UnexpectedReservedWord","UnexpectedSuper","UnexpectedToken","expected","UnexpectedTokenUnaryExponentiation","UnexpectedUsingDeclaration","UnsupportedBind","UnsupportedDecoratorExport","UnsupportedDefaultExport","UnsupportedImport","UnsupportedMetaProperty","target","onlyValidPropertyName","UnsupportedParameterDecorator","UnsupportedPropertyDecorator","UnsupportedSuper","UnterminatedComment","UnterminatedRegExp","UnterminatedString","UnterminatedTemplate","UsingDeclarationExport","UsingDeclarationHasBindingPattern","VarRedeclaration","YieldBindingIdentifier","YieldInParameter","ZeroDigitNumericSeparator","StrictModeErrors","StrictDelete","StrictEvalArguments","referenceName","StrictEvalArgumentsBinding","bindingName","StrictFunction","StrictNumericEscape","StrictOctalLiteral","StrictWith","UnparenthesizedPipeBodyDescriptions","Set","PipelineOperatorErrors","PipeBodyIsTighter","PipeTopicRequiresHackPipes","PipeTopicUnbound","PipeTopicUnconfiguredToken","token","PipeTopicUnused","PipeUnparenthesizedBody","PipelineBodyNoArrow","PipelineBodySequenceExpression","PipelineHeadSequenceExpression","PipelineTopicUnused","PrimaryTopicNotAllowed","PrimaryTopicRequiresSmartPipeline","defineHidden","obj","value","Object","defineProperty","enumerable","configurable","toParseErrorConstructor","toMessage","reasonCode","syntaxPlugin","hasMissingPlugin","oldReasonCodes","AccessorCannotDeclareThisParameter","AccessorCannotHaveTypeParameters","ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference","SetAccessorCannotHaveOptionalParameter","SetAccessorCannotHaveRestParameter","SetAccessorCannotHaveReturnType","loc","details","error","SyntaxError","pos","clone","overrides","_overrides$loc","assign","get","set","writable","ParseErrorEnum","argument","Array","isArray","parseErrorTemplates","ParseErrorConstructors","keys","template","_ref","rest","_objectWithoutPropertiesLoose","_excluded","Errors","createDefaultOptions","sourceType","sourceFilename","undefined","startIndex","startColumn","startLine","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowNewTargetOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","plugins","strictMode","ranges","tokens","createImportExpressions","createParenthesizedExpressions","errorRecovery","attachComment","annexB","getOptions","opts","options","Error","toUnenumerable","object","toESTreeLocation","estree","superClass","ESTreeParserMixin","parse","file","optionFlags","parseRegExpLiteral","pattern","flags","regex","RegExp","_","estreeParseLiteral","parseBigIntLiteral","bigInt","BigInt","_unused","bigint","String","parseDecimalLiteral","decimal","parseLiteral","parseStringLiteral","parseNumericLiteral","parseNullLiteral","parseBooleanLiteral","directiveToStmt","directive","expression","raw","extra","expressionValue","stmt","rawValue","initFunction","isAsync","checkDeclaration","isObjectProperty","getObjectOrClassMethodParams","method","params","isValidDirective","_stmt$expression$extr","parenthesized","parseBlockBody","allowDirectives","topLevel","afterBlockParse","directiveStatements","directives","d","body","concat","parsePrivateName","getPluginOption","convertPrivateNameToPrivateIdentifier","getPrivateNameSV","id","isPrivateName","parseFunctionBody","allowExpression","isMethod","parseMethod","isGenerator","isConstructor","allowDirectSuper","inClassScope","funcNode","startNode","typeParameters","computed","finishNode","nameIsConstructor","parseClassProperty","args","propertyNode","parseClassPrivateProperty","parseObjectMethod","prop","isPattern","isAccessor","shorthand","parseObjectProperty","startLoc","refExpressionErrors","isValidLVal","isUnparenthesizedInAssign","binding","isAssignable","isBinding","toAssignable","isLHS","classScope","usePrivateName","toAssignableObjectExpressionProp","isLast","raise","finishCallExpression","unfinished","optional","callee","_ref2","source","arguments","attributes","toReferencedArguments","parseExport","decorators","exportStartLoc","state","lastTokStartLoc","exported","specifiers","length","_declaration$decorato","declaration","resetStartLocation","parseSubscript","base","noCalls","optionalChainMember","substring","stop","chain","startNodeAtNode","isOptionalMemberExpression","hasPropertyAsPrivateName","isObjectMethod","finishNodeAt","endLoc","resetEndLocation","lastTokEndLoc","TokContext","preserveSpace","types","brace","j_oTag","j_cTag","j_expr","beforeExpr","startsExpr","isLoop","isAssign","postfix","ExportedTokenType","label","conf","rightAssociative","binop","updateContext","keywords","Map","createKeyword","createToken","createBinop","tokenTypeCounter","tokenTypes","tokenLabels","tokenBinops","tokenBeforeExprs","tokenStartsExprs","tokenPrefixes","_options$binop","_options$beforeExpr","_options$startsExpr","_options$prefix","push","createKeywordLike","_options$binop2","_options$beforeExpr2","_options$startsExpr2","_options$prefix2","tt","bracketL","bracketHashL","bracketBarL","bracketR","bracketBarR","braceL","braceBarL","braceHashL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","ellipsis","backQuote","dollarBraceL","templateTail","templateNonTail","at","hash","interpreterDirective","eq","slashAssign","xorAssign","moduloAssign","incDec","bang","tilde","doubleCaret","doubleAt","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","lt","gt","relational","bitShift","bitShiftL","bitShiftR","plusMin","modulo","star","slash","exponent","_in","_instanceof","_break","_case","_catch","_continue","_debugger","_default","_else","_finally","_function","_if","_return","_switch","_throw","_try","_var","_const","_with","_new","_this","_super","_class","_extends","_export","_import","_null","_true","_false","_typeof","_void","_delete","_do","_for","_while","_as","_assert","_async","_await","_defer","_from","_get","_let","_meta","_of","_sent","_set","_source","_static","_using","_yield","_asserts","_checks","_exports","_global","_implements","_intrinsic","_infer","_is","_mixins","_proto","_require","_satisfies","_keyof","_readonly","_unique","_abstract","_declare","_enum","_module","_namespace","_interface","_type","_opaque","placeholder","string","num","regexp","privateName","eof","jsxName","jsxText","jsxTagStart","jsxTagEnd","tokenIsIdentifier","tokenKeywordOrIdentifierIsKeyword","tokenIsKeywordOrIdentifier","tokenIsLiteralPropertyName","tokenComesBeforeExpression","tokenCanStartExpression","tokenIsAssignment","tokenIsFlowInterfaceOrTypeOrOpaque","tokenIsLoop","tokenIsKeyword","tokenIsOperator","tokenIsPostfix","tokenIsPrefix","tokenIsTSTypeOperator","tokenIsTSDeclarationStart","tokenLabelName","tokenOperatorPrecedence","tokenIsRightAssociative","tokenIsTemplate","getExportedToken","context","pop","tc","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","i","isIdentifierStart","test","fromCharCode","isIdentifierChar","reservedWords","strict","strictBind","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","isIteratorStart","current","next","next2","reservedWordLikeSet","canBeReservedWord","Scope","names","firstLexicalName","ScopeHandler","parser","scopeStack","undefinedExports","inTopLevel","currentScope","inFunction","currentVarScopeFlags","allowSuper","currentThisScopeFlags","inClass","inClassAndNotInNonArrowFunction","inStaticBlock","ScopeFlag","inNonArrowFunction","treatFunctionsAsVar","treatFunctionsAsVarInScope","createScope","enter","exit","scope","declareName","bindingType","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","topLevelScope","FlowScope","declareFunctions","FlowScopeHandler","add","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","sourceToOffsetPos","sourcePos","offsetToSourcePos","offsetPos","hasPlugin","pluginConfig","pluginName","pluginOptions","actualOptions","plugin","_this$plugins$get","setTrailingComments","comments","trailingComments","unshift","setLeadingComments","leadingComments","setInnerComments","innerComments","adjustInnerComments","elements","commentWS","lastElement","CommentsParser","addComment","comment","commentsLen","processComment","commentStack","commentStackLength","lastCommentWS","leadingNode","nodeStart","commentEnd","containingNode","finalizeComment","splice","trailingNode","commentStart","input","charCodeAt","properties","members","finalizeRemainingComments","resetPreviousNodeTrailingComments","resetPreviousIdentifierLeadingComments","takeSurroundingComments","lineBreak","lineBreakG","isNewLine","hasNewLine","skipWhiteSpace","skipWhiteSpaceInLine","isWhitespace","State","curLine","lineStart","errors","potentialArrowAt","noArrowAt","noArrowParamsConversionAt","topicContext","maxNumOfResolvableTopics","maxTopicIndex","labels","ct","firstInvalidTemplateEscapePos","strictErrors","tokensLength","v","init","maybeInArrowParameters","inType","noAnonFunctionType","hasFlowComment","isAmbientContext","inAbstractClass","inDisallowConditionalTypesContext","soloAwait","inFSharpPipelineDirectBody","canStartJSXElement","containsEsc","hasTopLevelAwait","curPosition","slice","isDigit","forbiddenNumericSeparatorSiblings","decBinOct","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","unterminated","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","exec","octalStr","octal","parseInt","len","forceLen","n","readInt","invalidEscapeSequence","allowNumSeparator","bailOnError","forbiddenSiblings","isAllowedSibling","invalid","total","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint","buildPosition","VALID_REGEX_FLAGS","Token","Tokenizer","isLookahead","errorHandlers_readInt","errorBuilder","errorHandlers_readCodePoint","errorHandlers_readStringContents_string","recordStrictModeErrors","errorHandlers_readStringContents_template","pushToken","checkKeywordEscapes","nextToken","eat","createLookaheadState","curContext","lookahead","old","curr","nextTokenStart","nextTokenStartSince","lastIndex","lookaheadCharCode","nextTokenInLineStart","nextTokenInLineStartSince","lookaheadInLineCharCode","codePointAtPos","cp","trail","setStrict","forEach","toParseError","clear","skipSpace","finishToken","getTokenFromCode","skipBlockComment","skipLineComment","startSkip","spaceStart","loop","commentWhitespace","prevType","replaceToken","readToken_numberSign","readToken_interpreter","nextPos","expectPlugin","readWord1","finishOp","readToken_dot","readNumber","readToken_slash","readToken_mult_modulo","width","readToken_pipe_amp","readToken_caret","proposal","topicToken","lookaheadCh","codePointAt","readToken_atSign","readToken_plus_min","readToken_lt","readToken_gt","size","readToken_eq_excl","readToken_question","readTemplateToken","readRadixNumber","readString","readWord","readRegexp","escaped","content","mods","char","includes","isBigInt","replace","startsWithDot","isFloat","hasExponent","isOctal","hasLeadingZero","integer","underscorePos","isDecimal","parseFloat","quote","readTemplateContinuation","opening","firstCode","escStart","identifierCheck","esc","keywordTypes","raiseOverwrite","expectOnePlugin","pluginNames","some","ClassScope","privateNames","loneAccessors","undefinedPrivateNames","ClassScopeHandler","stack","oldClassScope","from","declarePrivateName","elementType","redefined","accessor","oldStatic","newStatic","oldKind","newKind","ExpressionScope","canBeArrowParameterDeclaration","isCertainlyParameterDeclaration","ArrowHeadParsingScope","declarationErrors","recordDeclarationError","ParsingErrorClass","clearDeclarationError","iterateErrors","iterator","ExpressionScopeHandler","recordParameterInitializerError","origin","recordArrowParameterBindingError","recordAsyncArrowParametersError","validateAsPattern","newParameterDeclarationScope","newArrowHeadScope","newAsyncArrowScope","newExpressionScope","ProductionParameterHandler","stacks","currentFlags","hasAwait","hasYield","hasReturn","hasIn","functionFlags","UtilParser","addExtra","isContextual","isUnparsedContextual","nameStart","nameEnd","nextCh","isLookaheadContextual","eatContextual","expectContextual","canInsertSemicolon","hasPrecedingLineBreak","hasFollowingLineBreak","isLineTerminator","semicolon","allowAsi","expect","tryParse","fn","oldState","abortSignal","failState","thrown","aborted","checkExpressionErrors","andThrow","shorthandAssignLoc","doubleProtoLoc","privateKeyLoc","optionalParametersLoc","hasErrors","isLiteralPropertyName","property","initializeScopes","oldLabels","oldExportedIdentifiers","exportedIdentifiers","oldInModule","oldScope","getScopeHandler","oldProdParam","prodParam","oldExpressionScope","expressionScope","enterInitialScopes","paramFlags","checkDestructuringPrivate","ExpressionErrors","Node","range","NodePrototype","prototype","__clone","newNode","clonePlaceholder","cloneIdentifier","cloned","create","expectedNode","cloneStringLiteral","NodeUtils","startNodeAt","resetStartLocationFromNode","locationNode","reservedTypes","FlowErrors","AmbiguousConditionalArrow","AmbiguousDeclareModuleKind","AssignReservedType","reservedType","DeclareClassElement","DeclareClassFieldInitializer","DuplicateDeclareModuleExports","EnumBooleanMemberNotInitialized","memberName","enumName","EnumDuplicateMemberName","EnumInconsistentMemberValues","EnumInvalidExplicitType","invalidEnumType","EnumInvalidExplicitTypeUnknownSupplied","EnumInvalidMemberInitializerPrimaryType","explicitType","EnumInvalidMemberInitializerSymbolType","EnumInvalidMemberInitializerUnknownType","EnumInvalidMemberName","suggestion","EnumNumberMemberNotInitialized","EnumStringMemberInconsistentlyInitialized","GetterMayNotHaveThisParam","ImportReflectionHasImportType","ImportTypeShorthandOnlyInPureImport","InexactInsideExact","InexactInsideNonObject","InexactVariance","InvalidNonTypeImportInDeclareModule","MissingTypeParamDefault","NestedDeclareModule","NestedFlowComment","PatternIsOptional","SetterMayNotHaveThisParam","SpreadVariance","ThisParamAnnotationRequired","ThisParamBannedInConstructor","ThisParamMayNotBeOptional","ThisParamMustBeFirst","ThisParamNoDefault","TypeBeforeInitializer","TypeCastInPattern","UnexpectedExplicitInexactInObject","UnexpectedReservedType","UnexpectedReservedUnderscore","UnexpectedSpaceBetweenModuloChecks","UnexpectedSpreadType","UnexpectedSubtractionOperand","UnexpectedTokenAfterTypeParameter","UnexpectedTypeParameterBeforeAsyncArrowFunction","UnsupportedDeclareExportKind","unsupportedExportKind","UnsupportedStatementInDeclareModule","UnterminatedFlowComment","isEsModuleType","bodyElement","hasTypeImportKind","importKind","exportSuggestions","const","let","interface","partition","list","list1","list2","FLOW_PRAGMA_REGEX","flow","FlowParserMixin","flowPragma","shouldParseTypes","matches","flowParseTypeInitialiser","tok","oldInType","flowParseType","flowParsePredicate","moduloLoc","parseExpression","flowParseTypeAndPredicateInitialiser","predicate","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","parseIdentifier","typeNode","typeContainer","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","this","returnType","typeAnnotation","flowParseDeclare","insideModule","flowParseDeclareVariable","flowParseDeclareModuleExports","flowParseDeclareModule","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","flowParseTypeAnnotatableIdentifier","parseExprAtom","bodyNode","parseImport","hasModuleExport","default","isLet","exportKind","flowParseTypeAnnotation","finished","flowParseTypeAlias","flowParseOpaqueType","isClass","flowParseRestrictedIdentifier","extends","flowParseInterfaceExtends","implements","mixins","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","right","declare","supertype","impltype","flowParseTypeParameter","requireDefault","nodeStartLoc","variance","flowParseVariance","ident","bound","defaultRequired","typeParameter","flowInTopLevelContext","cb","oldContext","flowParseTypeParameterInstantiationInExpression","reScan_lt","oldNoAnonFunctionType","reScan_lt_gt","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","static","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","valueNode","callProperties","indexers","internalSlots","endDelim","exact","inexact","protoStartLoc","inexactStartLoc","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","isInexactToken","proto","flowCheckGetterSetterParams","paramCount","_startLoc","node2","qualification","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","first","lh","isThis","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","parseLiteralAtNode","createIdentifier","flowParsePostfixType","seenOptionalIndexedAccess","objectType","indexType","flowParsePrefixType","flowParseAnonFunctionWithoutParens","param","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatementLike","flowParseEnumDeclaration","parseExpressionStatement","expr","shouldParseExportDeclaration","isExportDefaultSpecifier","parseExportDefaultExpression","parseConditional","setOptionalParametersError","originalNoArrowAt","consequent","failed","tryParseConditionalConsequent","valid","getArrowLikeExpressions","alternate","parseMaybeAssign","parseMaybeAssignAllowIn","disallowInvalid","arrows","finishArrowValidation","every","_node$extra","toAssignableList","trailingCommaLoc","checkParams","result","parseParenItem","typeCastNode","assertModuleNodeAllowed","parseExportDeclaration","declarationNode","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","isStatement","optionalId","parseClassMember","classBody","member","parseClassMemberFromModifier","isIterator","readIterator","fullWord","left","exprList","toReferencedList","isParenthesizedExpr","_expr$extra","parseArrayLike","close","canBePattern","isTuple","isParenthesized","isClassMethod","isClassProperty","isNonstaticConstructor","pushClassMethod","allowsDirectSuper","isThisParam","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","checkGetterSetterParams","parsePropertyNamePrefixOperator","parseObjPropValue","parseFunctionParamType","parseMaybeDefault","checkImportReflection","module","parseImportSpecifierLocal","specifier","local","finishImportSpecifier","isPotentialImportPhase","isExport","applyImportPhase","parseImportSpecifier","importedIsString","isInTypeOnlyImport","isMaybeTypeOnly","firstIdent","imported","specifierTypeKind","as_ident","specifierIsTypeImport","checkReservedWord","parseBindingAtom","parseFunctionParams","parseVarId","decl","parseAsyncArrowFromCallExpression","call","shouldParseAsyncArrow","afterLeftParse","_jsx","jsx","currentContext","_jsx2","_jsx3","abort","_arrowExpression$extr","arrowExpression","maybeUnwrapTypeCastExpression","async","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","strictModeChanged","parseParenAndDistinguishExpression","canBeArrow","parseSubscripts","parseCallExpressionArguments","parseAsyncArrowWithTypeParameters","subscriptState","isLookaheadToken_lt","typeArguments","parseNewCallee","targs","parseArrowExpression","parseTopLevel","program","fileNode","skipFlowComment","hasFlowCommentCompletion","commentSkip","shiftToFirstNonWhiteSpace","ch2","ch3","flowEnumErrorBooleanMemberNotInitialized","flowEnumErrorInvalidMemberInitializer","enumContext","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitialized","flowEnumMemberInit","endOfInit","literal","flowEnumMemberRaw","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","booleanMembers","numberMembers","stringMembers","defaultedMembers","hasUnknownMembers","memberNode","toUpperCase","flowEnumStringMembers","initializedMembers","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","jsxParseOpeningElementAfterName","afterNext","entities","__proto__","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","JsxErrors","AttributeIsEmpty","MissingClosingTagElement","openingTagName","MissingClosingTagFragment","UnexpectedSequenceExpression","HTMLEntity","UnsupportedJsxValue","UnterminatedJsxContent","UnwrappedAdjacentJSXElements","isFragment","getQualifiedJSXName","namespace","JSXParserMixin","jsxReadToken","jsxReadEntity","jsxReadNewLine","normalizeCRLF","jsxReadString","codePoint","count","desc","entity","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","jsxParseAttributeValue","setContext","jsxParseExpressionContainer","jsxParseEmptyExpression","jsxParseSpreadChild","previousContext","jsxParseAttribute","jsxParseOpeningElementAt","selfClosing","jsxParseClosingElementAt","jsxParseElementAt","children","openingElement","closingElement","contents","openingFragment","closingFragment","jsxParseElement","newContext","TypeScriptScope","tsNames","TypeScriptScopeHandler","importsStack","hasImport","allowShadow","isConst","wasConst","unwrapParenthesizedExpression","LValParser","_node$extra3","last","_node$extra2","operator","arg","checkToRestConversion","elt","element","toReferencedListDeep","parseSpread","parseRestBinding","parseBindingList","ParseBindingListFlags","parseObjectLike","closeCharCode","allowEmpty","elts","checkCommaAfterRest","parseDecorator","parseAssignableListItem","parseBindingRestProperty","parseBindingProperty","parsePropertyName","_left","checkLVal","checkClashes","hasParenthesizedAncestor","_expression$extra","checkIdentifier","validity","ParseErrorClass","isParenthesizedExpression","nextAncestor","child","declareNameFromIdentifier","identifier","allowPattern","nonNull","x","assert","TSErrors","AbstractMethodHasImplementation","methodName","AbstractPropertyHasInitializer","propertyName","AccessorCannotBeOptional","ClassMethodHasDeclare","ClassMethodHasReadonly","ConstructorHasTypeParameters","DeclareAccessor","DeclareClassFieldHasInitializer","DeclareFunctionHasImplementation","DuplicateAccessibilityModifier","modifier","DuplicateModifier","EmptyHeritageClauseType","EmptyTypeArguments","EmptyTypeParameters","ExpectedAmbientAfterExportDeclare","ImportAliasHasImportType","IncompatibleModifiers","modifiers","IndexSignatureHasAbstract","IndexSignatureHasAccessibility","IndexSignatureHasDeclare","IndexSignatureHasOverride","IndexSignatureHasStatic","InitializerNotAllowedInAmbientContext","InvalidModifierOnTypeMember","InvalidModifierOnTypeParameter","InvalidModifierOnTypeParameterPositions","InvalidModifiersOrder","orderedModifiers","InvalidPropertyAccessAfterInstantiationExpression","InvalidTupleMemberLabel","MissingInterfaceName","NonAbstractClassHasAbstractMethod","NonClassMethodPropertyHasAbstractModifer","OptionalTypeBeforeRequired","OverrideNotInSubClass","PrivateElementHasAbstract","PrivateElementHasAccessibility","ReadonlyForMethodSignature","ReservedArrowTypeParam","ReservedTypeAssertion","SingleTypeParameterWithoutTrailingComma","typeParameterName","StaticBlockCannotHaveModifier","TupleOptionalAfterType","TypeAnnotationAfterAssign","TypeImportCannotSpecifyDefaultAndNamed","TypeModifierIsUsedInTypeExports","TypeModifierIsUsedInTypeImports","UnexpectedParameterModifier","UnexpectedReadonly","UnexpectedTypeAnnotation","UnexpectedTypeCastInParameter","UnsupportedImportTypeArgument","UnsupportedParameterPropertyKind","UnsupportedSignatureParameterKind","keywordTypeFromName","tsIsAccessModifier","tsIsVarianceAnnotations","typescript","TypeScriptParserMixin","tsParseInOutModifiers","tsParseModifiers","bind","allowedModifiers","disallowedModifiers","errorTemplate","tsParseConstModifier","tsParseInOutConstModifiers","tsIsIdentifier","tsTokenCanFollowModifier","tsNextTokenOnSameLineAndCanFollowModifier","tsNextTokenCanFollowModifier","tsParseModifier","stopOnStartOfClassStaticBlock","tsIsStartOfStaticBlocks","tsTryParse","modified","enforceOrder","before","after","incompatible","mod1","mod2","accessibility","hasOwnProperty","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","refTrailingCommaPos","tsParseDelimitedListWorker","expectSuccess","trailingCommaPos","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","qualifier","tsParseEntityName","tsParseTypeArguments","allowReservedWords","tsParseTypeReference","typeName","tsParseThisTypePredicate","lhs","parameterName","tsParseTypeAnnotation","asserts","tsParseThisTypeNode","tsParseTypeQuery","exprName","tsParseTypeParameter","parseModifiers","tsParseTypeParameterName","constraint","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsFillSignature","returnToken","signature","returnTokenRequired","paramsKey","returnTypeKey","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","parameters","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","readonly","nodeAny","firstParameter","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedType","tsExpectThenParseType","nameType","tsParseType","tsTryParseType","tsParseTupleType","elementTypes","tsParseTupleElementType","seenOptionalElement","elementNode","labeled","isWord","chAfterWord","wordName","typeOrLabel","tsParseNonArrayType","labeledNode","optionalTypeNode","restNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","abstract","tsInAllowConditionalTypesContext","tsParseLiteralTypeNode","tsParseTemplateLiteralType","parseTemplate","parseTemplateSubstitution","tsParseThisTypeOrThisTypePredicate","thisKeyword","parseMaybeUnary","nodeType","tsParseArrayTypeOrHigher","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","tsParseConstraintForInferType","tsInDisallowConditionalTypesContext","isTypeOperator","tsParseUnionOrIntersectionType","parseConstituentType","hasLeadingOperator","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","previousErrorCount","_unused2","tsInType","t","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","checkType","extendsType","trueType","falseType","isAbstractConstructorSignature","tsParseTypeAssertion","tsParseHeritageClause","originalStartLoc","delimitedList","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInTopLevelContext","oldInDisallowConditionalTypesContext","tsNextThenParseType","tsParseEnumMember","initializer","tsParseEnumDeclaration","tsParseEnumBody","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","global","tsParseImportEqualsDeclaration","maybeDefaultIdentifier","moduleReference","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","f","tsTryParseAndCatch","tsTryParseDeclare","nany","startType","tsInAmbientContext","parseFunctionStatement","parseClass","parseVarStatement","tsParseDeclaration","tsTryParseExportDeclaration","tsParseExpressionStatement","mod","tsCheckLineTerminator","tsParseAbstractDeclaration","tsTryParseGenericAsyncArrowFunction","oldMaybeInArrowParameters","tsParseTypeArgumentsInExpression","tsIsDeclarationStart","override","pp","parameter","isSimpleParameter","tsDisallowOptionalPattern","bodilessType","registerFunctionStatementId","tsCheckForInvalidTypeCasts","items","isInParens","nonNullExpression","isOptionalCall","missingParenErrorLoc","atPossibleAsyncArrow","asyncArrowFn","parseTaggedTemplateExpression","tokenType","_callee$extra","parseExprOp","leftStartLoc","minPrec","isSatisfies","checkKeywords","checkDuplicateExports","importNode","parseMaybeImportPhase","parseImportSpecifiersAndAfter","nodeImportEquals","isAbstractClass","cls","allowMissingInitializer","declarations","isValidAmbientConstInitializer","parseStatementContent","parseAccessModifier","tsHasSomeModifiers","callParseClassMemberWithIsStatic","parseClassStaticBlock","parseClassMemberWithIsStatic","hadSuperClass","parsePostMemberNameModifiers","methodOrProp","isDeclare","isIdentifier","parseClassPropertyAnnotation","definite","parseClassAccessorProperty","declareClassPrivateMethodInScope","_typeCast","_typeCast2","typeCast","_typeParameters","reportReservedArrowTypeParam","trailingComma","sawUnary","toAssignableParenthesizedExpression","parseMaybeDecoratorArguments","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","hasContextParam","parseCatchClauseParam","oldIsAmbientContext","oldStrict","oldInAbstractClass","maybeTakeDecorators","hasEstreePlugin","methodFn","shouldParseAsAmbientContext","getExpression","parseExportSpecifier","isString","isInTypeExport","parseTypeOnlyImportExportSpecifier","isImport","isInTypeOnlyImportExport","leftOfAsKey","rightOfAsKey","leftOfAs","rightOfAs","hasTypeSpecifier","canParseAsKeyword","firstAs","secondAs","parseModuleExportName","kindKey","isPossiblyLiteralEnum","expressions","isUncomputedMemberExpressionChain","isNumber","isNegativeNumber","PlaceholderErrors","ClassNameIsRequired","UnexpectedSpace","placeholders","PlaceholdersParserMixin","parsePlaceholder","assertNoSpace","finishPlaceholder","chStartsBindingIdentifier","verifyBreakContinue","isBreak","parseStatementOrSloppyAnnexBFunctionDeclaration","stmtPlaceholder","parseBlock","createNewLexicalScope","parseFunctionId","requireId","parseClassBody","startsWith","maybeParseExportDefaultSpecifier","_specifiers","checkExport","filter","hasStarImport","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","v8intrinsic","V8IntrinsicMixin","parseV8Intrinsic","v8IntrinsicStartLoc","parseIdentifierName","PIPELINE_PROPOSALS","TOPIC_TOKENS","validatePlugins","pluginsMap","decoratorsBeforeExport","allowCallParenthesized","_pluginsMap$get","proposalList","p","tupleSyntaxIsHash","syntaxType","tokenList","moduleAttributesVersionPluginOption","version","deprecatedAssertSyntax","RECORD_AND_TUPLE_SYNTAX_TYPES","missingPlugins","mixinPlugins","mixinPluginNames","ExpressionParser","checkProto","isRecord","protoRef","used","shouldExitDescending","disallowIn","disallowInAnd","parseExpressionBase","allowInAnd","parseMaybeAssignDisallowIn","resultError","_resultError$loc","parseYield","ownExpressionErrors","parseMaybeConditional","parseExprOps","parseMaybeUnaryOrPrivate","op","prec","checkPipelineAtInfixOperator","logical","coalesce","parseExprOpRightExpr","finishedNode","nextOp","withTopicBindingContext","parseHackPipeBody","parseSmartPipelineBodyInStyle","parseExprOpBaseRightExpr","withSoloAwaitPermittingContext","parseFSharpPipelineBody","_body$extra","requiredParentheses","topicReferenceWasUsedInCurrentContext","checkExponentialAfterUnary","isAwait","recordAwaitIfAllowed","parseAwait","update","isDelete","parseUpdate","isAmbiguousAwait","updateExpressionNode","parseExprSubscripts","maybeAsyncArrow","parseBind","parseCoverCallAndAsyncArrowHead","parseMember","parseNoCallExpr","tag","quasi","allowPlaceholder","nodeForExtra","oldInFSharpPipelineDirectBody","addTrailingCommaExtraToNode","parseExprListItem","_call$extra","parseSuper","parseImportMetaProperty","parseImportCall","parseDo","parseFunctionOrFunctionSent","parseDecorators","parseNewOrNewTarget","parseTopicReferenceThenEqualsSign","parseTopicReference","pipeProposal","parseModuleExpression","parseAsyncFunctionExpression","parseAsyncArrowUnaryFunction","topicTokenType","topicTokenValue","finishTopicReference","testTopicReferenceConfiguration","topicReferenceIsAllowedInCurrentContext","registerTopicReference","meta","parseMetaProperty","parseFunction","isSource","innerStartLoc","spreadStartLoc","optionalCommaStartLoc","spreadNodeStartLoc","innerEndLoc","arrowNode","wrapParenthesis","parenExpression","metaProp","parseNew","parseExprList","parseTemplateElement","isTagged","elemStart","elem","isTail","endOffset","elemEnd","cooked","tail","curElt","quasis","substitutions","propHash","parsePropertyDefinition","maybeAsyncOrAccessorProp","keyName","_params","finishedProp","generator","isExpression","hasStrictModeDirective","nonSimple","isSimpleParamList","formalParameters","reservedTest","isAwaitAllowed","delegating","delegate","childExpr","isSimpleReference","checkSmartPipeTopicBodyEarlyErrors","callback","outerContextTopicState","withSmartMixTopicForbiddingContext","outerContextSoloAwaitState","prodParamToSet","ParamKind","prodParamToClear","ret","revertScopes","parseProgram","loopLabel","switchLabel","loneSurrogate","keywordRelationalOperator","babel7CompatTokens","hashEndPos","hashEndLoc","backquoteEnd","backquoteEndLoc","startToken","templateValue","templateElementEnd","templateElementEndLoc","endToken","StatementParser","interpreter","parseInterpreterDirective","finishedProgram","stmtToDirective","directiveLiteral","hasFollowingBindingAtom","endCh","chStartsBindingPattern","hasInLineFollowingBindingIdentifierOrBrace","startsUsingForOf","startsAwaitUsing","parseModuleItem","ParseStatementFlag","parseStatementListItem","allowLabeledFunction","parseStatement","allowDeclaration","allowFunctionDeclaration","parseBreakContinueStatement","parseDebuggerStatement","parseDoWhileStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","decoratorsEnabledBeforeExport","maybeDecorators","classNode","exportNode","_classNode$decorators","allowExport","paramsStartLoc","lab","parseHeaderExpression","awaitAt","parseFor","startsWithLet","startsWithAwaitUsing","starsWithUsingDeclaration","isLetOrUsing","initNode","parseVar","isForIn","parseForIn","startsWithAsync","isForOf","isHangingDeclaration","ParseFunctionFlag","discriminant","cases","cur","sawDefault","isCase","block","handler","clause","finalizer","statementStart","parsedNonDirective","await","isFor","hangingDeclaration","isDeclaration","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","accessorProp","publicMember","parseClassElementName","maybeContextualKw","isPrivate","maybeQuestionTokenStartLoc","pushClassPrivateProperty","pushClassProperty","pushClassAccessorProperty","_member$decorators","parseInitializer","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","_node2$declaration","_ref$specifiers","isTypeExport","assertions","nextType","hasFrom","nextAfterFrom","maybeParseImportAttributes","checkJSONModuleImport","checkNames","isDefault","isFrom","_node$specifiers","_declaration$extra","nodes","surrogate","isJSONModuleImport","singleBindingType","_node$assertions","nonDefaultNamedSpecifier","find","phaseIdentifier","isImportPhase","isPrecedingIdImportPhase","parseImportSourceAndAttributes","maybeParseDefaultImportSpecifier","parseNext","_node$specifiers2","parseImportAttributes","attrs","attrNames","parseModuleAttributes","useWith","importSpecifier","Parser","_options","getParser","ast","moduleError","generateExportedTokenTypes","internalTokenTypes","tokTypes","getParserClass","parserClassCache","pluginList"],"mappings":"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AC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjkD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,MAAM,EAAC,GAAG,CAAC;AAK/0B,SAASC,aAAaA,CAAC1oB,IAAY,EAAEwQ,GAAsB,EAAW;EACpE,IAAIN,GAAG,GAAG,OAAO;EACjB,KAAK,IAAIyY,CAAC,GAAG,CAAC,EAAEtO,MAAM,GAAG7J,GAAG,CAAC6J,MAAM,EAAEsO,CAAC,GAAGtO,MAAM,EAAEsO,CAAC,IAAI,CAAC,EAAE;IACvDzY,GAAG,IAAIM,GAAG,CAACmY,CAAC,CAAC;IACb,IAAIzY,GAAG,GAAGlQ,IAAI,EAAE,OAAO,KAAK;IAE5BkQ,GAAG,IAAIM,GAAG,CAACmY,CAAC,GAAG,CAAC,CAAC;IACjB,IAAIzY,GAAG,IAAIlQ,IAAI,EAAE,OAAO,IAAI;EAC9B;EACA,OAAO,KAAK;AACd;AAIO,SAAS4oB,iBAAiBA,CAAC5oB,IAAY,EAAW;EACvD,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACrE,IAAIA,IAAI,IAAA,EAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACrE,IAAIA,IAAI,IAAA,GAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OACEA,IAAI,IAAI,IAAI,IAAIsoB,uBAAuB,CAACO,IAAI,CAACvU,MAAM,CAACwU,YAAY,CAAC9oB,IAAI,CAAC,CAAC;EAE3E;EACA,OAAO0oB,aAAa,CAAC1oB,IAAI,EAAEwoB,0BAA0B,CAAC;AACxD;AAIO,SAASO,gBAAgBA,CAAC/oB,IAAY,EAAW;EACtD,IAAIA,IAAI,GAAA,EAAmB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACjE,IAAIA,IAAI,GAAA,EAAkB,EAAE,OAAO,IAAI;EACvC,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAO,KAAK;EAC7C,IAAIA,IAAI,IAAA,EAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,GAAA,EAAuB,EAAE,OAAOA,IAAI,KAAyB,EAAA;EACrE,IAAIA,IAAI,IAAA,GAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OAAOA,IAAI,IAAI,IAAI,IAAIuoB,kBAAkB,CAACM,IAAI,CAACvU,MAAM,CAACwU,YAAY,CAAC9oB,IAAI,CAAC,CAAC;EAC3E;EACA,OACE0oB,aAAa,CAAC1oB,IAAI,EAAEwoB,0BAA0B,CAAC,IAC/CE,aAAa,CAAC1oB,IAAI,EAAEyoB,qBAAqB,CAAC;AAE9C;AClFA,MAAMO,aAAa,GAAG;EACpB/d,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDge,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMxM,QAAQ,GAAG,IAAI9O,GAAG,CAACob,aAAa,CAAC/d,OAAO,CAAC;AAC/C,MAAMke,sBAAsB,GAAG,IAAIvb,GAAG,CAACob,aAAa,CAACC,MAAM,CAAC;AAC5D,MAAMG,0BAA0B,GAAG,IAAIxb,GAAG,CAACob,aAAa,CAACE,UAAU,CAAC;AAK7D,SAASG,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAO5M,QAAQ,CAAC+M,GAAG,CAACH,IAAI,CAAC;AAC3B;AC9EO,SAASO,eAAeA,CAC7BC,OAAe,EACfC,IAAY,EACZC,KAAa,EACJ;EACT,OACEF,OAAO,OAAqB,IAC5BC,IAAI,OAAqB,IACzBnB,iBAAiB,CAACoB,KAAK,CAAC;AAE5B;AAOA,MAAMC,mBAAmB,GAAG,IAAIrc,GAAG,CAAC,CAClC,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EAEP,MAAM,EACN,WAAW,EAEX,MAAM,EACN,OAAO,CACR,CAAC;AAEK,SAASsc,iBAAiBA,CAACZ,IAAY,EAAW;EACvD,OAAOW,mBAAmB,CAACR,GAAG,CAACH,IAAI,CAAC;AACtC;AC1EO,MAAMa,KAAK,CAAC;EAKjBhrB,WAAWA,CAACyU,KAAgB,EAAE;IAAA,IAJ9BA,CAAAA,KAAK,GAAc,CAAC;IAAA,IAAA,CACpBwW,KAAK,GAA0B,IAAIzN,GAAG,EAAE;IAAA,IACxC0N,CAAAA,gBAAgB,GAAG,EAAE;IAGnB,IAAI,CAACzW,KAAK,GAAGA,KAAK;EACpB;AACF;AAIe,MAAM0W,YAAY,CAA+B;EAM9DnrB,WAAWA,CAACorB,MAAiB,EAAEhB,QAAiB,EAAE;IAAA,IAAA,CALlDgB,MAAM,GAAA,KAAA,CAAA;IAAA,IACNC,CAAAA,UAAU,GAAkB,EAAE;IAAA,IAAA,CAC9BjB,QAAQ,GAAA,KAAA,CAAA;IAAA,IAAA,CACRkB,gBAAgB,GAA0B,IAAI9N,GAAG,EAAE;IAGjD,IAAI,CAAC4N,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAChB,QAAQ,GAAGA,QAAQ;EAC1B;EAEA,IAAImB,UAAUA,CAAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAACC,YAAY,CAAE,CAAA,CAAC/W,KAAK,IAAoB,IAAI,CAAC;EAC5D;EACA,IAAIgX,UAAUA,CAAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAACC,oBAAoB,CAAA,CAAE,IAAqB,IAAI,CAAC;EAC/D;EACA,IAAIC,UAAUA,CAAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAACC,qBAAqB,CAAA,CAAE,KAAkB,IAAI,CAAC;EAC7D;EACA,IAAI1T,gBAAgBA,CAAAA,EAAG;IACrB,OAAO,CAAC,IAAI,CAAC0T,qBAAqB,CAAA,CAAE,KAAyB,IAAI,CAAC;EACpE;EACA,IAAIC,OAAOA,CAAAA,EAAG;IACZ,OAAO,CAAC,IAAI,CAACD,qBAAqB,CAAA,CAAE,KAAkB,IAAI,CAAC;EAC7D;EACA,IAAIE,+BAA+BA,CAAAA,EAAG;IACpC,MAAMrX,KAAK,GAAG,IAAI,CAACmX,qBAAqB,EAAE;IAC1C,OAAO,CAACnX,KAAK,KAAkB,IAAI,CAAC,IAAI,CAACA,KAAK,IAAqB,MAAM,CAAC;EAC5E;EACA,IAAIsX,aAAaA,CAAAA,EAAG;IAClB,KAAK,IAAIvC,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAACnQ,MAAM,GAAG,CAAC,GAAIsO,CAAC,EAAE,EAAE;MAC9C,MAAM;QAAE/U;MAAM,CAAC,GAAG,IAAI,CAAC4W,UAAU,CAAC7B,CAAC,CAAC;MACpC,IAAI/U,KAAK,MAAyB,EAAE;QAClC,OAAO,IAAI;MACb;MACA,IAAIA,KAAK,IAAIuX,QAA+B,CAAC,EAAE;QAE7C,OAAO,KAAK;MACd;IACF;EACF;EACA,IAAIC,kBAAkBA,CAAAA,EAAG;IACvB,OAAO,CAAC,IAAI,CAACL,qBAAqB,CAAA,CAAE,IAAqB,IAAI,CAAC;EAChE;EACA,IAAIM,mBAAmBA,CAAAA,EAAG;IACxB,OAAO,IAAI,CAACC,0BAA0B,CAAC,IAAI,CAACX,YAAY,CAAE,CAAA,CAAC;EAC7D;EAEAY,WAAWA,CAAC3X,KAAgB,EAAS;IACnC,OAAO,IAAIuW,KAAK,CAACvW,KAAK,CAAC;EACzB;EAEA4X,KAAKA,CAAC5X,KAAgB,EAAE;IAGtB,IAAI,CAAC4W,UAAU,CAAC9M,IAAI,CAAC,IAAI,CAAC6N,WAAW,CAAC3X,KAAK,CAAC,CAAC;EAC/C;EAEA6X,IAAIA,CAAAA,EAAc;IAChB,MAAMC,KAAK,GAAG,IAAI,CAAClB,UAAU,CAACtC,GAAG,CAAA,CAAE;IACnC,OAAOwD,KAAK,CAAC9X,KAAK;EACpB;EAKA0X,0BAA0BA,CAACI,KAAa,EAAW;IACjD,OAAO,CAAC,EACNA,KAAK,CAAC9X,KAAK,IAAIuX,OAA2C,CAAC,IAC1D,CAAC,IAAI,CAACZ,MAAM,CAAChB,QAAQ,IAAImC,KAAK,CAAC9X,KAAK,IAAqB,CAC3D;EACH;EAEA+X,WAAWA,CAAC3jB,IAAY,EAAE4jB,WAAwB,EAAE9b,GAAa,EAAE;IACjE,IAAI4b,KAAK,GAAG,IAAI,CAACf,YAAY,EAAE;IAC/B,IACEiB,WAAW,IAA4B,IACvCA,WAAW,KAA6B,EACxC;MACA,IAAI,CAACC,yBAAyB,CAACH,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,EAAE9b,GAAG,CAAC;MAE7D,IAAIhO,IAAI,GAAG4pB,KAAK,CAACtB,KAAK,CAAC7Z,GAAG,CAACvI,IAAI,CAAC,IAAI,CAAC;MAErC,IAAI4jB,WAAW,KAA6B,EAAE;QAC5C9pB,IAAI,GAAGA,IAAI,IAAoB;MACjC,CAAC,MAAM;QACL,IAAI,CAAC4pB,KAAK,CAACrB,gBAAgB,EAAE;UAC3BqB,KAAK,CAACrB,gBAAgB,GAAGriB,IAAI;QAC/B;QACAlG,IAAI,GAAGA,IAAI,IAAmB;MAChC;MAEA4pB,KAAK,CAACtB,KAAK,CAAC5Z,GAAG,CAACxI,IAAI,EAAElG,IAAI,CAAC;MAE3B,IAAI8pB,WAAW,IAA4B,EAAE;QAC3C,IAAI,CAACE,kBAAkB,CAACJ,KAAK,EAAE1jB,IAAI,CAAC;MACtC;IACF,CAAC,MAAM,IAAI4jB,WAAW,IAAwB,EAAE;MAC9C,KAAK,IAAIjD,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAACnQ,MAAM,GAAG,CAAC,EAAEsO,CAAC,IAAI,CAAC,EAAE,EAAEA,CAAC,EAAE;QACpD+C,KAAK,GAAG,IAAI,CAAClB,UAAU,CAAC7B,CAAC,CAAC;QAC1B,IAAI,CAACkD,yBAAyB,CAACH,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,EAAE9b,GAAG,CAAC;QAC7D4b,KAAK,CAACtB,KAAK,CAAC5Z,GAAG,CAACxI,IAAI,EAAE,CAAC0jB,KAAK,CAACtB,KAAK,CAAC7Z,GAAG,CAACvI,IAAI,CAAC,IAAI,CAAC,KAAgB,CAAC;QAClE,IAAI,CAAC8jB,kBAAkB,CAACJ,KAAK,EAAE1jB,IAAI,CAAC;QAEpC,IAAI0jB,KAAK,CAAC9X,KAAK,MAAgB,EAAE;MACnC;IACF;IACA,IAAI,IAAI,CAAC2W,MAAM,CAAChB,QAAQ,IAAImC,KAAK,CAAC9X,KAAK,IAAoB,EAAE;MAC3D,IAAI,CAAC6W,gBAAgB,CAACsB,MAAM,CAAC/jB,IAAI,CAAC;IACpC;EACF;EAEA8jB,kBAAkBA,CAACJ,KAAa,EAAE1jB,IAAY,EAAE;IAC9C,IAAI,IAAI,CAACuiB,MAAM,CAAChB,QAAQ,IAAImC,KAAK,CAAC9X,KAAK,IAAoB,EAAE;MAC3D,IAAI,CAAC6W,gBAAgB,CAACsB,MAAM,CAAC/jB,IAAI,CAAC;IACpC;EACF;EAEA6jB,yBAAyBA,CACvBH,KAAa,EACb1jB,IAAY,EACZ4jB,WAAwB,EACxB9b,GAAa,EACb;IACA,IAAI,IAAI,CAACkc,mBAAmB,CAACN,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,CAAC,EAAE;MACtD,IAAI,CAACrB,MAAM,CAACnR,KAAK,CAAC9H,MAAM,CAACzE,gBAAgB,EAAEiD,GAAG,EAAE;QAC9ClQ,cAAc,EAAEoI;MAClB,CAAC,CAAC;IACJ;EACF;EAEAgkB,mBAAmBA,CACjBN,KAAa,EACb1jB,IAAY,EACZ4jB,WAAwB,EACf;IACT,IAAI,EAAEA,WAAW,IAAyB,CAAC,EAAE,OAAO,KAAK;IAEzD,IAAIA,WAAW,IAA4B,EAAE;MAC3C,OAAOF,KAAK,CAACtB,KAAK,CAACX,GAAG,CAACzhB,IAAI,CAAC;IAC9B;IAEA,MAAMlG,IAAI,GAAG4pB,KAAK,CAACtB,KAAK,CAAC7Z,GAAG,CAACvI,IAAI,CAAC;IAElC,IAAI4jB,WAAW,KAA6B,EAAE;MAC5C,OACE,CAAC9pB,IAAI,IAAmB,IAAI,CAAC,IAC5B,CAAC,IAAI,CAACwpB,0BAA0B,CAACI,KAAK,CAAC,IAAI,CAAC5pB,IAAI,IAAe,IAAI,CAAE;IAE1E;IAEA,OACG,CAACA,IAAI,IAAmB,IAAI,CAAC,IAG5B,EACE4pB,KAAK,CAAC9X,KAAK,IAAyB,IACpC8X,KAAK,CAACrB,gBAAgB,KAAKriB,IAAI,CAChC,IACF,CAAC,IAAI,CAACsjB,0BAA0B,CAACI,KAAK,CAAC,IACtC,CAAC5pB,IAAI,IAAoB,IAAI,CAAE;EAErC;EAEAmqB,gBAAgBA,CAACpV,EAAgB,EAAE;IACjC,MAAM;MAAE7O;IAAM,CAAA,GAAG6O,EAAE;IACnB,MAAMqV,aAAa,GAAG,IAAI,CAAC1B,UAAU,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC0B,aAAa,CAAC9B,KAAK,CAACX,GAAG,CAACzhB,IAAI,CAAC,EAAE;MAClC,IAAI,CAACyiB,gBAAgB,CAACja,GAAG,CAACxI,IAAI,EAAE6O,EAAE,CAAC/G,GAAG,CAACrQ,KAAK,CAAC;IAC/C;EACF;EAEAkrB,YAAYA,CAAAA,EAAW;IACrB,OAAO,IAAI,CAACH,UAAU,CAAC,IAAI,CAACA,UAAU,CAACnQ,MAAM,GAAG,CAAC,CAAC;EACpD;EAEAwQ,oBAAoBA,CAAAA,EAAc;IAChC,KAAK,IAAIlC,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAACnQ,MAAM,GAAG,CAAC,GAAIsO,CAAC,EAAE,EAAE;MAC9C,MAAM;QAAE/U;MAAM,CAAC,GAAG,IAAI,CAAC4W,UAAU,CAAC7B,CAAC,CAAC;MACpC,IAAI/U,KAAK,MAAgB,EAAE;QACzB,OAAOA,KAAK;MACd;IACF;EACF;EAGAmX,qBAAqBA,CAAAA,EAAc;IACjC,KAAK,IAAIpC,CAAC,GAAG,IAAI,CAAC6B,UAAU,CAACnQ,MAAM,GAAG,CAAC,GAAIsO,CAAC,EAAE,EAAE;MAC9C,MAAM;QAAE/U;MAAM,CAAC,GAAG,IAAI,CAAC4W,UAAU,CAAC7B,CAAC,CAAC;MACpC,IACE/U,KAAK,IAAIuX,QAA+B,CAAC,IACzC,EAAEvX,KAAK,IAAkB,CAAC,EAC1B;QACA,OAAOA,KAAK;MACd;IACF;EACF;AACF;AC5NA,MAAMuY,SAAS,SAAShC,KAAK,CAAC;EAAAhrB,WAAAA,CAAA,GAAA2Y,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAAA,CAE5BsU,gBAAgB,GAAgB,IAAIxe,GAAG,EAAE;EAAA;AAC3C;AAEe,MAAMye,gBAAgB,SAAS/B,YAAY,CAAY;EACpEiB,WAAWA,CAAC3X,KAAgB,EAAa;IACvC,OAAO,IAAIuY,SAAS,CAACvY,KAAK,CAAC;EAC7B;EAEA+X,WAAWA,CAAC3jB,IAAY,EAAE4jB,WAAwB,EAAE9b,GAAa,EAAE;IACjE,MAAM4b,KAAK,GAAG,IAAI,CAACf,YAAY,EAAE;IACjC,IAAIiB,WAAW,OAAmC,EAAE;MAClD,IAAI,CAACC,yBAAyB,CAACH,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,EAAE9b,GAAG,CAAC;MAC7D,IAAI,CAACgc,kBAAkB,CAACJ,KAAK,EAAE1jB,IAAI,CAAC;MACpC0jB,KAAK,CAACU,gBAAgB,CAACE,GAAG,CAACtkB,IAAI,CAAC;MAChC;IACF;IAEA,KAAK,CAAC2jB,WAAW,CAAC3jB,IAAI,EAAE4jB,WAAW,EAAE9b,GAAG,CAAC;EAC3C;EAEAkc,mBAAmBA,CACjBN,KAAgB,EAChB1jB,IAAY,EACZ4jB,WAAwB,EACf;IACT,IAAI,KAAK,CAACI,mBAAmB,CAACN,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,CAAC,EAAE,OAAO,IAAI;IAEpE,IACEA,WAAW,OAAmC,IAC9C,CAACF,KAAK,CAACU,gBAAgB,CAAC3C,GAAG,CAACzhB,IAAI,CAAC,EACjC;MACA,MAAMlG,IAAI,GAAG4pB,KAAK,CAACtB,KAAK,CAAC7Z,GAAG,CAACvI,IAAI,CAAC;MAClC,OAAO,CAAClG,IAAI,IAAoB,IAAI,CAAC,IAAI,CAACA,IAAI,IAAmB,IAAI,CAAC;IACxE;IAEA,OAAO,KAAK;EACd;EAEAmqB,gBAAgBA,CAACpV,EAAgB,EAAE;IACjC,IAAI,CAAC,IAAI,CAAC2T,UAAU,CAAC,CAAC,CAAC,CAAC4B,gBAAgB,CAAC3C,GAAG,CAAC5S,EAAE,CAAC7O,IAAI,CAAC,EAAE;MACrD,KAAK,CAACikB,gBAAgB,CAACpV,EAAE,CAAC;IAC5B;EACF;AACF;ACrCe,MAAM0V,UAAU,CAAC;EAAAptB,WAAAA,CAAA,EAAA;IAAA,IAe9BqtB,CAAAA,iBAAiB,GAAY,KAAK;IAAA,IAClCC,CAAAA,2BAA2B,GAAY,KAAK;EAAA;EAW5CC,iBAAiBA,CAACC,SAAiB,EAAE;IACnC,OAAOA,SAAS,GAAG,IAAI,CAAChb,UAAU;EACpC;EAEAib,iBAAiBA,CAACC,SAAiB,EAAE;IACnC,OAAOA,SAAS,GAAG,IAAI,CAAClb,UAAU;EACpC;EAMAmb,SAASA,CAACC,YAA0B,EAAW;IAC7C,IAAI,OAAOA,YAAY,KAAK,QAAQ,EAAE;MACpC,OAAO,IAAI,CAAC3a,OAAO,CAACqX,GAAG,CAACsD,YAAY,CAAC;IACvC,CAAC,MAAM;MACL,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGF,YAAY;MAChD,IAAI,CAAC,IAAI,CAACD,SAAS,CAACE,UAAU,CAAC,EAAE;QAC/B,OAAO,KAAK;MACd;MACA,MAAME,aAAa,GAAG,IAAI,CAAC9a,OAAO,CAAC7B,GAAG,CAACyc,UAAU,CAAC;MAClD,KAAK,MAAMtkB,GAAG,IAAIoG,MAAM,CAACkC,IAAI,CAC3Bic,aACF,CAAC,EAAoC;QACnC,IAAI,CAAAC,aAAa,IAAbA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAa,CAAGxkB,GAAG,CAAC,MAAKukB,aAAa,CAACvkB,GAAG,CAAC,EAAE;UAC/C,OAAO,KAAK;QACd;MACF;MACA,OAAO,IAAI;IACb;EACF;EAEAgO,eAAeA,CAGbyW,MAAkB,EAAEnlB,IAAgB,EAAE;IAAA,IAAAolB,iBAAA;IACtC,OAAA,CAAAA,iBAAA,GAAQ,IAAI,CAAChb,OAAO,CAAC7B,GAAG,CAAC4c,MAAM,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzBC,iBAAA,CACLplB,IAAI,CACL;EACH;AACF;ACvCA,SAASqlB,mBAAmBA,CAACxrB,IAAkB,EAAEyrB,QAAwB,EAAE;EACzE,IAAIzrB,IAAI,CAAC0rB,gBAAgB,KAAK7b,SAAS,EAAE;IACvC7P,IAAI,CAAC0rB,gBAAgB,GAAGD,QAAQ;EAClC,CAAC,MAAM;IACLzrB,IAAI,CAAC0rB,gBAAgB,CAACC,OAAO,CAAC,GAAGF,QAAQ,CAAC;EAC5C;AACF;AAOA,SAASG,kBAAkBA,CAAC5rB,IAAkB,EAAEyrB,QAAwB,EAAE;EACxE,IAAIzrB,IAAI,CAAC6rB,eAAe,KAAKhc,SAAS,EAAE;IACtC7P,IAAI,CAAC6rB,eAAe,GAAGJ,QAAQ;EACjC,CAAC,MAAM;IACLzrB,IAAI,CAAC6rB,eAAe,CAACF,OAAO,CAAC,GAAGF,QAAQ,CAAC;EAC3C;AACF;AAOO,SAASK,gBAAgBA,CAC9B9rB,IAAkB,EAClByrB,QAAyB,EACzB;EACA,IAAIzrB,IAAI,CAAC+rB,aAAa,KAAKlc,SAAS,EAAE;IACpC7P,IAAI,CAAC+rB,aAAa,GAAGN,QAAQ;EAC/B,CAAC,MAAM;IACLzrB,IAAI,CAAC+rB,aAAa,CAACJ,OAAO,CAAC,GAAGF,QAAQ,CAAC;EACzC;AACF;AAOA,SAASO,mBAAmBA,CAC1BhsB,IAAkB,EAClBisB,QAAqB,EACrBC,SAA4B,EAC5B;EACA,IAAIC,WAAW,GAAG,IAAI;EACtB,IAAIrF,CAAC,GAAGmF,QAAQ,CAACzT,MAAM;EACvB,OAAO2T,WAAW,KAAK,IAAI,IAAIrF,CAAC,GAAG,CAAC,EAAE;IACpCqF,WAAW,GAAGF,QAAQ,CAAC,EAAEnF,CAAC,CAAC;EAC7B;EACA,IAAIqF,WAAW,KAAK,IAAI,IAAIA,WAAW,CAACvuB,KAAK,GAAGsuB,SAAS,CAACtuB,KAAK,EAAE;IAC/DkuB,gBAAgB,CAAC9rB,IAAI,EAAEksB,SAAS,CAACT,QAAQ,CAAC;EAC5C,CAAC,MAAM;IACLD,mBAAmB,CAACW,WAAW,EAAED,SAAS,CAACT,QAAQ,CAAC;EACtD;AACF;AAEe,MAAMW,cAAc,SAAS1B,UAAU,CAAC;EACrD2B,UAAUA,CAACC,OAAgB,EAAQ;IACjC,IAAI,IAAI,CAACxuB,QAAQ,EAAEwuB,OAAO,CAACre,GAAG,CAACnQ,QAAQ,GAAG,IAAI,CAACA,QAAQ;IACvD,MAAM;MAAEyuB;KAAa,GAAG,IAAI,CAACnU,KAAK;IAClC,IAAI,IAAI,CAACqT,QAAQ,CAACjT,MAAM,KAAK+T,WAAW,EAAE;MACxC,IAAI,CAACd,QAAQ,CAACjT,MAAM,GAAG+T,WAAW;IACpC;IACA,IAAI,CAACd,QAAQ,CAAC5P,IAAI,CAACyQ,OAAO,CAAC;IAC3B,IAAI,CAAClU,KAAK,CAACmU,WAAW,EAAE;EAC1B;EAMAC,cAAcA,CAACxsB,IAAU,EAAQ;IAC/B,MAAM;MAAEysB;KAAc,GAAG,IAAI,CAACrU,KAAK;IACnC,MAAMsU,kBAAkB,GAAGD,YAAY,CAACjU,MAAM;IAC9C,IAAIkU,kBAAkB,KAAK,CAAC,EAAE;IAC9B,IAAI5F,CAAC,GAAG4F,kBAAkB,GAAG,CAAC;IAC9B,MAAMC,aAAa,GAAGF,YAAY,CAAC3F,CAAC,CAAC;IAErC,IAAI6F,aAAa,CAAC/uB,KAAK,KAAKoC,IAAI,CAACnC,GAAG,EAAE;MACpC8uB,aAAa,CAACC,WAAW,GAAG5sB,IAAI;MAChC8mB,CAAC,EAAE;IACL;IAEA,MAAM;MAAElpB,KAAK,EAAEivB;IAAW,CAAA,GAAG7sB,IAAI;IAEjC,OAAO8mB,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAClB,MAAMoF,SAAS,GAAGO,YAAY,CAAC3F,CAAC,CAAC;MACjC,MAAMgG,UAAU,GAAGZ,SAAS,CAACruB,GAAG;MAChC,IAAIivB,UAAU,GAAGD,SAAS,EAAE;QAO1BX,SAAS,CAACa,cAAc,GAAG/sB,IAAI;QAC/B,IAAI,CAACgtB,eAAe,CAACd,SAAS,CAAC;QAC/BO,YAAY,CAACQ,MAAM,CAACnG,CAAC,EAAE,CAAC,CAAC;MAC3B,CAAC,MAAM;QACL,IAAIgG,UAAU,KAAKD,SAAS,EAAE;UAC5BX,SAAS,CAACgB,YAAY,GAAGltB,IAAI;QAC/B;QAEA;MACF;IACF;EACF;EAMAgtB,eAAeA,CAACd,SAA4B,EAAE;IAC5C,MAAM;MAAET;IAAU,CAAA,GAAGS,SAAS;IAC9B,IAAIA,SAAS,CAACU,WAAW,KAAK,IAAI,IAAIV,SAAS,CAACgB,YAAY,KAAK,IAAI,EAAE;MACrE,IAAIhB,SAAS,CAACU,WAAW,KAAK,IAAI,EAAE;QAClCpB,mBAAmB,CAACU,SAAS,CAACU,WAAW,EAAEnB,QAAQ,CAAC;MACtD;MACA,IAAIS,SAAS,CAACgB,YAAY,KAAK,IAAI,EAAE;QACnCtB,kBAAkB,CAACM,SAAS,CAACgB,YAAY,EAAEzB,QAAQ,CAAC;MACtD;IACF,CAAC,MAAM;MAEL,MAAM;QAAEsB,cAAc,EAAE/sB,IAAI;QAAEpC,KAAK,EAAEuvB;MAAc,CAAA,GAAGjB,SAAS;MAC/D,IACE,IAAI,CAACkB,KAAK,CAACC,UAAU,CAAC,IAAI,CAACtC,iBAAiB,CAACoC,YAAY,CAAC,GAAG,CAAC,CAAC,OAChD,EACf;QAIA,QAAQntB,IAAI,CAACC,IAAI;UACf,KAAK,kBAAkB;UACvB,KAAK,eAAe;UACpB,KAAK,kBAAkB;YACrB+rB,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAACstB,UAAU,EAAEpB,SAAS,CAAC;YACrD;UACF,KAAK,gBAAgB;UACrB,KAAK,wBAAwB;YAC3BF,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAAC8X,SAAS,EAAEoU,SAAS,CAAC;YACpD;UACF,KAAK,qBAAqB;UAC1B,KAAK,oBAAoB;UACzB,KAAK,yBAAyB;UAC9B,KAAK,cAAc;UACnB,KAAK,aAAa;UAClB,KAAK,oBAAoB;YACvBF,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAAC+T,MAAM,EAAEmY,SAAS,CAAC;YACjD;UACF,KAAK,iBAAiB;UACtB,KAAK,cAAc;UACnB,KAAK,iBAAiB;YACpBF,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAACisB,QAAQ,EAAEC,SAAS,CAAC;YACnD;UACF,KAAK,wBAAwB;UAC7B,KAAK,mBAAmB;YACtBF,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAACuY,UAAU,EAAE2T,SAAS,CAAC;YACrD;UACF,KAAK,mBAAmB;YACa;cACjCF,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAACutB,OAAO,EAAErB,SAAS,CAAC;YACpD;YAGA;UACF,KAAK,YAAY;YACfF,mBAAmB,CAAChsB,IAAI,EAAEA,IAAI,CAACutB,OAAO,EAAErB,SAAS,CAAC;YAClD;UACF;YAAS;cACPJ,gBAAgB,CAAC9rB,IAAI,EAAEyrB,QAAQ,CAAC;YAClC;QACF;MACF,CAAC,MAAM;QACLK,gBAAgB,CAAC9rB,IAAI,EAAEyrB,QAAQ,CAAC;MAClC;IACF;EACF;EAQA+B,yBAAyBA,CAAAA,EAAG;IAC1B,MAAM;MAAEf;KAAc,GAAG,IAAI,CAACrU,KAAK;IACnC,KAAK,IAAI0O,CAAC,GAAG2F,YAAY,CAACjU,MAAM,GAAG,CAAC,EAAEsO,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACjD,IAAI,CAACkG,eAAe,CAACP,YAAY,CAAC3F,CAAC,CAAC,CAAC;IACvC;IACA,IAAI,CAAC1O,KAAK,CAACqU,YAAY,GAAG,EAAE;EAC9B;EAqBAgB,iCAAiCA,CAACztB,IAAU,EAAE;IAC5C,MAAM;MAAEysB;KAAc,GAAG,IAAI,CAACrU,KAAK;IACnC,MAAM;MAAEI;IAAQ,CAAA,GAAGiU,YAAY;IAC/B,IAAIjU,MAAM,KAAK,CAAC,EAAE;IAClB,MAAM0T,SAAS,GAAGO,YAAY,CAACjU,MAAM,GAAG,CAAC,CAAC;IAC1C,IAAI0T,SAAS,CAACU,WAAW,KAAK5sB,IAAI,EAAE;MAClCksB,SAAS,CAACU,WAAW,GAAG,IAAI;IAC9B;EACF;EAsBAc,sCAAsCA,CAAC1tB,IAAgB,EAAE;IACvD,MAAM;MAAEysB;KAAc,GAAG,IAAI,CAACrU,KAAK;IACnC,MAAM;MAAEI;IAAQ,CAAA,GAAGiU,YAAY;IAC/B,IAAIjU,MAAM,KAAK,CAAC,EAAE;IAElB,IAAIiU,YAAY,CAACjU,MAAM,GAAG,CAAC,CAAC,CAAC0U,YAAY,KAAKltB,IAAI,EAAE;MAClDysB,YAAY,CAACjU,MAAM,GAAG,CAAC,CAAC,CAAC0U,YAAY,GAAG,IAAI;IAC9C,CAAC,MAAM,IAAI1U,MAAM,IAAI,CAAC,IAAIiU,YAAY,CAACjU,MAAM,GAAG,CAAC,CAAC,CAAC0U,YAAY,KAAKltB,IAAI,EAAE;MACxEysB,YAAY,CAACjU,MAAM,GAAG,CAAC,CAAC,CAAC0U,YAAY,GAAG,IAAI;IAC9C;EACF;EASAS,uBAAuBA,CAAC3tB,IAAU,EAAEpC,KAAa,EAAEC,GAAW,EAAE;IAC9D,MAAM;MAAE4uB;KAAc,GAAG,IAAI,CAACrU,KAAK;IACnC,MAAMsU,kBAAkB,GAAGD,YAAY,CAACjU,MAAM;IAC9C,IAAIkU,kBAAkB,KAAK,CAAC,EAAE;IAC9B,IAAI5F,CAAC,GAAG4F,kBAAkB,GAAG,CAAC;IAE9B,OAAO5F,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAClB,MAAMoF,SAAS,GAAGO,YAAY,CAAC3F,CAAC,CAAC;MACjC,MAAMgG,UAAU,GAAGZ,SAAS,CAACruB,GAAG;MAChC,MAAMsvB,YAAY,GAAGjB,SAAS,CAACtuB,KAAK;MAEpC,IAAIuvB,YAAY,KAAKtvB,GAAG,EAAE;QACxBquB,SAAS,CAACU,WAAW,GAAG5sB,IAAI;MAC9B,CAAC,MAAM,IAAI8sB,UAAU,KAAKlvB,KAAK,EAAE;QAC/BsuB,SAAS,CAACgB,YAAY,GAAGltB,IAAI;MAC/B,CAAC,MAAM,IAAI8sB,UAAU,GAAGlvB,KAAK,EAAE;QAC7B;MACF;IACF;EACF;AACF;ACjUO,MAAMgwB,SAAS,GAAG,yBAAyB;AAC3C,MAAMC,UAAU,GAAG,IAAI5b,MAAM,CAAC2b,SAAS,CAAC/V,MAAM,EAAE,GAAG,CAAC;AAGpD,SAASiW,SAASA,CAAC3vB,IAAY,EAAW;EAC/C,QAAQA,IAAI;IACV,KAAA,EAAA;IACA,KAAA,EAAA;IACA,KAAA,IAAA;IACA,KAAA,IAAA;MACE,OAAO,IAAI;IAEb;MACE,OAAO,KAAK;EAChB;AACF;AAEO,SAAS4vB,UAAUA,CAACX,KAAa,EAAExvB,KAAa,EAAEC,GAAW,EAAW;EAC7E,KAAK,IAAIipB,CAAC,GAAGlpB,KAAK,EAAEkpB,CAAC,GAAGjpB,GAAG,EAAEipB,CAAC,EAAE,EAAE;IAChC,IAAIgH,SAAS,CAACV,KAAK,CAACC,UAAU,CAACvG,CAAC,CAAC,CAAC,EAAE;MAClC,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd;AAEO,MAAMkH,cAAc,GAAG,+BAA+B;AAEtD,MAAMC,oBAAoB,GAC/B,gDAAgD;AAG3C,SAASC,YAAYA,CAAC/vB,IAAY,EAAW;EAClD,QAAQA,IAAI;IACV,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAA,EAAA;IACA,KAAA,GAAA;IACA,KAAA,IAAA;IACA,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,MAAM;MACT,OAAO,IAAI;IAEb;MACE,OAAO,KAAK;EAChB;AACF;AChCe,MAAMgwB,KAAK,CAAC;EAAA7wB,WAAAA,CAAA,EAAA;IAAA,IAAA,CACZyU,KAAK,GAAA,IAAA;IAAA,IAAA,CAIlBjC,UAAU,GAAA,KAAA,CAAA;IAAA,IAAA,CACVse,OAAO,GAAA,KAAA,CAAA;IAAA,IAAA,CACPC,SAAS,GAAA,KAAA,CAAA;IAAA,IAAA,CAIT3X,QAAQ,GAAA,KAAA,CAAA;IAAA,IAAA,CACR8C,MAAM,GAAA,KAAA,CAAA;IAAA,IA0BN8U,CAAAA,MAAM,GAAsB,EAAE;IAAA,IAG9BC,CAAAA,gBAAgB,GAAW,CAAC,CAAC;IAAA,IAM7BC,CAAAA,SAAS,GAAa,EAAE;IAAA,IAQxBC,CAAAA,yBAAyB,GAAa,EAAE;IAAA,IAAA,CAYxCC,YAAY,GAAsB;MAChCC,wBAAwB,EAAE,CAAC;MAC3BC,aAAa,EAAE;KAChB;IAAA,IAODC,CAAAA,MAAM,GAID,EAAE;IAAA,IAEPtC,CAAAA,WAAW,GAAG,CAAC;IAAA,IAEfE,CAAAA,YAAY,GAA6B,EAAE;IAAA,IAG3Cpe,CAAAA,GAAG,GAAW,CAAC;IAAA,IAAA,CAIfpO,IAAI,GAAA,GAAA;IAAA,IAGJ+M,CAAAA,KAAK,GAAQ,IAAI;IAAA,IAGjBpP,CAAAA,KAAK,GAAW,CAAC;IAAA,IACjBC,CAAAA,GAAG,GAAW,CAAC;IAAA,IAIf6b,CAAAA,aAAa,GAAa,IAAI;IAAA,IAE9BrB,CAAAA,eAAe,GAAa,IAAI;IAAA,IAAA,CAIhC+N,OAAO,GAAsB,CAAC0I,KAAE,CAAChV,KAAK,CAAC;IAAA,IAYvCiV,CAAAA,6BAA6B,GAAoB,IAAI;IAAA,IAAA,CAYrDC,YAAY,GAAiD,IAAIlU,GAAG,EAAE;IAAA,IAGtEmU,CAAAA,YAAY,GAAW,CAAC;EAAA;EAAA,IArIV7H,MAAMA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAFPrV,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IAEJqV,MAAMA,CAAA8H,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAFPnd,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAalBod,IAAIA,CAAC;IACH3e,UAAU;IACVb,UAAU;IACVG,UAAU;IACVE,SAAS;IACTD;EACO,CAAC,EAAQ;IAChB,IAAI,CAACqX,MAAM,GACT5W,UAAU,KAAK,KAAK,GAChB,KAAK,GACLA,UAAU,KAAK,IAAI,GACjB,IAAI,GACJb,UAAU,KAAK,QAAQ;IAE/B,IAAI,CAACG,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACse,OAAO,GAAGpe,SAAS;IACxB,IAAI,CAACqe,SAAS,GAAG,CAACte,WAAW;IAC7B,IAAI,CAAC2G,QAAQ,GAAG,IAAI,CAAC8C,MAAM,GAAG,IAAInc,QAAQ,CACxC2S,SAAS,EACTD,WAAW,EACXD,UACF,CAAC;EACH;EAAC,IAsBasf,sBAAsBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAzDvBrd,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IAyDJqd,sBAAsBA,CAAAF,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAzDvBnd,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAAA,IA0DJsd,MAAMA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA1DPtd,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IA0DJsd,MAAMA,CAAAH,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA1DPnd,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAAA,IA2DJud,kBAAkBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA3DnBvd,KAAK,GAAA,CAAA,IAAA,CAAA;EAAA;EAAA,IA2DJud,kBAAkBA,CAAAJ,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA3DnBnd,KAAK,IAAA,CAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,CAAA;EAAA;EAAA,IA4DJwd,cAAcA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA5Dfxd,KAAK,GAAA,EAAA,IAAA,CAAA;EAAA;EAAA,IA4DJwd,cAAcA,CAAAL,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA5Dfnd,KAAK,IAAA,EAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,EAAA;EAAA;EAAA,IA6DJyd,gBAAgBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA7DjBzd,KAAK,GAAA,EAAA,IAAA,CAAA;EAAA;EAAA,IA6DJyd,gBAAgBA,CAAAN,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA7DjBnd,KAAK,IAAA,EAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,EAAA;EAAA;EAAA,IA8DJ0d,eAAeA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA9DhB1d,KAAK,GAAA,EAAA,IAAA,CAAA;EAAA;EAAA,IA8DJ0d,eAAeA,CAAAP,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA9DhBnd,KAAK,IAAA,EAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,EAAA;EAAA;EAAA,IA+DJ2d,iCAAiCA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA/DlC3d,KAAK,GAAA,GAAA,IAAA,CAAA;EAAA;EAAA,IA+DJ2d,iCAAiCA,CAAAR,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA/DlCnd,KAAK,IAAA,GAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,GAAA;EAAA;EAAA,IAwEJ4d,SAASA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAxEV5d,KAAK,GAAA,GAAA,IAAA,CAAA;EAAA;EAAA,IAwEJ4d,SAASA,CAAAT,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAxEVnd,KAAK,IAAA,GAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,GAAA;EAAA;EAAA,IAyEJ6d,0BAA0BA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CAzE3B7d,KAAK,GAAA,GAAA,IAAA,CAAA;EAAA;EAAA,IAyEJ6d,0BAA0BA,CAAAV,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CAzE3Bnd,KAAK,IAAA,GAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,GAAA;EAAA;EAAA,IA+GJ8d,kBAAkBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA/GnB9d,KAAK,GAAA,IAAA,IAAA,CAAA;EAAA;EAAA,IA+GJ8d,kBAAkBA,CAAAX,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA/GnBnd,KAAK,IAAA,IAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,IAAA;EAAA;EAAA,IAoHJ+d,WAAWA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CApHZ/d,KAAK,GAAA,IAAA,IAAA,CAAA;EAAA;EAAA,IAoHJ+d,WAAWA,CAAAZ,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CApHZnd,KAAK,IAAA,IAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,IAAA;EAAA;EAAA,IA0HJge,gBAAgBA,CAAAA,EAAA;IAAA,OAAA,CAAA,IAAA,CA1HjBhe,KAAK,GAAA,IAAA,IAAA,CAAA;EAAA;EAAA,IA0HJge,gBAAgBA,CAAAb,CAAA,EAAA;IAAA,IAAAA,CAAA,EAAA,IAAA,CA1HjBnd,KAAK,IAAA,IAAA,CAAA,KAAA,IAAA,CAALA,KAAK,IAAA,CAAA,IAAA;EAAA;EA8IlBie,WAAWA,CAAAA,EAAa;IACtB,OAAO,IAAI3yB,QAAQ,CACjB,IAAI,CAAC+wB,OAAO,EACZ,IAAI,CAAC/f,GAAG,GAAG,IAAI,CAACggB,SAAS,EACzB,IAAI,CAAChgB,GAAG,GAAG,IAAI,CAACyB,UAClB,CAAC;EACH;EAEAxB,KAAKA,CAAAA,EAAU;IACb,MAAM8J,KAAK,GAAG,IAAI+V,KAAK,EAAE;IACzB/V,KAAK,CAACrG,KAAK,GAAG,IAAI,CAACA,KAAK;IACxBqG,KAAK,CAACtI,UAAU,GAAG,IAAI,CAACA,UAAU;IAClCsI,KAAK,CAACgW,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5BhW,KAAK,CAACiW,SAAS,GAAG,IAAI,CAACA,SAAS;IAChCjW,KAAK,CAAC1B,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B0B,KAAK,CAACoB,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1BpB,KAAK,CAACkW,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC2B,KAAK,CAAA,CAAE;IAClC7X,KAAK,CAACmW,gBAAgB,GAAG,IAAI,CAACA,gBAAgB;IAC9CnW,KAAK,CAACoW,SAAS,GAAG,IAAI,CAACA,SAAS,CAACyB,KAAK,CAAA,CAAE;IACxC7X,KAAK,CAACqW,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACwB,KAAK,CAAA,CAAE;IACxE7X,KAAK,CAACsW,YAAY,GAAG,IAAI,CAACA,YAAY;IACtCtW,KAAK,CAACyW,MAAM,GAAG,IAAI,CAACA,MAAM,CAACoB,KAAK,CAAA,CAAE;IAClC7X,KAAK,CAACmU,WAAW,GAAG,IAAI,CAACA,WAAW;IACpCnU,KAAK,CAACqU,YAAY,GAAG,IAAI,CAACA,YAAY,CAACwD,KAAK,CAAA,CAAE;IAC9C7X,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB+J,KAAK,CAACnY,IAAI,GAAG,IAAI,CAACA,IAAI;IACtBmY,KAAK,CAACpL,KAAK,GAAG,IAAI,CAACA,KAAK;IACxBoL,KAAK,CAACxa,KAAK,GAAG,IAAI,CAACA,KAAK;IACxBwa,KAAK,CAACva,GAAG,GAAG,IAAI,CAACA,GAAG;IACpBua,KAAK,CAACsB,aAAa,GAAG,IAAI,CAACA,aAAa;IACxCtB,KAAK,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe;IAC5CD,KAAK,CAACgO,OAAO,GAAG,IAAI,CAACA,OAAO,CAAC6J,KAAK,CAAA,CAAE;IACpC7X,KAAK,CAAC2W,6BAA6B,GAAG,IAAI,CAACA,6BAA6B;IACxE3W,KAAK,CAAC4W,YAAY,GAAG,IAAI,CAACA,YAAY;IACtC5W,KAAK,CAAC6W,YAAY,GAAG,IAAI,CAACA,YAAY;IAEtC,OAAO7W,KAAK;EACd;AACF;eCrNA,SAAS8X,OAAOA,CAAC/xB,IAAI,EAAE;EACrB,OAAOA,IAAI,IAAA,EAAU,IAAIA,IAAI,IAAU,EAAA;AACzC,CAAC;AAID,MAAMgyB,iCAAiC,GAAG;EACxCC,SAAS,EAAE,IAAIrkB,GAAG,CAAS,kCAS1B,CAAC;EACFskB,GAAG,EAAE,IAAItkB,GAAG,CAAS,CAKpB,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA;AACH,CAAC;AAED,MAAMukB,gCAAgC,GAAG;EAEvCC,GAAG,EAAGC,EAAU,IAAKA,EAAE,KAAqB,EAAA,IAAIA,EAAE,KAAqB,EAAA;EAGvEC,GAAG,EAAGD,EAAU,IAAKA,EAAE,IAAoB,EAAA,IAAIA,EAAE,IAAoB,EAAA;EAGrEE,GAAG,EAAGF,EAAU,IAAKA,EAAE,IAAoB,EAAA,IAAIA,EAAE,IAAoB,EAAA;EAGrEH,GAAG,EAAGG,EAAU,IACbA,EAAE,IAAoB,EAAA,IAAIA,EAAE,IAAoB,EAAA,IAChDA,EAAE,IAAA,EAAwB,IAAIA,EAAE,IAAA,EAAyB,IACzDA,EAAE,IAAA,EAAwB,IAAIA,EAAE,IAAA;AACrC,CAAC;AAUM,SAASG,kBAAkBA,CAChC1wB,IAAsC,EACtCmtB,KAAa,EACb/e,GAAW,EACXggB,SAAiB,EACjBD,OAAe,EACfE,MAAmC,EACnC;EACA,MAAMsC,UAAU,GAAGviB,GAAG;EACtB,MAAMwiB,gBAAgB,GAAGxC,SAAS;EAClC,MAAMyC,cAAc,GAAG1C,OAAO;EAE9B,IAAI2C,GAAG,GAAG,EAAE;EACZ,IAAIC,eAAe,GAAG,IAAI;EAC1B,IAAIC,UAAU,GAAG5iB,GAAG;EACpB,MAAM;IAAEmK;EAAQ,CAAA,GAAG4U,KAAK;EACxB,SAAS;IACP,IAAI/e,GAAG,IAAImK,MAAM,EAAE;MACjB8V,MAAM,CAAC4C,YAAY,CAACN,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACjEC,GAAG,IAAI3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE5iB,GAAG,CAAC;MACnC;IACF;IACA,MAAMmiB,EAAE,GAAGpD,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;IAChC,IAAI8iB,WAAW,CAAClxB,IAAI,EAAEuwB,EAAE,EAAEpD,KAAK,EAAE/e,GAAG,CAAC,EAAE;MACrC0iB,GAAG,IAAI3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE5iB,GAAG,CAAC;MACnC;IACF;IACA,IAAImiB,EAAE,OAAwB,EAAE;MAC9BO,GAAG,IAAI3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE5iB,GAAG,CAAC;MACnC,MAAM+iB,GAAG,GAAGC,eAAe,CACzBjE,KAAK,EACL/e,GAAG,EACHggB,SAAS,EACTD,OAAO,EACPnuB,IAAI,KAAK,UAAU,EACnBquB,MACF,CAAC;MACD,IAAI8C,GAAG,CAACZ,EAAE,KAAK,IAAI,IAAI,CAACQ,eAAe,EAAE;QACvCA,eAAe,GAAG;UAAE3iB,GAAG;UAAEggB,SAAS;UAAED;SAAS;MAC/C,CAAC,MAAM;QACL2C,GAAG,IAAIK,GAAG,CAACZ,EAAE;MACf;MACA,CAAC;QAAEniB,GAAG;QAAEggB,SAAS;QAAED;MAAS,CAAA,GAAGgD,GAAG;MAClCH,UAAU,GAAG5iB,GAAG;IACjB,CAAA,MAAM,IACLmiB,EAAE,SAA4B,IAC9BA,EAAE,SAAiC,EACnC;MACA,EAAEniB,GAAG;MACL,EAAE+f,OAAO;MACTC,SAAS,GAAGhgB,GAAG;IAChB,CAAA,MAAM,IAAImiB,EAAE,OAAuB,IAAIA,EAAE,OAA6B,EAAE;MACvE,IAAIvwB,IAAI,KAAK,UAAU,EAAE;QACvB8wB,GAAG,IAAI3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE5iB,GAAG,CAAC,GAAG,IAAI;QAC1C,EAAEA,GAAG;QACL,IACEmiB,EAAE,KAA6B,EAAA,IAC/BpD,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC,KAAA,EAAuB,EAC5C;UACA,EAAEA,GAAG;QACP;QACA,EAAE+f,OAAO;QACT6C,UAAU,GAAG5C,SAAS,GAAGhgB,GAAG;MAC9B,CAAC,MAAM;QACLigB,MAAM,CAAC4C,YAAY,CAACN,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACnE;IACF,CAAC,MAAM;MACL,EAAEziB,GAAG;IACP;EACF;EACA,OAEI;IACEA,GAAG;IACHijB,GAAG,EAAEP,GAAG;IACRC,eAAe;IACf3C,SAAS;IACTD,OAAO;IACPmD,eAAe,EAAE,CAAC,CAACP;GACpB;AACP;AAEA,SAASG,WAAWA,CAClBlxB,IAAsC,EACtCuwB,EAAU,EACVpD,KAAa,EACb/e,GAAW,EACX;EACA,IAAIpO,IAAI,KAAK,UAAU,EAAE;IACvB,OACEuwB,EAAE,KAAA,EAA0B,IAC3BA,EAAE,OAAyB,IAC1BpD,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,KAA8B,GAAA;EAE7D;EACA,OACEmiB,EAAE,MAAMvwB,IAAI,KAAK,QAAQ,UAAiD,CAAC;AAE/E;AAOA,SAASoxB,eAAeA,CACtBjE,KAAa,EACb/e,GAAW,EACXggB,SAAiB,EACjBD,OAAe,EACfoD,UAAmB,EACnBlD,MAAgC,EAChC;EACA,MAAMmD,cAAc,GAAG,CAACD,UAAU;EAClCnjB,GAAG,EAAE;EAEL,MAAM+iB,GAAG,GAAIZ,EAAiB,KAAM;IAAEniB,GAAG;IAAEmiB,EAAE;IAAEnC,SAAS;IAAED;EAAQ,CAAC,CAAC;EAEpE,MAAMoC,EAAE,GAAGpD,KAAK,CAACC,UAAU,CAAChf,GAAG,EAAE,CAAC;EAClC,QAAQmiB,EAAE;IACR,KAAA,GAAA;MACE,OAAOY,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,GAAA;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,GAAA;MAA2B;QACzB,IAAIjzB,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEkQ;QAAI,CAAC,GAAGqjB,WAAW,CAC1BtE,KAAK,EACL/e,GAAG,EACHggB,SAAS,EACTD,OAAO,EACP,CAAC,EACD,KAAK,EACLqD,cAAc,EACdnD,MACF,CAAC;QACD,OAAO8C,GAAG,CAACjzB,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGsU,MAAM,CAACwU,YAAY,CAAC9oB,IAAI,CAAC,CAAC;MAC9D;IACA,KAAA,GAAA;MAA2B;QACzB,IAAIA,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEkQ;QAAI,CAAC,GAAGsjB,aAAa,CAC5BvE,KAAK,EACL/e,GAAG,EACHggB,SAAS,EACTD,OAAO,EACPqD,cAAc,EACdnD,MACF,CAAC;QACD,OAAO8C,GAAG,CAACjzB,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGsU,MAAM,CAACmf,aAAa,CAACzzB,IAAI,CAAC,CAAC;MAC/D;IACA,KAAA,GAAA;MACE,OAAOizB,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,EAAA;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,GAAA;MACE,OAAOA,GAAG,CAAC,QAAQ,CAAC;IACtB,KAAA,GAAA;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB,KAAA,EAAA;MACE,IAAIhE,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC,OAAuB,EAAE;QAChD,EAAEA,GAAG;MACP;IAEF,KAAA,EAAA;MACEggB,SAAS,GAAGhgB,GAAG;MACf,EAAE+f,OAAO;IAEX,KAAA,IAAA;IACA,KAAA,IAAA;MACE,OAAOgD,GAAG,CAAC,EAAE,CAAC;IAChB,KAAA,EAAA;IACA,KAAA,EAAA;MACE,IAAII,UAAU,EAAE;QACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;MAClB,CAAC,MAAM;QACL9C,MAAM,CAACuD,mBAAmB,CAACxjB,GAAG,GAAG,CAAC,EAAEggB,SAAS,EAAED,OAAO,CAAC;MACzD;IAEF;MACE,IAAIoC,EAAE,IAAA,EAAoB,IAAIA,EAAE,MAAoB,EAAE;QACpD,MAAMsB,QAAQ,GAAGzjB,GAAG,GAAG,CAAC;QACxB,MAAM0jB,KAAK,GAAG,SAAS,CAACC,IAAI,CAAC5E,KAAK,CAAC6C,KAAK,CAAC6B,QAAQ,EAAEzjB,GAAG,GAAG,CAAC,CAAC,CAAC;QAE5D,IAAI4jB,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC;QAEvB,IAAIG,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QACjC,IAAIC,KAAK,GAAG,GAAG,EAAE;UACfD,QAAQ,GAAGA,QAAQ,CAAChC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAChCiC,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QAC/B;QACA5jB,GAAG,IAAI4jB,QAAQ,CAACzZ,MAAM,GAAG,CAAC;QAC1B,MAAM0P,IAAI,GAAGkF,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;QAClC,IACE4jB,QAAQ,KAAK,GAAG,IAChB/J,IAAI,KAAqB,EAAA,IACzBA,IAAI,KAAA,EAAqB,EACzB;UACA,IAAIsJ,UAAU,EAAE;YACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;UAClB,CAAC,MAAM;YACL9C,MAAM,CAACuD,mBAAmB,CAACC,QAAQ,EAAEzD,SAAS,EAAED,OAAO,CAAC;UAC1D;QACF;QAEA,OAAOgD,GAAG,CAAC3e,MAAM,CAACwU,YAAY,CAACiL,KAAK,CAAC,CAAC;MACxC;MAEA,OAAOd,GAAG,CAAC3e,MAAM,CAACwU,YAAY,CAACuJ,EAAE,CAAC,CAAC;EACvC;AACF;AAOA,SAASkB,WAAWA,CAClBtE,KAAa,EACb/e,GAAW,EACXggB,SAAiB,EACjBD,OAAe,EACfgE,GAAW,EACXC,QAAiB,EACjBZ,cAAuB,EACvBnD,MAA4B,EAC5B;EACA,MAAMsC,UAAU,GAAGviB,GAAG;EACtB,IAAIikB,CAAC;EACL,CAAC;IAAEA,CAAC;IAAEjkB;EAAK,CAAA,GAAGkkB,OAAO,CACnBnF,KAAK,EACL/e,GAAG,EACHggB,SAAS,EACTD,OAAO,EACP,EAAE,EACFgE,GAAG,EACHC,QAAQ,EACR,KAAK,EACL/D,MAAM,EACY,CAACmD,cACrB,CAAC;EACD,IAAIa,CAAC,KAAK,IAAI,EAAE;IACd,IAAIb,cAAc,EAAE;MAClBnD,MAAM,CAACkE,qBAAqB,CAAC5B,UAAU,EAAEvC,SAAS,EAAED,OAAO,CAAC;IAC9D,CAAC,MAAM;MACL/f,GAAG,GAAGuiB,UAAU,GAAG,CAAC;IACtB;EACF;EACA,OAAO;IAAEzyB,IAAI,EAAEm0B,CAAC;IAAEjkB;GAAK;AACzB;AAuBO,SAASkkB,OAAOA,CACrBnF,KAAa,EACb/e,GAAW,EACXggB,SAAiB,EACjBD,OAAe,EACf/pB,KAAa,EACb+tB,GAAuB,EACvBC,QAAiB,EACjBI,iBAAmC,EACnCnE,MAAwB,EACxBoE,WAAoB,EACpB;EACA,MAAM90B,KAAK,GAAGyQ,GAAG;EACjB,MAAMskB,iBAAiB,GACrBtuB,KAAK,KAAK,EAAE,GACR8rB,iCAAiC,CAACE,GAAG,GACrCF,iCAAiC,CAACC,SAAS;EACjD,MAAMwC,gBAAgB,GACpBvuB,KAAK,KAAK,EAAE,GACRisB,gCAAgC,CAACD,GAAG,GACpChsB,KAAK,KAAK,EAAE,GACVisB,gCAAgC,CAACI,GAAG,GACpCrsB,KAAK,KAAK,CAAC,GACTisB,gCAAgC,CAACG,GAAG,GACpCH,gCAAgC,CAACC,GAAG;EAE9C,IAAIsC,OAAO,GAAG,KAAK;EACnB,IAAIC,KAAK,GAAG,CAAC;EAEb,KAAK,IAAIhM,CAAC,GAAG,CAAC,EAAEiM,CAAC,GAAGX,GAAG,IAAI,IAAI,GAAGY,QAAQ,GAAGZ,GAAG,EAAEtL,CAAC,GAAGiM,CAAC,EAAE,EAAEjM,CAAC,EAAE;IAC5D,MAAM3oB,IAAI,GAAGivB,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;IAClC,IAAI4kB,GAAG;IAEP,IAAI90B,IAAI,KAAyB,EAAA,IAAIs0B,iBAAiB,KAAK,MAAM,EAAE;MACjE,MAAMS,IAAI,GAAG9F,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC;MACtC,MAAM6Z,IAAI,GAAGkF,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC;MAEtC,IAAI,CAACokB,iBAAiB,EAAE;QACtB,IAAIC,WAAW,EAAE,OAAO;UAAEJ,CAAC,EAAE,IAAI;UAAEjkB;SAAK;QACxCigB,MAAM,CAAC6E,gCAAgC,CAAC9kB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CAAC;MAClE,CAAC,MAAM,IACLgF,MAAM,CAACC,KAAK,CAACnL,IAAI,CAAC,IAClB,CAAC0K,gBAAgB,CAAC1K,IAAI,CAAC,IACvByK,iBAAiB,CAAC/K,GAAG,CAACsL,IAAI,CAAC,IAC3BP,iBAAiB,CAAC/K,GAAG,CAACM,IAAI,CAAC,EAC3B;QACA,IAAIwK,WAAW,EAAE,OAAO;UAAEJ,CAAC,EAAE,IAAI;UAAEjkB;SAAK;QACxCigB,MAAM,CAACgF,0BAA0B,CAACjlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CAAC;MAC5D;MAGA,EAAE/f,GAAG;MACL;IACF;IAEA,IAAIlQ,IAAI,MAAwB,EAAE;MAChC80B,GAAG,GAAG90B,IAAI,GAAA,EAAuB,GAAqB,EAAA;IACxD,CAAC,MAAM,IAAIA,IAAI,IAAA,EAAwB,EAAE;MACvC80B,GAAG,GAAG90B,IAAI,GAAA,EAAuB,GAAqB,EAAA;IACxD,CAAC,MAAM,IAAIo1B,QAAA,CAAkBp1B,IAAI,CAAC,EAAE;MAClC80B,GAAG,GAAG90B,IAAI,GAAmB,EAAA;IAC/B,CAAC,MAAM;MACL80B,GAAG,GAAGD,QAAQ;IAChB;IACA,IAAIC,GAAG,IAAI5uB,KAAK,EAAE;MAGhB,IAAI4uB,GAAG,IAAI,CAAC,IAAIP,WAAW,EAAE;QAC3B,OAAO;UAAEJ,CAAC,EAAE,IAAI;UAAEjkB;SAAK;MACzB,CAAC,MAAM,IACL4kB,GAAG,IAAI,CAAC,IACR3E,MAAM,CAACkF,YAAY,CAACnlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,EAAE/pB,KAAK,CAAC,EACnD;QACA4uB,GAAG,GAAG,CAAC;MACR,CAAA,MAAM,IAAIZ,QAAQ,EAAE;QACnBY,GAAG,GAAG,CAAC;QACPJ,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM;QACL;MACF;IACF;IACA,EAAExkB,GAAG;IACLykB,KAAK,GAAGA,KAAK,GAAGzuB,KAAK,GAAG4uB,GAAG;EAC7B;EACA,IAAI5kB,GAAG,KAAKzQ,KAAK,IAAKw0B,GAAG,IAAI,IAAI,IAAI/jB,GAAG,GAAGzQ,KAAK,KAAKw0B,GAAI,IAAIS,OAAO,EAAE;IACpE,OAAO;MAAEP,CAAC,EAAE,IAAI;MAAEjkB;KAAK;EACzB;EAEA,OAAO;IAAEikB,CAAC,EAAEQ,KAAK;IAAEzkB;GAAK;AAC1B;AAMO,SAASsjB,aAAaA,CAC3BvE,KAAa,EACb/e,GAAW,EACXggB,SAAiB,EACjBD,OAAe,EACfqD,cAAuB,EACvBnD,MAA8B,EAC9B;EACA,MAAMkC,EAAE,GAAGpD,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;EAChC,IAAIlQ,IAAI;EAER,IAAIqyB,EAAE,QAA6B,EAAE;IACnC,EAAEniB,GAAG;IACL,CAAC;MAAElQ,IAAI;MAAEkQ;KAAK,GAAGqjB,WAAW,CAC1BtE,KAAK,EACL/e,GAAG,EACHggB,SAAS,EACTD,OAAO,EACPhB,KAAK,CAACqG,OAAO,CAAC,GAAG,EAAEplB,GAAG,CAAC,GAAGA,GAAG,EAC7B,IAAI,EACJojB,cAAc,EACdnD,MACF,CAAC;IACD,EAAEjgB,GAAG;IACL,IAAIlQ,IAAI,KAAK,IAAI,IAAIA,IAAI,GAAG,QAAQ,EAAE;MACpC,IAAIszB,cAAc,EAAE;QAClBnD,MAAM,CAACoF,gBAAgB,CAACrlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CAAC;MAClD,CAAC,MAAM;QACL,OAAO;UAAEjwB,IAAI,EAAE,IAAI;UAAEkQ;SAAK;MAC5B;IACF;EACF,CAAC,MAAM;IACL,CAAC;MAAElQ,IAAI;MAAEkQ;IAAI,CAAC,GAAGqjB,WAAW,CAC1BtE,KAAK,EACL/e,GAAG,EACHggB,SAAS,EACTD,OAAO,EACP,CAAC,EACD,KAAK,EACLqD,cAAc,EACdnD,MACF,CAAC;EACH;EACA,OAAO;IAAEnwB,IAAI;IAAEkQ;GAAK;AACtB;AC5ZA,SAASslB,aAAaA,CAACtlB,GAAW,EAAEggB,SAAiB,EAAED,OAAe,EAAE;EACtE,OAAO,IAAI/wB,QAAQ,CAAC+wB,OAAO,EAAE/f,GAAG,GAAGggB,SAAS,EAAEhgB,GAAG,CAAC;AACpD;AAEA,MAAMulB,iBAAiB,GAAG,IAAI7nB,GAAG,CAAC,wCASjC,CAAC;AAMK,MAAM8nB,KAAK,CAAC;EACjBv2B,WAAWA,CAAC8a,KAAY,EAAE;IACxB,MAAMtI,UAAU,GAAGsI,KAAK,CAACtI,UAAU,IAAI,CAAC;IACxC,IAAI,CAAC7P,IAAI,GAAGmY,KAAK,CAACnY,IAAI;IACtB,IAAI,CAAC+M,KAAK,GAAGoL,KAAK,CAACpL,KAAK;IACxB,IAAI,CAACpP,KAAK,GAAGkS,UAAU,GAAGsI,KAAK,CAACxa,KAAK;IACrC,IAAI,CAACC,GAAG,GAAGiS,UAAU,GAAGsI,KAAK,CAACva,GAAG;IACjC,IAAI,CAACoQ,GAAG,GAAG,IAAItQ,cAAc,CAACya,KAAK,CAAC1B,QAAQ,EAAE0B,KAAK,CAACoB,MAAM,CAAC;EAC7D;AAOF;AAIe,MAAesa,SAAS,SAAS1H,cAAc,CAAC;EAM7D9uB,WAAWA,CAAC4T,OAAgB,EAAEkc,KAAa,EAAE;IAC3C,KAAK,EAAE;IAAC,IAAA,CANV2G,WAAW,GAAA,KAAA,CAAA;IAAA,IAGXrjB,CAAAA,MAAM,GAA6B,EAAE;IAAA,IAAA,CA28CrCsjB,qBAAqB,GAAqB;MACxCR,YAAY,EAAEA,CAACnlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,EAAE/pB,KAAK,KAAK;QAChD,IAAI,EAAE,IAAI,CAACuN,WAAW,OAA4B,CAAC,EAAE,OAAO,KAAK;QAEjE,IAAI,CAAC2F,KAAK,CAAC9H,MAAM,CAACrL,YAAY,EAAEuvB,aAAa,CAACtlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CAAC,EAAE;UACtE/pB;QACF,CAAC,CAAC;QAEF,OAAO,IAAI;MACZ,CAAA;MACD8uB,gCAAgC,EAAE,IAAI,CAACc,YAAY,CACjDxkB,MAAM,CAACnI,gCACT,CAAC;MACDgsB,0BAA0B,EAAE,IAAI,CAACW,YAAY,CAC3CxkB,MAAM,CAACjG,0BACT;KACD;IAAA,IAED0qB,CAAAA,2BAA2B,GAAAjnB,MAAA,CAAAwB,MAAA,CACtB,CAAA,CAAA,EAAA,IAAI,CAACulB,qBAAqB,EAAA;MAC7BxB,qBAAqB,EAAE,IAAI,CAACyB,YAAY,CAACxkB,MAAM,CAACnL,qBAAqB,CAAC;MACtEovB,gBAAgB,EAAE,IAAI,CAACO,YAAY,CAACxkB,MAAM,CAACxL,gBAAgB;IAAC,CAAA,CAAA;IAAA,IAG9DkwB,CAAAA,uCAAuC,GAAAlnB,MAAA,CAAAwB,MAAA,CAClC,CAAA,CAAA,EAAA,IAAI,CAACylB,2BAA2B,EAAA;MACnCrC,mBAAmB,EAAEA,CAACxjB,GAAG,EAAEggB,SAAS,EAAED,OAAO,KAAK;QAChD,IAAI,CAACgG,sBAAsB,CACzB3kB,MAAM,CAAC9D,mBAAmB,EAC1BgoB,aAAa,CAACtlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CACvC,CAAC;MACF,CAAA;MACD8C,YAAY,EAAEA,CAAC7iB,GAAG,EAAEggB,SAAS,EAAED,OAAO,KAAK;QACzC,MAAM,IAAI,CAAC7W,KAAK,CACd9H,MAAM,CAAC7E,kBAAkB,EACzB+oB,aAAa,CAACtlB,GAAG,GAAG,CAAC,EAAEggB,SAAS,EAAED,OAAO,CAC3C,CAAC;MACH;IAAC,CAAA,CAAA;IAAA,IAGHiG,CAAAA,yCAAyC,GAAApnB,MAAA,CAAAwB,MAAA,CACpC,CAAA,CAAA,EAAA,IAAI,CAACylB,2BAA2B,EAAA;MACnCrC,mBAAmB,EAAE,IAAI,CAACoC,YAAY,CAACxkB,MAAM,CAAC9D,mBAAmB,CAAC;MAClEulB,YAAY,EAAEA,CAAC7iB,GAAG,EAAEggB,SAAS,EAAED,OAAO,KAAK;QACzC,MAAM,IAAI,CAAC7W,KAAK,CACd9H,MAAM,CAAC5E,oBAAoB,EAC3B8oB,aAAa,CAACtlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CACvC,CAAC;MACH;IAAC,CAAA,CAAA;IAv/CD,IAAI,CAAChW,KAAK,GAAG,IAAI+V,KAAK,EAAE;IACxB,IAAI,CAAC/V,KAAK,CAAC+W,IAAI,CAACje,OAAO,CAAC;IACxB,IAAI,CAACkc,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAC5U,MAAM,GAAG4U,KAAK,CAAC5U,MAAM;IAC1B,IAAI,CAACiT,QAAQ,GAAG,EAAE;IAClB,IAAI,CAACsI,WAAW,GAAG,KAAK;EAC1B;EAEAO,SAASA,CAACjoB,KAAwB,EAAE;IAGlC,IAAI,CAACqE,MAAM,CAAC8H,MAAM,GAAG,IAAI,CAACJ,KAAK,CAAC6W,YAAY;IAC5C,IAAI,CAACve,MAAM,CAACmL,IAAI,CAACxP,KAAK,CAAC;IACvB,EAAE,IAAI,CAAC+L,KAAK,CAAC6W,YAAY;EAC3B;EAIA/G,IAAIA,CAAAA,EAAS;IACX,IAAI,CAACqM,mBAAmB,CAAA,CAAE;IAC1B,IAAI,IAAI,CAAC3iB,WAAW,MAAqB,EAAE;MACzC,IAAI,CAAC0iB,SAAS,CAAC,IAAIT,KAAK,CAAC,IAAI,CAACzb,KAAK,CAAC,CAAC;IACvC;IAEA,IAAI,CAACA,KAAK,CAACsB,aAAa,GAAG,IAAI,CAACtB,KAAK,CAACoB,MAAM;IAC5C,IAAI,CAACpB,KAAK,CAACC,eAAe,GAAG,IAAI,CAACD,KAAK,CAAC1B,QAAQ;IAChD,IAAI,CAAC8d,SAAS,CAAA,CAAE;EAClB;EAEAC,GAAGA,CAACx0B,IAAe,EAAW;IAC5B,IAAI,IAAI,CAAC8xB,KAAK,CAAC9xB,IAAI,CAAC,EAAE;MACpB,IAAI,CAACioB,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;EAKA6J,KAAKA,CAAC9xB,IAAe,EAAW;IAC9B,OAAO,IAAI,CAACmY,KAAK,CAACnY,IAAI,KAAKA,IAAI;EACjC;EAKAy0B,oBAAoBA,CAACtc,KAAY,EAAkB;IACjD,OAAO;MACL/J,GAAG,EAAE+J,KAAK,CAAC/J,GAAG;MACdrB,KAAK,EAAE,IAAI;MACX/M,IAAI,EAAEmY,KAAK,CAACnY,IAAI;MAChBrC,KAAK,EAAEwa,KAAK,CAACxa,KAAK;MAClBC,GAAG,EAAEua,KAAK,CAACva,GAAG;MACduoB,OAAO,EAAE,CAAC,IAAI,CAACuO,UAAU,EAAE,CAAC;MAC5BtF,MAAM,EAAEjX,KAAK,CAACiX,MAAM;MACpB3Y,QAAQ,EAAE0B,KAAK,CAAC1B,QAAQ;MACxBgD,aAAa,EAAEtB,KAAK,CAACsB,aAAa;MAClC0U,OAAO,EAAEhW,KAAK,CAACgW,OAAO;MACtBC,SAAS,EAAEjW,KAAK,CAACiW,SAAS;MAC1B2B,WAAW,EAAE5X,KAAK,CAAC4X;KACpB;EACH;EAeA4E,SAASA,CAAAA,EAAmB;IAC1B,MAAMC,GAAG,GAAG,IAAI,CAACzc,KAAK;IAEtB,IAAI,CAACA,KAAK,GAAG,IAAI,CAACsc,oBAAoB,CAACG,GAAG,CAAC;IAE3C,IAAI,CAACd,WAAW,GAAG,IAAI;IACvB,IAAI,CAACS,SAAS,CAAA,CAAE;IAChB,IAAI,CAACT,WAAW,GAAG,KAAK;IAExB,MAAMe,IAAI,GAAG,IAAI,CAAC1c,KAAK;IACvB,IAAI,CAACA,KAAK,GAAGyc,GAAG;IAChB,OAAOC,IAAI;EACb;EAEAC,cAAcA,CAAAA,EAAW;IACvB,OAAO,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAAC5c,KAAK,CAAC/J,GAAG,CAAC;EACjD;EAEA2mB,mBAAmBA,CAAC3mB,GAAW,EAAU;IACvC2f,cAAc,CAACiH,SAAS,GAAG5mB,GAAG;IAC9B,OAAO2f,cAAc,CAAChH,IAAI,CAAC,IAAI,CAACoG,KAAK,CAAC,GAAGY,cAAc,CAACiH,SAAS,GAAG5mB,GAAG;EACzE;EAEA6mB,iBAAiBA,CAAAA,EAAW;IAC1B,OAAO,IAAI,CAAC9H,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC0H,cAAc,CAAE,CAAA,CAAC;EACrD;EAQAI,oBAAoBA,CAAAA,EAAW;IAC7B,OAAO,IAAI,CAACC,yBAAyB,CAAC,IAAI,CAAChd,KAAK,CAAC/J,GAAG,CAAC;EACvD;EAEA+mB,yBAAyBA,CAAC/mB,GAAW,EAAU;IAC7C4f,oBAAoB,CAACgH,SAAS,GAAG5mB,GAAG;IACpC,OAAO4f,oBAAoB,CAACjH,IAAI,CAAC,IAAI,CAACoG,KAAK,CAAC,GACxCa,oBAAoB,CAACgH,SAAS,GAC9B5mB,GAAG;EACT;EASAgnB,uBAAuBA,CAAAA,EAAW;IAChC,OAAO,IAAI,CAACjI,KAAK,CAACC,UAAU,CAAC,IAAI,CAAC8H,oBAAoB,CAAE,CAAA,CAAC;EAC3D;EAEAG,cAAcA,CAACjnB,GAAW,EAAU;IAKlC,IAAIknB,EAAE,GAAG,IAAI,CAACnI,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;IACnC,IAAI,CAACknB,EAAE,GAAG,MAAM,MAAM,MAAM,IAAI,EAAElnB,GAAG,GAAG,IAAI,CAAC+e,KAAK,CAAC5U,MAAM,EAAE;MACzD,MAAMgd,KAAK,GAAG,IAAI,CAACpI,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;MACxC,IAAI,CAACmnB,KAAK,GAAG,MAAM,MAAM,MAAM,EAAE;QAC/BD,EAAE,GAAG,OAAO,IAAI,CAACA,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC,IAAIC,KAAK,GAAG,KAAK,CAAC;MACvD;IACF;IACA,OAAOD,EAAE;EACX;EAKAE,SAASA,CAACrO,MAAe,EAAQ;IAC/B,IAAI,CAAChP,KAAK,CAACgP,MAAM,GAAGA,MAAM;IAC1B,IAAIA,MAAM,EAAE;MAKV,IAAI,CAAChP,KAAK,CAAC4W,YAAY,CAAC0G,OAAO,CAAC,CAAC,CAACC,YAAY,EAAE9X,EAAE,CAAC,KACjD,IAAI,CAACtG,KAAK,CAACoe,YAAY,EAAE9X,EAAE,CAC7B,CAAC;MACD,IAAI,CAACzF,KAAK,CAAC4W,YAAY,CAAC4G,KAAK,EAAE;IACjC;EACF;EAEAjB,UAAUA,CAAAA,EAAe;IACvB,OAAO,IAAI,CAACvc,KAAK,CAACgO,OAAO,CAAC,IAAI,CAAChO,KAAK,CAACgO,OAAO,CAAC5N,MAAM,GAAG,CAAC,CAAC;EAC1D;EAGAgc,SAASA,CAAAA,EAAS;IAChB,IAAI,CAACqB,SAAS,CAAA,CAAE;IAChB,IAAI,CAACzd,KAAK,CAACxa,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IACjC,IAAI,CAAC,IAAI,CAAC0lB,WAAW,EAAE,IAAI,CAAC3b,KAAK,CAAC1B,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,EAAE;IACrE,IAAI,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,IAAI,IAAI,CAACmK,MAAM,EAAE;MACjC,IAAI,CAACsd,WAAW,CAAA,GAAO,CAAC;MACxB;IACF;IAEA,IAAI,CAACC,gBAAgB,CAAC,IAAI,CAACT,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,CAAC;EAC5D;EAKA2nB,gBAAgBA,CAAClJ,UAAwB,EAA8B;IACrE,IAAIpW,QAAQ;IACZ,IAAI,CAAC,IAAI,CAACqd,WAAW,EAAErd,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,EAAE;IAC1D,MAAMpyB,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,MAAMxQ,GAAG,GAAG,IAAI,CAACuvB,KAAK,CAACqG,OAAO,CAAC3G,UAAU,EAAElvB,KAAK,GAAG,CAAC,CAAC;IACrD,IAAIC,GAAG,KAAK,CAAC,CAAC,EAAE;MAId,MAAM,IAAI,CAAC0Z,KAAK,CAAC9H,MAAM,CAAC/E,mBAAmB,EAAE,IAAI,CAAC0N,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;IACxE;IAEA,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,GAAGxQ,GAAG,GAAGivB,UAAU,CAACtU,MAAM;IACxCqV,UAAU,CAACoH,SAAS,GAAGr3B,KAAK,GAAG,CAAC;IAChC,OAAOiwB,UAAU,CAAC7G,IAAI,CAAC,IAAI,CAACoG,KAAK,CAAC,IAAIS,UAAU,CAACoH,SAAS,IAAIp3B,GAAG,EAAE;MACjE,EAAE,IAAI,CAACua,KAAK,CAACgW,OAAO;MACpB,IAAI,CAAChW,KAAK,CAACiW,SAAS,GAAGR,UAAU,CAACoH,SAAS;IAC7C;IAIA,IAAI,IAAI,CAAClB,WAAW,EAAE;IAGtB,MAAMzH,OAAuB,GAAG;MAC9BrsB,IAAI,EAAE,cAAc;MACpB+M,KAAK,EAAE,IAAI,CAACogB,KAAK,CAAC6C,KAAK,CAACryB,KAAK,GAAG,CAAC,EAAEC,GAAG,CAAC;MACvCD,KAAK,EAAE,IAAI,CAACitB,iBAAiB,CAACjtB,KAAK,CAAC;MACpCC,GAAG,EAAE,IAAI,CAACgtB,iBAAiB,CAAChtB,GAAG,GAAGivB,UAAU,CAACtU,MAAM,CAAC;MACpDvK,GAAG,EAAE,IAAItQ,cAAc,CAAC+Y,QAAQ,EAAE,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,EAAE;KAC3D;IACD,IAAI,IAAI,CAACpe,WAAW,MAAqB,EAAE,IAAI,CAAC0iB,SAAS,CAAChI,OAAO,CAAC;IAClE,OAAOA,OAAO;EAChB;EAEA2J,eAAeA,CAACC,SAAiB,EAA6B;IAC5D,MAAMt4B,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,IAAIqI,QAAQ;IACZ,IAAI,CAAC,IAAI,CAACqd,WAAW,EAAErd,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,EAAE;IAC1D,IAAIQ,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAE,IAAI,CAACjV,KAAK,CAAC/J,GAAG,IAAI6nB,SAAU,CAAC;IAC7D,IAAI,IAAI,CAAC9d,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,EAAE;MAChC,OAAO,CAACsV,SAAS,CAAC0C,EAAE,CAAC,IAAI,EAAE,IAAI,CAACpY,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,EAAE;QACvDgY,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;MAC5C;IACF;IAIA,IAAI,IAAI,CAAC0lB,WAAW,EAAE;IAEtB,MAAMl2B,GAAG,GAAG,IAAI,CAACua,KAAK,CAAC/J,GAAG;IAC1B,MAAMrB,KAAK,GAAG,IAAI,CAACogB,KAAK,CAAC6C,KAAK,CAACryB,KAAK,GAAGs4B,SAAS,EAAEr4B,GAAG,CAAC;IAEtD,MAAMyuB,OAAsB,GAAG;MAC7BrsB,IAAI,EAAE,aAAa;MACnB+M,KAAK;MACLpP,KAAK,EAAE,IAAI,CAACitB,iBAAiB,CAACjtB,KAAK,CAAC;MACpCC,GAAG,EAAE,IAAI,CAACgtB,iBAAiB,CAAChtB,GAAG,CAAC;MAChCoQ,GAAG,EAAE,IAAItQ,cAAc,CAAC+Y,QAAQ,EAAE,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,EAAE;KAC3D;IACD,IAAI,IAAI,CAACpe,WAAW,MAAqB,EAAE,IAAI,CAAC0iB,SAAS,CAAChI,OAAO,CAAC;IAClE,OAAOA,OAAO;EAChB;EAKAuJ,SAASA,CAAAA,EAAS;IAChB,MAAMM,UAAU,GAAG,IAAI,CAAC/d,KAAK,CAAC/J,GAAG;IACjC,MAAMod,QAAqB,GACzB,IAAI,CAAC7Z,WAAW,OAA4B,GAAG,EAAE,GAAG,IAAI;IAC1DwkB,IAAI,EAAE,OAAO,IAAI,CAAChe,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,EAAE;MACzC,MAAMgY,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;MAChD,QAAQmiB,EAAE;QACR,KAAA,EAAA;QACA,KAAA,GAAA;QACA,KAAA,CAAA;UACE,EAAE,IAAI,CAACpY,KAAK,CAAC/J,GAAG;UAChB;QACF,KAAA,EAAA;UACE,IACE,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,OAAuB,EAChE;YACA,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;UAClB;QAEF,KAAA,EAAA;QACA,KAAA,IAAA;QACA,KAAA,IAAA;UACE,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;UAChB,EAAE,IAAI,CAAC+J,KAAK,CAACgW,OAAO;UACpB,IAAI,CAAChW,KAAK,CAACiW,SAAS,GAAG,IAAI,CAACjW,KAAK,CAAC/J,GAAG;UACrC;QAEF,KAAA,EAAA;UACE,QAAQ,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;YAC/C,KAAA,EAAA;cAAyB;gBACvB,MAAMie,OAAO,GAAG,IAAI,CAAC0J,gBAAgB,CAAC,IAAI,CAAC;gBAC3C,IAAI1J,OAAO,KAAKzc,SAAS,EAAE;kBACzB,IAAI,CAACwc,UAAU,CAACC,OAAO,CAAC;kBACxBb,QAAQ,YAARA,QAAQ,CAAE5P,IAAI,CAACyQ,OAAO,CAAC;gBACzB;gBACA;cACF;YAEA,KAAA,EAAA;cAAsB;gBACpB,MAAMA,OAAO,GAAG,IAAI,CAAC2J,eAAe,CAAC,CAAC,CAAC;gBACvC,IAAI3J,OAAO,KAAKzc,SAAS,EAAE;kBACzB,IAAI,CAACwc,UAAU,CAACC,OAAO,CAAC;kBACxBb,QAAQ,YAARA,QAAQ,CAAE5P,IAAI,CAACyQ,OAAO,CAAC;gBACzB;gBACA;cACF;YAEA;cACE,MAAM8J,IAAI;UACd;UACA;QAEF;UACE,IAAIlI,YAAY,CAACsC,EAAE,CAAC,EAAE;YACpB,EAAE,IAAI,CAACpY,KAAK,CAAC/J,GAAG;UAClB,CAAC,MAAM,IACLmiB,EAAE,KAAmB,EAAA,IACrB,CAAC,IAAI,CAAC9I,QAAQ,IACd,IAAI,CAAC9V,WAAW,OAAqB,EACrC;YACA,MAAMvD,GAAG,GAAG,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;YAC1B,IACE,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,OAAmB,IACjD,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,KAAA,EAA0B,KACvD8nB,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC/d,KAAK,CAACiW,SAAS,GAAG8H,UAAU,CAAC,EACvD;cAEA,MAAM7J,OAAO,GAAG,IAAI,CAAC2J,eAAe,CAAC,CAAC,CAAC;cACvC,IAAI3J,OAAO,KAAKzc,SAAS,EAAE;gBACzB,IAAI,CAACwc,UAAU,CAACC,OAAO,CAAC;gBACxBb,QAAQ,YAARA,QAAQ,CAAE5P,IAAI,CAACyQ,OAAO,CAAC;cACzB;YACF,CAAC,MAAM;cACL,MAAM8J,IAAI;YACZ;UACF,CAAC,MAAM,IACL5F,EAAE,KAAuB,EAAA,IACzB,CAAC,IAAI,CAAC9I,QAAQ,IACd,IAAI,CAAC9V,WAAW,OAAqB,EACrC;YACA,MAAMvD,GAAG,GAAG,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;YAC1B,IACE,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,KAA8B,EAAA,IAC5D,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,KAAmB,EAAA,IACjD,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,OAAmB,EACjD;cAEA,MAAMie,OAAO,GAAG,IAAI,CAAC2J,eAAe,CAAC,CAAC,CAAC;cACvC,IAAI3J,OAAO,KAAKzc,SAAS,EAAE;gBACzB,IAAI,CAACwc,UAAU,CAACC,OAAO,CAAC;gBACxBb,QAAQ,YAARA,QAAQ,CAAE5P,IAAI,CAACyQ,OAAO,CAAC;cACzB;YACF,CAAC,MAAM;cACL,MAAM8J,IAAI;YACZ;UACF,CAAC,MAAM;YACL,MAAMA,IAAI;UACZ;MACJ;IACF;IAEA,IAAI,CAAA3K,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEjT,MAAM,IAAG,CAAC,EAAE;MACxB,MAAM3a,GAAG,GAAG,IAAI,CAACua,KAAK,CAAC/J,GAAG;MAC1B,MAAMgoB,iBAAoC,GAAG;QAC3Cz4B,KAAK,EAAE,IAAI,CAACitB,iBAAiB,CAACsL,UAAU,CAAC;QACzCt4B,GAAG,EAAE,IAAI,CAACgtB,iBAAiB,CAAChtB,GAAG,CAAC;QAChC4tB,QAAQ;QACRmB,WAAW,EAAE,IAAI;QACjBM,YAAY,EAAE,IAAI;QAClBH,cAAc,EAAE;OACjB;MACD,IAAI,CAAC3U,KAAK,CAACqU,YAAY,CAAC5Q,IAAI,CAACwa,iBAAiB,CAAC;IACjD;EACF;EAOAP,WAAWA,CAAC71B,IAAe,EAAEgzB,GAAS,EAAQ;IAC5C,IAAI,CAAC7a,KAAK,CAACva,GAAG,GAAG,IAAI,CAACua,KAAK,CAAC/J,GAAG;IAC/B,IAAI,CAAC+J,KAAK,CAACoB,MAAM,GAAG,IAAI,CAACpB,KAAK,CAAC4X,WAAW,CAAA,CAAE;IAC5C,MAAMsG,QAAQ,GAAG,IAAI,CAACle,KAAK,CAACnY,IAAI;IAChC,IAAI,CAACmY,KAAK,CAACnY,IAAI,GAAGA,IAAI;IACtB,IAAI,CAACmY,KAAK,CAACpL,KAAK,GAAGimB,GAAG;IAEtB,IAAI,CAAC,IAAI,CAACc,WAAW,EAAE;MACrB,IAAI,CAACnZ,aAAa,CAAC0b,QAAQ,CAAC;IAC9B;EACF;EAEAC,YAAYA,CAACt2B,IAAe,EAAQ;IAClC,IAAI,CAACmY,KAAK,CAACnY,IAAI,GAAGA,IAAI;IAGtB,IAAI,CAAC2a,aAAa,CAAA,CAAE;EACtB;EAYA4b,oBAAoBA,CAAAA,EAAS;IAC3B,IAAI,IAAI,CAACpe,KAAK,CAAC/J,GAAG,KAAK,CAAC,IAAI,IAAI,CAACooB,qBAAqB,EAAE,EAAE;MACxD;IACF;IAEA,MAAMC,OAAO,GAAG,IAAI,CAACte,KAAK,CAAC/J,GAAG,GAAG,CAAC;IAClC,MAAM6Z,IAAI,GAAG,IAAI,CAACoN,cAAc,CAACoB,OAAO,CAAC;IACzC,IAAIxO,IAAI,IAAA,EAAoB,IAAIA,IAAI,MAAoB,EAAE;MACxD,MAAM,IAAI,CAAC3Q,KAAK,CACd9H,MAAM,CAACxG,wBAAwB,EAC/B,IAAI,CAACmP,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;IACH;IAEA,IACE9H,IAAI,KAAA,GAA6B,IAChCA,IAAI,KAAgC,EAAA,IAAI,IAAI,CAAC+C,SAAS,CAAC,gBAAgB,CAAE,EAC1E;MAKA,IAAI,CAAC0L,YAAY,CAAC,gBAAgB,CAAC;MACnC,IAEE,IAAI,CAAC9hB,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAC9D;QACA,MAAM,IAAI,CAAC0C,KAAK,CACd2Q,IAAI,KAA6B,GAAA,GAC7BzY,MAAM,CAACvH,4CAA4C,GACnDuH,MAAM,CAAC3G,2CAA2C,EACtD,IAAI,CAACsP,KAAK,CAAC4X,WAAW,CACxB,CAAA,CAAC;MACH;MAEA,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI6Z,IAAI,QAA6B,EAAE;QAErC,IAAI,CAAC4N,WAAW,CAAA,CAAc,CAAC;MACjC,CAAC,MAAM;QAEL,IAAI,CAACA,WAAW,CAAA,CAAgB,CAAC;MACnC;IACF,CAAC,MAAM,IAAI/O,iBAAiB,CAACmB,IAAI,CAAC,EAAE;MAClC,EAAE,IAAI,CAAC9P,KAAK,CAAC/J,GAAG;MAChB,IAAI,CAACynB,WAAW,CAAiB,GAAA,EAAA,IAAI,CAACc,SAAS,CAAC1O,IAAI,CAAC,CAAC;IACxD,CAAC,MAAM,IAAIA,IAAI,KAAA,EAAwB,EAAE;MACvC,EAAE,IAAI,CAAC9P,KAAK,CAAC/J,GAAG;MAChB,IAAI,CAACynB,WAAW,CAAiB,GAAA,EAAA,IAAI,CAACc,SAAS,CAAE,CAAA,CAAC;IACpD,CAAC,MAAM;MACL,IAAI,CAACC,QAAQ,CAAU,EAAA,EAAA,CAAC,CAAC;IAC3B;EACF;EAEAC,aAAaA,CAAAA,EAAS;IACpB,MAAM5O,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,IAAI6Z,IAAI,IAAA,EAAoB,IAAIA,IAAI,MAAoB,EAAE;MACxD,IAAI,CAAC6O,UAAU,CAAC,IAAI,CAAC;MACrB;IACF;IAEA,IACE7O,IAAI,KAAkB,EAAA,IACtB,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,OAAkB,EAC3D;MACA,IAAI,CAAC+J,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACynB,WAAW,CAAA,EAAY,CAAC;IAC/B,CAAC,MAAM;MACL,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;MAChB,IAAI,CAACynB,WAAW,CAAA,EAAO,CAAC;IAC1B;EACF;EAEAkB,eAAeA,CAAAA,EAAS;IACtB,MAAM9O,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,IAAI6Z,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAAC2O,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;IAClC,CAAC,MAAM;MACL,IAAI,CAACA,QAAQ,CAAW,EAAA,EAAA,CAAC,CAAC;IAC5B;EACF;EAEAJ,qBAAqBA,CAAAA,EAAY;IAC/B,IAAI,IAAI,CAACre,KAAK,CAAC/J,GAAG,KAAK,CAAC,IAAI,IAAI,CAACmK,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK;IAEzD,IAAIgY,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IAClD,IAAImiB,EAAE,KAAA,EAA8B,EAAE,OAAO,KAAK;IAElD,MAAM5yB,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,IAAI,CAAC+J,KAAK,CAAC/J,GAAG,IAAI,CAAC;IAEnB,OAAO,CAACyf,SAAS,CAAC0C,EAAE,CAAC,IAAI,EAAE,IAAI,CAACpY,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,EAAE;MACvDgY,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAC5C;IAEA,MAAMrB,KAAK,GAAG,IAAI,CAACogB,KAAK,CAAC6C,KAAK,CAACryB,KAAK,GAAG,CAAC,EAAE,IAAI,CAACwa,KAAK,CAAC/J,GAAG,CAAC;IAEzD,IAAI,CAACynB,WAAW,CAA0B9oB,EAAAA,EAAAA,KAAK,CAAC;IAEhD,OAAO,IAAI;EACb;EAEAiqB,qBAAqBA,CAAC94B,IAAY,EAAQ;IAExC,IAAI8B,IAAI,GAAG9B,IAAI,KAAA,EAAuB,GAAsB,EAAA,GAAA,EAAA;IAC5D,IAAI+4B,KAAK,GAAG,CAAC;IACb,IAAIhP,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IAGpD,IAAIlQ,IAAI,KAAA,EAAuB,IAAI+pB,IAAI,OAAuB,EAAE;MAC9DgP,KAAK,EAAE;MACPhP,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;MAChDpO,IAAI,GAAc,EAAA;IACpB;IAGA,IAAIioB,IAAI,OAAuB,IAAI,CAAC,IAAI,CAAC9P,KAAK,CAACiX,MAAM,EAAE;MACrD6H,KAAK,EAAE;MAIPj3B,IAAI,GAAG9B,IAAI,KAAA,EAA0B,GAA8B,EAAA,GAAA,EAAA;IACrE;IAEA,IAAI,CAAC04B,QAAQ,CAAC52B,IAAI,EAAEi3B,KAAK,CAAC;EAC5B;EAEAC,kBAAkBA,CAACh5B,IAAY,EAAQ;IAErC,MAAM+pB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IAEtD,IAAI6Z,IAAI,KAAK/pB,IAAI,EAAE;MACjB,IAAI,IAAI,CAACivB,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,OAAuB,EAAE;QACpE,IAAI,CAACwoB,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC7B,CAAC,MAAM;QACL,IAAI,CAACA,QAAQ,CACX14B,IAAI,QAA0B,GAA+B,EAAA,GAAA,EAAA,EAC7D,CACF,CAAC;MACH;MACA;IACF;IAEA,IAAIA,IAAI,QAA0B,EAAE;MAElC,IAAI+pB,IAAI,OAA0B,EAAE;QAClC,IAAI,CAAC2O,QAAQ,CAAc,EAAA,EAAA,CAAC,CAAC;QAC7B;MACF;MAEA,IAEE,IAAI,CAAC5L,SAAS,CAAC,gBAAgB,CAAC,IAChC/C,IAAI,KAAA,GAA8B,EAClC;QACA,IAAI,IAAI,CAACrT,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;UAClE,MAAM,IAAI,CAAC0C,KAAK,CACd9H,MAAM,CAACzH,yCAAyC,EAChD,IAAI,CAACoQ,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;QACH;QACA,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,IAAI,CAAC;QACnB,IAAI,CAACynB,WAAW,CAAA,CAAa,CAAC;QAC9B;MACF;MAGA,IAEE,IAAI,CAAC7K,SAAS,CAAC,gBAAgB,CAAC,IAChC/C,IAAI,KAAA,EAAiC,EACrC;QACA,IAAI,IAAI,CAACrT,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;UAClE,MAAM,IAAI,CAAC0C,KAAK,CACd9H,MAAM,CAAC7G,wCAAwC,EAC/C,IAAI,CAACwP,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;QACH;QACA,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,IAAI,CAAC;QACnB,IAAI,CAACynB,WAAW,CAAA,CAAe,CAAC;QAChC;MACF;IACF;IAEA,IAAI5N,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAAC2O,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC3B;IACF;IAEA,IAAI,CAACA,QAAQ,CACX14B,IAAI,QAA0B,GAA+B,EAAA,GAAA,EAAA,EAC7D,CACF,CAAC;EACH;EAEAi5B,eAAeA,CAAAA,EAAS;IACtB,MAAMlP,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IAGtD,IAAI6Z,IAAI,OAAuB,IAAI,CAAC,IAAI,CAAC9P,KAAK,CAACiX,MAAM,EAAE;MAIrD,IAAI,CAACwH,QAAQ,CAAe,EAAA,EAAA,CAAC,CAAC;KAC/B,MAEI,IACH3O,IAAI,KAAoB,EAAA,IAGxB,IAAI,CAAC+C,SAAS,CAAC,CACb,kBAAkB,EAClB;MAAEoM,QAAQ,EAAE,MAAM;MAAEC,UAAU,EAAE;IAAM,CAAA,CACvC,CAAC,EACF;MACA,IAAI,CAACT,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;MAGhC,MAAMU,WAAW,GAAG,IAAI,CAACnK,KAAK,CAACoK,WAAW,CAAC,IAAI,CAACpf,KAAK,CAAC/J,GAAG,CAAC;MAC1D,IAAIkpB,WAAW,OAAoB,EAAE;QACnC,IAAI,CAACryB,UAAU,CAAA,CAAE;MACnB;IACF,CAAC,MAEI;MACH,IAAI,CAAC2xB,QAAQ,CAAgB,EAAA,EAAA,CAAC,CAAC;IACjC;EACF;EAEAY,gBAAgBA,CAAAA,EAAS;IACvB,MAAMvP,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IAGtD,IACE6Z,IAAI,OAAqB,IACzB,IAAI,CAAC+C,SAAS,CAAC,CACb,kBAAkB,EAClB;MAAEoM,QAAQ,EAAE,MAAM;MAAEC,UAAU,EAAE;IAAM,CAAA,CACvC,CAAC,EACF;MACA,IAAI,CAACT,QAAQ,CAAc,EAAA,EAAA,CAAC,CAAC;IAC/B,CAAC,MAEI;MACH,IAAI,CAACA,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;IACzB;EACF;EAEAa,kBAAkBA,CAACv5B,IAAY,EAAQ;IAErC,MAAM+pB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IAEtD,IAAI6Z,IAAI,KAAK/pB,IAAI,EAAE;MACjB,IAAI,CAAC04B,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC3B;IACF;IAEA,IAAI3O,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAAC2O,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;IAC7B,CAAC,MAAM;MACL,IAAI,CAACA,QAAQ,CAAa,EAAA,EAAA,CAAC,CAAC;IAC9B;EACF;EAEAc,YAAYA,CAAAA,EAAS;IAEnB,MAAM;MAAEtpB;KAAK,GAAG,IAAI,CAAC+J,KAAK;IAC1B,MAAM8P,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC;IAE3C,IAAI6Z,IAAI,OAAuB,EAAE;MAC/B,IAAI,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,KAAA,EAAuB,EAAE;QACzD,IAAI,CAACwoB,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;QAC3B;MACF;MACA,IAAI,CAACA,QAAQ,CAAe,EAAA,EAAA,CAAC,CAAC;MAC9B;IACF;IAEA,IAAI3O,IAAI,OAAuB,EAAE;MAE/B,IAAI,CAAC2O,QAAQ,CAAgB,EAAA,EAAA,CAAC,CAAC;MAC/B;IACF;IAEA,IAAI,CAACA,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;EACzB;EAEAe,YAAYA,CAAAA,EAAS;IAEnB,MAAM;MAAEvpB;KAAK,GAAG,IAAI,CAAC+J,KAAK;IAC1B,MAAM8P,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC;IAE3C,IAAI6Z,IAAI,OAA0B,EAAE;MAClC,MAAM2P,IAAI,GACR,IAAI,CAACzK,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG,CAAC,CAAC,KAAA,EAA0B,GAAG,CAAC,GAAG,CAAC;MAClE,IAAI,IAAI,CAAC+e,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAGwpB,IAAI,CAAC,KAAA,EAAuB,EAAE;QAC5D,IAAI,CAAChB,QAAQ,CAAA,EAAA,EAAYgB,IAAI,GAAG,CAAC,CAAC;QAClC;MACF;MACA,IAAI,CAAChB,QAAQ,CAAegB,EAAAA,EAAAA,IAAI,CAAC;MACjC;IACF;IAEA,IAAI3P,IAAI,OAAuB,EAAE;MAE/B,IAAI,CAAC2O,QAAQ,CAAgB,EAAA,EAAA,CAAC,CAAC;MAC/B;IACF;IAEA,IAAI,CAACA,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;EACzB;EAEAiB,iBAAiBA,CAAC35B,IAAY,EAAQ;IAEpC,MAAM+pB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,IAAI6Z,IAAI,OAAuB,EAAE;MAC/B,IAAI,CAAC2O,QAAQ,CAEX,EAAA,EAAA,IAAI,CAACzJ,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,OAAuB,GAC5D,CAAC,GACD,CACN,CAAC;MACD;IACF;IACA,IAAIlQ,IAAI,KAAA,EAAuB,IAAI+pB,IAAI,OAA0B,EAAE;MAEjE,IAAI,CAAC9P,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACynB,WAAW,CAAA,EAAS,CAAC;MAC1B;IACF;IACA,IAAI,CAACe,QAAQ,CAAC14B,IAAI,OAAuB,GAAkB,EAAA,GAAA,EAAA,EAAE,CAAC,CAAC;EACjE;EAEA45B,kBAAkBA,CAAAA,EAAS;IAEzB,MAAM7P,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,MAAM8Z,KAAK,GAAG,IAAI,CAACiF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACvD,IAAI6Z,IAAI,OAA2B,EAAE;MACnC,IAAIC,KAAK,OAAuB,EAAE;QAEhC,IAAI,CAAC0O,QAAQ,CAAY,EAAA,EAAA,CAAC,CAAC;MAC7B,CAAC,MAAM;QAEL,IAAI,CAACA,QAAQ,CAAuB,EAAA,EAAA,CAAC,CAAC;MACxC;IACF,CAAC,MAAM,IACL3O,IAAI,KAAA,EAAkB,IACtB,EAAEC,KAAK,IAAA,EAAoB,IAAIA,KAAK,IAAoB,EAAA,CAAC,EACzD;MAEA,IAAI,CAAC/P,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACynB,WAAW,CAAA,EAAe,CAAC;IAClC,CAAC,MAAM;MACL,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;MAChB,IAAI,CAACynB,WAAW,CAAA,EAAY,CAAC;IAC/B;EACF;EAEAC,gBAAgBA,CAAC53B,IAAY,EAAQ;IACnC,QAAQA,IAAI;MAIV,KAAA,EAAA;QACE,IAAI,CAAC24B,aAAa,CAAA,CAAE;QACpB;MAEF,KAAA,EAAA;QACE,EAAE,IAAI,CAAC1e,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,EAAU,CAAC;QAC3B;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,EAAU,CAAC;QAC3B;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,EAAQ,CAAC;QACzB;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,EAAS,CAAC;QAC1B;MACF,KAAA,EAAA;QACE,IAEE,IAAI,CAAC7K,SAAS,CAAC,gBAAgB,CAAC,IAChC,IAAI,CAACmC,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,KAAA,GAA0B,EACnE;UACA,IAAI,IAAI,CAACwG,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;YAClE,MAAM,IAAI,CAAC0C,KAAK,CACd9H,MAAM,CAAC5G,0CAA0C,EACjD,IAAI,CAACuP,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;UACH;UAGA,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,IAAI,CAAC;UACnB,IAAI,CAACynB,WAAW,CAAA,CAAe,CAAC;QAClC,CAAC,MAAM;UACL,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;UAChB,IAAI,CAACynB,WAAW,CAAA,CAAY,CAAC;QAC/B;QACA;MACF,KAAA,EAAA;QACE,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,CAAY,CAAC;QAC7B;MACF,KAAA,GAAA;QACE,IAEE,IAAI,CAAC7K,SAAS,CAAC,gBAAgB,CAAC,IAChC,IAAI,CAACmC,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,KAAA,GAA0B,EACnE;UACA,IAAI,IAAI,CAACwG,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,KAAK,KAAK,EAAE;YAClE,MAAM,IAAI,CAAC0C,KAAK,CACd9H,MAAM,CAACxH,2CAA2C,EAClD,IAAI,CAACmQ,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;UACH;UAGA,IAAI,CAAC5X,KAAK,CAAC/J,GAAG,IAAI,CAAC;UACnB,IAAI,CAACynB,WAAW,CAAA,CAAa,CAAC;QAChC,CAAC,MAAM;UACL,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;UAChB,IAAI,CAACynB,WAAW,CAAA,CAAU,CAAC;QAC7B;QACA;MACF,KAAA,GAAA;QACE,EAAE,IAAI,CAAC1d,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,CAAU,CAAC;QAC3B;MAEF,KAAA,EAAA;QACE,IACE,IAAI,CAAC7K,SAAS,CAAC,cAAc,CAAC,IAC9B,IAAI,CAACmC,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,KAAA,EAAoB,EAC7D;UACA,IAAI,CAACwoB,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;QAClC,CAAC,MAAM;UACL,EAAE,IAAI,CAACze,KAAK,CAAC/J,GAAG;UAChB,IAAI,CAACynB,WAAW,CAAA,EAAS,CAAC;QAC5B;QACA;MAEF,KAAA,EAAA;QACE,IAAI,CAACiC,kBAAkB,CAAA,CAAE;QACzB;MAEF,KAAA,EAAA;QACE,IAAI,CAACC,iBAAiB,CAAA,CAAE;QACxB;MAEF,KAAA,EAAA;QAAuB;UACrB,MAAM9P,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;UAEtD,IAAI6Z,IAAI,KAAA,GAAyB,IAAIA,IAAI,OAAyB,EAAE;YAClE,IAAI,CAAC+P,eAAe,CAAC,EAAE,CAAC;YACxB;UACF;UAEA,IAAI/P,IAAI,KAAA,GAAyB,IAAIA,IAAI,OAAyB,EAAE;YAClE,IAAI,CAAC+P,eAAe,CAAC,CAAC,CAAC;YACvB;UACF;UAEA,IAAI/P,IAAI,KAAA,EAAyB,IAAIA,IAAI,OAAyB,EAAE;YAClE,IAAI,CAAC+P,eAAe,CAAC,CAAC,CAAC;YACvB;UACF;QACF;MAGA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAAClB,UAAU,CAAC,KAAK,CAAC;QACtB;MAGF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACmB,UAAU,CAAC/5B,IAAI,CAAC;QACrB;MAOF,KAAA,EAAA;QACE,IAAI,CAAC64B,eAAe,CAAA,CAAE;QACtB;MAEF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACC,qBAAqB,CAAC94B,IAAI,CAAC;QAChC;MAEF,KAAA,GAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACg5B,kBAAkB,CAACh5B,IAAI,CAAC;QAC7B;MAEF,KAAA,EAAA;QACE,IAAI,CAACi5B,eAAe,CAAA,CAAE;QACtB;MAEF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACM,kBAAkB,CAACv5B,IAAI,CAAC;QAC7B;MAEF,KAAA,EAAA;QACE,IAAI,CAACw5B,YAAY,CAAA,CAAE;QACnB;MAEF,KAAA,EAAA;QACE,IAAI,CAACC,YAAY,CAAA,CAAE;QACnB;MAEF,KAAA,EAAA;MACA,KAAA,EAAA;QACE,IAAI,CAACE,iBAAiB,CAAC35B,IAAI,CAAC;QAC5B;MAEF,KAAA,GAAA;QACE,IAAI,CAAC04B,QAAQ,CAAW,EAAA,EAAA,CAAC,CAAC;QAC1B;MAEF,KAAA,EAAA;QACE,IAAI,CAACY,gBAAgB,CAAA,CAAE;QACvB;MAEF,KAAA,EAAA;QACE,IAAI,CAACjB,oBAAoB,CAAA,CAAE;QAC3B;MAEF,KAAA,EAAA;QACE,IAAI,CAAC2B,QAAQ,CAAA,CAAE;QACf;MAEF;QACE,IAAIpR,iBAAiB,CAAC5oB,IAAI,CAAC,EAAE;UAC3B,IAAI,CAACg6B,QAAQ,CAACh6B,IAAI,CAAC;UACnB;QACF;IACJ;IAEA,MAAM,IAAI,CAACoZ,KAAK,CACd9H,MAAM,CAACxK,wBAAwB,EAC/B,IAAI,CAACmT,KAAK,CAAC4X,WAAW,EAAE,EACxB;MACE9qB,UAAU,EAAEuN,MAAM,CAACmf,aAAa,CAACzzB,IAAI;IACvC,CACF,CAAC;EACH;EAEA04B,QAAQA,CAAC52B,IAAe,EAAE43B,IAAY,EAAQ;IAC5C,MAAMvG,GAAG,GAAG,IAAI,CAAClE,KAAK,CAAC6C,KAAK,CAAC,IAAI,CAAC7X,KAAK,CAAC/J,GAAG,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG,GAAGwpB,IAAI,CAAC;IACnE,IAAI,CAACzf,KAAK,CAAC/J,GAAG,IAAIwpB,IAAI;IACtB,IAAI,CAAC/B,WAAW,CAAC71B,IAAI,EAAEqxB,GAAG,CAAC;EAC7B;EAEA8G,UAAUA,CAAAA,EAAS;IACjB,MAAM1hB,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAM9Y,KAAK,GAAG,IAAI,CAACwa,KAAK,CAACxa,KAAK,GAAG,CAAC;IAClC,IAAIy6B,OAAO,EAAElP,OAAO;IACpB,IAAI;MAAE9a;KAAK,GAAG,IAAI,CAAC+J,KAAK;IACxB,QAAS,EAAE/J,GAAG,EAAE;MACd,IAAIA,GAAG,IAAI,IAAI,CAACmK,MAAM,EAAE;QAEtB,MAAM,IAAI,CAACjB,KAAK,CACd9H,MAAM,CAAC9E,kBAAkB,EACzB3M,8BAA8B,CAAC0Y,QAAQ,EAAE,CAAC,CAC5C,CAAC;MACH;MACA,MAAM8Z,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAChf,GAAG,CAAC;MACrC,IAAIyf,SAAS,CAAC0C,EAAE,CAAC,EAAE;QACjB,MAAM,IAAI,CAACjZ,KAAK,CACd9H,MAAM,CAAC9E,kBAAkB,EACzB3M,8BAA8B,CAAC0Y,QAAQ,EAAE,CAAC,CAC5C,CAAC;MACH;MACA,IAAI2hB,OAAO,EAAE;QACXA,OAAO,GAAG,KAAK;MACjB,CAAC,MAAM;QACL,IAAI7H,EAAE,OAAgC,EAAE;UACtCrH,OAAO,GAAG,IAAI;QAChB,CAAC,MAAM,IAAIqH,EAAE,KAAiC,EAAA,IAAIrH,OAAO,EAAE;UACzDA,OAAO,GAAG,KAAK;QAChB,CAAA,MAAM,IAAIqH,EAAE,OAAoB,IAAI,CAACrH,OAAO,EAAE;UAC7C;QACF;QACAkP,OAAO,GAAG7H,EAAE,KAAwB,EAAA;MACtC;IACF;IACA,MAAM8H,OAAO,GAAG,IAAI,CAAClL,KAAK,CAAC6C,KAAK,CAACryB,KAAK,EAAEyQ,GAAG,CAAC;IAC5C,EAAEA,GAAG;IAEL,IAAIkqB,IAAI,GAAG,EAAE;IAEb,MAAM7B,OAAO,GAAGA,CAAAA,KAEd14B,8BAA8B,CAAC0Y,QAAQ,EAAErI,GAAG,GAAG,CAAC,GAAGzQ,KAAK,CAAC;IAE3D,OAAOyQ,GAAG,GAAG,IAAI,CAACmK,MAAM,EAAE;MACxB,MAAM+c,EAAE,GAAG,IAAI,CAACD,cAAc,CAACjnB,GAAG,CAAC;MAEnC,MAAMmqB,IAAI,GAAG/lB,MAAM,CAACwU,YAAY,CAACsO,EAAE,CAAC;MAGpC,IAAI3B,iBAAiB,CAAChM,GAAG,CAAC2N,EAAE,CAAC,EAAE;QAC7B,IAAIA,EAAE,QAAyB,EAAE;UAC/B,IAAIgD,IAAI,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,CAAClhB,KAAK,CAAC9H,MAAM,CAAC1L,yBAAyB,EAAE2yB,OAAO,CAAE,CAAA,CAAC;UACzD;QACF,CAAC,MAAM,IAAInB,EAAE,KAAA,GAAyB,EAAE;UACtC,IAAIgD,IAAI,CAACE,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,IAAI,CAAClhB,KAAK,CAAC9H,MAAM,CAAC1L,yBAAyB,EAAE2yB,OAAO,CAAE,CAAA,CAAC;UACzD;QACF;QACA,IAAI6B,IAAI,CAACE,QAAQ,CAACD,IAAI,CAAC,EAAE;UACvB,IAAI,CAACjhB,KAAK,CAAC9H,MAAM,CAACnN,oBAAoB,EAAEo0B,OAAO,CAAE,CAAA,CAAC;QACpD;MACD,CAAA,MAAM,IAAIxP,gBAAgB,CAACqO,EAAE,CAAC,IAAIA,EAAE,KAAA,EAAwB,EAAE;QAC7D,IAAI,CAAChe,KAAK,CAAC9H,MAAM,CAAC7J,oBAAoB,EAAE8wB,OAAO,CAAE,CAAA,CAAC;MACpD,CAAC,MAAM;QACL;MACF;MAEA,EAAEroB,GAAG;MACLkqB,IAAI,IAAIC,IAAI;IACd;IACA,IAAI,CAACpgB,KAAK,CAAC/J,GAAG,GAAGA,GAAG;IAEpB,IAAI,CAACynB,WAAW,CAAY,GAAA,EAAA;MAC1BhkB,OAAO,EAAEwmB,OAAO;MAChBvmB,KAAK,EAAEwmB;IACT,CAAC,CAAC;EACJ;EAWAhG,OAAOA,CACLluB,KAAa,EACb+tB,GAAY,EACZC,QAAiB,GAAG,KAAK,EACzBI,iBAAmC,GAAG,IAAI,EAC3B;IACf,MAAM;MAAEH,CAAC;MAAEjkB;IAAI,CAAC,GAAGkkB,OAAO,CACxB,IAAI,CAACnF,KAAK,EACV,IAAI,CAAChV,KAAK,CAAC/J,GAAG,EACd,IAAI,CAAC+J,KAAK,CAACiW,SAAS,EACpB,IAAI,CAACjW,KAAK,CAACgW,OAAO,EAClB/pB,KAAK,EACL+tB,GAAG,EACHC,QAAQ,EACRI,iBAAiB,EACjB,IAAI,CAACuB,qBAAqB,EACR,KACpB,CAAC;IACD,IAAI,CAAC5b,KAAK,CAAC/J,GAAG,GAAGA,GAAG;IACpB,OAAOikB,CAAC;EACV;EAEA2F,eAAeA,CAAC5zB,KAAa,EAAQ;IACnC,MAAMzG,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,MAAMqI,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,CAAA,CAAE;IACzC,IAAI0I,QAAQ,GAAG,KAAK;IAEpB,IAAI,CAACtgB,KAAK,CAAC/J,GAAG,IAAI,CAAC;IACnB,MAAM4kB,GAAG,GAAG,IAAI,CAACV,OAAO,CAACluB,KAAK,CAAC;IAC/B,IAAI4uB,GAAG,IAAI,IAAI,EAAE;MACf,IAAI,CAAC1b,KAAK,CACR9H,MAAM,CAACrL,YAAY,EAEnBpG,8BAA8B,CAAC0Y,QAAQ,EAAE,CAAC,CAAC,EAC3C;QACErS;MACF,CACF,CAAC;IACH;IACA,MAAM6jB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAElD,IAAI6Z,IAAI,QAAyB,EAAE;MACjC,EAAE,IAAI,CAAC9P,KAAK,CAAC/J,GAAG;MAChBqqB,QAAQ,GAAG,IAAI;IACjB,CAAC,MAAM,IAAIxQ,IAAI,KAAA,GAAyB,EAAE;MACxC,MAAM,IAAI,CAAC3Q,KAAK,CAAC9H,MAAM,CAACtL,cAAc,EAAEuS,QAAQ,CAAC;IACnD;IAEA,IAAIqQ,iBAAiB,CAAC,IAAI,CAACuO,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,CAAC,EAAE;MAC1D,MAAM,IAAI,CAACkJ,KAAK,CAAC9H,MAAM,CAACpI,gBAAgB,EAAE,IAAI,CAAC+Q,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;IACrE;IAEA,IAAI0I,QAAQ,EAAE;MACZ,MAAMpH,GAAG,GAAG,IAAI,CAAClE,KAAK,CAAC6C,KAAK,CAACryB,KAAK,EAAE,IAAI,CAACwa,KAAK,CAAC/J,GAAG,CAAC,CAACsqB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;MACxE,IAAI,CAAC7C,WAAW,CAAYxE,GAAAA,EAAAA,GAAG,CAAC;MAChC;IACF;IAEA,IAAI,CAACwE,WAAW,CAAS7C,GAAAA,EAAAA,GAAG,CAAC;EAC/B;EAIA8D,UAAUA,CAAC6B,aAAsB,EAAQ;IACvC,MAAMh7B,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,MAAMqI,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC4X,WAAW,CAAA,CAAE;IACzC,IAAI6I,OAAO,GAAG,KAAK;IACnB,IAAIH,QAAQ,GAAG,KAAK;IACpB,IAAII,WAAW,GAAG,KAAK;IACvB,IAAIC,OAAO,GAAG,KAAK;IAEnB,IAAI,CAACH,aAAa,IAAI,IAAI,CAACrG,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;MAC/C,IAAI,CAAChb,KAAK,CAAC9H,MAAM,CAAC1K,aAAa,EAAE,IAAI,CAACqT,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;IAC5D;IACA,MAAMgJ,cAAc,GAClB,IAAI,CAAC5gB,KAAK,CAAC/J,GAAG,GAAGzQ,KAAK,IAAI,CAAC,IAC3B,IAAI,CAACwvB,KAAK,CAACC,UAAU,CAACzvB,KAAK,CAAC,KAAqB,EAAA;IAEnD,IAAIo7B,cAAc,EAAE;MAClB,MAAMC,OAAO,GAAG,IAAI,CAAC7L,KAAK,CAAC6C,KAAK,CAACryB,KAAK,EAAE,IAAI,CAACwa,KAAK,CAAC/J,GAAG,CAAC;MACvD,IAAI,CAAC+lB,sBAAsB,CAAC3kB,MAAM,CAAC7D,kBAAkB,EAAE8K,QAAQ,CAAC;MAChE,IAAI,CAAC,IAAI,CAAC0B,KAAK,CAACgP,MAAM,EAAE;QAEtB,MAAM8R,aAAa,GAAGD,OAAO,CAACxF,OAAO,CAAC,GAAG,CAAC;QAC1C,IAAIyF,aAAa,GAAG,CAAC,EAAE;UAErB,IAAI,CAAC3hB,KAAK,CACR9H,MAAM,CAACtE,yBAAyB,EAChCnN,8BAA8B,CAAC0Y,QAAQ,EAAEwiB,aAAa,CACxD,CAAC;QACH;MACF;MACAH,OAAO,GAAGC,cAAc,IAAI,CAAC,MAAM,CAAChS,IAAI,CAACiS,OAAO,CAAC;IACnD;IAEA,IAAI/Q,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAChD,IAAI6Z,IAAI,KAAA,EAAkB,IAAI,CAAC6Q,OAAO,EAAE;MACtC,EAAE,IAAI,CAAC3gB,KAAK,CAAC/J,GAAG;MAChB,IAAI,CAACkkB,OAAO,CAAC,EAAE,CAAC;MAChBsG,OAAO,GAAG,IAAI;MACd3Q,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAC9C;IAEA,IACE,CAAC6Z,IAAI,KAAyB,EAAA,IAAIA,IAAI,KAAyB,GAAA,KAC/D,CAAC6Q,OAAO,EACR;MACA7Q,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,EAAE,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;MAC9C,IAAI6Z,IAAI,KAAA,EAAuB,IAAIA,IAAI,OAAmB,EAAE;QAC1D,EAAE,IAAI,CAAC9P,KAAK,CAAC/J,GAAG;MAClB;MACA,IAAI,IAAI,CAACkkB,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAChb,KAAK,CAAC9H,MAAM,CAACzK,wBAAwB,EAAE0R,QAAQ,CAAC;MACvD;MACAmiB,OAAO,GAAG,IAAI;MACdC,WAAW,GAAG,IAAI;MAClB5Q,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAC9C;IAEA,IAAI6Z,IAAI,QAAyB,EAAE;MAGjC,IAAI2Q,OAAO,IAAIG,cAAc,EAAE;QAC7B,IAAI,CAACzhB,KAAK,CAAC9H,MAAM,CAACzL,oBAAoB,EAAE0S,QAAQ,CAAC;MACnD;MACA,EAAE,IAAI,CAAC0B,KAAK,CAAC/J,GAAG;MAChBqqB,QAAQ,GAAG,IAAI;IACjB;IAEA,IAAqCxQ,IAAI,QAAyB,EAAE;MAClE,IAAI,CAACyO,YAAY,CAAC,SAAS,EAAE,IAAI,CAACve,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;MACtD,IAAI8I,WAAW,IAAIE,cAAc,EAAE;QACjC,IAAI,CAACzhB,KAAK,CAAC9H,MAAM,CAACtL,cAAc,EAAEuS,QAAQ,CAAC;MAC7C;MACA,EAAE,IAAI,CAAC0B,KAAK,CAAC/J,GAAG;MAEhB,IAAI8qB,SAAS,GAAG,IAAI;IACtB;IAEA,IAAIpS,iBAAiB,CAAC,IAAI,CAACuO,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,CAAC,EAAE;MAC1D,MAAM,IAAI,CAACkJ,KAAK,CAAC9H,MAAM,CAACpI,gBAAgB,EAAE,IAAI,CAAC+Q,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;IACrE;IAGA,MAAMsB,GAAG,GAAG,IAAI,CAAClE,KAAK,CAAC6C,KAAK,CAACryB,KAAK,EAAE,IAAI,CAACwa,KAAK,CAAC/J,GAAG,CAAC,CAACsqB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEzE,IAAID,QAAQ,EAAE;MACZ,IAAI,CAAC5C,WAAW,CAAYxE,GAAAA,EAAAA,GAAG,CAAC;MAChC;IACF;IAEA,IAAqC6H,SAAS,EAAE;MAC9C,IAAI,CAACrD,WAAW,CAAaxE,GAAAA,EAAAA,GAAG,CAAC;MACjC;IACF;IAEA,MAAM2B,GAAG,GAAG8F,OAAO,GAAG5G,QAAQ,CAACb,GAAG,EAAE,CAAC,CAAC,GAAG8H,UAAU,CAAC9H,GAAG,CAAC;IACxD,IAAI,CAACwE,WAAW,CAAS7C,GAAAA,EAAAA,GAAG,CAAC;EAC/B;EAIAtB,aAAaA,CAACF,cAAuB,EAAiB;IACpD,MAAM;MAAEtzB,IAAI;MAAEkQ;IAAI,CAAC,GAAGsjB,aAAa,CACjC,IAAI,CAACvE,KAAK,EACV,IAAI,CAAChV,KAAK,CAAC/J,GAAG,EACd,IAAI,CAAC+J,KAAK,CAACiW,SAAS,EACpB,IAAI,CAACjW,KAAK,CAACgW,OAAO,EAClBqD,cAAc,EACd,IAAI,CAACyC,2BACP,CAAC;IACD,IAAI,CAAC9b,KAAK,CAAC/J,GAAG,GAAGA,GAAG;IACpB,OAAOlQ,IAAI;EACb;EAEA+5B,UAAUA,CAACmB,KAAa,EAAQ;IAC9B,MAAM;MAAE/H,GAAG;MAAEjjB,GAAG;MAAE+f,OAAO;MAAEC;IAAU,CAAC,GAAGsC,kBAAkB,CACzD0I,KAAK,KAAA,EAA4B,GAAG,QAAQ,GAAG,QAAQ,EACvD,IAAI,CAACjM,KAAK,EACV,IAAI,CAAChV,KAAK,CAAC/J,GAAG,GAAG,CAAC,EAClB,IAAI,CAAC+J,KAAK,CAACiW,SAAS,EACpB,IAAI,CAACjW,KAAK,CAACgW,OAAO,EAClB,IAAI,CAAC+F,uCACP,CAAC;IACD,IAAI,CAAC/b,KAAK,CAAC/J,GAAG,GAAGA,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC+J,KAAK,CAACiW,SAAS,GAAGA,SAAS;IAChC,IAAI,CAACjW,KAAK,CAACgW,OAAO,GAAGA,OAAO;IAC5B,IAAI,CAAC0H,WAAW,CAAYxE,GAAAA,EAAAA,GAAG,CAAC;EAClC;EAGAgI,wBAAwBA,CAAAA,EAAS;IAC/B,IAAI,CAAC,IAAI,CAACvH,KAAK,CAAA,CAAU,CAAC,EAAE;MAC1B,IAAI,CAAC7sB,UAAU,CAAC,IAAI,GAAW,CAAC;IAClC;IAEA,IAAI,CAACkT,KAAK,CAAC/J,GAAG,EAAE;IAChB,IAAI,CAAC2pB,iBAAiB,CAAA,CAAE;EAC1B;EAGAA,iBAAiBA,CAAAA,EAAS;IACxB,MAAMuB,OAAO,GAAG,IAAI,CAACnM,KAAK,CAAC,IAAI,CAAChV,KAAK,CAAC/J,GAAG,CAAC;IAC1C,MAAM;MAAEijB,GAAG;MAAEN,eAAe;MAAE3iB,GAAG;MAAE+f,OAAO;MAAEC;IAAU,CAAC,GACrDsC,kBAAkB,CAChB,UAAU,EACV,IAAI,CAACvD,KAAK,EACV,IAAI,CAAChV,KAAK,CAAC/J,GAAG,GAAG,CAAC,EAClB,IAAI,CAAC+J,KAAK,CAACiW,SAAS,EACpB,IAAI,CAACjW,KAAK,CAACgW,OAAO,EAClB,IAAI,CAACiG,yCACP,CAAC;IACH,IAAI,CAACjc,KAAK,CAAC/J,GAAG,GAAGA,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC+J,KAAK,CAACiW,SAAS,GAAGA,SAAS;IAChC,IAAI,CAACjW,KAAK,CAACgW,OAAO,GAAGA,OAAO;IAE5B,IAAI4C,eAAe,EAAE;MACnB,IAAI,CAAC5Y,KAAK,CAAC2W,6BAA6B,GAAG,IAAI1xB,QAAQ,CACrD2zB,eAAe,CAAC5C,OAAO,EACvB4C,eAAe,CAAC3iB,GAAG,GAAG2iB,eAAe,CAAC3C,SAAS,EAC/C,IAAI,CAACxD,iBAAiB,CAACmG,eAAe,CAAC3iB,GAAG,CAC5C,CAAC;IACH;IAEA,IAAI,IAAI,CAAC+e,KAAK,CAACoK,WAAW,CAACnpB,GAAG,CAAC,KAAA,EAA0B,EAAE;MACzD,IAAI,CAACynB,WAAW,CAEd9E,EAAAA,EAAAA,eAAe,GAAG,IAAI,GAAGuI,OAAO,GAAGjI,GAAG,GAAG,GAC3C,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAAClZ,KAAK,CAAC/J,GAAG,EAAE;MAChB,IAAI,CAACynB,WAAW,CAEd9E,EAAAA,EAAAA,eAAe,GAAG,IAAI,GAAGuI,OAAO,GAAGjI,GAAG,GAAG,IAC3C,CAAC;IACH;EACF;EAEA8C,sBAAsBA,CAACuB,YAAiC,EAAE9X,EAAY,EAAE;IACtE,MAAMpgB,KAAK,GAAGogB,EAAE,CAACpgB,KAAK;IAEtB,IAAI,IAAI,CAAC2a,KAAK,CAACgP,MAAM,IAAI,CAAC,IAAI,CAAChP,KAAK,CAAC4W,YAAY,CAACpH,GAAG,CAACnqB,KAAK,CAAC,EAAE;MAC5D,IAAI,CAAC8Z,KAAK,CAACoe,YAAY,EAAE9X,EAAE,CAAC;IAC9B,CAAC,MAAM;MACL,IAAI,CAACzF,KAAK,CAAC4W,YAAY,CAACrgB,GAAG,CAAClR,KAAK,EAAE,CAACk4B,YAAY,EAAE9X,EAAE,CAAC,CAAC;IACxD;EACF;EAWA+Y,SAASA,CAAC4C,SAAkB,EAAU;IACpC,IAAI,CAACphB,KAAK,CAAC0X,WAAW,GAAG,KAAK;IAC9B,IAAIrI,IAAI,GAAG,EAAE;IACb,MAAM7pB,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,IAAI4iB,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;IAC/B,IAAImrB,SAAS,KAAK3pB,SAAS,EAAE;MAC3B,IAAI,CAACuI,KAAK,CAAC/J,GAAG,IAAImrB,SAAS,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;IAC/C;IAEA,OAAO,IAAI,CAACphB,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,EAAE;MACnC,MAAMgY,EAAE,GAAG,IAAI,CAAC8E,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC;MAC9C,IAAI6Y,gBAAgB,CAACsJ,EAAE,CAAC,EAAE;QACxB,IAAI,CAACpY,KAAK,CAAC/J,GAAG,IAAImiB,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;MACxC,CAAC,MAAM,IAAIA,EAAE,KAAA,EAAwB,EAAE;QACrC,IAAI,CAACpY,KAAK,CAAC0X,WAAW,GAAG,IAAI;QAE7BrI,IAAI,IAAI,IAAI,CAAC2F,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;QACpD,MAAMorB,QAAQ,GAAG,IAAI,CAACrhB,KAAK,CAAC4X,WAAW,CAAA,CAAE;QACzC,MAAM0J,eAAe,GACnB,IAAI,CAACthB,KAAK,CAAC/J,GAAG,KAAKzQ,KAAK,GAAGmpB,iBAAiB,GAAGG,gBAAgB;QAEjE,IAAI,IAAI,CAACkG,KAAK,CAACC,UAAU,CAAC,EAAE,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC,QAAyB,EAAE;UACpE,IAAI,CAACkJ,KAAK,CAAC9H,MAAM,CAACjJ,oBAAoB,EAAE,IAAI,CAAC4R,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;UACjEiB,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,GAAG,CAAC;UAC/B;QACF;QAEA,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;QAChB,MAAMsrB,GAAG,GAAG,IAAI,CAAChI,aAAa,CAAC,IAAI,CAAC;QACpC,IAAIgI,GAAG,KAAK,IAAI,EAAE;UAChB,IAAI,CAACD,eAAe,CAACC,GAAG,CAAC,EAAE;YACzB,IAAI,CAACpiB,KAAK,CAAC9H,MAAM,CAAC/M,0BAA0B,EAAE+2B,QAAQ,CAAC;UACzD;UAEAhS,IAAI,IAAIhV,MAAM,CAACmf,aAAa,CAAC+H,GAAG,CAAC;QACnC;QACA1I,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;MAC7B,CAAC,MAAM;QACL;MACF;IACF;IACA,OAAOoZ,IAAI,GAAG,IAAI,CAAC2F,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;EAC5D;EAKA8pB,QAAQA,CAACqB,SAAkB,EAAQ;IACjC,MAAM/R,IAAI,GAAG,IAAI,CAACmP,SAAS,CAAC4C,SAAS,CAAC;IACtC,MAAMv5B,IAAI,GAAG25B,UAAY,CAAClrB,GAAG,CAAC+Y,IAAI,CAAC;IACnC,IAAIxnB,IAAI,KAAK4P,SAAS,EAAE;MAGtB,IAAI,CAACimB,WAAW,CAAC71B,IAAI,EAAE8lB,cAAc,CAAC9lB,IAAI,CAAC,CAAC;IAC9C,CAAC,MAAM;MACL,IAAI,CAAC61B,WAAW,CAAUrO,GAAAA,EAAAA,IAAI,CAAC;IACjC;EACF;EAEA8M,mBAAmBA,CAAAA,EAAS;IAC1B,MAAM;MAAEt0B;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAIqN,cAAc,CAACxlB,IAAI,CAAC,IAAI,IAAI,CAACmY,KAAK,CAAC0X,WAAW,EAAE;MAClD,IAAI,CAACvY,KAAK,CAAC9H,MAAM,CAACjL,0BAA0B,EAAE,IAAI,CAAC4T,KAAK,CAAC1B,QAAQ,EAAE;QACjEjS,YAAY,EAAEshB,cAAc,CAAC9lB,IAAI;MACnC,CAAC,CAAC;IACJ;EACF;EAcAsX,KAAKA,CACHoe,YAAiD,EACjD9X,EAA2B,EAC3B3P,OAAqB,GAAG,CAAA,CAAkB,EAChB;IAC1B,MAAMD,GAAG,GAAG4P,EAAE,YAAYxgB,QAAQ,GAAGwgB,EAAE,GAAGA,EAAE,CAAC5P,GAAG,CAACrQ,KAAK;IACtD,MAAMuQ,KAAK,GAAGwnB,YAAY,CAAC1nB,GAAG,EAAEC,OAAO,CAAC;IAExC,IAAI,EAAE,IAAI,CAAC0D,WAAW,OAA4B,CAAC,EAAE,MAAMzD,KAAK;IAChE,IAAI,CAAC,IAAI,CAAC4lB,WAAW,EAAE,IAAI,CAAC3b,KAAK,CAACkW,MAAM,CAACzS,IAAI,CAAC1N,KAAK,CAAC;IAEpD,OAAOA,KAAK;EACd;EAQA0rB,cAAcA,CACZlE,YAAiD,EACjD9X,EAA2B,EAC3B3P,OAAqB,GAAG,CAAA,CAAkB,EACR;IAClC,MAAMD,GAAG,GAAG4P,EAAE,YAAYxgB,QAAQ,GAAGwgB,EAAE,GAAGA,EAAE,CAAC5P,GAAG,CAACrQ,KAAK;IACtD,MAAMyQ,GAAG,GAAGJ,GAAG,CAACxQ,KAAK;IACrB,MAAM6wB,MAAM,GAAG,IAAI,CAAClW,KAAK,CAACkW,MAAM;IAEhC,KAAK,IAAIxH,CAAC,GAAGwH,MAAM,CAAC9V,MAAM,GAAG,CAAC,EAAEsO,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC3C,MAAM3Y,KAAK,GAAGmgB,MAAM,CAACxH,CAAC,CAAC;MACvB,IAAI3Y,KAAK,CAACF,GAAG,CAACxQ,KAAK,KAAK4Q,GAAG,EAAE;QAC3B,OAAQigB,MAAM,CAACxH,CAAC,CAAC,GAAG6O,YAAY,CAAC1nB,GAAG,EAAEC,OAAO,CAAC;MAChD;MACA,IAAIC,KAAK,CAACF,GAAG,CAACxQ,KAAK,GAAG4Q,GAAG,EAAE;IAC7B;IAEA,OAAO,IAAI,CAACkJ,KAAK,CAACoe,YAAY,EAAE9X,EAAE,EAAE3P,OAAO,CAAC;EAC9C;EAIA0M,aAAaA,CAAC0b,QAAmB,EAAQ,CAAC;EAG1CpxB,UAAUA,CAAC+I,GAAqB,EAAEhO,IAAgB,EAAQ;IACxD,MAAM,IAAI,CAACsX,KAAK,CACd9H,MAAM,CAAC7F,eAAe,EACtBqE,GAAG,IAAI,IAAI,GAAGA,GAAG,GAAG,IAAI,CAACmK,KAAK,CAAC1B,QAAQ,EACvC;MACE7M,QAAQ,EAAE5J,IAAI,GAAG8lB,cAAc,CAAC9lB,IAAI,CAAC,GAAG;IAC1C,CACF,CAAC;EACH;EAEA02B,YAAYA,CAACxL,UAAkB,EAAEld,GAAc,EAAQ;IACrD,IAAI,IAAI,CAACgd,SAAS,CAACE,UAAU,CAAC,EAAE;MAC9B,OAAO,IAAI;IACb;IAEA,MAAM,IAAI,CAAC5T,KAAK,CACd9H,MAAM,CAACzJ,aAAa,EACpBiI,GAAG,IAAI,IAAI,GAAGA,GAAG,GAAG,IAAI,CAACmK,KAAK,CAAC1B,QAAQ,EACvC;MACEzQ,aAAa,EAAE,CAACklB,UAAU;IAC5B,CACF,CAAC;EACH;EAEA2O,eAAeA,CAACC,WAAqB,EAAQ;IAC3C,IAAI,CAACA,WAAW,CAACC,IAAI,CAAC7zB,IAAI,IAAI,IAAI,CAAC8kB,SAAS,CAAC9kB,IAAI,CAAC,CAAC,EAAE;MACnD,MAAM,IAAI,CAACoR,KAAK,CAAC9H,MAAM,CAAClJ,mBAAmB,EAAE,IAAI,CAAC6R,KAAK,CAAC1B,QAAQ,EAAE;QAChEzQ,aAAa,EAAE8zB;MACjB,CAAC,CAAC;IACJ;EACF;EAEA9F,YAAYA,CAAC9lB,KAAoC,EAAE;IACjD,OAAO,CAACE,GAAW,EAAEggB,SAAiB,EAAED,OAAe,KAAK;MAC1D,IAAI,CAAC7W,KAAK,CAACpJ,KAAK,EAAEwlB,aAAa,CAACtlB,GAAG,EAAEggB,SAAS,EAAED,OAAO,CAAC,CAAC;KAC1D;EACH;AAoDF;ACllDO,MAAM6L,UAAU,CAAC;EAAA38B,WAAAA,CAAA,EAAA;IAAA,IAAA,CAEtB48B,YAAY,GAAgB,IAAInuB,GAAG,EAAE;IAAA,IAAA,CAGrCouB,aAAa,GAAkC,IAAIrf,GAAG,EAAE;IAAA,IAAA,CAIxDsf,qBAAqB,GAA0B,IAAItf,GAAG,EAAE;EAAA;AAC1D;AAEe,MAAMuf,iBAAiB,CAAC;EAKrC/8B,WAAWA,CAACorB,MAAiB,EAAE;IAAA,IAAA,CAJ/BA,MAAM,GAAA,KAAA,CAAA;IAAA,IACN4R,CAAAA,KAAK,GAAsB,EAAE;IAAA,IAAA,CAC7BF,qBAAqB,GAA0B,IAAItf,GAAG,EAAE;IAGtD,IAAI,CAAC4N,MAAM,GAAGA,MAAM;EACtB;EAEAT,OAAOA,CAAAA,EAAe;IACpB,OAAO,IAAI,CAACqS,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC9hB,MAAM,GAAG,CAAC,CAAC;EAC1C;EAEAmR,KAAKA,CAAAA,EAAG;IACN,IAAI,CAAC2Q,KAAK,CAACze,IAAI,CAAC,IAAIoe,UAAU,CAAE,CAAA,CAAC;EACnC;EAEArQ,IAAIA,CAAAA,EAAG;IACL,MAAM2Q,aAAa,GAAG,IAAI,CAACD,KAAK,CAACjU,GAAG,CAAA,CAAE;IAKtC,MAAM4B,OAAO,GAAG,IAAI,CAACA,OAAO,EAAE;IAG9B,KAAK,MAAM,CAAC9hB,IAAI,EAAE8H,GAAG,CAAC,IAAIc,KAAK,CAACyrB,IAAI,CAACD,aAAa,CAACH,qBAAqB,CAAC,EAAE;MACzE,IAAInS,OAAO,EAAE;QACX,IAAI,CAACA,OAAO,CAACmS,qBAAqB,CAACxS,GAAG,CAACzhB,IAAI,CAAC,EAAE;UAC5C8hB,OAAO,CAACmS,qBAAqB,CAACzrB,GAAG,CAACxI,IAAI,EAAE8H,GAAG,CAAC;QAC9C;MACF,CAAC,MAAM;QACL,IAAI,CAACya,MAAM,CAACnR,KAAK,CAAC9H,MAAM,CAACrK,6BAA6B,EAAE6I,GAAG,EAAE;UAC3DlQ,cAAc,EAAEoI;QAClB,CAAC,CAAC;MACJ;IACF;EACF;EAEAs0B,kBAAkBA,CAChBt0B,IAAY,EACZu0B,WAA6B,EAC7BzsB,GAAa,EACb;IACA,MAAM;MAAEisB,YAAY;MAAEC,aAAa;MAAEC;IAAsB,CAAC,GAC1D,IAAI,CAACnS,OAAO,EAAE;IAChB,IAAI0S,SAAS,GAAGT,YAAY,CAACtS,GAAG,CAACzhB,IAAI,CAAC;IAEtC,IAAIu0B,WAAW,IAAiC,EAAE;MAChD,MAAME,QAAQ,GAAGD,SAAS,IAAIR,aAAa,CAACzrB,GAAG,CAACvI,IAAI,CAAC;MACrD,IAAIy0B,QAAQ,EAAE;QACZ,MAAMC,SAAS,GAAGD,QAAQ,IAA+B;QACzD,MAAME,SAAS,GAAGJ,WAAW,IAA+B;QAE5D,MAAMK,OAAO,GAAGH,QAAQ,IAAiC;QACzD,MAAMI,OAAO,GAAGN,WAAW,IAAiC;QAK5DC,SAAS,GAAGI,OAAO,KAAKC,OAAO,IAAIH,SAAS,KAAKC,SAAS;QAE1D,IAAI,CAACH,SAAS,EAAER,aAAa,CAACjQ,MAAM,CAAC/jB,IAAI,CAAC;MAC5C,CAAC,MAAM,IAAI,CAACw0B,SAAS,EAAE;QACrBR,aAAa,CAACxrB,GAAG,CAACxI,IAAI,EAAEu0B,WAAW,CAAC;MACtC;IACF;IAEA,IAAIC,SAAS,EAAE;MACb,IAAI,CAACjS,MAAM,CAACnR,KAAK,CAAC9H,MAAM,CAAC1H,wBAAwB,EAAEkG,GAAG,EAAE;QACtDlQ,cAAc,EAAEoI;MAClB,CAAC,CAAC;IACJ;IAEA+zB,YAAY,CAACzP,GAAG,CAACtkB,IAAI,CAAC;IACtBi0B,qBAAqB,CAAClQ,MAAM,CAAC/jB,IAAI,CAAC;EACpC;EAEAiR,cAAcA,CAACjR,IAAY,EAAE8H,GAAa,EAAE;IAC1C,IAAIkJ,UAAU;IACd,KAAKA,UAAU,IAAI,IAAI,CAACmjB,KAAK,EAAE;MAC7B,IAAInjB,UAAU,CAAC+iB,YAAY,CAACtS,GAAG,CAACzhB,IAAI,CAAC,EAAE;IACzC;IAEA,IAAIgR,UAAU,EAAE;MACdA,UAAU,CAACijB,qBAAqB,CAACzrB,GAAG,CAACxI,IAAI,EAAE8H,GAAG,CAAC;IACjD,CAAC,MAAM;MAEL,IAAI,CAACya,MAAM,CAACnR,KAAK,CAAC9H,MAAM,CAACrK,6BAA6B,EAAE6I,GAAG,EAAE;QAC3DlQ,cAAc,EAAEoI;MAClB,CAAC,CAAC;IACJ;EACF;AACF;ACtDA,MAAM80B,eAAe,CAAC;EAGpB39B,WAAWA,CAAC2C,IAAyB,GAAA,CAAkC,EAAE;IACvE,IAAI,CAACA,IAAI,GAAGA,IAAI;EAClB;EAEAi7B,8BAA8BA,CAAAA,EAAkC;IAC9D,OACE,IAAI,CAACj7B,IAAI,KAAA,CAA6D,IACtE,IAAI,CAACA,IAAI,KAAwD,CAAA;EAErE;EAEAk7B,+BAA+BA,CAAAA,EAAG;IAChC,OAAO,IAAI,CAACl7B,IAAI,KAA8C,CAAA;EAChE;AACF;AAUA,MAAMm7B,qBAAqB,SAASH,eAAe,CAAC;EAGlD39B,WAAWA,CACT2C,IAE4D,EAC5D;IACA,KAAK,CAACA,IAAI,CAAC;IAAC,IAAA,CAPdo7B,iBAAiB,GACf,IAAIvgB,GAAG,EAAE;EAOX;EACAwgB,sBAAsBA,CACpBC,iBAAgD,EAChD1d,EAAY,EACZ;IACA,MAAMpgB,KAAK,GAAGogB,EAAE,CAACpgB,KAAK;IAEtB,IAAI,CAAC49B,iBAAiB,CAAC1sB,GAAG,CAAClR,KAAK,EAAE,CAAC89B,iBAAiB,EAAE1d,EAAE,CAAC,CAAC;EAC5D;EACA2d,qBAAqBA,CAAC/9B,KAAa,EAAE;IACnC,IAAI,CAAC49B,iBAAiB,CAACnR,MAAM,CAACzsB,KAAK,CAAC;EACtC;EACAg+B,aAAaA,CACXC,QAAmE,EACnE;IACA,IAAI,CAACL,iBAAiB,CAAC3F,OAAO,CAACgG,QAAQ,CAAC;EAC1C;AACF;AAEe,MAAMC,sBAAsB,CAAC;EAI1Cr+B,WAAWA,CAACorB,MAAiB,EAAE;IAAA,IAAA,CAH/BA,MAAM,GAAA,KAAA,CAAA;IAAA,IAAA,CACN4R,KAAK,GAA2B,CAAC,IAAIW,eAAe,CAAE,CAAA,CAAC;IAGrD,IAAI,CAACvS,MAAM,GAAGA,MAAM;EACtB;EACAiB,KAAKA,CAACE,KAAsB,EAAE;IAC5B,IAAI,CAACyQ,KAAK,CAACze,IAAI,CAACgO,KAAK,CAAC;EACxB;EAEAD,IAAIA,CAAAA,EAAG;IACL,IAAI,CAAC0Q,KAAK,CAACjU,GAAG,EAAE;EAClB;EASAuV,+BAA+BA,CAC7BjG,YAAuD,EACvD31B,IAAU,EACJ;IACN,MAAM67B,MAAM,GAAG77B,IAAI,CAACiO,GAAG,CAACrQ,KAAK;IAC7B,MAAM;MAAE08B;IAAO,CAAA,GAAG,IAAI;IACtB,IAAIxT,CAAC,GAAGwT,KAAK,CAAC9hB,MAAM,GAAG,CAAC;IACxB,IAAIqR,KAAsB,GAAGyQ,KAAK,CAACxT,CAAC,CAAC;IACrC,OAAO,CAAC+C,KAAK,CAACsR,+BAA+B,EAAE,EAAE;MAC/C,IAAItR,KAAK,CAACqR,8BAA8B,EAAE,EAAE;QAC1CrR,KAAK,CAACyR,sBAAsB,CAAC3F,YAAY,EAAEkG,MAAM,CAAC;MACpD,CAAC,MAAM;QAGL;MACF;MACAhS,KAAK,GAAGyQ,KAAK,CAAC,EAAExT,CAAC,CAAC;IACpB;IACA,IAAI,CAAC4B,MAAM,CAACnR,KAAK,CAACoe,YAAY,EAAEkG,MAAM,CAAC;EACzC;EAqBAC,gCAAgCA,CAC9B3tB,KAAoC,EACpCnO,IAAU,EACJ;IACN,MAAM;MAAEs6B;IAAO,CAAA,GAAG,IAAI;IACtB,MAAMzQ,KAAsB,GAAGyQ,KAAK,CAACA,KAAK,CAAC9hB,MAAM,GAAG,CAAC,CAAC;IACtD,MAAMqjB,MAAM,GAAG77B,IAAI,CAACiO,GAAG,CAACrQ,KAAK;IAC7B,IAAIisB,KAAK,CAACsR,+BAA+B,EAAE,EAAE;MAC3C,IAAI,CAACzS,MAAM,CAACnR,KAAK,CAACpJ,KAAK,EAAE0tB,MAAM,CAAC;IAClC,CAAC,MAAM,IAAIhS,KAAK,CAACqR,8BAA8B,EAAE,EAAE;MACjDrR,KAAK,CAACyR,sBAAsB,CAACntB,KAAK,EAAE0tB,MAAM,CAAC;IAC7C,CAAC,MAAM;MACL;IACF;EACF;EAQAE,+BAA+BA,CAACle,EAAY,EAAQ;IAClD,MAAM;MAAEyc;IAAO,CAAA,GAAG,IAAI;IACtB,IAAIxT,CAAC,GAAGwT,KAAK,CAAC9hB,MAAM,GAAG,CAAC;IACxB,IAAIqR,KAAsB,GAAGyQ,KAAK,CAACxT,CAAC,CAAC;IACrC,OAAO+C,KAAK,CAACqR,8BAA8B,EAAE,EAAE;MAC7C,IACErR,KAAK,CAAC5pB,IAAI,KAAA,CAA6D,EACvE;QACA4pB,KAAK,CAACyR,sBAAsB,CAAC7rB,MAAM,CAACjP,sBAAsB,EAAEqd,EAAE,CAAC;MACjE;MACAgM,KAAK,GAAGyQ,KAAK,CAAC,EAAExT,CAAC,CAAC;IACpB;EACF;EAEAkV,iBAAiBA,CAAAA,EAAS;IACxB,MAAM;MAAE1B;IAAO,CAAA,GAAG,IAAI;IACtB,MAAMxR,YAAY,GAAGwR,KAAK,CAACA,KAAK,CAAC9hB,MAAM,GAAG,CAAC,CAAC;IAC5C,IAAI,CAACsQ,YAAY,CAACoS,8BAA8B,CAAA,CAAE,EAAE;IACpDpS,YAAY,CAAC2S,aAAa,CAAC,CAAC,CAAC9F,YAAY,EAAE1nB,GAAG,CAAC,KAAK;MAClD,IAAI,CAACya,MAAM,CAACnR,KAAK,CAACoe,YAAY,EAAE1nB,GAAG,CAAC;MAEpC,IAAI6Y,CAAC,GAAGwT,KAAK,CAAC9hB,MAAM,GAAG,CAAC;MACxB,IAAIqR,KAAK,GAAGyQ,KAAK,CAACxT,CAAC,CAAC;MACpB,OAAO+C,KAAK,CAACqR,8BAA8B,EAAE,EAAE;QAC7CrR,KAAK,CAAC2R,qBAAqB,CAACvtB,GAAG,CAACxQ,KAAK,CAAC;QACtCosB,KAAK,GAAGyQ,KAAK,CAAC,EAAExT,CAAC,CAAC;MACpB;IACF,CAAC,CAAC;EACJ;AACF;AAEO,SAASmV,4BAA4BA,CAAAA,EAAG;EAC7C,OAAO,IAAIhB,eAAe,CAAA,CAA0C,CAAC;AACvE;AAEO,SAASiB,iBAAiBA,CAAAA,EAAG;EAClC,OAAO,IAAId,qBAAqB,CAAA,CAEhC,CAAC;AACH;AAEO,SAASe,kBAAkBA,CAAAA,EAAG;EACnC,OAAO,IAAIf,qBAAqB,CAAA,CAEhC,CAAC;AACH;AAEO,SAASgB,kBAAkBA,CAAAA,EAAG;EACnC,OAAO,IAAInB,eAAe,CAAA,CAAE;AAC9B;ACzMe,MAAMoB,0BAA0B,CAAC;EAAA/+B,WAAAA,CAAA,EAAA;IAAA,IAC9Cg/B,CAAAA,MAAM,GAAqB,EAAE;EAAA;EAC7B3S,KAAKA,CAAC5X,KAAgB,EAAE;IACtB,IAAI,CAACuqB,MAAM,CAACzgB,IAAI,CAAC9J,KAAK,CAAC;EACzB;EAEA6X,IAAIA,CAAAA,EAAG;IACL,IAAI,CAAC0S,MAAM,CAACjW,GAAG,EAAE;EACnB;EAEAkW,YAAYA,CAAAA,EAAc;IACxB,OAAO,IAAI,CAACD,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC9jB,MAAM,GAAG,CAAC,CAAC;EAC5C;EAEA,IAAIgkB,QAAQA,CAAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAACD,YAAY,CAAA,CAAE,IAAwB,IAAI,CAAC;EAC1D;EAEA,IAAIE,QAAQA,CAAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAACF,YAAY,CAAA,CAAE,IAAwB,IAAI,CAAC;EAC1D;EAEA,IAAIG,SAASA,CAAAA,EAAY;IACvB,OAAO,CAAC,IAAI,CAACH,YAAY,CAAA,CAAE,IAAyB,IAAI,CAAC;EAC3D;EAEA,IAAII,KAAKA,CAAAA,EAAY;IACnB,OAAO,CAAC,IAAI,CAACJ,YAAY,CAAA,CAAE,IAAqB,IAAI,CAAC;EACvD;AACF;AAEO,SAASK,aAAaA,CAC3BlpB,OAAgB,EAChB4B,WAAoB,EACT;EACX,OACE,CAAC5B,OAAO,OAA2B,CAAC,KACnC4B,WAAW,OAA2B,CAAC,CAAC;AAE7C;ACxCe,MAAeunB,UAAU,SAAS/I,SAAS,CAAC;EAIzDgJ,QAAQA,CACN98B,IAAmB,EACnB6G,GAAW,EACXmG,KAAU,EACVG,UAAmB,GAAG,IAAI,EACpB;IACN,IAAI,CAACnN,IAAI,EAAE;IAEX,IAAI;MAAEqT;IAAO,CAAA,GAAGrT,IAAI;IACpB,IAAIqT,KAAK,IAAI,IAAI,EAAE;MACjBA,KAAK,GAAG,CAAA,CAAE;MACVrT,IAAI,CAACqT,KAAK,GAAGA,KAAK;IACpB;IAEA,IAAIlG,UAAU,EAAE;MACdkG,KAAK,CAACxM,GAAG,CAAC,GAAGmG,KAAK;IACpB,CAAC,MAAM;MACLC,MAAM,CAACC,cAAc,CAACmG,KAAK,EAAExM,GAAG,EAAE;QAAEsG,UAAU;QAAEH;MAAM,CAAC,CAAC;IAC1D;EACF;EAIA+vB,YAAYA,CAAC1wB,KAAgB,EAAW;IACtC,OAAO,IAAI,CAAC+L,KAAK,CAACnY,IAAI,KAAKoM,KAAK,IAAI,CAAC,IAAI,CAAC+L,KAAK,CAAC0X,WAAW;EAC7D;EAEAkN,oBAAoBA,CAACC,SAAiB,EAAE92B,IAAY,EAAW;IAC7D,MAAM+2B,OAAO,GAAGD,SAAS,GAAG92B,IAAI,CAACqS,MAAM;IACvC,IAAI,IAAI,CAAC4U,KAAK,CAAC6C,KAAK,CAACgN,SAAS,EAAEC,OAAO,CAAC,KAAK/2B,IAAI,EAAE;MACjD,MAAMg3B,MAAM,GAAG,IAAI,CAAC/P,KAAK,CAACC,UAAU,CAAC6P,OAAO,CAAC;MAC7C,OAAO,EACLhW,gBAAgB,CAACiW,MAAM,CAAC,IAIxB,CAACA,MAAM,GAAG,MAAM,MAAM,MAAM,CAC7B;IACH;IACA,OAAO,KAAK;EACd;EAEAC,qBAAqBA,CAACj3B,IAAY,EAAW;IAC3C,MAAM+hB,IAAI,GAAG,IAAI,CAAC6M,cAAc,EAAE;IAClC,OAAO,IAAI,CAACiI,oBAAoB,CAAC9U,IAAI,EAAE/hB,IAAI,CAAC;EAC9C;EAIAk3B,aAAaA,CAAChxB,KAAgB,EAAW;IACvC,IAAI,IAAI,CAAC0wB,YAAY,CAAC1wB,KAAK,CAAC,EAAE;MAC5B,IAAI,CAAC6b,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAIAoV,gBAAgBA,CACdjxB,KAAgB,EAChBspB,YAAyC,EACnC;IACN,IAAI,CAAC,IAAI,CAAC0H,aAAa,CAAChxB,KAAK,CAAC,EAAE;MAC9B,IAAIspB,YAAY,IAAI,IAAI,EAAE;QACxB,MAAM,IAAI,CAACpe,KAAK,CAACoe,YAAY,EAAE,IAAI,CAACvd,KAAK,CAAC1B,QAAQ,CAAC;MACrD;MACA,IAAI,CAACxR,UAAU,CAAC,IAAI,EAAEmH,KAAK,CAAC;IAC9B;EACF;EAIAkxB,kBAAkBA,CAAAA,EAAY;IAC5B,OACE,IAAI,CAACxL,KAAK,CAAO,GAAA,CAAC,IAClB,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC,IACrB,IAAI,CAACyL,qBAAqB,EAAE;EAEhC;EAEAA,qBAAqBA,CAAAA,EAAY;IAC/B,OAAOzP,UAAU,CACf,IAAI,CAACX,KAAK,EACV,IAAI,CAACrC,iBAAiB,CAAC,IAAI,CAAC3S,KAAK,CAACsB,aAAa,CAACjc,KAAK,CAAC,EACtD,IAAI,CAAC2a,KAAK,CAACxa,KACb,CAAC;EACH;EAEA6/B,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO1P,UAAU,CAAC,IAAI,CAACX,KAAK,EAAE,IAAI,CAAChV,KAAK,CAACva,GAAG,EAAE,IAAI,CAACk3B,cAAc,CAAA,CAAE,CAAC;EACtE;EAEA2I,gBAAgBA,CAAAA,EAAY;IAC1B,OAAO,IAAI,CAACjJ,GAAG,CAAQ,EAAA,CAAC,IAAI,IAAI,CAAC8I,kBAAkB,CAAA,CAAE;EACvD;EAKAI,SAASA,CAACC,QAAiB,GAAG,IAAI,EAAQ;IACxC,IAAIA,QAAQ,GAAG,IAAI,CAACF,gBAAgB,CAAA,CAAE,GAAG,IAAI,CAACjJ,GAAG,CAAA,EAAQ,CAAC,EAAE;IAC5D,IAAI,CAACld,KAAK,CAAC9H,MAAM,CAAC1J,gBAAgB,EAAE,IAAI,CAACqS,KAAK,CAACsB,aAAa,CAAC;EAC/D;EAKAmkB,MAAMA,CAAC59B,IAAe,EAAEgO,GAAqB,EAAQ;IACnD,IAAI,CAAC,IAAI,CAACwmB,GAAG,CAACx0B,IAAI,CAAC,EAAE;MACnB,IAAI,CAACiF,UAAU,CAAC+I,GAAG,EAAEhO,IAAI,CAAC;IAC5B;EACF;EAIA69B,QAAQA,CACNC,EAAqC,EACrCC,QAAe,GAAG,IAAI,CAAC5lB,KAAK,CAAC9J,KAAK,CAAA,CAAE,EAIW;IAC/C,MAAM2vB,WAEL,GAAG;MAAEj+B,IAAI,EAAE;KAAM;IAClB,IAAI;MACF,MAAMA,IAAI,GAAG+9B,EAAE,CAAC,CAAC/9B,IAAI,GAAG,IAAI,KAAK;QAC/Bi+B,WAAW,CAACj+B,IAAI,GAAGA,IAAI;QAEvB,MAAMi+B,WAAW;MACnB,CAAC,CAAC;MACF,IAAI,IAAI,CAAC7lB,KAAK,CAACkW,MAAM,CAAC9V,MAAM,GAAGwlB,QAAQ,CAAC1P,MAAM,CAAC9V,MAAM,EAAE;QACrD,MAAM0lB,SAAS,GAAG,IAAI,CAAC9lB,KAAK;QAC5B,IAAI,CAACA,KAAK,GAAG4lB,QAAQ;QAIrB,IAAI,CAAC5lB,KAAK,CAAC6W,YAAY,GAAGiP,SAAS,CAACjP,YAAY;QAChD,OAAO;UACLjvB,IAAI;UACJmO,KAAK,EAAE+vB,SAAS,CAAC5P,MAAM,CAAC0P,QAAQ,CAAC1P,MAAM,CAAC9V,MAAM,CAAC;UAC/C2lB,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE,KAAK;UACdF;SACD;MACH;MAEA,OAAO;QACLl+B,IAAI;QACJmO,KAAK,EAAE,IAAI;QACXgwB,MAAM,EAAE,KAAK;QACbC,OAAO,EAAE,KAAK;QACdF,SAAS,EAAE;OACZ;IACF,CAAA,CAAC,OAAO/vB,KAAK,EAAE;MACd,MAAM+vB,SAAS,GAAG,IAAI,CAAC9lB,KAAK;MAC5B,IAAI,CAACA,KAAK,GAAG4lB,QAAQ;MACrB,IAAI7vB,KAAK,YAAYC,WAAW,EAAE;QAEhC,OAAO;UAAEpO,IAAI,EAAE,IAAI;UAAEmO,KAAK;UAAEgwB,MAAM,EAAE,IAAI;UAAEC,OAAO,EAAE,KAAK;UAAEF;SAAW;MACvE;MACA,IAAI/vB,KAAK,KAAK8vB,WAAW,EAAE;QACzB,OAAO;UACLj+B,IAAI,EAAEi+B,WAAW,CAACj+B,IAAI;UACtBmO,KAAK,EAAE,IAAI;UACXgwB,MAAM,EAAE,KAAK;UACbC,OAAO,EAAE,IAAI;UACbF;SACD;MACH;MAEA,MAAM/vB,KAAK;IACb;EACF;EAEAkwB,qBAAqBA,CACnB1nB,mBAAwD,EACxD2nB,QAAiB,EACjB;IACA,IAAI,CAAC3nB,mBAAmB,EAAE,OAAO,KAAK;IACtC,MAAM;MACJ4nB,kBAAkB;MAClBC,cAAc;MACdC,aAAa;MACbC;IACD,CAAA,GAAG/nB,mBAAmB;IAEvB,MAAMgoB,SAAS,GACb,CAAC,CAACJ,kBAAkB,IACpB,CAAC,CAACC,cAAc,IAChB,CAAC,CAACE,qBAAqB,IACvB,CAAC,CAACD,aAAa;IAEjB,IAAI,CAACH,QAAQ,EAAE;MACb,OAAOK,SAAS;IAClB;IAEA,IAAIJ,kBAAkB,IAAI,IAAI,EAAE;MAC9B,IAAI,CAAChnB,KAAK,CAAC9H,MAAM,CAACvL,2BAA2B,EAAEq6B,kBAAkB,CAAC;IACpE;IAEA,IAAIC,cAAc,IAAI,IAAI,EAAE;MAC1B,IAAI,CAACjnB,KAAK,CAAC9H,MAAM,CAACpN,cAAc,EAAEm8B,cAAc,CAAC;IACnD;IAEA,IAAIC,aAAa,IAAI,IAAI,EAAE;MACzB,IAAI,CAAClnB,KAAK,CAAC9H,MAAM,CAAChG,sBAAsB,EAAEg1B,aAAa,CAAC;IAC1D;IAEA,IAAIC,qBAAqB,IAAI,IAAI,EAAE;MACjC,IAAI,CAACx5B,UAAU,CAACw5B,qBAAqB,CAAC;IACxC;EACF;EAWAE,qBAAqBA,CAAAA,EAAY;IAC/B,OAAOzZ,0BAA0B,CAAC,IAAI,CAAC/M,KAAK,CAACnY,IAAI,CAAC;EACpD;EAMAgV,aAAaA,CAACjV,IAAU,EAAuB;IAC7C,OAAOA,IAAI,CAACC,IAAI,KAAK,aAAa;EACpC;EAOA8U,gBAAgBA,CAAC/U,IAAiB,EAAU;IAC1C,OAAOA,IAAI,CAACgV,EAAE,CAAC7O,IAAI;EACrB;EAOAkT,wBAAwBA,CAACrZ,IAAU,EAAW;IAC5C,OACE,CAACA,IAAI,CAACC,IAAI,KAAK,kBAAkB,IAC/BD,IAAI,CAACC,IAAI,KAAK,0BAA0B,KAC1C,IAAI,CAACgV,aAAa,CAACjV,IAAI,CAAC6+B,QAAQ,CAAC;EAErC;EAEAjrB,gBAAgBA,CACd5T,IAAU,EACyC;IACnD,OAAOA,IAAI,CAACC,IAAI,KAAK,gBAAgB;EACvC;EAEAqZ,cAAcA,CAACtZ,IAAU,EAAwB;IAC/C,OAAOA,IAAI,CAACC,IAAI,KAAK,cAAc;EACrC;EAEA6+B,gBAAgBA,CAEdpX,QAAiB,GAAG,IAAI,CAACxW,OAAO,CAACvB,UAAU,KAAK,QAAQ,EAC5C;IAEZ,MAAMovB,SAAS,GAAG,IAAI,CAAC3mB,KAAK,CAACyW,MAAM;IACnC,IAAI,CAACzW,KAAK,CAACyW,MAAM,GAAG,EAAE;IAEtB,MAAMmQ,sBAAsB,GAAG,IAAI,CAACC,mBAAmB;IACvD,IAAI,CAACA,mBAAmB,GAAG,IAAIlzB,GAAG,EAAE;IAGpC,MAAMmzB,WAAW,GAAG,IAAI,CAACxX,QAAQ;IACjC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IAExB,MAAMyX,QAAQ,GAAG,IAAI,CAACtV,KAAK;IAC3B,MAAMpB,YAAY,GAAG,IAAI,CAAC2W,eAAe,EAAE;IAC3C,IAAI,CAACvV,KAAK,GAAG,IAAIpB,YAAY,CAAC,IAAI,EAAEf,QAAQ,CAAC;IAE7C,MAAM2X,YAAY,GAAG,IAAI,CAACC,SAAS;IACnC,IAAI,CAACA,SAAS,GAAG,IAAIjD,0BAA0B,EAAE;IAEjD,MAAM9B,aAAa,GAAG,IAAI,CAACpjB,UAAU;IACrC,IAAI,CAACA,UAAU,GAAG,IAAIkjB,iBAAiB,CAAC,IAAI,CAAC;IAE7C,MAAMkF,kBAAkB,GAAG,IAAI,CAACC,eAAe;IAC/C,IAAI,CAACA,eAAe,GAAG,IAAI7D,sBAAsB,CAAC,IAAI,CAAC;IAEvD,OAAO,MAAM;MAEX,IAAI,CAACvjB,KAAK,CAACyW,MAAM,GAAGkQ,SAAS;MAC7B,IAAI,CAACE,mBAAmB,GAAGD,sBAAsB;MAGjD,IAAI,CAACtX,QAAQ,GAAGwX,WAAW;MAC3B,IAAI,CAACrV,KAAK,GAAGsV,QAAQ;MACrB,IAAI,CAACG,SAAS,GAAGD,YAAY;MAC7B,IAAI,CAACloB,UAAU,GAAGojB,aAAa;MAC/B,IAAI,CAACiF,eAAe,GAAGD,kBAAkB;KAC1C;EACH;EAEAE,kBAAkBA,CAAAA,EAAG;IACnB,IAAIC,UAAU,IAAkB;IAChC,IAAI,IAAI,CAAChY,QAAQ,EAAE;MACjBgY,UAAU,KAAyB;IACrC;IACA,IAAI,CAAC7V,KAAK,CAACF,KAAK,EAAkB,CAAC;IACnC,IAAI,CAAC2V,SAAS,CAAC3V,KAAK,CAAC+V,UAAU,CAAC;EAClC;EAEAC,yBAAyBA,CAAChpB,mBAAqC,EAAE;IAC/D,MAAM;MAAE8nB;IAAe,CAAA,GAAG9nB,mBAAmB;IAC7C,IAAI8nB,aAAa,KAAK,IAAI,EAAE;MAC1B,IAAI,CAAC9H,YAAY,CAAC,sBAAsB,EAAE8H,aAAa,CAAC;IAC1D;EACF;AACF;AAeO,MAAMmB,gBAAgB,CAAC;EAAAtiC,WAAAA,CAAA,EAAA;IAAA,IAC5BihC,CAAAA,kBAAkB,GAAgC,IAAI;IAAA,IACtDC,CAAAA,cAAc,GAAgC,IAAI;IAAA,IAClDC,CAAAA,aAAa,GAAgC,IAAI;IAAA,IACjDC,CAAAA,qBAAqB,GAAgC,IAAI;EAAA;AAC3D;AChYA,MAAMmB,IAAI,CAAqB;EAC7BviC,WAAWA,CAACorB,MAAkB,EAAEra,GAAW,EAAEJ,GAAa,EAAE;IAAA,IAQ5DhO,CAAAA,IAAI,GAAW,EAAE;IAPf,IAAI,CAACrC,KAAK,GAAGyQ,GAAG;IAChB,IAAI,CAACxQ,GAAG,GAAG,CAAC;IACZ,IAAI,CAACoQ,GAAG,GAAG,IAAItQ,cAAc,CAACsQ,GAAG,CAAC;IAClC,IAAI,CAAAya,MAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAE9W,WAAW,MAAqB,EAAE,IAAI,CAACkuB,KAAK,GAAG,CAACzxB,GAAG,EAAE,CAAC,CAAC;IACnE,IAAIqa,MAAM,IAAA,IAAA,IAANA,MAAM,CAAE5qB,QAAQ,EAAE,IAAI,CAACmQ,GAAG,CAACnQ,QAAQ,GAAG4qB,MAAM,CAAC5qB,QAAQ;EAC3D;AAaF;AACA,MAAMiiC,aAAa,GAAGF,IAAI,CAACG,SAAS;AAED;EAEjCD,aAAa,CAACE,OAAO,GAAG,YAAkB;IACxC,MAAMC,OAAO,GAAG,IAAIL,IAAI,CAAChwB,SAAS,EAAE,IAAI,CAACjS,KAAK,EAAE,IAAI,CAACqQ,GAAG,CAACrQ,KAAK,CAAC;IAC/D,MAAMuR,IAAI,GAAGlC,MAAM,CAACkC,IAAI,CAAC,IAAI,CAAmB;IAChD,KAAK,IAAI2X,CAAC,GAAG,CAAC,EAAEtO,MAAM,GAAGrJ,IAAI,CAACqJ,MAAM,EAAEsO,CAAC,GAAGtO,MAAM,EAAEsO,CAAC,EAAE,EAAE;MACrD,MAAMjgB,GAAG,GAAGsI,IAAI,CAAC2X,CAAC,CAAC;MAEnB,IACEjgB,GAAG,KAAK,iBAAiB,IACzBA,GAAG,KAAK,kBAAkB,IAC1BA,GAAG,KAAK,eAAe,EACvB;QAEAq5B,OAAO,CAACr5B,GAAG,CAAC,GAAG,IAAI,CAACA,GAAG,CAAC;MAC1B;IACF;IAEA,OAAOq5B,OAAO;GACf;AACH;AAEA,SAASC,gBAAgBA,CAACngC,IAAS,EAAO;EACxC,OAAOogC,eAAe,CAACpgC,IAAI,CAAC;AAC9B;AAEO,SAASogC,eAAeA,CAACpgC,IAAS,EAAO;EAI9C,MAAM;IAAEC,IAAI;IAAErC,KAAK;IAAEC,GAAG;IAAEoQ,GAAG;IAAE6xB,KAAK;IAAEzsB,KAAK;IAAElN;EAAM,CAAA,GAAGnG,IAAI;EAC1D,MAAMqgC,MAAM,GAAGpzB,MAAM,CAACqzB,MAAM,CAACP,aAAa,CAAC;EAC3CM,MAAM,CAACpgC,IAAI,GAAGA,IAAI;EAClBogC,MAAM,CAACziC,KAAK,GAAGA,KAAK;EACpByiC,MAAM,CAACxiC,GAAG,GAAGA,GAAG;EAChBwiC,MAAM,CAACpyB,GAAG,GAAGA,GAAG;EAChBoyB,MAAM,CAACP,KAAK,GAAGA,KAAK;EACpBO,MAAM,CAAChtB,KAAK,GAAGA,KAAK;EACpBgtB,MAAM,CAACl6B,IAAI,GAAGA,IAAI;EAClB,IAAIlG,IAAI,KAAK,aAAa,EAAE;IAC1BogC,MAAM,CAACE,YAAY,GAAGvgC,IAAI,CAACugC,YAAY;EACzC;EACA,OAAOF,MAAM;AACf;AAEO,SAASG,kBAAkBA,CAACxgC,IAAS,EAAO;EACjD,MAAM;IAAEC,IAAI;IAAErC,KAAK;IAAEC,GAAG;IAAEoQ,GAAG;IAAE6xB,KAAK;IAAEzsB;EAAO,CAAA,GAAGrT,IAAI;EACpD,IAAIC,IAAI,KAAK,aAAa,EAAE;IAC1B,OAAOkgC,gBAAgB,CAACngC,IAAI,CAAC;EAC/B;EACA,MAAMqgC,MAAM,GAAGpzB,MAAM,CAACqzB,MAAM,CAACP,aAAa,CAAC;EAC3CM,MAAM,CAACpgC,IAAI,GAAGA,IAAI;EAClBogC,MAAM,CAACziC,KAAK,GAAGA,KAAK;EACpByiC,MAAM,CAACxiC,GAAG,GAAGA,GAAG;EAChBwiC,MAAM,CAACpyB,GAAG,GAAGA,GAAG;EAChBoyB,MAAM,CAACP,KAAK,GAAGA,KAAK;EACpB,IAAI9/B,IAAI,CAACoT,GAAG,KAAKvD,SAAS,EAAE;IAE1BwwB,MAAM,CAACjtB,GAAG,GAAGpT,IAAI,CAACoT,GAAG;EACvB,CAAC,MAAM;IACLitB,MAAM,CAAChtB,KAAK,GAAGA,KAAK;EACtB;EACAgtB,MAAM,CAACrzB,KAAK,GAAGhN,IAAI,CAACgN,KAAK;EACzB,OAAOqzB,MAAM;AACf;AAIO,MAAeI,SAAS,SAAS5D,UAAU,CAAC;EACjDlnB,SAASA,CAAAA,EAA0C;IACjD,MAAM1H,GAAG,GAAG,IAAI,CAACmK,KAAK,CAAC1B,QAAQ;IAC/B,OAAO,IAAImpB,IAAI,CAAC,IAAI,EAAE5xB,GAAG,CAACxQ,KAAK,EAAEwQ,GAAG,CAAC;EACvC;EAEAyyB,WAAWA,CAA6BzyB,GAAa,EAAa;IAChE,OAAO,IAAI4xB,IAAI,CAAC,IAAI,EAAE5xB,GAAG,CAACxQ,KAAK,EAAEwQ,GAAG,CAAC;EACvC;EAGAkL,eAAeA,CACblZ,IAAsB,EACX;IACX,OAAO,IAAI,CAACygC,WAAW,CAACzgC,IAAI,CAACgO,GAAG,CAACrQ,KAAK,CAAC;EACzC;EAIAkY,UAAUA,CAAqB9V,IAAe,EAAEC,IAAe,EAAK;IAClE,OAAO,IAAI,CAACsZ,YAAY,CAACvZ,IAAI,EAAEC,IAAI,EAAE,IAAI,CAACmY,KAAK,CAACsB,aAAa,CAAC;EAChE;EAIAH,YAAYA,CACVvZ,IAAqB,EACrBC,IAAe,EACfuZ,MAAgB,EACb;IAOFxZ,IAAI,CAAOC,IAAI,GAAGA,IAAI;IACvBD,IAAI,CAACnC,GAAG,GAAG2b,MAAM,CAAC/b,KAAK;IACvBuC,IAAI,CAACiO,GAAG,CAACpQ,GAAG,GAAG2b,MAAM;IACrB,IAAI,IAAI,CAAC5H,WAAW,KAAqB,EAAE5R,IAAI,CAAC8/B,KAAK,CAAC,CAAC,CAAC,GAAGtmB,MAAM,CAAC/b,KAAK;IACvE,IAAI,IAAI,CAACmU,WAAW,OAA4B,EAAE;MAChD,IAAI,CAAC4a,cAAc,CAACxsB,IAAS,CAAC;IAChC;IACA,OAAOA,IAAI;EACb;EAEA2Y,kBAAkBA,CAAC3Y,IAAc,EAAE0W,QAAkB,EAAQ;IAC3D1W,IAAI,CAACpC,KAAK,GAAG8Y,QAAQ,CAACjZ,KAAK;IAC3BuC,IAAI,CAACiO,GAAG,CAACrQ,KAAK,GAAG8Y,QAAQ;IACzB,IAAI,IAAI,CAAC9E,WAAW,KAAqB,EAAE5R,IAAI,CAAC8/B,KAAK,CAAC,CAAC,CAAC,GAAGppB,QAAQ,CAACjZ,KAAK;EAC3E;EAEAgc,gBAAgBA,CACdzZ,IAAc,EACdwZ,MAAgB,GAAG,IAAI,CAACpB,KAAK,CAACsB,aAAa,EACrC;IACN1Z,IAAI,CAACnC,GAAG,GAAG2b,MAAM,CAAC/b,KAAK;IACvBuC,IAAI,CAACiO,GAAG,CAACpQ,GAAG,GAAG2b,MAAM;IACrB,IAAI,IAAI,CAAC5H,WAAW,KAAqB,EAAE5R,IAAI,CAAC8/B,KAAK,CAAC,CAAC,CAAC,GAAGtmB,MAAM,CAAC/b,KAAK;EACzE;EAKAkjC,0BAA0BA,CAAC3gC,IAAc,EAAE4gC,YAAsB,EAAQ;IACvE,IAAI,CAACjoB,kBAAkB,CAAC3Y,IAAI,EAAE4gC,YAAY,CAAC3yB,GAAG,CAACrQ,KAAK,CAAC;EACvD;AACF;AC3IA,MAAMijC,aAAa,GAAG,IAAI90B,GAAG,CAAC,CAC5B,GAAG,EACH,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,MAAM,CACP,CAAC;AAIF,MAAM+0B,UAAU,GAAGjyB,cAAc,MAAM,CAAC;EACtCkyB,yBAAyB,EACvB,gFAAgF;EAClFC,0BAA0B,EACxB,wKAAwK;EAG1KC,kBAAkB,EAAEA,CAAC;IAAEC;GAAwC,KAC7D,kCAAkCA,YAAY,GAAG;EACnDC,mBAAmB,EACjB,yDAAyD;EAC3DC,4BAA4B,EAC1B,qEAAqE;EACvEC,6BAA6B,EAC3B,+CAA+C;EACjDC,+BAA+B,EAAEA,CAAC;IAChCC,UAAU;IACVC;EAIF,CAAC,KACC,6DAA6DD,UAAU,mBAAmBA,UAAU,yBAAyBC,QAAQ,KAAK;EAC5IC,uBAAuB,EAAEA,CAAC;IACxBF,UAAU;IACVC;EAID,CAAA,KACC,uDAAuDD,UAAU,6CAA6CC,QAAQ,KAAK;EAC7HE,4BAA4B,EAAEA,CAAC;IAAEF;GAAgC,KAC/D,UAAUA,QAAQ,uKAAuK;EAC3LG,uBAAuB,EAAEA,CAAC;IACxBC,eAAe;IACfJ;EAID,CAAA,KACC,eAAeI,eAAe,4FAA4FJ,QAAQ,KAAK;EACzIK,sCAAsC,EAAEA,CAAC;IACvCL;GAGD,KACC,4GAA4GA,QAAQ,KAAK;EAa3HM,uCAAuC,EAAEA,CAAC;IACxCN,QAAQ;IACRD,UAAU;IACVQ;GAKD,KACC,UAAUP,QAAQ,iBAAiBO,YAAY,+BAA+BR,UAAU,oBAAoBQ,YAAY,WAAW;EACrIC,sCAAsC,EAAEA,CAAC;IACvCR,QAAQ;IACRD;EAKD,CAAA,KACC,oDAAoDA,UAAU,iBAAiBC,QAAQ,KAAK;EAC9FS,uCAAuC,EAAEA,CAAC;IACxCT,QAAQ;IACRD;EAKD,CAAA,KACC,qCAAqCA,UAAU,4EAA4EC,QAAQ,KAAK;EAC1IU,qBAAqB,EAAEA,CAAC;IACtBV,QAAQ;IACRD,UAAU;IACVY;EAKF,CAAC,KACC,qFAAqFZ,UAAU,wBAAwBY,UAAU,iBAAiBX,QAAQ,KAAK;EACjKY,8BAA8B,EAAEA,CAAC;IAC/BZ,QAAQ;IACRD;EAID,CAAA,KACC,sDAAsDA,UAAU,oBAAoBC,QAAQ,KAAK;EACnGa,yCAAyC,EAAEA,CAAC;IAC1Cb;GAGD,KACC,2GAA2GA,QAAQ,KAAK;EAC1Hc,yBAAyB,EAAE,0CAA0C;EACrEC,6BAA6B,EAC3B,wEAAwE;EAC1EC,mCAAmC,EACjC,wKAAwK;EAC1KC,kBAAkB,EAChB,6EAA6E;EAC/EC,sBAAsB,EACpB,0EAA0E;EAC5EC,eAAe,EAAE,+CAA+C;EAChEC,mCAAmC,EACjC,yFAAyF;EAC3FC,uBAAuB,EACrB,yGAAyG;EAC3GC,mBAAmB,EACjB,kEAAkE;EACpEC,iBAAiB,EAAE,yDAAyD;EAC5EC,iBAAiB,EAAA/1B,MAAA,CAAAwB,MAAA,CAAA;IACfnQ,OAAO,EACL;GAGE,EAAA;IAAEiP,UAAU,EAAE;EAAyB,CAAC,CAE7C;EACD01B,yBAAyB,EAAE,0CAA0C;EACrEC,cAAc,EAAE,yCAAyC;EACzDC,2BAA2B,EACzB,yDAAyD;EAC3DC,4BAA4B,EAC1B,mGAAmG;EACrGC,yBAAyB,EAAE,0CAA0C;EACrEC,oBAAoB,EAClB,4DAA4D;EAC9DC,kBAAkB,EAAE,oDAAoD;EACxEC,qBAAqB,EACnB,mHAAmH;EACrHC,iBAAiB,EACf,sEAAsE;EACxEC,iCAAiC,EAC/B,sEAAsE;EACxEC,sBAAsB,EAAEA,CAAC;IAAEzC;GAAwC,KACjE,4BAA4BA,YAAY,GAAG;EAC7C0C,4BAA4B,EAC1B,wDAAwD;EAC1DC,kCAAkC,EAChC,uDAAuD;EACzDC,oBAAoB,EAClB,kEAAkE;EACpEC,4BAA4B,EAC1B,kDAAkD;EACpDC,iCAAiC,EAC/B,mEAAmE;EACrEC,+CAA+C,EAC7C,mHAAmH;EACrHC,4BAA4B,EAAEA,CAAC;IAC7BC,qBAAqB;IACrBhC;EAID,CAAA,KACC,oBAAoBgC,qBAAqB,8BAA8BhC,UAAU,aAAa;EAChGiC,mCAAmC,EACjC,mEAAmE;EACrEC,uBAAuB,EAAE;AAC3B,CAAC,CAAC;AAGF,SAASC,cAAcA,CAACC,WAAmB,EAAW;EACpD,OACEA,WAAW,CAACtkC,IAAI,KAAK,6BAA6B,IACjDskC,WAAW,CAACtkC,IAAI,KAAK,0BAA0B,KAC7C,CAACskC,WAAW,CAAC7rB,WAAW,IACtB6rB,WAAW,CAAC7rB,WAAW,CAACzY,IAAI,KAAK,WAAW,IAC3CskC,WAAW,CAAC7rB,WAAW,CAACzY,IAAI,KAAK,sBAAuB,CAAE;AAEpE;AAEA,SAASukC,iBAAiBA,CACxBxkC,IAAqD,EAC5C;EACT,OAAOA,IAAI,CAACykC,UAAU,KAAK,MAAM,IAAIzkC,IAAI,CAACykC,UAAU,KAAK,QAAQ;AACnE;AAEA,MAAMC,iBAAiB,GAAG;EACxBC,KAAK,EAAE,oBAAoB;EAC3BC,GAAG,EAAE,oBAAoB;EACzB3kC,IAAI,EAAE,aAAa;EACnB4kC,SAAS,EAAE;AACb,CAAC;AAGD,SAASC,SAASA,CAChBC,IAAS,EACT/d,IAA6D,EACjD;EACZ,MAAMge,KAAU,GAAG,EAAE;EACrB,MAAMC,KAAU,GAAG,EAAE;EACrB,KAAK,IAAIne,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGie,IAAI,CAACvsB,MAAM,EAAEsO,CAAC,EAAE,EAAE;IACpC,CAACE,IAAI,CAAC+d,IAAI,CAACje,CAAC,CAAC,EAAEA,CAAC,EAAEie,IAAI,CAAC,GAAGC,KAAK,GAAGC,KAAK,EAAEppB,IAAI,CAACkpB,IAAI,CAACje,CAAC,CAAC,CAAC;EACxD;EACA,OAAO,CAACke,KAAK,EAAEC,KAAK,CAAC;AACvB;AAEA,MAAMC,iBAAiB,GAAG,wBAAwB;AAoClD,IAAAC,IAAA,GAAgB3zB,UAA0D,IACxE,MAAM4zB,eAAe,SAAS5zB,UAAU,CAAmB;EAAAlU,WAAAA,CAAA,GAAA2Y,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAIzDovB,CAAAA,UAAU,GAAoCx1B,SAAS;EAAA;EAEvDuvB,eAAeA,CAAAA,EAA2C;IACxD,OAAO5U,gBAAgB;EACzB;EAEA8a,gBAAgBA,CAAAA,EAAY;IAC1B,OAAO,IAAI,CAACzwB,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAACwwB,UAAU,KAAK,MAAM;EAC1E;EAEAvP,WAAWA,CAAC71B,IAAe,EAAEgzB,GAAQ,EAAQ;IAC3C,IACEhzB,IAAI,QAAc,IAClBA,IAAI,OAAY,IAChBA,IAAI,OAA4B,EAChC;MACA,IAAI,IAAI,CAAColC,UAAU,KAAKx1B,SAAS,EAAE;QACjC,IAAI,CAACw1B,UAAU,GAAG,IAAI;MACxB;IACF;IACA,KAAK,CAACvP,WAAW,CAAC71B,IAAI,EAAEgzB,GAAG,CAAC;EAC9B;EAEA5G,UAAUA,CAACC,OAAkB,EAAQ;IACnC,IAAI,IAAI,CAAC+Y,UAAU,KAAKx1B,SAAS,EAAE;MAEjC,MAAM01B,OAAO,GAAGL,iBAAiB,CAAClT,IAAI,CAAC1F,OAAO,CAACtf,KAAK,CAAC;MACrD,IAAI,CAACu4B,OAAO,EAAE,CAEb,KAAM,IAAIA,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;QAChC,IAAI,CAACF,UAAU,GAAG,MAAM;MACzB,CAAA,MAAM,IAAIE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QAClC,IAAI,CAACF,UAAU,GAAG,QAAQ;MAC5B,CAAC,MAAM;QACL,MAAM,IAAIl0B,KAAK,CAAC,wBAAwB,CAAC;MAC3C;IACF;IACA,KAAK,CAACkb,UAAU,CAACC,OAAO,CAAC;EAC3B;EAEAkZ,wBAAwBA,CAACC,GAAe,EAAc;IACpD,MAAMC,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnC,IAAI,CAACjX,KAAK,CAACiX,MAAM,GAAG,IAAI;IACxB,IAAI,CAACwO,MAAM,CAAC4H,GAAG,MAAY,CAAC;IAE5B,MAAMxlC,IAAI,GAAG,IAAI,CAAC0lC,aAAa,EAAE;IACjC,IAAI,CAACvtB,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAC7B,OAAOzlC,IAAI;EACb;EAEA2lC,kBAAkBA,CAAAA,EAAoB;IACpC,MAAM5lC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C,MAAMkwB,SAAS,GAAG,IAAI,CAACztB,KAAK,CAAC1B,QAAQ;IACrC,IAAI,CAACwR,IAAI,CAAA,CAAE;IACX,IAAI,CAACoV,gBAAgB,CAAA,GAAW,CAAC;IAEjC,IAAI,IAAI,CAACllB,KAAK,CAACC,eAAe,CAAC5a,KAAK,GAAGooC,SAAS,CAACpoC,KAAK,GAAG,CAAC,EAAE;MAC1D,IAAI,CAAC8Z,KAAK,CAACupB,UAAU,CAAC+C,kCAAkC,EAAEgC,SAAS,CAAC;IACtE;IACA,IAAI,IAAI,CAACpR,GAAG,CAAA,EAAU,CAAC,EAAE;MACvBz0B,IAAI,CAACgN,KAAK,GAAG,KAAK,CAAC84B,eAAe,EAAE;MACpC,IAAI,CAACjI,MAAM,CAAA,EAAU,CAAC;MACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;IACnD,CAAC,MAAM;MACL,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;IACnD;EACF;EAEA+lC,oCAAoCA,CAAAA,EAGlC;IACA,MAAML,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnC,IAAI,CAACjX,KAAK,CAACiX,MAAM,GAAG,IAAI;IACxB,IAAI,CAACwO,MAAM,CAAA,EAAS,CAAC;IACrB,IAAI59B,IAAI,GAAG,IAAI;IACf,IAAI+lC,SAAS,GAAG,IAAI;IACpB,IAAI,IAAI,CAACjU,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,IAAI,CAAC3Z,KAAK,CAACiX,MAAM,GAAGqW,SAAS;MAC7BM,SAAS,GAAG,IAAI,CAACJ,kBAAkB,EAAE;IACvC,CAAC,MAAM;MACL3lC,IAAI,GAAG,IAAI,CAAC0lC,aAAa,EAAE;MAC3B,IAAI,CAACvtB,KAAK,CAACiX,MAAM,GAAGqW,SAAS;MAC7B,IAAI,IAAI,CAAC3T,KAAK,CAAA,EAAU,CAAC,EAAE;QACzBiU,SAAS,GAAG,IAAI,CAACJ,kBAAkB,EAAE;MACvC;IACF;IACA,OAAO,CAAC3lC,IAAI,EAAE+lC,SAAS,CAAC;EAC1B;EAEAC,qBAAqBA,CACnBjmC,IAAgC,EACZ;IACpB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,CAACge,qBAAqB,CAAClmC,IAAI,EAAc,IAAI,CAAC;IAClD,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEAmmC,wBAAwBA,CACtBnmC,IAAmC,EACZ;IACvB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IAEX,MAAMlT,EAAE,GAAIhV,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,CAAA,CAAG;IAE7C,MAAMC,QAAQ,GAAG,IAAI,CAAC1wB,SAAS,EAAgC;IAC/D,MAAM2wB,aAAa,GAAG,IAAI,CAAC3wB,SAAS,EAAoB;IAExD,IAAI,IAAI,CAACoc,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBsU,QAAQ,CAACzwB,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IACpE,CAAC,MAAM;MACLF,QAAQ,CAACzwB,cAAc,GAAG,IAAI;IAChC;IAEA,IAAI,CAACioB,MAAM,CAAA,EAAU,CAAC;IACtB,MAAM2I,GAAG,GAAG,IAAI,CAACC,2BAA2B,EAAE;IAC9CJ,QAAQ,CAACtyB,MAAM,GAAGyyB,GAAG,CAACzyB,MAAM;IAC5BsyB,QAAQ,CAAC/2B,IAAI,GAAGk3B,GAAG,CAACl3B,IAAI;IACxB+2B,QAAQ,CAACK,IAAI,GAAGF,GAAG,CAACxlB,KAAK;IACzB,IAAI,CAAC6c,MAAM,CAAA,EAAU,CAAC;IAEtB,CAACwI,QAAQ,CAACM,UAAU,EAAE3mC,IAAI,CAACgmC,SAAS,CAAC,GACnC,IAAI,CAACD,oCAAoC,EAAE;IAE7CO,aAAa,CAACM,cAAc,GAAG,IAAI,CAAC9wB,UAAU,CAC5CuwB,QAAQ,EACR,wBACF,CAAC;IAEDrxB,EAAE,CAAC4xB,cAAc,GAAG,IAAI,CAAC9wB,UAAU,CAACwwB,aAAa,EAAE,gBAAgB,CAAC;IAEpE,IAAI,CAAC7sB,gBAAgB,CAACzE,EAAE,CAAC;IACzB,IAAI,CAAC2oB,SAAS,CAAA,CAAE;IAEhB,IAAI,CAAC9T,KAAK,CAACC,WAAW,CACpB9pB,IAAI,CAACgV,EAAE,CAAC7O,IAAI,QAEZnG,IAAI,CAACgV,EAAE,CAAC/G,GAAG,CAACrQ,KACd,CAAC;IAED,OAAO,IAAI,CAACkY,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA6mC,gBAAgBA,CACd7mC,IAA2B,EAC3B8mC,YAAsB,EACP;IACf,IAAI,IAAI,CAAC/U,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,OAAO,IAAI,CAACkU,qBAAqB,CAACjmC,IAAI,CAAC;IACxC,CAAA,MAAM,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAa,CAAC,EAAE;MACnC,OAAO,IAAI,CAACoU,wBAAwB,CAACnmC,IAAI,CAAC;IAC3C,CAAA,MAAM,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAQ,CAAC,EAAE;MAC9B,OAAO,IAAI,CAACgV,wBAAwB,CAAC/mC,IAAI,CAAC;IAC3C,CAAA,MAAM,IAAI,IAAI,CAACq9B,aAAa,CAAA,GAAW,CAAC,EAAE;MACzC,IAAI,IAAI,CAACtL,KAAK,CAAA,EAAO,CAAC,EAAE;QACtB,OAAO,IAAI,CAACiV,6BAA6B,CAAChnC,IAAI,CAAC;MACjD,CAAC,MAAM;QACL,IAAI8mC,YAAY,EAAE;UAChB,IAAI,CAACvvB,KAAK,CACRupB,UAAU,CAACgC,mBAAmB,EAC9B,IAAI,CAAC1qB,KAAK,CAACC,eACb,CAAC;QACH;QACA,OAAO,IAAI,CAAC4uB,sBAAsB,CAACjnC,IAAI,CAAC;MAC1C;IACD,CAAA,MAAM,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC,OAAO,IAAI,CAACmK,yBAAyB,CAAClnC,IAAI,CAAC;IAC5C,CAAA,MAAM,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAW,CAAC,EAAE;MACxC,OAAO,IAAI,CAACoK,0BAA0B,CAACnnC,IAAI,CAAC;IAC7C,CAAA,MAAM,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAc,CAAC,EAAE;MAC3C,OAAO,IAAI,CAACqK,yBAAyB,CAACpnC,IAAI,CAAC;IAC5C,CAAA,MAAM,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAW,CAAC,EAAE;MACjC,OAAO,IAAI,CAACsV,iCAAiC,CAACrnC,IAAI,EAAE8mC,YAAY,CAAC;IACnE,CAAC,MAAM;MACL,IAAI,CAAC5hC,UAAU,CAAA,CAAE;IACnB;EACF;EAEA6hC,wBAAwBA,CACtB/mC,IAAmC,EACZ;IACvB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACsyB,kCAAkC,CACpB,IAC7B,CAAC;IACD,IAAI,CAACzd,KAAK,CAACC,WAAW,CACpB9pB,IAAI,CAACgV,EAAE,CAAC7O,IAAI,KAEZnG,IAAI,CAACgV,EAAE,CAAC/G,GAAG,CAACrQ,KACd,CAAC;IACD,IAAI,CAAC+/B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAinC,sBAAsBA,CACpBjnC,IAAiC,EACZ;IACrB,IAAI,CAAC6pB,KAAK,CAACF,KAAK,EAAgB,CAAC;IAEjC,IAAI,IAAI,CAACoI,KAAK,CAAA,GAAU,CAAC,EAAE;MACzB/xB,IAAI,CAACgV,EAAE,GAAG,KAAK,CAACuyB,aAAa,EAAE;IACjC,CAAC,MAAM;MACLvnC,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IAClC;IAEA,MAAMoB,QAAQ,GAAIxnC,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACiB,SAAS,CAAA,CAAqB;IAEjE,MAAMjB,IAAI,GAAI8yB,QAAQ,CAAC9yB,IAAI,GAAG,EAAG;IACjC,IAAI,CAACmpB,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC9L,KAAK,CAAA,CAAU,CAAC,EAAE;MAC7B,IAAIyV,QAAQ,GAAG,IAAI,CAAC7xB,SAAS,EAAuB;MAEpD,IAAI,IAAI,CAACoc,KAAK,CAAA,EAAW,CAAC,EAAE;QAC1B,IAAI,CAAC7J,IAAI,CAAA,CAAE;QACX,IAAI,CAAC,IAAI,CAAC6U,YAAY,CAAS,GAAA,CAAC,IAAI,CAAC,IAAI,CAAChL,KAAK,CAAA,EAAW,CAAC,EAAE;UAC3D,IAAI,CAACxa,KAAK,CACRupB,UAAU,CAAC8B,mCAAmC,EAC9C,IAAI,CAACxqB,KAAK,CAACC,eACb,CAAC;QACH;QACA,KAAK,CAACovB,WAAW,CAACD,QAAQ,CAAC;MAC7B,CAAC,MAAM;QACL,IAAI,CAAClK,gBAAgB,CAAA,GAAA,EAEnBwD,UAAU,CAACsD,mCACb,CAAC;QAEDoD,QAAQ,GAAG,IAAI,CAACX,gBAAgB,CAACW,QAAQ,EAAE,IAAI,CAAC;MAClD;MAEA9yB,IAAI,CAACmH,IAAI,CAAC2rB,QAAQ,CAAC;IACrB;IAEA,IAAI,CAAC3d,KAAK,CAACD,IAAI,EAAE;IAEjB,IAAI,CAACiU,MAAM,CAAA,CAAU,CAAC;IAEtB,IAAI,CAAC/nB,UAAU,CAAC0xB,QAAQ,EAAE,gBAAgB,CAAC;IAE3C,IAAInnC,IAA8B,GAAG,IAAI;IACzC,IAAIqnC,eAAe,GAAG,KAAK;IAC3BhzB,IAAI,CAACghB,OAAO,CAAC6O,WAAW,IAAI;MAC1B,IAAID,cAAc,CAACC,WAAW,CAAC,EAAE;QAC/B,IAAIlkC,IAAI,KAAK,UAAU,EAAE;UACvB,IAAI,CAACkX,KAAK,CAACupB,UAAU,CAACE,0BAA0B,EAAEuD,WAAW,CAAC;QAChE;QACAlkC,IAAI,GAAG,IAAI;MACb,CAAC,MAAM,IAAIkkC,WAAW,CAACtkC,IAAI,KAAK,sBAAsB,EAAE;QACtD,IAAIynC,eAAe,EAAE;UACnB,IAAI,CAACnwB,KAAK,CAACupB,UAAU,CAACO,6BAA6B,EAAEkD,WAAW,CAAC;QACnE;QACA,IAAIlkC,IAAI,KAAK,IAAI,EAAE;UACjB,IAAI,CAACkX,KAAK,CAACupB,UAAU,CAACE,0BAA0B,EAAEuD,WAAW,CAAC;QAChE;QACAlkC,IAAI,GAAG,UAAU;QACjBqnC,eAAe,GAAG,IAAI;MACxB;IACF,CAAC,CAAC;IAEF1nC,IAAI,CAACK,IAAI,GAAGA,IAAI,IAAI,UAAU;IAC9B,OAAO,IAAI,CAACyV,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAqnC,iCAAiCA,CAC/BrnC,IAA4C,EAC5C8mC,YAA6B,EACG;IAChC,IAAI,CAACjJ,MAAM,CAAA,EAAW,CAAC;IAEvB,IAAI,IAAI,CAACpJ,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,IAAI,IAAI,CAAC1C,KAAK,CAAa,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,EAAE;QAGrD/xB,IAAI,CAAC0Y,WAAW,GAAG,IAAI,CAACmuB,gBAAgB,CAAC,IAAI,CAAClxB,SAAS,CAAA,CAAE,CAAC;MAC5D,CAAC,MAAM;QAEL3V,IAAI,CAAC0Y,WAAW,GAAG,IAAI,CAACitB,aAAa,EAAE;QACvC,IAAI,CAAChI,SAAS,CAAA,CAAE;MAClB;MACA39B,IAAI,CAAC2nC,OAAO,GAAG,IAAI;MAEnB,OAAO,IAAI,CAAC7xB,UAAU,CAAC9V,IAAI,EAAE,0BAA0B,CAAC;IAC1D,CAAC,MAAM;MACL,IACE,IAAI,CAAC+xB,KAAK,CAAU,EAAA,CAAC,IACrB,IAAI,CAAC6V,KAAK,CAAA,CAAE,IACX,CAAC,IAAI,CAAC7K,YAAY,CAAA,GAAS,CAAC,IAAI,IAAI,CAACA,YAAY,CAAA,GAAc,CAAC,KAC/D,CAAC+J,YAAa,EAChB;QACA,MAAMtsB,KAAK,GAAG,IAAI,CAACpC,KAAK,CAACpL,KAIV;QACf,MAAM,IAAI,CAACuK,KAAK,CACdupB,UAAU,CAACoD,4BAA4B,EACvC,IAAI,CAAC9rB,KAAK,CAAC1B,QAAQ,EACnB;UACEytB,qBAAqB,EAAE3pB,KAAK;UAC5B2nB,UAAU,EAAEuC,iBAAiB,CAAClqB,KAAK;QACrC,CACF,CAAC;MACH;MAEA,IACE,IAAI,CAACuX,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,IACxB,IAAI,CAACA,KAAK,CAAA,EAAU,CAAC,IACrB,IAAI,CAACgL,YAAY,CAAW,GAAA,CAAC,EAC7B;QACA/8B,IAAI,CAAC0Y,WAAW,GAAG,IAAI,CAACmuB,gBAAgB,CAAC,IAAI,CAAClxB,SAAS,CAAA,CAAE,CAAC;QAC1D3V,IAAI,CAAC2nC,OAAO,GAAG,KAAK;QAEpB,OAAO,IAAI,CAAC7xB,UAAU,CAAC9V,IAAI,EAAE,0BAA0B,CAAC;MAC1D,CAAC,MAAM,IACL,IAAI,CAAC+xB,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC,IACrB,IAAI,CAACgL,YAAY,CAAc,GAAA,CAAC,IAChC,IAAI,CAACA,YAAY,CAAA,GAAS,CAAC,IAC3B,IAAI,CAACA,YAAY,CAAA,GAAW,CAAC,EAC7B;QACA/8B,IAAI,GAAG,IAAI,CAACiY,WAAW,CACrBjY,IAAI,EACa,IACnB,CAAC;QACD,IAAIA,IAAI,CAACC,IAAI,KAAK,wBAAwB,EAAE;UAC1CD,IAAI,CAACC,IAAI,GAAG,mBAAmB;UAC/BD,IAAI,CAAC2nC,OAAO,GAAG,KAAK;UACpB,OAAO3nC,IAAI,CAAC6nC,UAAU;QACxB;QAEA7nC,IAAI,CAACC,IAAI,GAAG,SAAS,GAAGD,IAAI,CAACC,IAAI;QAEjC,OAAOD,IAAI;MACb;IACF;IAEA,IAAI,CAACkF,UAAU,CAAA,CAAE;EACnB;EAEA8hC,6BAA6BA,CAC3BhnC,IAAwC,EACZ;IAC5B,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,CAACoV,gBAAgB,CAAA,GAAY,CAAC;IAClCt9B,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAACkB,uBAAuB,EAAE;IACpD,IAAI,CAACnK,SAAS,CAAA,CAAE;IAEhB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAknC,yBAAyBA,CACvBlnC,IAAoC,EACZ;IACxB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,MAAM6f,QAAQ,GAAG,IAAI,CAACC,kBAAkB,CACtChoC,IACF,CAAsC;IAEtC+nC,QAAQ,CAAC9nC,IAAI,GAAG,kBAAkB;IAClC,OAAO8nC,QAAQ;EACjB;EAEAZ,0BAA0BA,CACxBnnC,IAAqC,EACZ;IACzB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,MAAM6f,QAAQ,GAAG,IAAI,CAACE,mBAAmB,CACvCjoC,IAAI,EACJ,IACF,CAAuC;IAEvC+nC,QAAQ,CAAC9nC,IAAI,GAAG,mBAAmB;IACnC,OAAO8nC,QAAQ;EACjB;EAEAX,yBAAyBA,CACvBpnC,IAAoC,EACZ;IACxB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,CAACge,qBAAqB,CAAClmC,IAAI,EAAgB,KAAK,CAAC;IACrD,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAIAkmC,qBAAqBA,CAAClmC,IAA2B,EAAEkoC,OAAgB,EAAQ;IACzEloC,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACmzB,6BAA6B,CAC5B,CAACD,OAAO,EACJ,IACpB,CAAC;IAED,IAAI,CAACre,KAAK,CAACC,WAAW,CACpB9pB,IAAI,CAACgV,EAAE,CAAC7O,IAAI,EACZ+hC,OAAO,YAAuD,EAC9DloC,IAAI,CAACgV,EAAE,CAAC/G,GAAG,CAACrQ,KACd,CAAC;IAED,IAAI,IAAI,CAACm0B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAChE,CAAC,MAAM;MACLvmC,IAAI,CAAC4V,cAAc,GAAG,IAAI;IAC5B;IAEA5V,IAAI,CAACooC,OAAO,GAAG,EAAE;IAEjB,IAAI,IAAI,CAAC3T,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,GAAG;QACDz0B,IAAI,CAACooC,OAAO,CAACvsB,IAAI,CAAC,IAAI,CAACwsB,yBAAyB,CAAE,CAAA,CAAC;MACpD,CAAA,QAAQ,CAACH,OAAO,IAAI,IAAI,CAACzT,GAAG,GAAS,CAAC;IACzC;IAEA,IAAIyT,OAAO,EAAE;MACXloC,IAAI,CAACsoC,UAAU,GAAG,EAAE;MACpBtoC,IAAI,CAACuoC,MAAM,GAAG,EAAE;MAEhB,IAAI,IAAI,CAAClL,aAAa,CAAA,GAAW,CAAC,EAAE;QAClC,GAAG;UACDr9B,IAAI,CAACuoC,MAAM,CAAC1sB,IAAI,CAAC,IAAI,CAACwsB,yBAAyB,CAAE,CAAA,CAAC;QACpD,CAAC,QAAQ,IAAI,CAAC5T,GAAG,GAAS,CAAC;MAC7B;MAEA,IAAI,IAAI,CAAC4I,aAAa,CAAA,GAAe,CAAC,EAAE;QACtC,GAAG;UACDr9B,IAAI,CAACsoC,UAAU,CAACzsB,IAAI,CAAC,IAAI,CAACwsB,yBAAyB,CAAE,CAAA,CAAC;QACxD,CAAC,QAAQ,IAAI,CAAC5T,GAAG,GAAS,CAAC;MAC7B;IACF;IAEAz0B,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAAC8zB,mBAAmB,CAAC;MACnCC,WAAW,EAAEP,OAAO;MACpBQ,UAAU,EAAE,KAAK;MACjBC,WAAW,EAAE,KAAK;MAClBC,UAAU,EAAEV,OAAO;MACnBW,YAAY,EAAE;IAChB,CAAC,CAAC;EACJ;EAEAR,yBAAyBA,CAAAA,EAA2B;IAClD,MAAMroC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA0B;IAErD3V,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC8zB,gCAAgC,EAAE;IACjD,IAAI,IAAI,CAAC/W,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAACmzB,mCAAmC,EAAE;IAClE,CAAC,MAAM;MACL/oC,IAAI,CAAC4V,cAAc,GAAG,IAAI;IAC5B;IAEA,OAAO,IAAI,CAACE,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEAgpC,kBAAkBA,CAAChpC,IAA6B,EAAmB;IACjE,IAAI,CAACkmC,qBAAqB,CAAClmC,IAAI,EAAgB,KAAK,CAAC;IACrD,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAipC,kBAAkBA,CAACxhB,IAAY,EAAE;IAC/B,IAAIA,IAAI,KAAK,GAAG,EAAE;MAChB,IAAI,CAAClQ,KAAK,CACRupB,UAAU,CAAC8C,4BAA4B,EACvC,IAAI,CAACxrB,KAAK,CAAC1B,QACb,CAAC;IACH;EACF;EAEAwyB,iBAAiBA,CAACzhB,IAAY,EAAE/Q,QAAkB,EAAEgC,WAAqB,EAAE;IACzE,IAAI,CAACmoB,aAAa,CAACjZ,GAAG,CAACH,IAAI,CAAC,EAAE;IAE9B,IAAI,CAAClQ,KAAK,CACRmB,WAAW,GACPooB,UAAU,CAACG,kBAAkB,GAC7BH,UAAU,CAAC6C,sBAAsB,EACrCjtB,QAAQ,EACR;MACEwqB,YAAY,EAAEzZ;IAChB,CACF,CAAC;EACH;EAEA0gB,6BAA6BA,CAC3BgB,OAAiB,EACjBzwB,WAAqB,EACP;IACd,IAAI,CAACwwB,iBAAiB,CACpB,IAAI,CAAC9wB,KAAK,CAACpL,KAAK,EAChB,IAAI,CAACoL,KAAK,CAAC1B,QAAQ,EACnBgC,WACF,CAAC;IACD,OAAO,IAAI,CAAC0tB,eAAe,CAAC+C,OAAO,CAAC;EACtC;EAIAnB,kBAAkBA,CAAChoC,IAA6B,EAAmB;IACjEA,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACmzB,6BAA6B,CAC5B,KAAK,EACD,IACpB,CAAC;IACD,IAAI,CAACte,KAAK,CAACC,WAAW,CACpB9pB,IAAI,CAACgV,EAAE,CAAC7O,IAAI,QAEZnG,IAAI,CAACgV,EAAE,CAAC/G,GAAG,CAACrQ,KACd,CAAC;IAED,IAAI,IAAI,CAACm0B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAChE,CAAC,MAAM;MACLvmC,IAAI,CAAC4V,cAAc,GAAG,IAAI;IAC5B;IAEA5V,IAAI,CAACopC,KAAK,GAAG,IAAI,CAAC5D,wBAAwB,GAAM,CAAC;IACjD,IAAI,CAAC7H,SAAS,CAAA,CAAE;IAEhB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,WAAW,CAAC;EAC3C;EAEAioC,mBAAmBA,CACjBjoC,IAA8B,EAC9BqpC,OAAgB,EACE;IAClB,IAAI,CAAC/L,gBAAgB,CAAA,GAAS,CAAC;IAC/Bt9B,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACmzB,6BAA6B,CAC5B,IAAI,EACA,IACpB,CAAC;IACD,IAAI,CAACte,KAAK,CAACC,WAAW,CACpB9pB,IAAI,CAACgV,EAAE,CAAC7O,IAAI,QAEZnG,IAAI,CAACgV,EAAE,CAAC/G,GAAG,CAACrQ,KACd,CAAC;IAED,IAAI,IAAI,CAACm0B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAChE,CAAC,MAAM;MACLvmC,IAAI,CAAC4V,cAAc,GAAG,IAAI;IAC5B;IAGA5V,IAAI,CAACspC,SAAS,GAAG,IAAI;IACrB,IAAI,IAAI,CAACvX,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/xB,IAAI,CAACspC,SAAS,GAAG,IAAI,CAAC9D,wBAAwB,GAAS,CAAC;IAC1D;IAEAxlC,IAAI,CAACupC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACF,OAAO,EAAE;MACZrpC,IAAI,CAACupC,QAAQ,GAAG,IAAI,CAAC/D,wBAAwB,GAAM,CAAC;IACtD;IACA,IAAI,CAAC7H,SAAS,CAAA,CAAE;IAEhB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,YAAY,CAAC;EAC5C;EAIAwpC,sBAAsBA,CAACC,cAAuB,GAAG,KAAK,EAAmB;IACvE,MAAMC,YAAY,GAAG,IAAI,CAACtxB,KAAK,CAAC1B,QAAQ;IAExC,MAAM1W,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAE9C,MAAMg0B,QAAQ,GAAG,IAAI,CAACC,iBAAiB,EAAE;IAEzC,MAAMC,KAAK,GAAG,IAAI,CAACvC,kCAAkC,EAAE;IACvDtnC,IAAI,CAACmG,IAAI,GAAG0jC,KAAK,CAAC1jC,IAAI;IAEtBnG,IAAI,CAAC2pC,QAAQ,GAAGA,QAAQ;IAExB3pC,IAAI,CAAC8pC,KAAK,GAAGD,KAAK,CAACjD,cAAc;IAEjC,IAAI,IAAI,CAAC7U,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,IAAI,CAAC0C,GAAG,CAAA,EAAM,CAAC;MAEfz0B,IAAI,CAAC2nC,OAAO,GAAG,IAAI,CAAChC,aAAa,EAAE;IACrC,CAAC,MAAM;MACL,IAAI8D,cAAc,EAAE;QAClB,IAAI,CAAClyB,KAAK,CAACupB,UAAU,CAAC+B,uBAAuB,EAAE6G,YAAY,CAAC;MAC9D;IACF;IAEA,OAAO,IAAI,CAAC5zB,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAumC,iCAAiCA,CAAAA,EAA+B;IAC9D,MAAMb,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnC,MAAMrvB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA8B;IACzD3V,IAAI,CAAC+T,MAAM,GAAG,EAAE;IAEhB,IAAI,CAACqE,KAAK,CAACiX,MAAM,GAAG,IAAI;IAGxB,IAAI,IAAI,CAAC0C,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAe,GAAA,CAAC,EAAE;MACnD,IAAI,CAAC7J,IAAI,CAAA,CAAE;IACb,CAAC,MAAM;MACL,IAAI,CAAChjB,UAAU,CAAA,CAAE;IACnB;IAEA,IAAI6kC,eAAe,GAAG,KAAK;IAE3B,GAAG;MACD,MAAMC,aAAa,GAAG,IAAI,CAACR,sBAAsB,CAACO,eAAe,CAAC;MAElE/pC,IAAI,CAAC+T,MAAM,CAAC8H,IAAI,CAACmuB,aAAa,CAAC;MAE/B,IAAIA,aAAa,CAACrC,OAAO,EAAE;QACzBoC,eAAe,GAAG,IAAI;MACxB;MAEA,IAAI,CAAC,IAAI,CAAChY,KAAK,CAAA,EAAM,CAAC,EAAE;QACtB,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACD,CAAA,QAAQ,CAAC,IAAI,CAAC9L,KAAK,GAAM,CAAC;IAC3B,IAAI,CAAC8L,MAAM,CAAA,EAAM,CAAC;IAElB,IAAI,CAACzlB,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAE7B,OAAO,IAAI,CAAC5vB,UAAU,CAAC9V,IAAI,EAAE,0BAA0B,CAAC;EAC1D;EAGAiqC,qBAAqBA,CAAIC,EAAW,EAAK;IACvC,IAAI,IAAI,CAACvV,UAAU,EAAE,KAAKrO,KAAE,CAACxM,KAAK,EAAE;MAClC,MAAMqwB,UAAU,GAAG,IAAI,CAAC/xB,KAAK,CAACgO,OAAO;MACrC,IAAI,CAAChO,KAAK,CAACgO,OAAO,GAAG,CAAC+jB,UAAU,CAAC,CAAC,CAAC,CAAC;MACpC,IAAI;QACF,OAAOD,EAAE,CAAA,CAAE;MACb,CAAC,SAAS;QACR,IAAI,CAAC9xB,KAAK,CAACgO,OAAO,GAAG+jB,UAAU;MACjC;IACF,CAAC,MAAM;MACL,OAAOD,EAAE,CAAA,CAAE;IACb;EACF;EAIAE,+CAA+CA,CAAAA,EAEjC;IACZ,IAAI,IAAI,CAACC,SAAS,EAAE,OAAU,EAAE;IAChC,OAAO,IAAI,CAACtB,mCAAmC,EAAE;EACnD;EAEAA,mCAAmCA,CAAAA,EAAiC;IAClE,MAAM/oC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgC;IAC3D,MAAM+vB,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IAEnC,IAAI,CAACjX,KAAK,CAACiX,MAAM,GAAG,IAAI;IACxBrvB,IAAI,CAAC+T,MAAM,GAAG,EAAE;IAChB,IAAI,CAACk2B,qBAAqB,CAAC,MAAM;MAC/B,IAAI,CAACpM,MAAM,CAAA,EAAM,CAAC;MAClB,MAAMyM,qBAAqB,GAAG,IAAI,CAAClyB,KAAK,CAACkX,kBAAkB;MAC3D,IAAI,CAAClX,KAAK,CAACkX,kBAAkB,GAAG,KAAK;MACrC,OAAO,CAAC,IAAI,CAACyC,KAAK,CAAA,EAAM,CAAC,EAAE;QACzB/xB,IAAI,CAAC+T,MAAM,CAAC8H,IAAI,CAAC,IAAI,CAAC8pB,aAAa,CAAE,CAAA,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC5T,KAAK,CAAA,EAAM,CAAC,EAAE;UACtB,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;QACvB;MACF;MACA,IAAI,CAACzlB,KAAK,CAACkX,kBAAkB,GAAGgb,qBAAqB;IACvD,CAAC,CAAC;IAEF,IAAI,CAAClyB,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAC7B,IAAI,CAAC,IAAI,CAACttB,KAAK,CAACiX,MAAM,IAAI,IAAI,CAACsF,UAAU,CAAE,CAAA,KAAKrO,KAAE,CAACxM,KAAK,EAAE;MAGxD,IAAI,CAACywB,YAAY,CAAA,CAAE;IACrB;IACA,IAAI,CAAC1M,MAAM,CAAA,EAAM,CAAC;IAElB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,4BAA4B,CAAC;EAC5D;EAEAwqC,4CAA4CA,CAAAA,EAAiC;IAC3E,IAAI,IAAI,CAACH,SAAS,EAAE,OAAU,EAAE;IAChC,MAAMrqC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgC;IAC3D,MAAM+vB,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnCrvB,IAAI,CAAC+T,MAAM,GAAG,EAAE;IAEhB,IAAI,CAACqE,KAAK,CAACiX,MAAM,GAAG,IAAI;IAExB,IAAI,CAACwO,MAAM,CAAA,EAAM,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC9L,KAAK,CAAA,EAAM,CAAC,EAAE;MACzB/xB,IAAI,CAAC+T,MAAM,CAAC8H,IAAI,CAAC,IAAI,CAAC4uB,oCAAoC,CAAE,CAAA,CAAC;MAC7D,IAAI,CAAC,IAAI,CAAC1Y,KAAK,CAAA,EAAM,CAAC,EAAE;QACtB,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,IAAI,CAACA,MAAM,CAAA,EAAM,CAAC;IAElB,IAAI,CAACzlB,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAE7B,OAAO,IAAI,CAAC5vB,UAAU,CAAC9V,IAAI,EAAE,4BAA4B,CAAC;EAC5D;EAEA0qC,sBAAsBA,CAAAA,EAAwB;IAC5C,MAAM1qC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAuB;IAClD,IAAI,CAAC2nB,gBAAgB,CAAA,GAAc,CAAC;IAEpCt9B,IAAI,CAACooC,OAAO,GAAG,EAAE;IACjB,IAAI,IAAI,CAAC3T,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,GAAG;QACDz0B,IAAI,CAACooC,OAAO,CAACvsB,IAAI,CAAC,IAAI,CAACwsB,yBAAyB,CAAE,CAAA,CAAC;MACrD,CAAC,QAAQ,IAAI,CAAC5T,GAAG,GAAS,CAAC;IAC7B;IAEAz0B,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAAC8zB,mBAAmB,CAAC;MACnCC,WAAW,EAAE,KAAK;MAClBC,UAAU,EAAE,KAAK;MACjBC,WAAW,EAAE,KAAK;MAClBC,UAAU,EAAE,KAAK;MACjBC,YAAY,EAAE;IAChB,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC/yB,UAAU,CAAC9V,IAAI,EAAE,yBAAyB,CAAC;EACzD;EAEA2qC,0BAA0BA,CAAAA,EAAiB;IACzC,OAAO,IAAI,CAAC5Y,KAAK,CAAA,GAAO,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,GAAA,CAAC,GAC9C,KAAK,CAACwV,aAAa,CAAE,CAAA,GACrB,IAAI,CAACnB,eAAe,CAAC,IAAI,CAAC;EAChC;EAEAwE,0BAA0BA,CACxB5qC,IAAqC,EACrC6qC,QAAiB,EACjBlB,QAAgC,EACP;IACzB3pC,IAAI,CAAC8qC,MAAM,GAAGD,QAAQ;IAGtB,IAAI,IAAI,CAACjW,SAAS,EAAE,CAAC30B,IAAI,OAAa,EAAE;MACtCD,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC21B,0BAA0B,EAAE;MAC3C3qC,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAAC2+B,wBAAwB,EAAE;IAC5C,CAAC,MAAM;MACLxlC,IAAI,CAACgV,EAAE,GAAG,IAAI;MACdhV,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAAC8+B,aAAa,EAAE;IACjC;IACA,IAAI,CAAC9H,MAAM,CAAA,CAAY,CAAC;IACxB79B,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACw4B,wBAAwB,EAAE;IAC5CxlC,IAAI,CAAC2pC,QAAQ,GAAGA,QAAQ;IAExB,OAAO,IAAI,CAAC7zB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEA+qC,+BAA+BA,CAC7B/qC,IAA0C,EAC1C6qC,QAAiB,EACa;IAC9B7qC,IAAI,CAAC8qC,MAAM,GAAGD,QAAQ;IAEtB7qC,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC21B,0BAA0B,EAAE;IAC3C,IAAI,CAAC9M,MAAM,CAAA,CAAY,CAAC;IACxB,IAAI,CAACA,MAAM,CAAA,CAAY,CAAC;IACxB,IAAI,IAAI,CAAC9L,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,EAAE;MAC9C/xB,IAAI,CAAC8T,MAAM,GAAG,IAAI;MAClB9T,IAAI,CAAC0X,QAAQ,GAAG,KAAK;MACrB1X,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACg+B,4BAA4B,CAC5C,IAAI,CAACtK,WAAW,CAAC1gC,IAAI,CAACiO,GAAG,CAACrQ,KAAK,CACjC,CAAC;IACH,CAAC,MAAM;MACLoC,IAAI,CAAC8T,MAAM,GAAG,KAAK;MACnB,IAAI,IAAI,CAAC2gB,GAAG,CAAA,EAAY,CAAC,EAAE;QACzBz0B,IAAI,CAAC0X,QAAQ,GAAG,IAAI;MACtB;MACA1X,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACw4B,wBAAwB,EAAE;IAC9C;IACA,OAAO,IAAI,CAAC1vB,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEAgrC,4BAA4BA,CAC1BhrC,IAA0C,EACZ;IAC9BA,IAAI,CAAC+T,MAAM,GAAG,EAAE;IAChB/T,IAAI,CAACsP,IAAI,GAAG,IAAI;IAChBtP,IAAI,CAAC4V,cAAc,GAAG,IAAI;IAC1B5V,IAAI,CAAC0mC,IAAI,GAAG,IAAI;IAEhB,IAAI,IAAI,CAAC3U,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAChE;IAEA,IAAI,CAAC1I,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,IAAI,CAAC9L,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/xB,IAAI,CAAC0mC,IAAI,GAAG,IAAI,CAACuE,0BAA0B,CAAa,IAAI,CAAC;MAE7DjrC,IAAI,CAAC0mC,IAAI,CAACvgC,IAAI,GAAG,IAAI;MACrB,IAAI,CAAC,IAAI,CAAC4rB,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,OAAO,CAAC,IAAI,CAAC9L,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,EAAE;MACzD/xB,IAAI,CAAC+T,MAAM,CAAC8H,IAAI,CAAC,IAAI,CAACovB,0BAA0B,CAAC,KAAK,CAAC,CAAC;MACxD,IAAI,CAAC,IAAI,CAAClZ,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IAEA,IAAI,IAAI,CAACpJ,GAAG,CAAA,EAAY,CAAC,EAAE;MACzBz0B,IAAI,CAACsP,IAAI,GAAG,IAAI,CAAC27B,0BAA0B,CAAC,KAAK,CAAC;IACpD;IACA,IAAI,CAACpN,MAAM,CAAA,EAAU,CAAC;IACtB79B,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAACnB,wBAAwB,EAAE;IAEjD,OAAO,IAAI,CAAC1vB,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEAkrC,+BAA+BA,CAC7BlrC,IAA0C,EAC1C6qC,QAAiB,EACa;IAC9B,MAAMM,SAAS,GAAG,IAAI,CAACx1B,SAAS,EAAE;IAClC3V,IAAI,CAAC8qC,MAAM,GAAGD,QAAQ;IACtB7qC,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACg+B,4BAA4B,CAACG,SAAS,CAAC;IACzD,OAAO,IAAI,CAACr1B,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEAwoC,mBAAmBA,CAAC;IAClBC,WAAW;IACXC,UAAU;IACVC,WAAW;IACXC,UAAU;IACVC;EAOF,CAAC,EAA8B;IAC7B,MAAMnD,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnC,IAAI,CAACjX,KAAK,CAACiX,MAAM,GAAG,IAAI;IAExB,MAAMxC,SAAS,GAAG,IAAI,CAAClX,SAAS,EAA8B;IAE9DkX,SAAS,CAACue,cAAc,GAAG,EAAE;IAC7Bve,SAAS,CAACS,UAAU,GAAG,EAAE;IACzBT,SAAS,CAACwe,QAAQ,GAAG,EAAE;IACvBxe,SAAS,CAACye,aAAa,GAAG,EAAE;IAE5B,IAAIC,QAAQ;IACZ,IAAIC,KAAK;IACT,IAAIC,OAAO,GAAG,KAAK;IACnB,IAAI/C,UAAU,IAAI,IAAI,CAAC3W,KAAK,CAAA,CAAa,CAAC,EAAE;MAC1C,IAAI,CAAC8L,MAAM,CAAA,CAAa,CAAC;MACzB0N,QAAQ,GAAe,CAAA;MACvBC,KAAK,GAAG,IAAI;IACd,CAAC,MAAM;MACL,IAAI,CAAC3N,MAAM,CAAA,CAAU,CAAC;MACtB0N,QAAQ,GAAY,CAAA;MACpBC,KAAK,GAAG,KAAK;IACf;IAEA3e,SAAS,CAAC2e,KAAK,GAAGA,KAAK;IAEvB,OAAO,CAAC,IAAI,CAACzZ,KAAK,CAACwZ,QAAQ,CAAC,EAAE;MAC5B,IAAIV,QAAQ,GAAG,KAAK;MACpB,IAAIa,aAA0C,GAAG,IAAI;MACrD,IAAIC,eAA4C,GAAG,IAAI;MACvD,MAAM3rC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAE;MAE7B,IAAIizB,UAAU,IAAI,IAAI,CAAC7L,YAAY,CAAA,GAAU,CAAC,EAAE;QAC9C,MAAMnI,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;QAElC,IAAIA,SAAS,CAAC30B,IAAI,KAAA,EAAa,IAAI20B,SAAS,CAAC30B,IAAI,KAAA,EAAgB,EAAE;UACjE,IAAI,CAACioB,IAAI,CAAA,CAAE;UACXwjB,aAAa,GAAG,IAAI,CAACtzB,KAAK,CAAC1B,QAAQ;UACnC+xB,WAAW,GAAG,KAAK;QACrB;MACF;MAEA,IAAIA,WAAW,IAAI,IAAI,CAAC1L,YAAY,CAAA,GAAW,CAAC,EAAE;QAChD,MAAMnI,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;QAGlC,IAAIA,SAAS,CAAC30B,IAAI,KAAA,EAAa,IAAI20B,SAAS,CAAC30B,IAAI,KAAA,EAAgB,EAAE;UACjE,IAAI,CAACioB,IAAI,CAAA,CAAE;UACX2iB,QAAQ,GAAG,IAAI;QACjB;MACF;MAEA,MAAMlB,QAAQ,GAAG,IAAI,CAACC,iBAAiB,EAAE;MAEzC,IAAI,IAAI,CAACnV,GAAG,CAAA,CAAY,CAAC,EAAE;QACzB,IAAIiX,aAAa,IAAI,IAAI,EAAE;UACzB,IAAI,CAACxmC,UAAU,CAACwmC,aAAa,CAAC;QAChC;QACA,IAAI,IAAI,CAACjX,GAAG,CAAA,CAAY,CAAC,EAAE;UACzB,IAAIkV,QAAQ,EAAE;YACZ,IAAI,CAACzkC,UAAU,CAACykC,QAAQ,CAAC17B,GAAG,CAACrQ,KAAK,CAAC;UACrC;UACAivB,SAAS,CAACye,aAAa,CAACzvB,IAAI,CAC1B,IAAI,CAACkvB,+BAA+B,CAAC/qC,IAAI,EAAE6qC,QAAQ,CACrD,CAAC;QACH,CAAC,MAAM;UACLhe,SAAS,CAACwe,QAAQ,CAACxvB,IAAI,CACrB,IAAI,CAAC+uB,0BAA0B,CAAC5qC,IAAI,EAAE6qC,QAAQ,EAAElB,QAAQ,CAC1D,CAAC;QACH;MACF,CAAC,MAAM,IAAI,IAAI,CAAC5X,KAAK,CAAA,EAAU,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAM,CAAC,EAAE;QACrD,IAAI2Z,aAAa,IAAI,IAAI,EAAE;UACzB,IAAI,CAACxmC,UAAU,CAACwmC,aAAa,CAAC;QAChC;QACA,IAAI/B,QAAQ,EAAE;UACZ,IAAI,CAACzkC,UAAU,CAACykC,QAAQ,CAAC17B,GAAG,CAACrQ,KAAK,CAAC;QACrC;QACAivB,SAAS,CAACue,cAAc,CAACvvB,IAAI,CAC3B,IAAI,CAACqvB,+BAA+B,CAAClrC,IAAI,EAAE6qC,QAAQ,CACrD,CAAC;MACH,CAAC,MAAM;QACL,IAAIxqC,IAAI,GAAG,MAAM;QAEjB,IAAI,IAAI,CAAC08B,YAAY,CAAQ,EAAA,CAAC,IAAI,IAAI,CAACA,YAAY,CAAQ,GAAA,CAAC,EAAE;UAC5D,MAAMnI,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;UAClC,IAAIzP,0BAA0B,CAACyP,SAAS,CAAC30B,IAAI,CAAC,EAAE;YAC9CI,IAAI,GAAG,IAAI,CAAC+X,KAAK,CAACpL,KAAK;YACvB,IAAI,CAACkb,IAAI,CAAA,CAAE;UACb;QACF;QAEA,MAAM0jB,aAAa,GAAG,IAAI,CAACC,2BAA2B,CACpD7rC,IAAI,EACJ6qC,QAAQ,EACRa,aAAa,EACb/B,QAAQ,EACRtpC,IAAI,EACJsoC,WAAW,EACXE,YAAY,WAAZA,YAAY,GAAI,CAAC2C,KACnB,CAAC;QAED,IAAII,aAAa,KAAK,IAAI,EAAE;UAC1BH,OAAO,GAAG,IAAI;UACdE,eAAe,GAAG,IAAI,CAACvzB,KAAK,CAACC,eAAe;QAC9C,CAAC,MAAM;UACLwU,SAAS,CAACS,UAAU,CAACzR,IAAI,CAAC+vB,aAAa,CAAC;QAC1C;MACF;MAEA,IAAI,CAACE,uBAAuB,CAAA,CAAE;MAE9B,IACEH,eAAe,IACf,CAAC,IAAI,CAAC5Z,KAAK,CAAA,CAAU,CAAC,IACtB,CAAC,IAAI,CAACA,KAAK,CAAA,CAAa,CAAC,EACzB;QACA,IAAI,CAACxa,KAAK,CACRupB,UAAU,CAAC4C,iCAAiC,EAC5CiI,eACF,CAAC;MACH;IACF;IAEA,IAAI,CAAC9N,MAAM,CAAC0N,QAAQ,CAAC;IAOrB,IAAI5C,WAAW,EAAE;MACf9b,SAAS,CAAC4e,OAAO,GAAGA,OAAO;IAC7B;IAEA,MAAM1a,GAAG,GAAG,IAAI,CAACjb,UAAU,CAAC+W,SAAS,EAAE,sBAAsB,CAAC;IAE9D,IAAI,CAACzU,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAE7B,OAAO3U,GAAG;EACZ;EAEA8a,2BAA2BA,CACzB7rC,IAAuE,EACvE6qC,QAAiB,EACjBa,aAA0C,EAC1C/B,QAA2C,EAC3CtpC,IAAY,EACZsoC,WAAoB,EACpBE,YAAqB,EAC6C;IAClE,IAAI,IAAI,CAACpU,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAMsX,cAAc,GAClB,IAAI,CAACha,KAAK,GAAS,CAAC,IACpB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAU,CAAA,CAAC,IACrB,IAAI,CAACA,KAAK,CAAA,CAAa,CAAC;MAE1B,IAAIga,cAAc,EAAE;QAClB,IAAI,CAACpD,WAAW,EAAE;UAChB,IAAI,CAACpxB,KAAK,CACRupB,UAAU,CAAC4B,sBAAsB,EACjC,IAAI,CAACtqB,KAAK,CAACC,eACb,CAAC;QACH,CAAC,MAAM,IAAI,CAACwwB,YAAY,EAAE;UACxB,IAAI,CAACtxB,KAAK,CACRupB,UAAU,CAAC2B,kBAAkB,EAC7B,IAAI,CAACrqB,KAAK,CAACC,eACb,CAAC;QACH;QACA,IAAIsxB,QAAQ,EAAE;UACZ,IAAI,CAACpyB,KAAK,CAACupB,UAAU,CAAC6B,eAAe,EAAEgH,QAAQ,CAAC;QAClD;QAEA,OAAO,IAAI;MACb;MAEA,IAAI,CAAChB,WAAW,EAAE;QAChB,IAAI,CAACpxB,KAAK,CACRupB,UAAU,CAACgD,oBAAoB,EAC/B,IAAI,CAAC1rB,KAAK,CAACC,eACb,CAAC;MACH;MACA,IAAIqzB,aAAa,IAAI,IAAI,EAAE;QACzB,IAAI,CAACxmC,UAAU,CAACwmC,aAAa,CAAC;MAChC;MACA,IAAI/B,QAAQ,EAAE;QACZ,IAAI,CAACpyB,KAAK,CAACupB,UAAU,CAACoC,cAAc,EAAEyG,QAAQ,CAAC;MACjD;MAEA3pC,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAAC62B,aAAa,EAAE;MACpC,OAAO,IAAI,CAAC7vB,UAAU,CAAC9V,IAAI,EAAE,0BAA0B,CAAC;IAC1D,CAAC,MAAM;MACLA,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAAC8jC,0BAA0B,EAAE;MAC5C3qC,IAAI,CAAC8qC,MAAM,GAAGD,QAAQ;MACtB7qC,IAAI,CAACgsC,KAAK,GAAGN,aAAa,IAAI,IAAI;MAClC1rC,IAAI,CAACK,IAAI,GAAGA,IAAI;MAEhB,IAAIqX,QAAQ,GAAG,KAAK;MACpB,IAAI,IAAI,CAACqa,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,EAAE;QAE9C/xB,IAAI,CAAC8T,MAAM,GAAG,IAAI;QAElB,IAAI43B,aAAa,IAAI,IAAI,EAAE;UACzB,IAAI,CAACxmC,UAAU,CAACwmC,aAAa,CAAC;QAChC;QACA,IAAI/B,QAAQ,EAAE;UACZ,IAAI,CAACzkC,UAAU,CAACykC,QAAQ,CAAC17B,GAAG,CAACrQ,KAAK,CAAC;QACrC;QAEAoC,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACg+B,4BAA4B,CAC5C,IAAI,CAACtK,WAAW,CAAC1gC,IAAI,CAACiO,GAAG,CAACrQ,KAAK,CACjC,CAAC;QACD,IAAIyC,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,EAAE;UACpC,IAAI,CAAC4rC,2BAA2B,CAACjsC,IAAI,CAAC;QACxC;QAEA,IACE,CAAC2oC,WAAW,IACZ3oC,IAAI,CAAC6G,GAAG,CAACV,IAAI,KAAK,aAAa,IAC/BnG,IAAI,CAACgN,KAAK,CAAC05B,IAAI,EACf;UACA,IAAI,CAACnvB,KAAK,CACRupB,UAAU,CAACsC,4BAA4B,EACvCpjC,IAAI,CAACgN,KAAK,CAAC05B,IACb,CAAC;QACH;MACF,CAAC,MAAM;QACL,IAAIrmC,IAAI,KAAK,MAAM,EAAE,IAAI,CAAC6E,UAAU,CAAA,CAAE;QAEtClF,IAAI,CAAC8T,MAAM,GAAG,KAAK;QAEnB,IAAI,IAAI,CAAC2gB,GAAG,CAAA,EAAY,CAAC,EAAE;UACzB/c,QAAQ,GAAG,IAAI;QACjB;QACA1X,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACw4B,wBAAwB,EAAE;QAC5CxlC,IAAI,CAAC2pC,QAAQ,GAAGA,QAAQ;MAC1B;MAEA3pC,IAAI,CAAC0X,QAAQ,GAAGA,QAAQ;MAExB,OAAO,IAAI,CAAC5B,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;IACpD;EACF;EAIAisC,2BAA2BA,CACzBpN,QAEC,EACK;IACN,MAAMqN,UAAU,GAAGrN,QAAQ,CAACx+B,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;IAClD,MAAMmY,MAAM,GACVqmB,QAAQ,CAAC7xB,KAAK,CAAC+G,MAAM,CAACyE,MAAM,IAAIqmB,QAAQ,CAAC7xB,KAAK,CAACsC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9D,IAAIuvB,QAAQ,CAAC7xB,KAAK,CAAC05B,IAAI,EAAE;MACvB,IAAI,CAACnvB,KAAK,CACRsnB,QAAQ,CAACx+B,IAAI,KAAK,KAAK,GACnBygC,UAAU,CAACwB,yBAAyB,GACpCxB,UAAU,CAACmC,yBAAyB,EACxCpE,QAAQ,CAAC7xB,KAAK,CAAC05B,IACjB,CAAC;IACH;IAEA,IAAIluB,MAAM,KAAK0zB,UAAU,EAAE;MACzB,IAAI,CAAC30B,KAAK,CACRsnB,QAAQ,CAACx+B,IAAI,KAAK,KAAK,GACnBoP,MAAM,CAAC3O,cAAc,GACrB2O,MAAM,CAAC1O,cAAc,EACzB89B,QACF,CAAC;IACH;IAEA,IAAIA,QAAQ,CAACx+B,IAAI,KAAK,KAAK,IAAIw+B,QAAQ,CAAC7xB,KAAK,CAACsC,IAAI,EAAE;MAClD,IAAI,CAACiI,KAAK,CAAC9H,MAAM,CAACzO,sBAAsB,EAAE69B,QAAQ,CAAC;IACrD;EACF;EAEAiN,uBAAuBA,CAAAA,EAAS;IAC9B,IACE,CAAC,IAAI,CAACrX,GAAG,CAAA,EAAQ,CAAC,IAClB,CAAC,IAAI,CAACA,GAAG,CAAS,EAAA,CAAC,IACnB,CAAC,IAAI,CAAC1C,KAAK,CAAA,CAAU,CAAC,IACtB,CAAC,IAAI,CAACA,KAAK,CAAa,CAAA,CAAC,EACzB;MACA,IAAI,CAAC7sB,UAAU,CAAA,CAAE;IACnB;EACF;EAEA4jC,gCAAgCA,CAC9BpyB,QAAmB,EACnB1B,EAAiB,EAC6B;IAAA,IAAAm3B,SAAA;IAC9C,CAAAA,SAAA,GAAAz1B,QAAQ,KAAA,IAAA,GAAAy1B,SAAA,GAARz1B,QAAQ,GAAK,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAChC,IAAI1W,IAAkD,GACpDgV,EAAE,IAAI,IAAI,CAACmzB,6BAA6B,CAAC,IAAI,CAAC;IAEhD,OAAO,IAAI,CAAC1T,GAAG,CAAA,EAAO,CAAC,EAAE;MACvB,MAAM2X,KAAK,GAAG,IAAI,CAAC1L,WAAW,CAAgChqB,QAAQ,CAAC;MACvE01B,KAAK,CAACC,aAAa,GAAGrsC,IAAI;MAC1BosC,KAAK,CAACp3B,EAAE,GAAG,IAAI,CAACmzB,6BAA6B,CAAC,IAAI,CAAC;MACnDnoC,IAAI,GAAG,IAAI,CAAC8V,UAAU,CAACs2B,KAAK,EAAE,yBAAyB,CAAC;IAC1D;IAEA,OAAOpsC,IAAI;EACb;EAEAssC,oBAAoBA,CAClB51B,QAAkB,EAClB1B,EAAgB,EACa;IAC7B,MAAMhV,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA8BhqB,QAAQ,CAAC;IAEpE1W,IAAI,CAAC4V,cAAc,GAAG,IAAI;IAC1B5V,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC8zB,gCAAgC,CAACpyB,QAAQ,EAAE1B,EAAE,CAAC;IAE7D,IAAI,IAAI,CAAC+c,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAACmzB,mCAAmC,EAAE;IAClE;IAEA,OAAO,IAAI,CAACjzB,UAAU,CAAC9V,IAAI,EAAE,uBAAuB,CAAC;EACvD;EAEAusC,mBAAmBA,CAAAA,EAA+B;IAChD,MAAMvsC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA8B;IACzD,IAAI,CAACkoB,MAAM,CAAA,EAAW,CAAC;IACvB79B,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAAC09B,oBAAoB,EAAE;IAC3C,OAAO,IAAI,CAAC12B,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEAysC,kBAAkBA,CAAAA,EAA8B;IAC9C,MAAMzsC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA6B;IACxD3V,IAAI,CAAC6Z,KAAK,GAAG,EAAE;IACf,IAAI,CAACgkB,MAAM,CAAA,CAAY,CAAC;IAExB,OAAO,IAAI,CAACzlB,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,IAAI,CAAC,IAAI,CAACuZ,KAAK,CAAA,CAAY,CAAC,EAAE;MAC/D/xB,IAAI,CAAC6Z,KAAK,CAACgC,IAAI,CAAC,IAAI,CAAC8pB,aAAa,CAAE,CAAA,CAAC;MACrC,IAAI,IAAI,CAAC5T,KAAK,CAAA,CAAY,CAAC,EAAE;MAC7B,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;IACvB;IACA,IAAI,CAACA,MAAM,CAAA,CAAY,CAAC;IACxB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAirC,0BAA0BA,CAACyB,KAAc,EAA2B;IAClE,IAAIvmC,IAAI,GAAG,IAAI;IACf,IAAIuR,QAAQ,GAAG,KAAK;IACpB,IAAIkvB,cAAc,GAAG,IAAI;IACzB,MAAM5mC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA2B;IACtD,MAAMg3B,EAAE,GAAG,IAAI,CAAC/X,SAAS,EAAE;IAC3B,MAAMgY,MAAM,GAAG,IAAI,CAACx0B,KAAK,CAACnY,IAAI,KAAa,EAAA;IAE3C,IAAI0sC,EAAE,CAAC1sC,IAAI,KAAA,EAAa,IAAI0sC,EAAE,CAAC1sC,IAAI,KAAA,EAAgB,EAAE;MACnD,IAAI2sC,MAAM,IAAI,CAACF,KAAK,EAAE;QACpB,IAAI,CAACn1B,KAAK,CAACupB,UAAU,CAACwC,oBAAoB,EAAEtjC,IAAI,CAAC;MACnD;MACAmG,IAAI,GAAG,IAAI,CAACigC,eAAe,CAACwG,MAAM,CAAC;MACnC,IAAI,IAAI,CAACnY,GAAG,CAAA,EAAY,CAAC,EAAE;QACzB/c,QAAQ,GAAG,IAAI;QACf,IAAIk1B,MAAM,EAAE;UACV,IAAI,CAACr1B,KAAK,CAACupB,UAAU,CAACuC,yBAAyB,EAAErjC,IAAI,CAAC;QACxD;MACF;MACA4mC,cAAc,GAAG,IAAI,CAACpB,wBAAwB,EAAE;IAClD,CAAC,MAAM;MACLoB,cAAc,GAAG,IAAI,CAACjB,aAAa,EAAE;IACvC;IACA3lC,IAAI,CAACmG,IAAI,GAAGA,IAAI;IAChBnG,IAAI,CAAC0X,QAAQ,GAAGA,QAAQ;IACxB1X,IAAI,CAAC4mC,cAAc,GAAGA,cAAc;IACpC,OAAO,IAAI,CAAC9wB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEA6sC,kCAAkCA,CAChC5sC,IAAgB,EACS;IACzB,MAAMD,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA0BzgC,IAAI,CAACgO,GAAG,CAACrQ,KAAK,CAAC;IACtEoC,IAAI,CAACmG,IAAI,GAAG,IAAI;IAChBnG,IAAI,CAAC0X,QAAQ,GAAG,KAAK;IACrB1X,IAAI,CAAC4mC,cAAc,GAAG3mC,IAAI;IAC1B,OAAO,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAymC,2BAA2BA,CAAC1yB,MAAiC,GAAG,EAAE,EAIhE;IACA,IAAIzE,IAAgD,GAAG,IAAI;IAC3D,IAAI0R,KAAiD,GAAG,IAAI;IAC5D,IAAI,IAAI,CAAC+Q,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/Q,KAAK,GAAG,IAAI,CAACiqB,0BAA0B,CAAa,IAAI,CAAC;MAEzDjqB,KAAK,CAAC7a,IAAI,GAAG,IAAI;MACjB,IAAI,CAAC,IAAI,CAAC4rB,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,OAAO,CAAC,IAAI,CAAC9L,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,EAAE;MACzDhe,MAAM,CAAC8H,IAAI,CAAC,IAAI,CAACovB,0BAA0B,CAAC,KAAK,CAAC,CAAC;MACnD,IAAI,CAAC,IAAI,CAAClZ,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,IAAI,IAAI,CAACpJ,GAAG,CAAA,EAAY,CAAC,EAAE;MACzBnlB,IAAI,GAAG,IAAI,CAAC27B,0BAA0B,CAAC,KAAK,CAAC;IAC/C;IACA,OAAO;MAAEl3B,MAAM;MAAEzE,IAAI;MAAE0R;KAAO;EAChC;EAEA8rB,yBAAyBA,CACvBp2B,QAAkB,EAClB1W,IAAwB,EACxBgV,EAAgB,EACJ;IACZ,QAAQA,EAAE,CAAC7O,IAAI;MACb,KAAK,KAAK;QACR,OAAO,IAAI,CAAC2P,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;MAEnD,KAAK,MAAM;MACX,KAAK,SAAS;QACZ,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,uBAAuB,CAAC;MAEvD,KAAK,OAAO;QACV,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;MAErD,KAAK,OAAO;QACV,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;MAErD,KAAK,QAAQ;QACX,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;MAEtD,KAAK,QAAQ;QACX,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;MAEtD,KAAK,QAAQ;QACX,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;MAEtD;QACE,IAAI,CAACipC,kBAAkB,CAACj0B,EAAE,CAAC7O,IAAI,CAAC;QAChC,OAAO,IAAI,CAACmmC,oBAAoB,CAAC51B,QAAQ,EAAE1B,EAAE,CAAC;IAClD;EACF;EAKAw3B,oBAAoBA,CAAAA,EAAe;IACjC,MAAM91B,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAM1W,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA6B;IACxD,IAAI6wB,GAAG;IACP,IAAIvmC,IAAI;IACR,IAAI8sC,aAAa,GAAG,KAAK;IACzB,MAAMzC,qBAAqB,GAAG,IAAI,CAAClyB,KAAK,CAACkX,kBAAkB;IAE3D,QAAQ,IAAI,CAAClX,KAAK,CAACnY,IAAI;MACrB,KAAA,CAAA;QACE,OAAO,IAAI,CAACuoC,mBAAmB,CAAC;UAC9BC,WAAW,EAAE,KAAK;UAClBC,UAAU,EAAE,KAAK;UACjBC,WAAW,EAAE,IAAI;UACjBC,UAAU,EAAE,KAAK;UACjBC,YAAY,EAAE;QAChB,CAAC,CAAC;MAEJ,KAAA,CAAA;QACE,OAAO,IAAI,CAACL,mBAAmB,CAAC;UAC9BC,WAAW,EAAE,KAAK;UAClBC,UAAU,EAAE,IAAI;UAChBC,WAAW,EAAE,IAAI;UACjBC,UAAU,EAAE,KAAK;UACjBC,YAAY,EAAE;QAChB,CAAC,CAAC;MAEJ,KAAA,CAAA;QACE,IAAI,CAACzwB,KAAK,CAACkX,kBAAkB,GAAG,KAAK;QACrCrvB,IAAI,GAAG,IAAI,CAACwsC,kBAAkB,EAAE;QAChC,IAAI,CAACr0B,KAAK,CAACkX,kBAAkB,GAAGgb,qBAAqB;QACrD,OAAOrqC,IAAI;MAEb,KAAA,EAAA;QAAY;UACV,MAAMD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgC;UAC3D3V,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;UAC9D,IAAI,CAAC1I,MAAM,CAAA,EAAU,CAAC;UACtB2I,GAAG,GAAG,IAAI,CAACC,2BAA2B,EAAE;UACxCzmC,IAAI,CAAC+T,MAAM,GAAGyyB,GAAG,CAACzyB,MAAM;UACxB/T,IAAI,CAACsP,IAAI,GAAGk3B,GAAG,CAACl3B,IAAI;UACpBtP,IAAI,CAAC0mC,IAAI,GAAGF,GAAG,CAACxlB,KAAK;UACrB,IAAI,CAAC6c,MAAM,CAAA,EAAU,CAAC;UAEtB,IAAI,CAACA,MAAM,CAAA,EAAS,CAAC;UAErB79B,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAAChB,aAAa,EAAE;UAEtC,OAAO,IAAI,CAAC7vB,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;QACxD;MAEA,KAAA,EAAA;QAAgB;UACd,MAAMA,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgC;UAC3D,IAAI,CAACuS,IAAI,CAAA,CAAE;UAGX,IAAI,CAAC,IAAI,CAAC6J,KAAK,CAAU,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,EAAE;YACtD,IAAI/M,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IAAI,IAAI,CAAC8xB,KAAK,CAAA,EAAS,CAAC,EAAE;cAC9D,MAAM1lB,KAAK,GAAG,IAAI,CAACuoB,SAAS,CAAA,CAAE,CAAC30B,IAAI;cACnC8sC,aAAa,GAAG1gC,KAAK,KAAgB,EAAA,IAAIA,KAAK,KAAa,EAAA;YAC7D,CAAC,MAAM;cACL0gC,aAAa,GAAG,IAAI;YACtB;UACF;UAEA,IAAIA,aAAa,EAAE;YACjB,IAAI,CAAC30B,KAAK,CAACkX,kBAAkB,GAAG,KAAK;YACrCrvB,IAAI,GAAG,IAAI,CAAC0lC,aAAa,EAAE;YAC3B,IAAI,CAACvtB,KAAK,CAACkX,kBAAkB,GAAGgb,qBAAqB;YAGrD,IACE,IAAI,CAAClyB,KAAK,CAACkX,kBAAkB,IAC7B,EACE,IAAI,CAACyC,KAAK,CAAS,EAAA,CAAC,IACnB,IAAI,CAACA,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAAC6C,SAAS,CAAA,CAAE,CAAC30B,IAAI,KAAc,EAAA,CAC9D,EACD;cACA,IAAI,CAAC49B,MAAM,CAAA,EAAU,CAAC;cACtB,OAAO59B,IAAI;YACb,CAAC,MAAM;cAEL,IAAI,CAACw0B,GAAG,CAAA,EAAS,CAAC;YACpB;UACF;UAEA,IAAIx0B,IAAI,EAAE;YACRumC,GAAG,GAAG,IAAI,CAACC,2BAA2B,CAAC,CACrC,IAAI,CAACoG,kCAAkC,CAAC5sC,IAAI,CAAC,CAC9C,CAAC;UACJ,CAAC,MAAM;YACLumC,GAAG,GAAG,IAAI,CAACC,2BAA2B,EAAE;UAC1C;UAEAzmC,IAAI,CAAC+T,MAAM,GAAGyyB,GAAG,CAACzyB,MAAM;UACxB/T,IAAI,CAACsP,IAAI,GAAGk3B,GAAG,CAACl3B,IAAI;UACpBtP,IAAI,CAAC0mC,IAAI,GAAGF,GAAG,CAACxlB,KAAK;UAErB,IAAI,CAAC6c,MAAM,CAAA,EAAU,CAAC;UAEtB,IAAI,CAACA,MAAM,CAAA,EAAS,CAAC;UAErB79B,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAAChB,aAAa,EAAE;UAEtC3lC,IAAI,CAAC4V,cAAc,GAAG,IAAI;UAE1B,OAAO,IAAI,CAACE,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;QACxD;MAEA,KAAA,GAAA;QACE,OAAO,IAAI,CAAC4S,YAAY,CACtB,IAAI,CAACwF,KAAK,CAACpL,KAAK,EAChB,6BACF,CAAC;MAEH,KAAA,EAAA;MACA,KAAA,EAAA;QACEhN,IAAI,CAACgN,KAAK,GAAG,IAAI,CAAC+kB,KAAK,GAAS,CAAC;QACjC,IAAI,CAAC7J,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CACpB9V,IAAI,EACJ,8BACF,CAAC;MAEH,KAAA,EAAA;QACE,IAAI,IAAI,CAACoY,KAAK,CAACpL,KAAK,KAAK,GAAG,EAAE;UAC5B,IAAI,CAACkb,IAAI,CAAA,CAAE;UACX,IAAI,IAAI,CAAC6J,KAAK,CAAA,GAAO,CAAC,EAAE;YACtB,OAAO,IAAI,CAACib,kBAAkB,CAC5B,CAAC,IAAI,CAAC50B,KAAK,CAACpL,KAAK,EACjB,6BAA6B,EAC7BhN,IACF,CAAC;UACH;UAEA,IAAI,IAAI,CAAC+xB,KAAK,CAAA,GAAU,CAAC,EAAE;YACzB,OAAO,IAAI,CAACib,kBAAkB,CAC5B,CAAC,IAAI,CAAC50B,KAAK,CAACpL,KAAK,EACjB,6BAA6B,EAC7BhN,IACF,CAAC;UACH;UAEA,MAAM,IAAI,CAACuX,KAAK,CACdupB,UAAU,CAACiD,4BAA4B,EACvC,IAAI,CAAC3rB,KAAK,CAAC1B,QACb,CAAC;QACH;QACA,IAAI,CAACxR,UAAU,CAAA,CAAE;QACjB;MACF,KAAA,GAAA;QACE,OAAO,IAAI,CAAC0N,YAAY,CACtB,IAAI,CAACwF,KAAK,CAACpL,KAAK,EAChB,6BACF,CAAC;MAEH,KAAA,GAAA;QACE,OAAO,IAAI,CAAC4F,YAAY,CACtB,IAAI,CAACwF,KAAK,CAACpL,KAAK,EAChB,6BACF,CAAC;MAEH,KAAA,EAAA;QACE,IAAI,CAACkb,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;MAEpD,KAAA,EAAA;QACE,IAAI,CAACkoB,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,2BAA2B,CAAC;MAE3D,KAAA,EAAA;QACE,IAAI,CAACkoB,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;MAEpD,KAAA,EAAA;QACE,IAAI,CAACkoB,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;MAEtD,KAAA,EAAA;QACE,OAAO,IAAI,CAACusC,mBAAmB,EAAE;MAEnC;QACE,IAAI9mB,cAAc,CAAC,IAAI,CAACrN,KAAK,CAACnY,IAAI,CAAC,EAAE;UACnC,MAAMua,KAAK,GAAGuL,cAAc,CAAC,IAAI,CAAC3N,KAAK,CAACnY,IAAI,CAAC;UAC7C,IAAI,CAACioB,IAAI,CAAA,CAAE;UACX,OAAO,KAAK,CAAC+kB,gBAAgB,CAACjtC,IAAI,EAA0Bwa,KAAK,CAAC;QACnE,CAAA,MAAM,IAAIwK,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;UAC7C,IAAI,IAAI,CAAC88B,YAAY,CAAA,GAAc,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC2N,sBAAsB,EAAE;UACtC;UAEA,OAAO,IAAI,CAACoC,yBAAyB,CACnCp2B,QAAQ,EACR1W,IAAI,EACJ,IAAI,CAAComC,eAAe,CAAA,CACtB,CAAC;QACH;IACJ;IAEA,IAAI,CAAClhC,UAAU,CAAA,CAAE;EACnB;EAEAgoC,oBAAoBA,CAAAA,EAAe;IACjC,MAAMx2B,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,IAAIzW,IAAI,GAAG,IAAI,CAACusC,oBAAoB,EAAE;IACtC,IAAIW,yBAAyB,GAAG,KAAK;IACrC,OACE,CAAC,IAAI,CAACpb,KAAK,CAAY,CAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAe,EAAA,CAAC,KACtD,CAAC,IAAI,CAACwL,kBAAkB,CAAA,CAAE,EAC1B;MACA,MAAMv9B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA4BhqB,QAAQ,CAAC;MAClE,MAAMgB,QAAQ,GAAG,IAAI,CAAC+c,GAAG,GAAe,CAAC;MACzC0Y,yBAAyB,GAAGA,yBAAyB,IAAIz1B,QAAQ;MACjE,IAAI,CAACmmB,MAAM,CAAA,CAAY,CAAC;MACxB,IAAI,CAACnmB,QAAQ,IAAI,IAAI,CAACqa,KAAK,CAAA,CAAY,CAAC,EAAE;QACxC/xB,IAAI,CAAC06B,WAAW,GAAGz6B,IAAI;QACvB,IAAI,CAACioB,IAAI,CAAA,CAAE;QACXjoB,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;MACrD,CAAC,MAAM;QACLA,IAAI,CAACotC,UAAU,GAAGntC,IAAI;QACtBD,IAAI,CAACqtC,SAAS,GAAG,IAAI,CAAC1H,aAAa,EAAE;QACrC,IAAI,CAAC9H,MAAM,CAAA,CAAY,CAAC;QACxB,IAAIsP,yBAAyB,EAAE;UAC7BntC,IAAI,CAAC0X,QAAQ,GAAGA,QAAQ;UACxBzX,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAEpB9V,IAAI,EACJ,2BACF,CAAC;QACH,CAAC,MAAM;UACLC,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAEpB9V,IAAI,EACJ,mBACF,CAAC;QACH;MACF;IACF;IACA,OAAOC,IAAI;EACb;EAEAqtC,mBAAmBA,CAAAA,EAAe;IAChC,MAAMttC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA6B;IACxD,IAAI,IAAI,CAAC8e,GAAG,CAAA,EAAY,CAAC,EAAE;MACzBz0B,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC0G,mBAAmB,EAAE;MAChD,OAAO,IAAI,CAACx3B,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;IACxD,CAAC,MAAM;MACL,OAAO,IAAI,CAACktC,oBAAoB,EAAE;IACpC;EACF;EAEAK,kCAAkCA,CAAAA,EAAe;IAC/C,MAAMC,KAAK,GAAG,IAAI,CAACF,mBAAmB,EAAE;IACxC,IAAI,CAAC,IAAI,CAACl1B,KAAK,CAACkX,kBAAkB,IAAI,IAAI,CAACmF,GAAG,CAAS,EAAA,CAAC,EAAE;MAExD,MAAMz0B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAC3B8M,KAAK,CAACv/B,GAAG,CAACrQ,KACZ,CAAC;MACDoC,IAAI,CAAC+T,MAAM,GAAG,CAAC,IAAI,CAAC84B,kCAAkC,CAACW,KAAK,CAAC,CAAC;MAC9DxtC,IAAI,CAACsP,IAAI,GAAG,IAAI;MAChBtP,IAAI,CAAC0mC,IAAI,GAAG,IAAI;MAChB1mC,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAAChB,aAAa,EAAE;MACtC3lC,IAAI,CAAC4V,cAAc,GAAG,IAAI;MAC1B,OAAO,IAAI,CAACE,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;IACxD;IACA,OAAOwtC,KAAK;EACd;EAEAC,yBAAyBA,CAAAA,EAAe;IACtC,MAAMztC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA6B;IACxD,IAAI,CAAC8e,GAAG,CAAA,EAAc,CAAC;IACvB,MAAMx0B,IAAI,GAAG,IAAI,CAACstC,kCAAkC,EAAE;IACtDvtC,IAAI,CAAC6Z,KAAK,GAAG,CAAC5Z,IAAI,CAAC;IACnB,OAAO,IAAI,CAACw0B,GAAG,CAAA,EAAc,CAAC,EAAE;MAC9Bz0B,IAAI,CAAC6Z,KAAK,CAACgC,IAAI,CAAC,IAAI,CAAC0xB,kCAAkC,CAAE,CAAA,CAAC;IAC5D;IACA,OAAOvtC,IAAI,CAAC6Z,KAAK,CAACrB,MAAM,KAAK,CAAC,GAC1BvY,IAAI,GACJ,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,4BAA4B,CAAC;EACzD;EAEA0tC,kBAAkBA,CAAAA,EAAe;IAC/B,MAAM1tC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA6B;IACxD,IAAI,CAAC8e,GAAG,CAAA,EAAa,CAAC;IACtB,MAAMx0B,IAAI,GAAG,IAAI,CAACwtC,yBAAyB,EAAE;IAC7CztC,IAAI,CAAC6Z,KAAK,GAAG,CAAC5Z,IAAI,CAAC;IACnB,OAAO,IAAI,CAACw0B,GAAG,CAAA,EAAa,CAAC,EAAE;MAC7Bz0B,IAAI,CAAC6Z,KAAK,CAACgC,IAAI,CAAC,IAAI,CAAC4xB,yBAAyB,CAAE,CAAA,CAAC;IACnD;IACA,OAAOztC,IAAI,CAAC6Z,KAAK,CAACrB,MAAM,KAAK,CAAC,GAC1BvY,IAAI,GACJ,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EAClD;EAEA2lC,aAAaA,CAAAA,EAAe;IAC1B,MAAMD,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnC,IAAI,CAACjX,KAAK,CAACiX,MAAM,GAAG,IAAI;IACxB,MAAMpvB,IAAI,GAAG,IAAI,CAACytC,kBAAkB,EAAE;IACtC,IAAI,CAACt1B,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAC7B,OAAOzlC,IAAI;EACb;EAEAwqC,oCAAoCA,CAAAA,EAAe;IACjD,IAAI,IAAI,CAACryB,KAAK,CAACnY,IAAI,KAAY,GAAA,IAAI,IAAI,CAACmY,KAAK,CAACpL,KAAK,KAAK,GAAG,EAAE;MAC3D,MAAM0J,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;MACpC,MAAM1W,IAAI,GAAG,IAAI,CAAComC,eAAe,EAAE;MACnC,OAAO,IAAI,CAACkG,oBAAoB,CAAC51B,QAAQ,EAAE1W,IAAI,CAAC;IAClD,CAAC,MAAM;MACL,OAAO,IAAI,CAAC2lC,aAAa,EAAE;IAC7B;EACF;EAEAmC,uBAAuBA,CAAAA,EAAqB;IAC1C,MAAM9nC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;IAC/C3V,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAACpB,wBAAwB,EAAE;IACrD,OAAO,IAAI,CAAC1vB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAsnC,kCAAkCA,CAChCqG,sBAAgC,EAClB;IACd,MAAM9D,KAAK,GAAG8D,sBAAsB,GAChC,IAAI,CAACvH,eAAe,CAAA,CAAE,GACtB,IAAI,CAAC+B,6BAA6B,EAAE;IACxC,IAAI,IAAI,CAACpW,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB8X,KAAK,CAACjD,cAAc,GAAG,IAAI,CAACkB,uBAAuB,EAAE;MACrD,IAAI,CAACruB,gBAAgB,CAACowB,KAAK,CAAC;IAC9B;IACA,OAAOA,KAAK;EACd;EAEA+D,mBAAmBA,CAAC5tC,IAA0B,EAAgB;IAC3DA,IAAI,CAACmT,UAAU,CAAkByzB,cAAc,GAAG5mC,IAAI,CAAC4mC,cAAc;IAEtE,IAAI,CAACntB,gBAAgB,CAACzZ,IAAI,CAACmT,UAAU,EAAEnT,IAAI,CAAC4mC,cAAc,CAAC34B,GAAG,CAACpQ,GAAG,CAAC;IAEnE,OAAOmC,IAAI,CAACmT,UAAU;EACxB;EAEAy2B,iBAAiBA,CAAAA,EAAsC;IACrD,IAAID,QAAQ,GAAG,IAAI;IACnB,IAAI,IAAI,CAAC5X,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B4X,QAAQ,GAAG,IAAI,CAACh0B,SAAS,EAAkB;MAC3C,IAAI,IAAI,CAACyC,KAAK,CAACpL,KAAK,KAAK,GAAG,EAAE;QAC5B28B,QAAQ,CAACtpC,IAAI,GAAG,MAAM;MACxB,CAAC,MAAM;QACLspC,QAAQ,CAACtpC,IAAI,GAAG,OAAO;MACzB;MACA,IAAI,CAAC6nB,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACpS,UAAU,CAAC6zB,QAAQ,EAAE,UAAU,CAAC;IAC9C;IACA,OAAOA,QAAQ;EACjB;EAMAz0B,iBAAiBA,CACflV,IAAgB,EAChB6tC,mBAAoC,EACpCz4B,QAAiB,GAAG,KAAK,EACnB;IACN,IAAIy4B,mBAAmB,EAAE;MACvB,IAAI,CAACC,gCAAgC,CAAC9tC,IAAI,EAAE,MAC1C,KAAK,CAACkV,iBAAiB,CAAClV,IAAI,EAAE,IAAI,EAAEoV,QAAQ,CAC9C,CAAC;MACD;IACF;IAEA,KAAK,CAACF,iBAAiB,CAAClV,IAAI,EAAE,KAAK,EAAEoV,QAAQ,CAAC;EAChD;EAEA24B,0BAA0BA,CAMxB/tC,IAAe,EAAEC,IAAe,EAAEmV,QAAiB,GAAG,KAAK,EAAK;IAChE,IAAI,IAAI,CAAC2c,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAMsU,QAAQ,GAAG,IAAI,CAAC1wB,SAAS,EAAoB;MAEnD,CACE0wB,QAAQ,CAACO,cAAc,EAEvB5mC,IAAI,CAACgmC,SAAS,CACf,GAAG,IAAI,CAACD,oCAAoC,EAAE;MAE/C/lC,IAAI,CAAC2mC,UAAU,GAAGN,QAAQ,CAACO,cAAc,GACrC,IAAI,CAAC9wB,UAAU,CAACuwB,QAAQ,EAAE,gBAAgB,CAAC,GAC3C,IAAI;IACV;IAEA,OAAO,KAAK,CAAC0H,0BAA0B,CAAC/tC,IAAI,EAAEC,IAAI,EAAEmV,QAAQ,CAAC;EAC/D;EAGA44B,kBAAkBA,CAACj8B,KAAyB,EAAe;IAEzD,IAAI,IAAI,CAACqG,KAAK,CAACgP,MAAM,IAAI,IAAI,CAAC2V,YAAY,CAAc,GAAA,CAAC,EAAE;MACzD,MAAMnI,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;MAClC,IAAI1P,0BAA0B,CAAC0P,SAAS,CAAC30B,IAAI,CAAC,EAAE;QAC9C,MAAMD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;QAC9C,IAAI,CAACuS,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAAC8gB,kBAAkB,CAAChpC,IAAI,CAAC;MACtC;IACD,CAAA,MAAM,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC,MAAM/8B,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAE;MAC7B,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC+lB,wBAAwB,CAACjuC,IAAI,CAAC;IAC5C;IACA,MAAMuT,IAAI,GAAG,KAAK,CAACy6B,kBAAkB,CAACj8B,KAAK,CAAC;IAE5C,IAAI,IAAI,CAACszB,UAAU,KAAKx1B,SAAS,IAAI,CAAC,IAAI,CAACmE,gBAAgB,CAACT,IAAI,CAAC,EAAE;MACjE,IAAI,CAAC8xB,UAAU,GAAG,IAAI;IACxB;IACA,OAAO9xB,IAAI;EACb;EAGA26B,wBAAwBA,CACtBluC,IAA2B,EAC3BmuC,IAAkB,EAClBj2B,UAAgC,EACT;IACvB,IAAIi2B,IAAI,CAACluC,IAAI,KAAK,YAAY,EAAE;MAC9B,IAAIkuC,IAAI,CAAChoC,IAAI,KAAK,SAAS,EAAE;QAC3B,IACE,IAAI,CAAC4rB,KAAK,CAAA,EAAU,CAAC,IACrB/M,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IAClC,IAAI,CAAC8xB,KAAK,CAAa,EAAA,CAAC,IACxB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IACnB,IAAI,CAACA,KAAK,CAAA,EAAW,CAAC,EACtB;UAEA,OAAO,IAAI,CAAC8U,gBAAgB,CAAC7mC,IAAI,CAAC;QACpC;MACD,CAAA,MAAM,IAAIglB,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;QAC7C,IAAIkuC,IAAI,CAAChoC,IAAI,KAAK,WAAW,EAAE;UAE7B,OAAO,IAAI,CAAC6iC,kBAAkB,CAAChpC,IAAI,CAAC;QACtC,CAAC,MAAM,IAAImuC,IAAI,CAAChoC,IAAI,KAAK,MAAM,EAAE;UAE/B,OAAO,IAAI,CAAC6hC,kBAAkB,CAAChoC,IAAI,CAAC;QACtC,CAAC,MAAM,IAAImuC,IAAI,CAAChoC,IAAI,KAAK,QAAQ,EAAE;UAEjC,OAAO,IAAI,CAAC8hC,mBAAmB,CAACjoC,IAAI,EAAE,KAAK,CAAC;QAC9C;MACF;IACF;IAEA,OAAO,KAAK,CAACkuC,wBAAwB,CAACluC,IAAI,EAAEmuC,IAAI,EAAEj2B,UAAU,CAAC;EAC/D;EAGAk2B,4BAA4BA,CAAAA,EAAY;IACtC,MAAM;MAAEnuC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,KAAa,GAAA,IAAIslB,kCAAkC,CAACtlB,IAAI,CAAC,EAAE;MACjE,OAAO,CAAC,IAAI,CAACmY,KAAK,CAAC0X,WAAW;IAChC;IACA,OAAO,KAAK,CAACse,4BAA4B,EAAE;EAC7C;EAEAC,wBAAwBA,CAAAA,EAAY;IAClC,MAAM;MAAEpuC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,KAAa,GAAA,IAAIslB,kCAAkC,CAACtlB,IAAI,CAAC,EAAE;MACjE,OAAO,IAAI,CAACmY,KAAK,CAAC0X,WAAW;IAC/B;IAEA,OAAO,KAAK,CAACue,wBAAwB,EAAE;EACzC;EAEAC,4BAA4BA,CAAAA,EAAG;IAC7B,IAAI,IAAI,CAACvR,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,MAAM/8B,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAE;MAC7B,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC+lB,wBAAwB,CAACjuC,IAAI,CAAC;IAC5C;IACA,OAAO,KAAK,CAACsuC,4BAA4B,EAAE;EAC7C;EAEAC,gBAAgBA,CACdJ,IAAkB,EAElBz3B,QAAkB,EAClBC,mBAA6C,EAC/B;IACd,IAAI,CAAC,IAAI,CAACob,KAAK,GAAY,CAAC,EAAE,OAAOoc,IAAI;IAEzC,IAAI,IAAI,CAAC/1B,KAAK,CAACgX,sBAAsB,EAAE;MACrC,MAAM+N,MAAM,GAAG,IAAI,CAACjI,iBAAiB,EAAE;MAIvC,IACEiI,MAAM,KAAoB,EAAA,IAC1BA,MAAM,KAAA,EAAuB,IAC7BA,MAAM,KAAoB,EAAA,IAC1BA,MAAM,KAAA,EAA+B,EACrC;QAEA,IAAI,CAACqR,0BAA0B,CAAC73B,mBAAmB,CAAC;QACpD,OAAOw3B,IAAI;MACb;IACF;IAEA,IAAI,CAACtQ,MAAM,CAAA,EAAY,CAAC;IACxB,MAAMzlB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,CAAA,CAAE;IAChC,MAAMmgC,iBAAiB,GAAG,IAAI,CAACr2B,KAAK,CAACoW,SAAS;IAC9C,MAAMxuB,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA0BhqB,QAAQ,CAAC;IAChE,IAAI;MAAEg4B,UAAU;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACC,6BAA6B,EAAE;IACjE,IAAI,CAACC,KAAK,EAAEhc,OAAO,CAAC,GAAG,IAAI,CAACic,uBAAuB,CAACJ,UAAU,CAAC;IAE/D,IAAIC,MAAM,IAAI9b,OAAO,CAACra,MAAM,GAAG,CAAC,EAAE;MAChC,MAAMgW,SAAS,GAAG,CAAC,GAAGigB,iBAAiB,CAAC;MAExC,IAAI5b,OAAO,CAACra,MAAM,GAAG,CAAC,EAAE;QACtB,IAAI,CAACJ,KAAK,GAAGA,KAAK;QAClB,IAAI,CAACA,KAAK,CAACoW,SAAS,GAAGA,SAAS;QAEhC,KAAK,IAAI1H,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+L,OAAO,CAACra,MAAM,EAAEsO,CAAC,EAAE,EAAE;UACvC0H,SAAS,CAAC3S,IAAI,CAACgX,OAAO,CAAC/L,CAAC,CAAC,CAAClpB,KAAK,CAAC;QAClC;QAEA,CAAC;UAAE8wC,UAAU;UAAEC;QAAO,CAAC,GAAG,IAAI,CAACC,6BAA6B,EAAE;QAC9D,CAACC,KAAK,EAAEhc,OAAO,CAAC,GAAG,IAAI,CAACic,uBAAuB,CAACJ,UAAU,CAAC;MAC7D;MAEA,IAAIC,MAAM,IAAIE,KAAK,CAACr2B,MAAM,GAAG,CAAC,EAAE;QAM9B,IAAI,CAACjB,KAAK,CAACupB,UAAU,CAACC,yBAAyB,EAAE3oB,KAAK,CAAC1B,QAAQ,CAAC;MAClE;MAEA,IAAIi4B,MAAM,IAAIE,KAAK,CAACr2B,MAAM,KAAK,CAAC,EAAE;QAChC,IAAI,CAACJ,KAAK,GAAGA,KAAK;QAClBoW,SAAS,CAAC3S,IAAI,CAACgzB,KAAK,CAAC,CAAC,CAAC,CAACjxC,KAAK,CAAC;QAC9B,IAAI,CAACwa,KAAK,CAACoW,SAAS,GAAGA,SAAS;QAChC,CAAC;UAAEkgB,UAAU;UAAEC;QAAO,CAAC,GAAG,IAAI,CAACC,6BAA6B,EAAE;MAChE;IACF;IAEA,IAAI,CAACE,uBAAuB,CAACJ,UAAU,EAAE,IAAI,CAAC;IAE9C,IAAI,CAACt2B,KAAK,CAACoW,SAAS,GAAGigB,iBAAiB;IACxC,IAAI,CAAC5Q,MAAM,CAAA,EAAS,CAAC;IAErB79B,IAAI,CAACgnB,IAAI,GAAGmnB,IAAI;IAChBnuC,IAAI,CAAC0uC,UAAU,GAAGA,UAAU;IAC5B1uC,IAAI,CAAC+uC,SAAS,GAAG,IAAI,CAACjB,gCAAgC,CAAC9tC,IAAI,EAAE,MAC3D,IAAI,CAACgvC,gBAAgB,CAACn/B,SAAS,EAAEA,SAAS,CAC5C,CAAC;IAED,OAAO,IAAI,CAACiG,UAAU,CAAC9V,IAAI,EAAE,uBAAuB,CAAC;EACvD;EAEA4uC,6BAA6BA,CAAAA,EAG3B;IACA,IAAI,CAACx2B,KAAK,CAACqW,yBAAyB,CAAC5S,IAAI,CAAC,IAAI,CAACzD,KAAK,CAACxa,KAAK,CAAC;IAE3D,MAAM8wC,UAAU,GAAG,IAAI,CAACO,uBAAuB,EAAE;IACjD,MAAMN,MAAM,GAAG,CAAC,IAAI,CAAC5c,KAAK,GAAS,CAAC;IAEpC,IAAI,CAAC3Z,KAAK,CAACqW,yBAAyB,CAACpI,GAAG,EAAE;IAE1C,OAAO;MAAEqoB,UAAU;MAAEC;KAAQ;EAC/B;EASAG,uBAAuBA,CACrB9uC,IAAkB,EAClBkvC,eAAyB,EACmC;IAC5D,MAAM5U,KAAK,GAAG,CAACt6B,IAAI,CAAC;IACpB,MAAMmvC,MAAmC,GAAG,EAAE;IAE9C,OAAO7U,KAAK,CAAC9hB,MAAM,KAAK,CAAC,EAAE;MACzB,MAAMxY,IAAI,GAAGs6B,KAAK,CAACjU,GAAG,EAAE;MACxB,IACErmB,IAAI,CAACC,IAAI,KAAK,yBAAyB,IACvCD,IAAI,CAAC0U,IAAI,CAACzU,IAAI,KAAK,gBAAgB,EACnC;QACA,IAAID,IAAI,CAAC4V,cAAc,IAAI,CAAC5V,IAAI,CAAC2mC,UAAU,EAAE;UAE3C,IAAI,CAACyI,qBAAqB,CAACpvC,IAAI,CAAC;QAClC,CAAC,MAAM;UACLmvC,MAAM,CAACtzB,IAAI,CAAC7b,IAAI,CAAC;QACnB;QACAs6B,KAAK,CAACze,IAAI,CAAC7b,IAAI,CAAC0U,IAAI,CAAC;MACvB,CAAC,MAAM,IAAI1U,IAAI,CAACC,IAAI,KAAK,uBAAuB,EAAE;QAChDq6B,KAAK,CAACze,IAAI,CAAC7b,IAAI,CAAC0uC,UAAU,CAAC;QAC3BpU,KAAK,CAACze,IAAI,CAAC7b,IAAI,CAAC+uC,SAAS,CAAC;MAC5B;IACF;IAEA,IAAIG,eAAe,EAAE;MACnBC,MAAM,CAACzZ,OAAO,CAAC11B,IAAI,IAAI,IAAI,CAACovC,qBAAqB,CAACpvC,IAAI,CAAC,CAAC;MACxD,OAAO,CAACmvC,MAAM,EAAE,EAAE,CAAC;IACrB;IAEA,OAAOrK,SAAS,CAACqK,MAAM,EAAEnvC,IAAI,IAC3BA,IAAI,CAAC+T,MAAM,CAACs7B,KAAK,CAAC7B,KAAK,IAAI,IAAI,CAACz2B,YAAY,CAACy2B,KAAK,EAAE,IAAI,CAAC,CAC3D,CAAC;EACH;EAEA4B,qBAAqBA,CAACpvC,IAA+B,EAAE;IAAA,IAAAsvC,WAAA;IACrD,IAAI,CAACC,gBAAgB,CAGnBvvC,IAAI,CAAC+T,MAAM,GAAAu7B,WAAA,GACXtvC,IAAI,CAACqT,KAAK,KAAVi8B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAA,CAAYE,gBAAgB,EAChB,KACd,CAAC;IAED,IAAI,CAAC3lB,KAAK,CAACF,KAAK,CAACL,KAAoC,CAAC;IAEtD,KAAK,CAACmmB,WAAW,CAACzvC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;IACpC,IAAI,CAAC6pB,KAAK,CAACD,IAAI,EAAE;EACnB;EAEAkkB,gCAAgCA,CAC9B9tC,IAAoB,EACpB0R,KAAc,EACX;IACH,IAAIg+B,MAAS;IACb,IACE,IAAI,CAACt3B,KAAK,CAACqW,yBAAyB,CAACgK,QAAQ,CAC3C,IAAI,CAAC1N,iBAAiB,CAAC/qB,IAAI,CAACpC,KAAK,CACnC,CAAC,EACD;MACA,IAAI,CAACwa,KAAK,CAACqW,yBAAyB,CAAC5S,IAAI,CAAC,IAAI,CAACzD,KAAK,CAACxa,KAAK,CAAC;MAC3D8xC,MAAM,GAAGh+B,KAAK,CAAA,CAAE;MAChB,IAAI,CAAC0G,KAAK,CAACqW,yBAAyB,CAACpI,GAAG,EAAE;IAC5C,CAAC,MAAM;MACLqpB,MAAM,GAAGh+B,KAAK,CAAA,CAAE;IAClB;IAEA,OAAOg+B,MAAM;EACf;EAEAC,cAAcA,CACZ3vC,IAAO,EACP0W,QAAkB,EACiC;IACnD,MAAMwpB,OAAO,GAAG,KAAK,CAACyP,cAAc,CAAC3vC,IAAI,EAAE0W,QAAQ,CAAC;IACpD,IAAI,IAAI,CAAC+d,GAAG,CAAA,EAAY,CAAC,EAAE;MACxByL,OAAO,CAAkBxoB,QAAQ,GAAG,IAAI;MAIzC,IAAI,CAAC+B,gBAAgB,CAACzZ,IAAI,CAAC;IAC7B;IAEA,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAM6d,YAAY,GAAG,IAAI,CAAClP,WAAW,CAAuBhqB,QAAQ,CAAC;MACrEk5B,YAAY,CAACz8B,UAAU,GAAG+sB,OAAuB;MACjD0P,YAAY,CAAChJ,cAAc,GAAG,IAAI,CAACkB,uBAAuB,EAAE;MAE5D,OAAO,IAAI,CAAChyB,UAAU,CAAC85B,YAAY,EAAE,oBAAoB,CAAC;IAC5D;IAEA,OAAO1P,OAAO;EAChB;EAEA2P,uBAAuBA,CAAC7vC,IAAY,EAAE;IACpC,IACGA,IAAI,CAACC,IAAI,KAAK,mBAAmB,KAC/BD,IAAI,CAACykC,UAAU,KAAK,MAAM,IAAIzkC,IAAI,CAACykC,UAAU,KAAK,QAAQ,CAAC,IAC7DzkC,IAAI,CAACC,IAAI,KAAK,wBAAwB,IACrCD,IAAI,CAAC6nC,UAAU,KAAK,MAAO,IAC5B7nC,IAAI,CAACC,IAAI,KAAK,sBAAsB,IAAID,IAAI,CAAC6nC,UAAU,KAAK,MAAO,EACpE;MAGA;IACF;IAEA,KAAK,CAACgI,uBAAuB,CAAC7vC,IAAI,CAAC;EACrC;EAEA8vC,sBAAsBA,CACpB9vC,IAA8B,EACI;IAClC,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B/8B,IAAI,CAAC6nC,UAAU,GAAG,MAAM;MAExB,MAAMkI,eAAe,GAAG,IAAI,CAACp6B,SAAS,EAAE;MACxC,IAAI,CAACuS,IAAI,CAAA,CAAE;MAEX,IAAI,IAAI,CAAC6J,KAAK,CAAA,CAAU,CAAC,EAAE;QAEzB/xB,IAAI,CAACuY,UAAU,GAAG,IAAI,CAACy3B,qBAAqB,CACrB,IACvB,CAAC;QACD,KAAK,CAACC,eAAe,CAACjwC,IAAI,CAAC;QAC3B,OAAO,IAAI;MACb,CAAC,MAAM;QAGL,OAAO,IAAI,CAACgoC,kBAAkB,CAAC+H,eAAe,CAAC;MACjD;IACD,CAAA,MAAM,IAAI,IAAI,CAAChT,YAAY,CAAA,GAAW,CAAC,EAAE;MACxC/8B,IAAI,CAAC6nC,UAAU,GAAG,MAAM;MAExB,MAAMkI,eAAe,GAAG,IAAI,CAACp6B,SAAS,EAAE;MACxC,IAAI,CAACuS,IAAI,CAAA,CAAE;MAGX,OAAO,IAAI,CAAC+f,mBAAmB,CAAC8H,eAAe,EAAE,KAAK,CAAC;IACxD,CAAA,MAAM,IAAI,IAAI,CAAChT,YAAY,CAAA,GAAc,CAAC,EAAE;MAC3C/8B,IAAI,CAAC6nC,UAAU,GAAG,MAAM;MACxB,MAAMkI,eAAe,GAAG,IAAI,CAACp6B,SAAS,EAAE;MACxC,IAAI,CAACuS,IAAI,CAAA,CAAE;MAEX,OAAO,IAAI,CAAC8gB,kBAAkB,CAAC+G,eAAe,CAAC;IAChD,CAAA,MAAM,IAAI,IAAI,CAAChT,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC/8B,IAAI,CAAC6nC,UAAU,GAAG,OAAO;MACzB,MAAMkI,eAAe,GAAG,IAAI,CAACp6B,SAAS,EAAE;MACxC,IAAI,CAACuS,IAAI,CAAA,CAAE;MAEX,OAAO,IAAI,CAAC+lB,wBAAwB,CAAC8B,eAAe,CAAC;IACvD,CAAC,MAAM;MACL,OAAO,KAAK,CAACD,sBAAsB,CAAC9vC,IAAI,CAAC;IAC3C;EACF;EAEAkwC,aAAaA,CACXlwC,IAAoB,EAC+C;IACnE,IAAI,KAAK,CAACkwC,aAAa,CAAClwC,IAAI,CAAC,EAAE,OAAO,IAAI;IAE1C,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAS,CAAC,IAAI,IAAI,CAACnI,SAAS,CAAE,CAAA,CAAC30B,IAAI,OAAY,EAAE;MAElED,IAAI,CACJ6nC,UAAU,GAAG,MAAM;MACrB,IAAI,CAAC3f,IAAI,CAAA,CAAE;MACX,IAAI,CAACA,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEAioB,kCAAkCA,CAChCnwC,IAA+D,EACrB;IAC1C,MAAM;MAAE0W;KAAU,GAAG,IAAI,CAAC0B,KAAK;IAC/B,MAAMg4B,YAAY,GAAG,KAAK,CAACD,kCAAkC,CAACnwC,IAAI,CAAC;IACnE,IAAIowC,YAAY,IAAIpwC,IAAI,CAAC6nC,UAAU,KAAK,MAAM,EAAE;MAC9C,IAAI,CAAC3iC,UAAU,CAACwR,QAAQ,CAAC;IAC3B;IACA,OAAO05B,YAAY;EACrB;EAEAC,YAAYA,CACVrwC,IAAa,EACbswC,WAAoB,EACpBC,UAA2B,EAC3B;IACA,KAAK,CAACF,YAAY,CAACrwC,IAAI,EAAEswC,WAAW,EAAEC,UAAU,CAAC;IACjD,IAAI,IAAI,CAACxe,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAChE;EACF;EAEAiK,gBAAgBA,CACdC,SAAsB,EACtBC,MAAW,EACXt4B,KAA8B,EACxB;IACN,MAAM;MAAE1B;KAAU,GAAG,IAAI,CAAC0B,KAAK;IAC/B,IAAI,IAAI,CAAC2kB,YAAY,CAAA,GAAY,CAAC,EAAE;MAClC,IAAI,KAAK,CAAC4T,4BAA4B,CAACF,SAAS,EAAEC,MAAM,CAAC,EAAE;QAEzD;MACF;MAEAA,MAAM,CAACrH,OAAO,GAAG,IAAI;IACvB;IAEA,KAAK,CAACmH,gBAAgB,CAACC,SAAS,EAAEC,MAAM,EAAEt4B,KAAK,CAAC;IAEhD,IAAIs4B,MAAM,CAACrH,OAAO,EAAE;MAClB,IACEqH,MAAM,CAACzwC,IAAI,KAAK,eAAe,IAC/BywC,MAAM,CAACzwC,IAAI,KAAK,sBAAsB,IACtCywC,MAAM,CAACzwC,IAAI,KAAK,oBAAoB,EACpC;QACA,IAAI,CAACsX,KAAK,CAACupB,UAAU,CAACK,mBAAmB,EAAEzqB,QAAQ,CAAC;MACtD,CAAC,MAAM,IAAIg6B,MAAM,CAAC1jC,KAAK,EAAE;QACvB,IAAI,CAACuK,KAAK,CAACupB,UAAU,CAACM,4BAA4B,EAAEsP,MAAM,CAAC1jC,KAAK,CAAC;MACnE;IACF;EACF;EAEA4jC,UAAUA,CAACnpB,IAAY,EAAW;IAChC,OAAOA,IAAI,KAAK,UAAU,IAAIA,IAAI,KAAK,eAAe;EACxD;EAEAopB,YAAYA,CAAAA,EAAS;IACnB,MAAMppB,IAAI,GAAG,KAAK,CAACmP,SAAS,EAAE;IAC9B,MAAMka,QAAQ,GAAG,IAAI,GAAGrpB,IAAI;IAG5B,IAAI,CAAC,IAAI,CAACmpB,UAAU,CAACnpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAACrP,KAAK,CAACiX,MAAM,EAAE;MAChD,IAAI,CAAC9X,KAAK,CAAC9H,MAAM,CAAC/K,iBAAiB,EAAE,IAAI,CAAC0T,KAAK,CAAC4X,WAAW,EAAE,EAAE;QAC7DjyB,cAAc,EAAE+yC;MAClB,CAAC,CAAC;IACJ;IAEA,IAAI,CAAChb,WAAW,CAAUgb,GAAAA,EAAAA,QAAQ,CAAC;EACrC;EAGA/a,gBAAgBA,CAAC53B,IAAY,EAAQ;IACnC,MAAM+pB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,IAAIlQ,IAAI,KAAA,GAA6B,IAAI+pB,IAAI,QAA0B,EAAE;MACvE,IAAI,CAAC2O,QAAQ,CAAe,CAAA,EAAA,CAAC,CAAC;IAChC,CAAC,MAAM,IACL,IAAI,CAACze,KAAK,CAACiX,MAAM,KAChBlxB,IAAI,KAA0B,EAAA,IAAIA,IAAI,KAAA,EAAuB,CAAC,EAC/D;MACA,IAAI,CAAC04B,QAAQ,CAAC14B,IAAI,OAA0B,GAAgB,EAAA,GAAA,EAAA,EAAE,CAAC,CAAC;IACjE,CAAA,MAAM,IAAI,IAAI,CAACia,KAAK,CAACiX,MAAM,IAAIlxB,IAAI,KAAA,EAA2B,EAAE;MAC/D,IAAI+pB,IAAI,OAAkB,EAAE;QAC1B,IAAI,CAAC2O,QAAQ,CAAiB,EAAA,EAAA,CAAC,CAAC;MAClC,CAAC,MAAM;QAEL,IAAI,CAACA,QAAQ,CAAc,EAAA,EAAA,CAAC,CAAC;MAC/B;IACD,CAAA,MAAM,IACL7O,eAAe,CAAC7pB,IAAI,EAAE+pB,IAAI,EAAE,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,CAAC,EACtE;MACA,IAAI,CAAC+J,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACwiC,YAAY,CAAA,CAAE;IACrB,CAAC,MAAM;MACL,KAAK,CAAC9a,gBAAgB,CAAC53B,IAAI,CAAC;IAC9B;EACF;EAEA4Y,YAAYA,CAAC/W,IAAY,EAAEgX,SAAmB,EAAW;IACvD,IAAIhX,IAAI,CAACC,IAAI,KAAK,oBAAoB,EAAE;MACtC,OAAO,IAAI,CAAC8W,YAAY,CAAC/W,IAAI,CAACmT,UAAU,EAAE6D,SAAS,CAAC;IACtD,CAAC,MAAM;MACL,OAAO,KAAK,CAACD,YAAY,CAAC/W,IAAI,EAAEgX,SAAS,CAAC;IAC5C;EACF;EAEAC,YAAYA,CAACjX,IAAY,EAAEkX,KAAc,GAAG,KAAK,EAAQ;IACvD,IACE,CAACA,KAAK,IACNlX,IAAI,CAACC,IAAI,KAAK,sBAAsB,IACpCD,IAAI,CAAC+wC,IAAI,CAAC9wC,IAAI,KAAK,oBAAoB,EACvC;MACAD,IAAI,CAAC+wC,IAAI,GAAG,IAAI,CAACnD,mBAAmB,CAAC5tC,IAAI,CAAC+wC,IAAI,CAAiB;IACjE;IACA,KAAK,CAAC95B,YAAY,CAACjX,IAAI,EAAEkX,KAAK,CAAC;EACjC;EAGAq4B,gBAAgBA,CACdyB,QAAwB,EACxBxB,gBAA6C,EAC7Ct4B,KAAc,EACR;IACN,KAAK,IAAI4P,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkqB,QAAQ,CAACx4B,MAAM,EAAEsO,CAAC,EAAE,EAAE;MACxC,MAAMqnB,IAAI,GAAG6C,QAAQ,CAAClqB,CAAC,CAAC;MACxB,IAAI,CAAAqnB,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEluC,IAAI,MAAK,oBAAoB,EAAE;QACvC+wC,QAAQ,CAAClqB,CAAC,CAAC,GAAG,IAAI,CAAC8mB,mBAAmB,CAACO,IAAI,CAAC;MAC9C;IACF;IACA,KAAK,CAACoB,gBAAgB,CAACyB,QAAQ,EAAExB,gBAAgB,EAAEt4B,KAAK,CAAC;EAC3D;EAIA+5B,gBAAgBA,CACdD,QAE+C,EAC/CE,mBAA6B,EAGiB;IAC9C,KAAK,IAAIpqB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkqB,QAAQ,CAACx4B,MAAM,EAAEsO,CAAC,EAAE,EAAE;MAAA,IAAAqqB,WAAA;MACxC,MAAMhD,IAAI,GAAG6C,QAAQ,CAAClqB,CAAC,CAAC;MACxB,IACEqnB,IAAI,IACJA,IAAI,CAACluC,IAAI,KAAK,oBAAoB,IAClC,EAAAkxC,CAAAA,WAAA,GAAChD,IAAI,CAAC96B,KAAK,KAAV89B,IAAAA,IAAAA,WAAA,CAAYj9B,aAAa,CACzB88B,KAAAA,QAAQ,CAACx4B,MAAM,GAAG,CAAC,IAAI,CAAC04B,mBAAmB,CAAC,EAC7C;QACA,IAAI,CAAC35B,KAAK,CAACupB,UAAU,CAAC2C,iBAAiB,EAAE0K,IAAI,CAACvH,cAAc,CAAC;MAC/D;IACF;IAEA,OAAOoK,QAAQ;EACjB;EAEAI,cAAcA,CACZC,KAAgB,EAChBC,YAAqB,EACrBC,OAAgB,EAChB56B,mBAA6C,EACN;IACvC,MAAM3W,IAAI,GAAG,KAAK,CAACoxC,cAAc,CAC/BC,KAAK,EACLC,YAAY,EACZC,OAAO,EACP56B,mBACF,CAAC;IAOD,IAAI26B,YAAY,IAAI,CAAC,IAAI,CAACl5B,KAAK,CAACgX,sBAAsB,EAAE;MACtD,IAAI,CAAC6hB,gBAAgB,CAACjxC,IAAI,CAACisB,QAAQ,CAAC;IACtC;IAEA,OAAOjsB,IAAI;EACb;EAEA4W,WAAWA,CAAC3W,IAAY,EAAEuxC,eAAwB,EAAE16B,OAAoB,EAAE;IACxE,OACE7W,IAAI,KAAK,oBAAoB,IAC7B,KAAK,CAAC2W,WAAW,CAAC3W,IAAI,EAAEuxC,eAAe,EAAE16B,OAAO,CAAC;EAErD;EAGAd,kBAAkBA,CAAChW,IAAqB,EAAmB;IACzD,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/xB,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAACkB,uBAAuB,EAAE;IACtD;IACA,OAAO,KAAK,CAAC9xB,kBAAkB,CAAChW,IAAI,CAAC;EACvC;EAEAmW,yBAAyBA,CACvBnW,IAA4B,EACJ;IACxB,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/xB,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAACkB,uBAAuB,EAAE;IACtD;IACA,OAAO,KAAK,CAAC3xB,yBAAyB,CAACnW,IAAI,CAAC;EAC9C;EAGAyxC,aAAaA,CAAAA,EAAY;IACvB,OAAO,IAAI,CAAC1f,KAAK,CAAM,EAAA,CAAC,IAAI,KAAK,CAAC0f,aAAa,CAAA,CAAE;EACnD;EAGAC,eAAeA,CAAAA,EAAY;IACzB,OAAO,IAAI,CAAC3f,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAAC2f,eAAe,CAAA,CAAE;EACxD;EAEAC,sBAAsBA,CAAC79B,MAAuC,EAAW;IACvE,OAAO,CAAC,IAAI,CAACie,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAAC4f,sBAAsB,CAAC79B,MAAM,CAAC;EACtE;EAGA89B,eAAeA,CACbnB,SAAsB,EACtB38B,MAAqB,EACrBwB,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBs8B,iBAA0B,EACpB;IACN,IAAK/9B,MAAM,CAAS61B,QAAQ,EAAE;MAC5B,IAAI,CAACzkC,UAAU,CAAE4O,MAAM,CAAS61B,QAAQ,CAAC17B,GAAG,CAACrQ,KAAK,CAAC;IACrD;IACA,OAAQkW,MAAM,CAAS61B,QAAQ;IAC/B,IAAI,IAAI,CAAC5X,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBje,MAAM,CAAC8B,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAClE;IAEA,KAAK,CAACqL,eAAe,CACnBnB,SAAS,EACT38B,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACbs8B,iBACF,CAAC;IAED,IAAI/9B,MAAM,CAACC,MAAM,IAAIwB,aAAa,EAAE;MAClC,MAAMxB,MAAM,GAAGD,MAAM,CAACC,MAAM;MAC5B,IAAIA,MAAM,CAACyE,MAAM,GAAG,CAAC,IAAI,IAAI,CAACs5B,WAAW,CAAC/9B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,IAAI,CAACwD,KAAK,CAACupB,UAAU,CAACsC,4BAA4B,EAAEtvB,MAAM,CAAC;MAC7D;IAEF,CAAC,MAAM,IAELA,MAAM,CAAC7T,IAAI,KAAK,kBAAkB,IAClCsV,aAAa,IAEbzB,MAAM,CAAC9G,KAAK,CAAC+G,MAAM,EACnB;MAEA,MAAMA,MAAM,GAAGD,MAAM,CAAC9G,KAAK,CAAC+G,MAAM;MAClC,IAAIA,MAAM,CAACyE,MAAM,GAAG,CAAC,IAAI,IAAI,CAACs5B,WAAW,CAAC/9B,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,IAAI,CAACwD,KAAK,CAACupB,UAAU,CAACsC,4BAA4B,EAAEtvB,MAAM,CAAC;MAC7D;IACF;EACF;EAEAi+B,sBAAsBA,CACpBtB,SAAsB,EACtB38B,MAA4B,EAC5BwB,WAAoB,EACpB5B,OAAgB,EACV;IACN,IAAKI,MAAM,CAAS61B,QAAQ,EAAE;MAC5B,IAAI,CAACzkC,UAAU,CAAE4O,MAAM,CAAS61B,QAAQ,CAAC17B,GAAG,CAACrQ,KAAK,CAAC;IACrD;IACA,OAAQkW,MAAM,CAAS61B,QAAQ;IAC/B,IAAI,IAAI,CAAC5X,KAAK,CAAA,EAAM,CAAC,EAAE;MACrBje,MAAM,CAAC8B,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAClE;IAEA,KAAK,CAACwL,sBAAsB,CAACtB,SAAS,EAAE38B,MAAM,EAAEwB,WAAW,EAAE5B,OAAO,CAAC;EACvE;EAGAs+B,eAAeA,CAAChyC,IAAa,EAAQ;IACnC,KAAK,CAACgyC,eAAe,CAAChyC,IAAI,CAAC;IAC3B,IACEA,IAAI,CAACwR,UAAU,KACd,IAAI,CAACugB,KAAK,CAAA,EAAM,CAAC,IAEhB,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,CAAC,EAC3B;MAIO;QACL/xB,IAAI,CAACiyC,mBAAmB,GACtB,IAAI,CAAC7H,+CAA+C,EAAE;MAC1D;IACF;IACA,IAAI,IAAI,CAACrN,YAAY,CAAA,GAAe,CAAC,EAAE;MACrC,IAAI,CAAC7U,IAAI,CAAA,CAAE;MACX,MAAMgqB,WAAoC,GAAIlyC,IAAI,CAACsoC,UAAU,GAAG,EAAG;MACnE,GAAG;QACD,MAAMtoC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAyB;QACpD3V,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACmzB,6BAA6B,CAAa,IAAI,CAAC;QAC9D,IAAI,IAAI,CAACpW,KAAK,CAAA,EAAM,CAAC,EAAE;UACrB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAACmzB,mCAAmC,EAAE;QAClE,CAAC,MAAM;UACL/oC,IAAI,CAAC4V,cAAc,GAAG,IAAI;QAC5B;QACAs8B,WAAW,CAACr2B,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC,CAAC;MAC5D,CAAC,QAAQ,IAAI,CAACy0B,GAAG,GAAS,CAAC;IAC7B;EACF;EAEA0d,uBAAuBA,CAACr+B,MAAsC,EAAQ;IACpE,KAAK,CAACq+B,uBAAuB,CAACr+B,MAAM,CAAC;IACrC,MAAMC,MAAM,GAAG,IAAI,CAACF,4BAA4B,CAACC,MAAM,CAAC;IACxD,IAAIC,MAAM,CAACyE,MAAM,GAAG,CAAC,EAAE;MACrB,MAAMg1B,KAAK,GAAGz5B,MAAM,CAAC,CAAC,CAAC;MACvB,IAAI,IAAI,CAAC+9B,WAAW,CAACtE,KAAK,CAAC,IAAI15B,MAAM,CAACzT,IAAI,KAAK,KAAK,EAAE;QACpD,IAAI,CAACkX,KAAK,CAACupB,UAAU,CAACwB,yBAAyB,EAAEkL,KAAK,CAAC;MACxD,CAAA,MAAM,IAAI,IAAI,CAACsE,WAAW,CAACtE,KAAK,CAAC,EAAE;QAClC,IAAI,CAACj2B,KAAK,CAACupB,UAAU,CAACmC,yBAAyB,EAAEuK,KAAK,CAAC;MACzD;IACF;EACF;EAEA4E,+BAA+BA,CAC7BpyC,IAA2C,EACrC;IACNA,IAAI,CAAC2pC,QAAQ,GAAG,IAAI,CAACC,iBAAiB,EAAE;EAC1C;EAGAyI,iBAAiBA,CACfh8B,IAAe,EACfK,QAAqC,EACrCpB,WAAoB,EACpB5B,OAAgB,EAChB4C,SAAkB,EAClBC,UAAmB,EACnBI,mBAA6C,EAC1C;IACH,IAAKN,IAAI,CAASszB,QAAQ,EAAE;MAC1B,IAAI,CAACzkC,UAAU,CAAEmR,IAAI,CAASszB,QAAQ,CAAC17B,GAAG,CAACrQ,KAAK,CAAC;IACnD;IACA,OAAQyY,IAAI,CAASszB,QAAQ;IAE7B,IAAI/zB,cAAc;IAGlB,IAAI,IAAI,CAACmc,KAAK,CAAA,EAAM,CAAC,IAAI,CAACxb,UAAU,EAAE;MACpCX,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;MACzD,IAAI,CAAC,IAAI,CAACxU,KAAK,CAAA,EAAU,CAAC,EAAE,IAAI,CAAC7sB,UAAU,EAAE;IAC/C;IAEA,MAAMwqC,MAAM,GAAG,KAAK,CAAC2C,iBAAiB,CACpCh8B,IAAI,EACJK,QAAQ,EACRpB,WAAW,EACX5B,OAAO,EACP4C,SAAS,EACTC,UAAU,EACVI,mBACF,CAAC;IAGD,IAAIf,cAAc,EAAE;MAElB,CAAC85B,MAAM,CAAC1iC,KAAK,IAAI0iC,MAAM,EAAE95B,cAAc,GAAGA,cAAc;IAC1D;IACA,OAAO85B,MAAM;EACf;EAEA4C,sBAAsBA,CAAC9E,KAAgB,EAAa;IAClD,IAAI,IAAI,CAAC/Y,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,IAAI+Y,KAAK,CAACvtC,IAAI,KAAK,YAAY,EAAE;QAC/B,IAAI,CAACsX,KAAK,CAACupB,UAAU,CAACkC,iBAAiB,EAAEwK,KAAK,CAAC;MACjD;MACA,IAAI,IAAI,CAACsE,WAAW,CAACtE,KAAK,CAAC,EAAE;QAC3B,IAAI,CAACj2B,KAAK,CAACupB,UAAU,CAACuC,yBAAyB,EAAEmK,KAAK,CAAC;MACzD;MAECA,KAAK,CAAyB91B,QAAQ,GAAG,IAAI;IAChD;IACA,IAAI,IAAI,CAACqa,KAAK,CAAA,EAAS,CAAC,EAAE;MACxByb,KAAK,CAAC5G,cAAc,GAAG,IAAI,CAACkB,uBAAuB,EAAE;IACtD,CAAA,MAAM,IAAI,IAAI,CAACgK,WAAW,CAACtE,KAAK,CAAC,EAAE;MAClC,IAAI,CAACj2B,KAAK,CAACupB,UAAU,CAACqC,2BAA2B,EAAEqK,KAAK,CAAC;IAC3D;IAEA,IAAI,IAAI,CAACzb,KAAK,CAAA,EAAM,CAAC,IAAI,IAAI,CAAC+f,WAAW,CAACtE,KAAK,CAAC,EAAE;MAChD,IAAI,CAACj2B,KAAK,CAACupB,UAAU,CAACyC,kBAAkB,EAAEiK,KAAK,CAAC;IAClD;IAEA,IAAI,CAAC/zB,gBAAgB,CAAC+zB,KAAK,CAAC;IAC5B,OAAOA,KAAK;EACd;EAEA+E,iBAAiBA,CACf77B,QAA0B,EAC1Bq6B,IAAuB,EACZ;IACX,MAAM/wC,IAAI,GAAG,KAAK,CAACuyC,iBAAiB,CAAC77B,QAAQ,EAAEq6B,IAAI,CAAC;IAEpD,IACE/wC,IAAI,CAACC,IAAI,KAAK,mBAAmB,IACjCD,IAAI,CAAC4mC,cAAc,IACnB5mC,IAAI,CAACopC,KAAK,CAACxrC,KAAK,GAAGoC,IAAI,CAAC4mC,cAAc,CAAChpC,KAAK,EAC5C;MACA,IAAI,CAAC2Z,KAAK,CAACupB,UAAU,CAAC0C,qBAAqB,EAAExjC,IAAI,CAAC4mC,cAAc,CAAC;IACnE;IAEA,OAAO5mC,IAAI;EACb;EAEAwyC,qBAAqBA,CAACxyC,IAAiC,EAAE;IACvD,KAAK,CAACwyC,qBAAqB,CAACxyC,IAAI,CAAC;IACjC,IAAIA,IAAI,CAACyyC,MAAM,IAAIzyC,IAAI,CAACykC,UAAU,KAAK,OAAO,EAAE;MAC9C,IAAI,CAACltB,KAAK,CACRupB,UAAU,CAACyB,6BAA6B,EACxCviC,IAAI,CAACuY,UAAU,CAAC,CAAC,CAAC,CAACtK,GAAG,CAACrQ,KACzB,CAAC;IACH;EACF;EAEA80C,yBAAyBA,CAKvB1yC,IAAyB,EAAE2yC,SAAoB,EAAE1yC,IAAe,EAAQ;IACxE0yC,SAAS,CAACC,KAAK,GAAGpO,iBAAiB,CAACxkC,IAAI,CAAC,GACrC,IAAI,CAACmoC,6BAA6B,CAClB,IAAI,EACA,IACpB,CAAC,GACD,IAAI,CAAC/B,eAAe,CAAA,CAAE;IAE1BpmC,IAAI,CAACuY,UAAU,CAACsD,IAAI,CAAC,IAAI,CAACg3B,qBAAqB,CAACF,SAAS,EAAE1yC,IAAI,CAAC,CAAC;EACnE;EAEA6yC,sBAAsBA,CAACC,QAAiB,EAAW;IACjD,IAAI,KAAK,CAACD,sBAAsB,CAACC,QAAQ,CAAC,EAAE,OAAO,IAAI;IACvD,IAAI,IAAI,CAAChW,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,IAAI,CAACgW,QAAQ,EAAE,OAAO,IAAI;MAC1B,MAAMviB,EAAE,GAAG,IAAI,CAAC0E,iBAAiB,EAAE;MACnC,OAAO1E,EAAE,KAAA,GAA6B,IAAIA,EAAE,KAAuB,EAAA;IACrE;IACA,OAAO,CAACuiB,QAAQ,IAAI,IAAI,CAAChW,YAAY,GAAW,CAAC;EACnD;EAEAiW,gBAAgBA,CACdhzC,IAA4D,EAC5D+yC,QAAiB,EACjBvwC,KAAoB,EACpByL,GAAc,EACR;IACN,KAAK,CAAC+kC,gBAAgB,CAAChzC,IAAI,EAAE+yC,QAAQ,EAAEvwC,KAAK,EAAEyL,GAAG,CAAC;IAClD,IAAI8kC,QAAQ,EAAE;MACZ,IAAI,CAACvwC,KAAK,IAAI,IAAI,CAACuvB,KAAK,CAAA,EAAY,CAAC,EAAE;QAErC;MACF;MACC/xB,IAAI,CAA8B6nC,UAAU,GAC3CrlC,KAAK,KAAK,MAAM,GAAGA,KAAK,GAAG,OAAO;IACtC,CAAC,MAAM;MACL,IAAIA,KAAK,KAAK,MAAM,IAAI,IAAI,CAACuvB,KAAK,CAAQ,EAAA,CAAC,EAAE,IAAI,CAAC7sB,UAAU,EAAE;MAC7DlF,IAAI,CAAyBykC,UAAU,GACtCjiC,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,OAAO;IAC5D;EACF;EAGAywC,oBAAoBA,CAClBN,SAAc,EACdO,gBAAyB,EACzBC,kBAA2B,EAE3BC,eAAwB,EAExBrpB,WAAoC,EACjB;IACnB,MAAMspB,UAAU,GAAGV,SAAS,CAACW,QAAQ;IAErC,IAAIC,iBAAiB,GAAG,IAAI;IAC5B,IAAIF,UAAU,CAACpzC,IAAI,KAAK,YAAY,EAAE;MACpC,IAAIozC,UAAU,CAACltC,IAAI,KAAK,MAAM,EAAE;QAC9BotC,iBAAiB,GAAG,MAAM;MAC5B,CAAC,MAAM,IAAIF,UAAU,CAACltC,IAAI,KAAK,QAAQ,EAAE;QACvCotC,iBAAiB,GAAG,QAAQ;MAC9B;IACF;IAEA,IAAIv8B,SAAS,GAAG,KAAK;IACrB,IAAI,IAAI,CAAC+lB,YAAY,CAAA,EAAO,CAAC,IAAI,CAAC,IAAI,CAACK,qBAAqB,CAAC,IAAI,CAAC,EAAE;MAClE,MAAMoW,QAAQ,GAAG,IAAI,CAACpN,eAAe,CAAC,IAAI,CAAC;MAC3C,IACEmN,iBAAiB,KAAK,IAAI,IAC1B,CAACruB,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC,EAC5C;QAEA0yC,SAAS,CAACW,QAAQ,GAAGE,QAAQ;QAC7Bb,SAAS,CAAClO,UAAU,GAAG8O,iBAAiB;QACxCZ,SAAS,CAACC,KAAK,GAAGxS,eAAe,CAACoT,QAAQ,CAAC;MAC7C,CAAC,MAAM;QAELb,SAAS,CAACW,QAAQ,GAAGD,UAAU;QAC/BV,SAAS,CAAClO,UAAU,GAAG,IAAI;QAC3BkO,SAAS,CAACC,KAAK,GAAG,IAAI,CAACxM,eAAe,EAAE;MAC1C;IACF,CAAC,MAAM;MACL,IACEmN,iBAAiB,KAAK,IAAI,IAC1BruB,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC,EAC3C;QAEA0yC,SAAS,CAACW,QAAQ,GAAG,IAAI,CAAClN,eAAe,CAAC,IAAI,CAAC;QAC/CuM,SAAS,CAAClO,UAAU,GAAG8O,iBAAiB;MAC1C,CAAC,MAAM;QACL,IAAIL,gBAAgB,EAAE;UAEpB,MAAM,IAAI,CAAC37B,KAAK,CAAC9H,MAAM,CAAClM,qBAAqB,EAAEovC,SAAS,EAAE;YACxDnvC,UAAU,EAAE6vC,UAAU,CAACrmC;UACzB,CAAC,CAAC;QACJ;QAEA2lC,SAAS,CAACW,QAAQ,GAAGD,UAAU;QAC/BV,SAAS,CAAClO,UAAU,GAAG,IAAI;MAC7B;MAEA,IAAI,IAAI,CAACpH,aAAa,CAAA,EAAO,CAAC,EAAE;QAC9BsV,SAAS,CAACC,KAAK,GAAG,IAAI,CAACxM,eAAe,EAAE;MAC1C,CAAC,MAAM;QACLpvB,SAAS,GAAG,IAAI;QAChB27B,SAAS,CAACC,KAAK,GAAGxS,eAAe,CAACuS,SAAS,CAACW,QAAQ,CAAC;MACvD;IACF;IAEA,MAAMG,qBAAqB,GAAGjP,iBAAiB,CAACmO,SAAS,CAAC;IAE1D,IAAIQ,kBAAkB,IAAIM,qBAAqB,EAAE;MAC/C,IAAI,CAACl8B,KAAK,CAACupB,UAAU,CAAC0B,mCAAmC,EAAEmQ,SAAS,CAAC;IACvE;IAEA,IAAIQ,kBAAkB,IAAIM,qBAAqB,EAAE;MAC/C,IAAI,CAACvK,iBAAiB,CACpByJ,SAAS,CAACC,KAAK,CAACzsC,IAAI,EACpBwsC,SAAS,CAACC,KAAK,CAAC3kC,GAAG,CAACrQ,KAAK,EACP,IACpB,CAAC;IACH;IAEA,IAAIoZ,SAAS,IAAI,CAACm8B,kBAAkB,IAAI,CAACM,qBAAqB,EAAE;MAC9D,IAAI,CAACC,iBAAiB,CACpBf,SAAS,CAACC,KAAK,CAACzsC,IAAI,EACpBwsC,SAAS,CAAC1kC,GAAG,CAACrQ,KAAK,EACnB,IAAI,EACJ,IACF,CAAC;IACH;IAEA,OAAO,IAAI,CAACi1C,qBAAqB,CAACF,SAAS,EAAE,iBAAiB,CAAC;EACjE;EAEAgB,gBAAgBA,CAAAA,EAAc;IAC5B,QAAQ,IAAI,CAACv7B,KAAK,CAACnY,IAAI;MACrB,KAAA,EAAA;QAEE,OAAO,IAAI,CAACmmC,eAAe,CAAe,IAAI,CAAC;MACjD;QACE,OAAO,KAAK,CAACuN,gBAAgB,EAAE;IACnC;EACF;EAGAC,mBAAmBA,CACjB5zC,IAAwB,EACxBuV,aAAsB,EAChB;IAEN,MAAMlV,IAAI,GAAGL,IAAI,CAACK,IAAI;IACtB,IAAIA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC0xB,KAAK,CAAA,EAAM,CAAC,EAAE;MACzD/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;IAChE;IACA,KAAK,CAACqN,mBAAmB,CAAC5zC,IAAI,EAAEuV,aAAa,CAAC;EAChD;EAGAs+B,UAAUA,CACRC,IAA0B,EAC1BzzC,IAA6B,EACvB;IACN,KAAK,CAACwzC,UAAU,CAACC,IAAI,EAAEzzC,IAAI,CAAC;IAC5B,IAAI,IAAI,CAAC0xB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB+hB,IAAI,CAAC9+B,EAAE,CAAC4xB,cAAc,GAAG,IAAI,CAACkB,uBAAuB,CAAA,CAAE;MACvD,IAAI,CAACruB,gBAAgB,CAACq6B,IAAI,CAAC9+B,EAAE,CAAC;IAChC;EACF;EAGA++B,iCAAiCA,CAC/B/zC,IAA+B,EAC/Bg0C,IAAsB,EACK;IAC3B,IAAI,IAAI,CAACjiB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAMuY,qBAAqB,GAAG,IAAI,CAAClyB,KAAK,CAACkX,kBAAkB;MAC3D,IAAI,CAAClX,KAAK,CAACkX,kBAAkB,GAAG,IAAI;MACpCtvB,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAACmB,uBAAuB,EAAE;MAChD,IAAI,CAAC1vB,KAAK,CAACkX,kBAAkB,GAAGgb,qBAAqB;IACvD;IAEA,OAAO,KAAK,CAACyJ,iCAAiC,CAAC/zC,IAAI,EAAEg0C,IAAI,CAAC;EAC5D;EAGAC,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO,IAAI,CAACliB,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACkiB,qBAAqB,CAAA,CAAE;EAC9D;EAYAjF,gBAAgBA,CACdr4B,mBAA6C,EAC7Cu9B,cAAyB,EACX;IAAA,IAAAC,IAAA;IACd,IAAI/7B,KAAK,GAAG,IAAI;IAEhB,IAAIg8B,GAAG;IAEP,IACE,IAAI,CAACnpB,SAAS,CAAC,KAAK,CAAC,KACpB,IAAI,CAAC8G,KAAK,CAAe,GAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,CAAC,EACjD;MACA3Z,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,EAAE;MAE1B8lC,GAAG,GAAG,IAAI,CAACtW,QAAQ,CACjB,MAAM,KAAK,CAACkR,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAAC,EACjE97B,KACF,CAAC;MAID,IAAI,CAACg8B,GAAG,CAACjmC,KAAK,EAAE,OAAOimC,GAAG,CAACp0C,IAAI;MAK/B,MAAM;QAAEomB;OAAS,GAAG,IAAI,CAAChO,KAAK;MAC9B,MAAMi8B,cAAc,GAAGjuB,OAAO,CAACA,OAAO,CAAC5N,MAAM,GAAG,CAAC,CAAC;MAClD,IAAI67B,cAAc,KAAK/tB,KAAE,CAACvM,MAAM,IAAIs6B,cAAc,KAAK/tB,KAAE,CAACrM,MAAM,EAAE;QAChEmM,OAAO,CAACC,GAAG,CAAA,CAAE;MACf;IACF;IAEA,IAAI,CAAA8tB,IAAA,GAAAC,GAAG,aAAHD,IAAA,CAAKhmC,KAAK,IAAI,IAAI,CAAC4jB,KAAK,CAAA,EAAM,CAAC,EAAE;MAAA,IAAAuiB,KAAA,EAAAC,KAAA;MACnCn8B,KAAK,GAAGA,KAAK,IAAI,IAAI,CAACA,KAAK,CAAC9J,KAAK,CAAA,CAAE;MAEnC,IAAIsH,cAA0C;MAE9C,MAAM2H,KAAK,GAAG,IAAI,CAACugB,QAAQ,CAAE0W,KAAkB,IAAK;QAAA,IAAAC,qBAAA;QAClD7+B,cAAc,GAAG,IAAI,CAAC2wB,iCAAiC,EAAE;QAEzD,MAAMmO,eAAe,GAAG,IAAI,CAAC5G,gCAAgC,CAC3Dl4B,cAAc,EACd,MAAM;UACJ,MAAM85B,MAAM,GAAG,KAAK,CAACV,gBAAgB,CACnCr4B,mBAAmB,EACnBu9B,cACF,CAAC;UAED,IAAI,CAACvT,0BAA0B,CAAC+O,MAAM,EAAE95B,cAAc,CAAC;UAEvD,OAAO85B,MAAM;QACf,CACF,CAAC;QAID,IAAA,CAAA+E,qBAAA,GAAIC,eAAe,CAACrhC,KAAK,KAAA,IAAA,IAArBohC,qBAAA,CAAuBvgC,aAAa,EAAEsgC,KAAK,EAAE;QAKjD,MAAMrG,IAAI,GAAG,IAAI,CAACwG,6BAA6B,CAACD,eAAe,CAAC;QAEhE,IAAIvG,IAAI,CAACluC,IAAI,KAAK,yBAAyB,EAAEu0C,KAAK,CAAA,CAAE;QAEpDrG,IAAI,CAACv4B,cAAc,GAAGA,cAAc;QACpC,IAAI,CAAC+qB,0BAA0B,CAACwN,IAAI,EAAEv4B,cAAc,CAAC;QAErD,OAAO8+B,eAAe;MACvB,CAAA,EAAEt8B,KAAK,CAAC;MAET,IAAIs8B,eAII,GAAG,IAAI;MAEf,IACEn3B,KAAK,CAACvd,IAAI,IACV,IAAI,CAAC20C,6BAA6B,CAACp3B,KAAK,CAACvd,IAAI,CAAC,CAACC,IAAI,KACjD,yBAAyB,EAC3B;QACA,IAAI,CAACsd,KAAK,CAACpP,KAAK,IAAI,CAACoP,KAAK,CAAC6gB,OAAO,EAAE;UAGlC,IAAI7gB,KAAK,CAACvd,IAAI,CAAC40C,KAAK,EAAE;YAEpB,IAAI,CAACr9B,KAAK,CACRupB,UAAU,CAACmD,+CAA+C,EAC1DruB,cACF,CAAC;UACH;UACA,OAAO2H,KAAK,CAACvd,IAAI;QACnB;QAGA00C,eAAe,GAAGn3B,KAAK,CAACvd,IAAI;MAC9B;MAQA,IAAA,CAAAs0C,KAAA,GAAIF,GAAG,aAAHE,KAAA,CAAKt0C,IAAI,EAAE;QAEb,IAAI,CAACoY,KAAK,GAAGg8B,GAAG,CAAClW,SAAS;QAC1B,OAAOkW,GAAG,CAACp0C,IAAI;MACjB;MAEA,IAAI00C,eAAe,EAAE;QAEnB,IAAI,CAACt8B,KAAK,GAAGmF,KAAK,CAAC2gB,SAAS;QAC5B,OAAOwW,eAAe;MACxB;MAEA,IAAAH,CAAAA,KAAA,GAAIH,GAAG,KAAHG,IAAAA,IAAAA,KAAA,CAAKpW,MAAM,EAAE,MAAMiW,GAAG,CAACjmC,KAAK;MAChC,IAAIoP,KAAK,CAAC4gB,MAAM,EAAE,MAAM5gB,KAAK,CAACpP,KAAK;MAGnC,MAAM,IAAI,CAACoJ,KAAK,CACdupB,UAAU,CAACkD,iCAAiC,EAC5CpuB,cACF,CAAC;IACH;IAEA,OAAO,KAAK,CAACo5B,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAAC;EACpE;EAGAW,UAAUA,CACR70C,IAAuC,EACe;IACtD,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MAExB,MAAM2d,MAAM,GAAG,IAAI,CAAC5R,QAAQ,CAAmB,MAAM;QACnD,MAAMwM,qBAAqB,GAAG,IAAI,CAAClyB,KAAK,CAACkX,kBAAkB;QAC3D,IAAI,CAAClX,KAAK,CAACkX,kBAAkB,GAAG,IAAI;QAEpC,MAAM+W,QAAQ,GAAG,IAAI,CAAC1wB,SAAS,EAAoB;QAEnD,CACE0wB,QAAQ,CAACO,cAAc,EAEvB5mC,IAAI,CAACgmC,SAAS,CACf,GAAG,IAAI,CAACD,oCAAoC,EAAE;QAE/C,IAAI,CAAC3tB,KAAK,CAACkX,kBAAkB,GAAGgb,qBAAqB;QAErD,IAAI,IAAI,CAAC/M,kBAAkB,CAAA,CAAE,EAAE,IAAI,CAACr4B,UAAU,CAAA,CAAE;QAChD,IAAI,CAAC,IAAI,CAAC6sB,KAAK,CAAA,EAAS,CAAC,EAAE,IAAI,CAAC7sB,UAAU,EAAE;QAE5C,OAAOmhC,QAAQ;MACjB,CAAC,CAAC;MAEF,IAAIqJ,MAAM,CAACvR,MAAM,EAAE,OAAO,IAAI;MAG9B,IAAIuR,MAAM,CAACvhC,KAAK,EAAE,IAAI,CAACiK,KAAK,GAAGs3B,MAAM,CAACxR,SAAS;MAI/Cl+B,IAAI,CAAC2mC,UAAU,GAAG+I,MAAM,CAAC1vC,IAAI,CAAC4mC,cAAc,GACxC,IAAI,CAAC9wB,UAAU,CAAC45B,MAAM,CAAC1vC,IAAI,EAAE,gBAAgB,CAAC,GAC9C,IAAI;IACV;IAEA,OAAO,KAAK,CAAC60C,UAAU,CAAC70C,IAAI,CAAC;EAC/B;EAEA80C,gBAAgBA,CAAC/gC,MAAqB,EAAW;IAC/C,OAAO,IAAI,CAACge,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAAC+iB,gBAAgB,CAAC/gC,MAAM,CAAC;EAC/D;EAEAghC,0BAA0BA,CACxB/0C,IAAuC,EACvC+T,MAEuC,EACjC;IACN,IACE,IAAI,CAACqE,KAAK,CAACqW,yBAAyB,CAACgK,QAAQ,CAC3C,IAAI,CAAC1N,iBAAiB,CAAC/qB,IAAI,CAACpC,KAAK,CACnC,CAAC,EACD;MACAoC,IAAI,CAAC+T,MAAM,GAAGA,MAA6C;IAC7D,CAAC,MAAM;MACL,KAAK,CAACghC,0BAA0B,CAAC/0C,IAAI,EAAE+T,MAAM,CAAC;IAChD;EACF;EAEA07B,WAAWA,CACTzvC,IAAgB,EAChBg1C,eAAwB,EACxBC,eAAgC,EAChCC,iBAA0B,GAAG,IAAI,EAC3B;IACN,IACED,eAAe,IACf,IAAI,CAAC78B,KAAK,CAACqW,yBAAyB,CAACgK,QAAQ,CAC3C,IAAI,CAAC1N,iBAAiB,CAAC/qB,IAAI,CAACpC,KAAK,CACnC,CAAC,EACD;MACA;IACF;IAGA,KAAK,IAAIkpB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9mB,IAAI,CAAC+T,MAAM,CAACyE,MAAM,EAAEsO,CAAC,EAAE,EAAE;MAC3C,IAAI,IAAI,CAACgrB,WAAW,CAAC9xC,IAAI,CAAC+T,MAAM,CAAC+S,CAAC,CAAC,CAAC,IAAIA,CAAC,GAAG,CAAC,EAAE;QAC7C,IAAI,CAACvP,KAAK,CAACupB,UAAU,CAACwC,oBAAoB,EAAEtjC,IAAI,CAAC+T,MAAM,CAAC+S,CAAC,CAAC,CAAC;MAC7D;IACF;IAEA,KAAK,CAAC2oB,WAAW,CACfzvC,IAAI,EACJg1C,eAAe,EACfC,eAAe,EACfC,iBACF,CAAC;EACH;EAEAC,kCAAkCA,CAACC,UAAmB,EAAgB;IACpE,OAAO,KAAK,CAACD,kCAAkC,CAC7CC,UAAU,IACR,CAAC,IAAI,CAACh9B,KAAK,CAACoW,SAAS,CAACiK,QAAQ,CAC5B,IAAI,CAAC5N,iBAAiB,CAAC,IAAI,CAACzS,KAAK,CAACxa,KAAK,CACzC,CACJ,CAAC;EACH;EAEAy3C,eAAeA,CACbx8B,IAAkB,EAClBnC,QAAkB,EAClBoC,OAAwB,EACV;IACd,IACED,IAAI,CAAC5Y,IAAI,KAAK,YAAY,IAC1B4Y,IAAI,CAAC1S,IAAI,KAAK,OAAO,IACrB,IAAI,CAACiS,KAAK,CAACoW,SAAS,CAACiK,QAAQ,CAAC/hB,QAAQ,CAACjZ,KAAK,CAAC,EAC7C;MACA,IAAI,CAACyqB,IAAI,CAAA,CAAE;MAEX,MAAMloB,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAmBhqB,QAAQ,CAAC;MACzD1W,IAAI,CAAC2X,MAAM,GAAGkB,IAAI;MAClB7Y,IAAI,CAAC8X,SAAS,GAAG,KAAK,CAACw9B,4BAA4B,GAAU,CAAC;MAC9Dz8B,IAAI,GAAG,IAAI,CAAC/C,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;IAC/C,CAAA,MAAM,IACL6Y,IAAI,CAAC5Y,IAAI,KAAK,YAAY,IAC1B4Y,IAAI,CAAC1S,IAAI,KAAK,OAAO,IACrB,IAAI,CAAC4rB,KAAK,CAAA,EAAM,CAAC,EACjB;MACA,MAAM3Z,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,CAAA,CAAE;MAChC,MAAMiP,KAAK,GAAG,IAAI,CAACugB,QAAQ,CACzB0W,KAAK,IAAI,IAAI,CAACe,iCAAiC,CAAC7+B,QAAQ,CAAC,IAAI89B,KAAK,CAAE,CAAA,EACpEp8B,KACF,CAAC;MAID,IAAI,CAACmF,KAAK,CAACpP,KAAK,IAAI,CAACoP,KAAK,CAAC6gB,OAAO,EAAE,OAAO7gB,KAAK,CAACvd,IAAI;MAErD,MAAM0vC,MAAM,GAAG,IAAI,CAAC5R,QAAQ,CAC1B,MAAM,KAAK,CAACuX,eAAe,CAACx8B,IAAI,EAAEnC,QAAQ,EAAEoC,OAAO,CAAC,EACpDV,KACF,CAAC;MAED,IAAIs3B,MAAM,CAAC1vC,IAAI,IAAI,CAAC0vC,MAAM,CAACvhC,KAAK,EAAE,OAAOuhC,MAAM,CAAC1vC,IAAI;MAEpD,IAAIud,KAAK,CAACvd,IAAI,EAAE;QACd,IAAI,CAACoY,KAAK,GAAGmF,KAAK,CAAC2gB,SAAS;QAE5B,OAAO3gB,KAAK,CAACvd,IAAI;MACnB;MAEA,IAAI0vC,MAAM,CAAC1vC,IAAI,EAAE;QACf,IAAI,CAACoY,KAAK,GAAGs3B,MAAM,CAACxR,SAAS;QAC7B,OAAOwR,MAAM,CAAC1vC,IAAI;MACpB;MAEA,MAAMud,KAAK,CAACpP,KAAK,IAAIuhC,MAAM,CAACvhC,KAAK;IACnC;IAEA,OAAO,KAAK,CAACknC,eAAe,CAACx8B,IAAI,EAAEnC,QAAQ,EAAEoC,OAAO,CAAC;EACvD;EAEAF,cAAcA,CACZC,IAAkB,EAElBnC,QAAkB,EAClBoC,OAAmC,EACnC08B,cAAqC,EACvB;IACd,IAAI,IAAI,CAACzjB,KAAK,CAAe,EAAA,CAAC,IAAI,IAAI,CAAC0jB,mBAAmB,CAAA,CAAE,EAAE;MAC5DD,cAAc,CAACz8B,mBAAmB,GAAG,IAAI;MACzC,IAAID,OAAO,EAAE;QACX08B,cAAc,CAACv8B,IAAI,GAAG,IAAI;QAC1B,OAAOJ,IAAI;MACb;MACA,IAAI,CAACqP,IAAI,CAAA,CAAE;MACX,MAAMloB,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA2BhqB,QAAQ,CAAC;MACjE1W,IAAI,CAAC2X,MAAM,GAAGkB,IAAI;MAClB7Y,IAAI,CAAC01C,aAAa,GAChB,IAAI,CAACtL,+CAA+C,EAAE;MACxD,IAAI,CAACvM,MAAM,CAAA,EAAU,CAAC;MACtB79B,IAAI,CAAC8X,SAAS,GAAG,IAAI,CAACw9B,4BAA4B,GAAU,CAAC;MAC7Dt1C,IAAI,CAAC0X,QAAQ,GAAG,IAAI;MACpB,OAAO,IAAI,CAACF,oBAAoB,CAACxX,IAAI,EAAiB,IAAI,CAAC;IAC5D,CAAA,MAAM,IACL,CAAC8Y,OAAO,IACR,IAAI,CAACwsB,gBAAgB,CAAE,CAAA,KACtB,IAAI,CAACvT,KAAK,CAAM,EAAA,CAAC,IAEhB,IAAI,CAACA,KAAK,CAAA,EAAa,CAAC,CAAC,EAC3B;MACA,MAAM/xB,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAE3BhqB,QAAQ,CAAC;MACX1W,IAAI,CAAC2X,MAAM,GAAGkB,IAAI;MAElB,MAAM62B,MAAM,GAAG,IAAI,CAAC5R,QAAQ,CAAC,MAAM;QACjC99B,IAAI,CAAC01C,aAAa,GAChB,IAAI,CAAClL,4CAA4C,EAAE;QACrD,IAAI,CAAC3M,MAAM,CAAA,EAAU,CAAC;QACtB79B,IAAI,CAAC8X,SAAS,GAAG,KAAK,CAACw9B,4BAA4B,GAAU,CAAC;QAC9D,IAAIE,cAAc,CAACz8B,mBAAmB,EAAE;UACrC/Y,IAAI,CAAsC0X,QAAQ,GAAG,KAAK;QAC7D;QACA,OAAO,IAAI,CAACF,oBAAoB,CAC9BxX,IAAI,EACJw1C,cAAc,CAACz8B,mBACjB,CAAC;MACH,CAAC,CAAC;MAEF,IAAI22B,MAAM,CAAC1vC,IAAI,EAAE;QACf,IAAI0vC,MAAM,CAACvhC,KAAK,EAAE,IAAI,CAACiK,KAAK,GAAGs3B,MAAM,CAACxR,SAAS;QAC/C,OAAOwR,MAAM,CAAC1vC,IAAI;MACpB;IACF;IAEA,OAAO,KAAK,CAAC4Y,cAAc,CACzBC,IAAI,EAEJnC,QAAQ,EACRoC,OAAO,EACP08B,cACF,CAAC;EACH;EAEAG,cAAcA,CAAC31C,IAAqB,EAAQ;IAC1C,KAAK,CAAC21C,cAAc,CAAC31C,IAAI,CAAC;IAE1B,IAAI41C,KAAK,GAAG,IAAI;IAChB,IAAI,IAAI,CAACtQ,gBAAgB,CAAE,CAAA,IAAI,IAAI,CAACvT,KAAK,CAAM,EAAA,CAAC,EAAE;MAChD6jB,KAAK,GAAG,IAAI,CAAC9X,QAAQ,CAAC,MACpB,IAAI,CAAC0M,4CAA4C,CAAA,CACnD,CAAC,CAACxqC,IAAI;IACR;IACAA,IAAI,CAAC01C,aAAa,GAAGE,KAAK;EAC5B;EAEAL,iCAAiCA,CAC/B7+B,QAAkB,EAC4B;IAC9C,MAAM1W,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA4BhqB,QAAQ,CAAC;IAClE,IAAI,CAACk9B,mBAAmB,CAAC5zC,IAAI,EAAE,KAAK,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC60C,UAAU,CAAC70C,IAAI,CAAC,EAAE;IAC5B,OAAO,KAAK,CAAC61C,oBAAoB,CAC/B71C,IAAI,EACS6P,SAAS,EACR,IAChB,CAAC;EACH;EAEAonB,qBAAqBA,CAAC94B,IAAY,EAAQ;IACxC,MAAM+pB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,IACElQ,IAAI,KAAuB,EAAA,IAC3B+pB,IAAI,KAAA,EAAoB,IACxB,IAAI,CAAC9P,KAAK,CAACmX,cAAc,EACzB;MACA,IAAI,CAACnX,KAAK,CAACmX,cAAc,GAAG,KAAK;MACjC,IAAI,CAACnX,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACmmB,SAAS,CAAA,CAAE;MAChB;IACF;IAEA,KAAK,CAACyC,qBAAqB,CAAC94B,IAAI,CAAC;EACnC;EAEAg5B,kBAAkBA,CAACh5B,IAAY,EAAQ;IACrC,MAAM+pB,IAAI,GAAG,IAAI,CAACkF,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC;IACtD,IACElQ,IAAI,KAAA,GAA0B,IAC9B+pB,IAAI,QAA8B,EAClC;MAEA,IAAI,CAAC2O,QAAQ,CAAe,CAAA,EAAA,CAAC,CAAC;MAC9B;IACF;IAEA,KAAK,CAACM,kBAAkB,CAACh5B,IAAI,CAAC;EAChC;EAEA23C,aAAaA,CAACnkC,IAAY,EAAEokC,OAAkB,EAAU;IACtD,MAAMC,QAAQ,GAAG,KAAK,CAACF,aAAa,CAACnkC,IAAI,EAAEokC,OAAO,CAAC;IACnD,IAAI,IAAI,CAAC39B,KAAK,CAACmX,cAAc,EAAE;MAC7B,IAAI,CAAChY,KAAK,CACRupB,UAAU,CAACuD,uBAAuB,EAClC,IAAI,CAACjsB,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;IACH;IACA,OAAOgmB,QAAQ;EACjB;EAEAhgB,gBAAgBA,CAAAA,EAA+B;IAC7C,IAAI,IAAI,CAAC/K,SAAS,CAAC,cAAc,CAAC,IAAI,IAAI,CAACgrB,eAAe,CAAA,CAAE,EAAE;MAC5D,IAAI,IAAI,CAAC79B,KAAK,CAACmX,cAAc,EAAE;QAC7B,MAAM,IAAI,CAAChY,KAAK,CAACupB,UAAU,CAACiC,iBAAiB,EAAE,IAAI,CAAC3qB,KAAK,CAAC1B,QAAQ,CAAC;MACrE;MACA,IAAI,CAACw/B,wBAAwB,CAAA,CAAE;MAC/B,MAAMC,WAAW,GAAG,IAAI,CAACF,eAAe,EAAE;MAC1C,IAAIE,WAAW,EAAE;QACf,IAAI,CAAC/9B,KAAK,CAAC/J,GAAG,IAAI8nC,WAAW;QAC7B,IAAI,CAAC/9B,KAAK,CAACmX,cAAc,GAAG,IAAI;MAClC;MACA;IACF;IAEA,OAAO,KAAK,CAACyG,gBAAgB,CAAC,IAAI,CAAC5d,KAAK,CAACmX,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC;EACzE;EAEA0mB,eAAeA,CAAAA,EAAmB;IAChC,MAAM;MAAE5nC;KAAK,GAAG,IAAI,CAAC+J,KAAK;IAC1B,IAAIg+B,yBAAyB,GAAG,CAAC;IACjC,OACE,CAAgC,EAAA,EAAA,CAAA,CAAA,CAAC3d,QAAQ,CAEvC,IAAI,CAACrL,KAAK,CAACC,UAAU,CAAChf,GAAG,GAAG+nC,yBAAyB,CACvD,CAAC,EACD;MACAA,yBAAyB,EAAE;IAC7B;IAEA,MAAMC,GAAG,GAAG,IAAI,CAACjpB,KAAK,CAACC,UAAU,CAAC+oB,yBAAyB,GAAG/nC,GAAG,CAAC;IAClE,MAAMioC,GAAG,GAAG,IAAI,CAAClpB,KAAK,CAACC,UAAU,CAAC+oB,yBAAyB,GAAG/nC,GAAG,GAAG,CAAC,CAAC;IAEtE,IAAIgoC,GAAG,KAAA,EAAoB,IAAIC,GAAG,OAAoB,EAAE;MACtD,OAAOF,yBAAyB,GAAG,CAAC;IACtC;IACA,IACE,IAAI,CAAChpB,KAAK,CAAC6C,KAAK,CACdmmB,yBAAyB,GAAG/nC,GAAG,EAC/B+nC,yBAAyB,GAAG/nC,GAAG,GAAG,EACpC,CAAC,KAAK,cAAc,EACpB;MACA,OAAO+nC,yBAAyB,GAAG,EAAE;IACvC;IACA,IAAIC,GAAG,KAAA,EAAoB,IAAIC,GAAG,OAAoB,EAAE;MACtD,OAAOF,yBAAyB;IAClC;IACA,OAAO,KAAK;EACd;EAEAF,wBAAwBA,CAAAA,EAAS;IAC/B,MAAMr4C,GAAG,GAAG,IAAI,CAACuvB,KAAK,CAACqG,OAAO,CAAC,IAAI,EAAE,IAAI,CAACrb,KAAK,CAAC/J,GAAG,CAAC;IACpD,IAAIxQ,GAAG,KAAK,CAAC,CAAC,EAAE;MACd,MAAM,IAAI,CAAC0Z,KAAK,CAAC9H,MAAM,CAAC/E,mBAAmB,EAAE,IAAI,CAAC0N,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;IACxE;EACF;EAIAumB,wCAAwCA,CACtCtoC,GAAa,EACb;IACEuzB,QAAQ;IACRD;EAIF,CAAC,EACK;IACN,IAAI,CAAChqB,KAAK,CAACupB,UAAU,CAACQ,+BAA+B,EAAErzB,GAAG,EAAE;MAC1DszB,UAAU;MACVC;IACF,CAAC,CAAC;EACJ;EAEAgV,qCAAqCA,CACnCvoC,GAAa,EACbwoC,WAAwB,EACxB;IACA,OAAO,IAAI,CAACl/B,KAAK,CACf,CAACk/B,WAAW,CAAC1U,YAAY,GACrBjB,UAAU,CAACmB,uCAAuC,GAClDwU,WAAW,CAAC1U,YAAY,KAAK,QAAQ,GACnCjB,UAAU,CAACkB,sCAAsC,GACjDlB,UAAU,CAACgB,uCAAuC,EACxD7zB,GAAG,EACHwoC,WACF,CAAC;EACH;EAEAC,uCAAuCA,CACrCzoC,GAAa,EACbC,OAGC,EACK;IACN,IAAI,CAACqJ,KAAK,CAACupB,UAAU,CAACsB,8BAA8B,EAAEn0B,GAAG,EAAEC,OAAO,CAAC;EACrE;EAEAyoC,kDAAkDA,CAChD32C,IAAY,EACZkO,OAEC,EACK;IACN,IAAI,CAACqJ,KAAK,CACRupB,UAAU,CAACuB,yCAAyC,EACpDriC,IAAI,EACJkO,OACF,CAAC;EACH;EAEA0oC,kBAAkBA,CAAAA,EAAmB;IACnC,MAAMlgC,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAMmgC,SAAS,GAAGA,CAAAA,KAAM,IAAI,CAAC9kB,KAAK,CAAS,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,EAAU,CAAC;IACrE,QAAQ,IAAI,CAAC3Z,KAAK,CAACnY,IAAI;MACrB,KAAA,GAAA;QAAa;UACX,MAAM62C,OAAO,GAAG,IAAI,CAAChkC,mBAAmB,CAAC,IAAI,CAACsF,KAAK,CAACpL,KAAK,CAAC;UAC1D,IAAI6pC,SAAS,CAAA,CAAE,EAAE;YACf,OAAO;cAAE52C,IAAI,EAAE,QAAQ;cAAEgO,GAAG,EAAE6oC,OAAO,CAAC7oC,GAAG,CAACrQ,KAAK;cAAEoP,KAAK,EAAE8pC;aAAS;UACnE;UACA,OAAO;YAAE72C,IAAI,EAAE,SAAS;YAAEgO,GAAG,EAAEyI;WAAU;QAC3C;MACA,KAAA,GAAA;QAAgB;UACd,MAAMogC,OAAO,GAAG,IAAI,CAACjkC,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;UACzD,IAAI6pC,SAAS,CAAA,CAAE,EAAE;YACf,OAAO;cAAE52C,IAAI,EAAE,QAAQ;cAAEgO,GAAG,EAAE6oC,OAAO,CAAC7oC,GAAG,CAACrQ,KAAK;cAAEoP,KAAK,EAAE8pC;aAAS;UACnE;UACA,OAAO;YAAE72C,IAAI,EAAE,SAAS;YAAEgO,GAAG,EAAEyI;WAAU;QAC3C;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QAAgB;UACd,MAAMogC,OAAO,GAAG,IAAI,CAAC9jC,mBAAmB,CAAC,IAAI,CAAC+e,KAAK,CAAS,EAAA,CAAC,CAAC;UAC9D,IAAI8kB,SAAS,CAAA,CAAE,EAAE;YACf,OAAO;cACL52C,IAAI,EAAE,SAAS;cACfgO,GAAG,EAAE6oC,OAAO,CAAC7oC,GAAG,CAACrQ,KAAK;cACtBoP,KAAK,EAAE8pC;aACR;UACH;UACA,OAAO;YAAE72C,IAAI,EAAE,SAAS;YAAEgO,GAAG,EAAEyI;WAAU;QAC3C;MACA;QACE,OAAO;UAAEzW,IAAI,EAAE,SAAS;UAAEgO,GAAG,EAAEyI;SAAU;IAC7C;EACF;EAEAqgC,iBAAiBA,CAAAA,EAGf;IACA,MAAM9oC,GAAG,GAAG,IAAI,CAACmK,KAAK,CAAC1B,QAAQ;IAC/B,MAAM1B,EAAE,GAAG,IAAI,CAACoxB,eAAe,CAAC,IAAI,CAAC;IACrC,MAAMjX,IAAI,GAAG,IAAI,CAACsF,GAAG,CAAA,EAAM,CAAC,GACxB,IAAI,CAACmiB,kBAAkB,EAAE,GACzB;MAAE32C,IAAI,EAAE,MAAe;MAAEgO;KAAK;IAClC,OAAO;MAAE+G,EAAE;MAAEma;KAAM;EACrB;EAEA6nB,iCAAiCA,CAC/B/oC,GAAa,EACbmY,OAAoB,EACpB6wB,YAA8B,EACxB;IACN,MAAM;MAAElV;IAAc,CAAA,GAAG3b,OAAO;IAChC,IAAI2b,YAAY,KAAK,IAAI,EAAE;MACzB;IACF;IACA,IAAIA,YAAY,KAAKkV,YAAY,EAAE;MACjC,IAAI,CAACT,qCAAqC,CAACvoC,GAAG,EAAEmY,OAAO,CAAC;IAC1D;EACF;EAEA8wB,eAAeA,CAAC;IACd1V,QAAQ;IACRO;EAIF,CAAC,EAoBC;IACA,MAAMoV,SAAS,GAAG,IAAIprC,GAAG,EAAE;IAC3B,MAAMwhB,OAAO,GAAG;MAEd6pB,cAAc,EAAE,EAAE;MAElBC,aAAa,EAAE,EAAE;MAEjBC,aAAa,EAAE,EAAE;MAEjBC,gBAAgB,EAAE;KACnB;IACD,IAAIC,iBAAiB,GAAG,KAAK;IAC7B,OAAO,CAAC,IAAI,CAACzlB,KAAK,CAAA,CAAU,CAAC,EAAE;MAC7B,IAAI,IAAI,CAAC0C,GAAG,CAAA,EAAY,CAAC,EAAE;QACzB+iB,iBAAiB,GAAG,IAAI;QACxB;MACF;MACA,MAAMC,UAAU,GAAG,IAAI,CAAC9hC,SAAS,EAAoB;MACrD,MAAM;QAAEX,EAAE;QAAEma;MAAK,CAAC,GAAG,IAAI,CAAC4nB,iBAAiB,EAAE;MAC7C,MAAMxV,UAAU,GAAGvsB,EAAE,CAAC7O,IAAI;MAC1B,IAAIo7B,UAAU,KAAK,EAAE,EAAE;QACrB;MACF;MACA,IAAI,QAAQ,CAACva,IAAI,CAACua,UAAU,CAAC,EAAE;QAC7B,IAAI,CAAChqB,KAAK,CAACupB,UAAU,CAACoB,qBAAqB,EAAEltB,EAAE,EAAE;UAC/CusB,UAAU;UACVY,UAAU,EAAEZ,UAAU,CAAC,CAAC,CAAC,CAACmW,WAAW,CAAA,CAAE,GAAGnW,UAAU,CAACtR,KAAK,CAAC,CAAC,CAAC;UAC7DuR;QACF,CAAC,CAAC;MACJ;MACA,IAAI2V,SAAS,CAACvvB,GAAG,CAAC2Z,UAAU,CAAC,EAAE;QAC7B,IAAI,CAAChqB,KAAK,CAACupB,UAAU,CAACW,uBAAuB,EAAEzsB,EAAE,EAAE;UACjDusB,UAAU;UACVC;QACF,CAAC,CAAC;MACJ;MACA2V,SAAS,CAAC1sB,GAAG,CAAC8W,UAAU,CAAC;MACzB,MAAMnb,OAAO,GAAG;QAAEob,QAAQ;QAAEO,YAAY;QAAER;OAAY;MACtDkW,UAAU,CAACziC,EAAE,GAAGA,EAAE;MAClB,QAAQma,IAAI,CAAClvB,IAAI;QACf,KAAK,SAAS;UAAE;YACd,IAAI,CAAC+2C,iCAAiC,CACpC7nB,IAAI,CAAClhB,GAAG,EACRmY,OAAO,EACP,SACF,CAAC;YACDqxB,UAAU,CAACtoB,IAAI,GAAGA,IAAI,CAACniB,KAAK;YAC5BugB,OAAO,CAAC6pB,cAAc,CAACv7B,IAAI,CACzB,IAAI,CAAC/F,UAAU,CAAC2hC,UAAU,EAAE,mBAAmB,CACjD,CAAC;YACD;UACF;QACA,KAAK,QAAQ;UAAE;YACb,IAAI,CAACT,iCAAiC,CAAC7nB,IAAI,CAAClhB,GAAG,EAAEmY,OAAO,EAAE,QAAQ,CAAC;YACnEqxB,UAAU,CAACtoB,IAAI,GAAGA,IAAI,CAACniB,KAAK;YAC5BugB,OAAO,CAAC8pB,aAAa,CAACx7B,IAAI,CACxB,IAAI,CAAC/F,UAAU,CAAC2hC,UAAU,EAAE,kBAAkB,CAChD,CAAC;YACD;UACF;QACA,KAAK,QAAQ;UAAE;YACb,IAAI,CAACT,iCAAiC,CAAC7nB,IAAI,CAAClhB,GAAG,EAAEmY,OAAO,EAAE,QAAQ,CAAC;YACnEqxB,UAAU,CAACtoB,IAAI,GAAGA,IAAI,CAACniB,KAAK;YAC5BugB,OAAO,CAAC+pB,aAAa,CAACz7B,IAAI,CACxB,IAAI,CAAC/F,UAAU,CAAC2hC,UAAU,EAAE,kBAAkB,CAChD,CAAC;YACD;UACF;QACA,KAAK,SAAS;UAAE;YACd,MAAM,IAAI,CAACjB,qCAAqC,CAACrnB,IAAI,CAAClhB,GAAG,EAAEmY,OAAO,CAAC;UACrE;QACA,KAAK,MAAM;UAAE;YACX,QAAQ2b,YAAY;cAClB,KAAK,SAAS;gBACZ,IAAI,CAACwU,wCAAwC,CAC3CpnB,IAAI,CAAClhB,GAAG,EACRmY,OACF,CAAC;gBACD;cACF,KAAK,QAAQ;gBACX,IAAI,CAACswB,uCAAuC,CAACvnB,IAAI,CAAClhB,GAAG,EAAEmY,OAAO,CAAC;gBAC/D;cACF;gBACEmH,OAAO,CAACgqB,gBAAgB,CAAC17B,IAAI,CAC3B,IAAI,CAAC/F,UAAU,CAAC2hC,UAAU,EAAE,qBAAqB,CACnD,CAAC;YACL;UACF;MACF;MAEA,IAAI,CAAC,IAAI,CAAC1lB,KAAK,CAAA,CAAU,CAAC,EAAE;QAC1B,IAAI,CAAC8L,MAAM,CAAA,EAAS,CAAC;MACvB;IACF;IACA,OAAO;MAAEtQ,OAAO;MAAEiqB;KAAmB;EACvC;EAEAG,qBAAqBA,CACnBC,kBAAiC,EACjCL,gBAA+B,EAC/B;IACE/V;EAGF,CAAC,EACc;IACf,IAAIoW,kBAAkB,CAACp/B,MAAM,KAAK,CAAC,EAAE;MACnC,OAAO++B,gBAAgB;IACzB,CAAC,MAAM,IAAIA,gBAAgB,CAAC/+B,MAAM,KAAK,CAAC,EAAE;MACxC,OAAOo/B,kBAAkB;IAC1B,CAAA,MAAM,IAAIL,gBAAgB,CAAC/+B,MAAM,GAAGo/B,kBAAkB,CAACp/B,MAAM,EAAE;MAC9D,KAAK,MAAMk4B,MAAM,IAAIkH,kBAAkB,EAAE;QACvC,IAAI,CAACjB,kDAAkD,CAACjG,MAAM,EAAE;UAC9DlP;QACF,CAAC,CAAC;MACJ;MACA,OAAO+V,gBAAgB;IACzB,CAAC,MAAM;MACL,KAAK,MAAM7G,MAAM,IAAI6G,gBAAgB,EAAE;QACrC,IAAI,CAACZ,kDAAkD,CAACjG,MAAM,EAAE;UAC9DlP;QACF,CAAC,CAAC;MACJ;MACA,OAAOoW,kBAAkB;IAC3B;EACF;EAEAC,yBAAyBA,CAAC;IACxBrW;EAGF,CAAC,EAAoB;IACnB,IAAI,CAAC,IAAI,CAACnE,aAAa,IAAO,CAAC,EAAE,OAAO,IAAI;IAE5C,IAAI,CAACrY,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;MACvC,MAAM,IAAI,CAACsX,KAAK,CACdupB,UAAU,CAACe,sCAAsC,EACjD,IAAI,CAACzpB,KAAK,CAAC1B,QAAQ,EACnB;QACE8qB;MACF,CACF,CAAC;IACH;IAEA,MAAM;MAAEx0B;KAAO,GAAG,IAAI,CAACoL,KAAK;IAC5B,IAAI,CAAC8P,IAAI,CAAA,CAAE;IAEX,IACElb,KAAK,KAAK,SAAS,IACnBA,KAAK,KAAK,QAAQ,IAClBA,KAAK,KAAK,QAAQ,IAClBA,KAAK,KAAK,QAAQ,EAClB;MACA,IAAI,CAACuK,KAAK,CAACupB,UAAU,CAACa,uBAAuB,EAAE,IAAI,CAACvpB,KAAK,CAAC1B,QAAQ,EAAE;QAClE8qB,QAAQ;QACRI,eAAe,EAAE50B;MACnB,CAAC,CAAC;IACJ;IAEA,OAAOA,KAAK;EACd;EAEA8qC,YAAYA,CAAC93C,IAA4B,EAAEgV,EAAgB,EAAU;IACnE,MAAMwsB,QAAQ,GAAGxsB,EAAE,CAAC7O,IAAI;IACxB,MAAM4xC,OAAO,GAAG/iC,EAAE,CAAC/G,GAAG,CAACrQ,KAAK;IAC5B,MAAMmkC,YAAY,GAAG,IAAI,CAAC8V,yBAAyB,CAAC;MAAErW;IAAS,CAAC,CAAC;IACjE,IAAI,CAAC3D,MAAM,CAAA,CAAU,CAAC;IACtB,MAAM;MAAEtQ,OAAO;MAAEiqB;IAAkB,CAAC,GAAG,IAAI,CAACN,eAAe,CAAC;MAC1D1V,QAAQ;MACRO;IACF,CAAC,CAAC;IACF/hC,IAAI,CAACw3C,iBAAiB,GAAGA,iBAAiB;IAE1C,QAAQzV,YAAY;MAClB,KAAK,SAAS;QACZ/hC,IAAI,CAAC+hC,YAAY,GAAG,IAAI;QACxB/hC,IAAI,CAACutB,OAAO,GAAGA,OAAO,CAAC6pB,cAAc;QACrC,IAAI,CAACvZ,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;MACjD,KAAK,QAAQ;QACXA,IAAI,CAAC+hC,YAAY,GAAG,IAAI;QACxB/hC,IAAI,CAACutB,OAAO,GAAGA,OAAO,CAAC8pB,aAAa;QACpC,IAAI,CAACxZ,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;MAChD,KAAK,QAAQ;QACXA,IAAI,CAAC+hC,YAAY,GAAG,IAAI;QACxB/hC,IAAI,CAACutB,OAAO,GAAG,IAAI,CAACoqB,qBAAqB,CACvCpqB,OAAO,CAAC+pB,aAAa,EACrB/pB,OAAO,CAACgqB,gBAAgB,EACxB;UAAE/V;QAAS,CACb,CAAC;QACD,IAAI,CAAC3D,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;MAChD,KAAK,QAAQ;QACXA,IAAI,CAACutB,OAAO,GAAGA,OAAO,CAACgqB,gBAAgB;QACvC,IAAI,CAAC1Z,MAAM,CAAA,CAAU,CAAC;QACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;MAChD;QAAS;UAEP,MAAMg4C,KAAK,GAAGA,CAAAA,KAAM;YAClBh4C,IAAI,CAACutB,OAAO,GAAG,EAAE;YACjB,IAAI,CAACsQ,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;WAC/C;UACDA,IAAI,CAAC+hC,YAAY,GAAG,KAAK;UAEzB,MAAMkW,QAAQ,GAAG1qB,OAAO,CAAC6pB,cAAc,CAAC5+B,MAAM;UAC9C,MAAM0/B,OAAO,GAAG3qB,OAAO,CAAC8pB,aAAa,CAAC7+B,MAAM;UAC5C,MAAM2/B,OAAO,GAAG5qB,OAAO,CAAC+pB,aAAa,CAAC9+B,MAAM;UAC5C,MAAM4/B,YAAY,GAAG7qB,OAAO,CAACgqB,gBAAgB,CAAC/+B,MAAM;UAEpD,IAAI,CAACy/B,QAAQ,IAAI,CAACC,OAAO,IAAI,CAACC,OAAO,IAAI,CAACC,YAAY,EAAE;YACtD,OAAOJ,KAAK,CAAA,CAAE;UAChB,CAAC,MAAM,IAAI,CAACC,QAAQ,IAAI,CAACC,OAAO,EAAE;YAChCl4C,IAAI,CAACutB,OAAO,GAAG,IAAI,CAACoqB,qBAAqB,CACvCpqB,OAAO,CAAC+pB,aAAa,EACrB/pB,OAAO,CAACgqB,gBAAgB,EACxB;cAAE/V;YAAS,CACb,CAAC;YACD,IAAI,CAAC3D,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;UAC/C,CAAA,MAAM,IAAI,CAACk4C,OAAO,IAAI,CAACC,OAAO,IAAIF,QAAQ,IAAIG,YAAY,EAAE;YAC3D,KAAK,MAAM1H,MAAM,IAAInjB,OAAO,CAACgqB,gBAAgB,EAAE;cAC7C,IAAI,CAAChB,wCAAwC,CAAC7F,MAAM,CAACziC,GAAG,CAACrQ,KAAK,EAAE;gBAC9D4jC,QAAQ;gBACRD,UAAU,EAAEmP,MAAM,CAAC17B,EAAE,CAAC7O;cACxB,CAAC,CAAC;YACJ;YACAnG,IAAI,CAACutB,OAAO,GAAGA,OAAO,CAAC6pB,cAAc;YACrC,IAAI,CAACvZ,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;UAChD,CAAA,MAAM,IAAI,CAACi4C,QAAQ,IAAI,CAACE,OAAO,IAAID,OAAO,IAAIE,YAAY,EAAE;YAC3D,KAAK,MAAM1H,MAAM,IAAInjB,OAAO,CAACgqB,gBAAgB,EAAE;cAC7C,IAAI,CAACb,uCAAuC,CAAChG,MAAM,CAACziC,GAAG,CAACrQ,KAAK,EAAE;gBAC7D4jC,QAAQ;gBACRD,UAAU,EAAEmP,MAAM,CAAC17B,EAAE,CAAC7O;cACxB,CAAC,CAAC;YACJ;YACAnG,IAAI,CAACutB,OAAO,GAAGA,OAAO,CAAC8pB,aAAa;YACpC,IAAI,CAACxZ,MAAM,CAAA,CAAU,CAAC;YACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;UAChD,CAAC,MAAM;YACL,IAAI,CAACuX,KAAK,CAACupB,UAAU,CAACY,4BAA4B,EAAEqW,OAAO,EAAE;cAC3DvW;YACF,CAAC,CAAC;YACF,OAAOwW,KAAK,CAAA,CAAE;UAChB;QACF;IACF;EACF;EAEA/J,wBAAwBA,CACtBjuC,IAAmC,EACZ;IACvB,MAAMgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IACjCpmC,IAAI,CAACgV,EAAE,GAAGA,EAAE;IACZhV,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACojC,YAAY,CAAC,IAAI,CAACniC,SAAS,CAAA,CAAE,EAAEX,EAAE,CAAC;IACnD,OAAO,IAAI,CAACc,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAq4C,+BAA+BA,CAC7Br4C,IAAyB,EACJ;IACrB,IAAI,IAAI,CAACslC,gBAAgB,EAAE,EAAE;MAC3B,IAAI,IAAI,CAACvT,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;QACjD/xB,IAAI,CAAC01C,aAAa,GAChB,IAAI,CAACtL,+CAA+C,EAAE;MAC1D;IACF;IAEA,OAAO,KAAK,CAACiO,+BAA+B,CAACr4C,IAAI,CAAC;EACpD;EAGAy1C,mBAAmBA,CAAAA,EAAY;IAC7B,MAAMvtB,IAAI,GAAG,IAAI,CAAC6M,cAAc,EAAE;IAClC,IAAI,IAAI,CAAC3H,KAAK,CAACC,UAAU,CAACnF,IAAI,CAAC,KAAA,EAAuB,EAAE;MACtD,MAAMowB,SAAS,GAAG,IAAI,CAAClrB,KAAK,CAACC,UAAU,CAACnF,IAAI,GAAG,CAAC,CAAC;MACjD,OACEowB,SAAS,KAAA,EAAuB,IAAIA,SAAS,KAAuB,EAAA;IAExE;IACA,OAAO,KAAK;EACd;EAGA/N,YAAYA,CAAAA,EAAG;IACb,MAAM;MAAEtqC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,OAAU,EAAE;MAClB,IAAI,CAACmY,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACspB,YAAY,CAAA,CAAE;IACrB,CAAC,MAAM,IAAI13B,IAAI,KAAA,EAAU,EAAE;MACzB,IAAI,CAACmY,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACupB,YAAY,CAAA,CAAE;IACrB;EACF;EAEAyS,SAASA,CAAAA,EAAG;IACV,MAAM;MAAEpqC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,OAAiB,EAAE;MACzB,IAAI,CAACmY,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACwoB,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;MACvB,OAAA,EAAA;IACF;IACA,OAAO52B,IAAI;EACb;EAEA00C,6BAA6BA,CAAC30C,IAAY,EAAE;IAC1C,OAAOA,IAAI,CAACC,IAAI,KAAK,oBAAoB,GAAGD,IAAI,CAACmT,UAAU,GAAGnT,IAAI;EACpE;AACF,CAAC;AClzHH,MAAMu4C,QAGL,GAAG;EACFC,SAAS,EAAE,IAAI;EACfC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,GAAG;EACRC,IAAI,EAAE,QAAQ;EACd15B,EAAE,EAAE,GAAG;EACPC,EAAE,EAAE,GAAG;EACP05B,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACd5gC,KAAK,EAAE,QAAQ;EACf6gC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,QAAQ;EACjBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,QAAQ;EACjBC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,OAAO,EAAE,QAAQ;EACjBC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,QAAQ;EACjBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,OAAO,EAAE,QAAQ;EACjBC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,OAAO,EAAE,QAAQ;EACjBC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,QAAQ,EAAE,QAAQ;EAClBC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,OAAO,EAAE,QAAQ;EACjBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfpN,KAAK,EAAE,QAAQ;EACfqN,KAAK,EAAE,QAAQ;EACfC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,EAAE,EAAE,QAAQ;EACZC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfxvC,IAAI,EAAE,QAAQ;EACdyvC,KAAK,EAAE,QAAQ;EACfC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,EAAE,EAAE,QAAQ;EACZC,KAAK,EAAE,QAAQ;EACfC,EAAE,EAAE,QAAQ;EACZC,EAAE,EAAE,QAAQ;EACZC,GAAG,EAAE,QAAQ;EACbC,GAAG,EAAE,QAAQ;EACbC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE,QAAQ;EACdC,IAAI,EAAE,QAAQ;EACdC,GAAG,EAAE,QAAQ;EACbC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,QAAQ;EACfC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE;AACT,CAAU;AC5OV,MAAMC,SAAS,GAAGp5C,cAAc,KAAK,CAAC;EACpCq5C,gBAAgB,EACd,8DAA8D;EAChEC,wBAAwB,EAAEA,CAAC;IAAEC;GAA4C,KACvE,+CAA+CA,cAAc,IAAI;EACnEC,yBAAyB,EAAE,gDAAgD;EAC3EC,4BAA4B,EAC1B,0GAA0G;EAE5G1+C,eAAe,EAAEA,CAAC;IAChB1E,UAAU;IACVqjD;EAIF,CAAC,KACC,sBAAsBrjD,UAAU,sBAAsBqjD,UAAU,aAAarjD,UAAU,OAAO;EAChGsjD,mBAAmB,EACjB,gEAAgE;EAClEC,sBAAsB,EAAE,4BAA4B;EACpDC,4BAA4B,EAC1B;AACJ,CAAC,CAAC;AAIF,SAASC,UAAUA,CAACt3C,MAAwB,EAA8B;EACxE,OAAOA,MAAM,GACTA,MAAM,CAACpR,IAAI,KAAK,oBAAoB,IAClCoR,MAAM,CAACpR,IAAI,KAAK,oBAAoB,GACtC,KAAK;AACX;AAIA,SAAS2oD,mBAAmBA,CAC1Bv3C,MAAqE,EAC7D;EACR,IAAIA,MAAM,CAACpR,IAAI,KAAK,eAAe,EAAE;IACnC,OAAOoR,MAAM,CAAClL,IAAI;EACpB;EAEA,IAAIkL,MAAM,CAACpR,IAAI,KAAK,mBAAmB,EAAE;IACvC,OAAOoR,MAAM,CAACw3C,SAAS,CAAC1iD,IAAI,GAAG,GAAG,GAAGkL,MAAM,CAAClL,IAAI,CAACA,IAAI;EACvD;EAEA,IAAIkL,MAAM,CAACpR,IAAI,KAAK,qBAAqB,EAAE;IACzC,OACE2oD,mBAAmB,CAACv3C,MAAM,CAACA,MAAM,CAAC,GAClC,GAAG,GACHu3C,mBAAmB,CAACv3C,MAAM,CAACwtB,QAAQ,CAAC;EAExC;EAIA,MAAM,IAAI1tB,KAAK,CAAC,4BAA4B,GAAGE,MAAM,CAACpR,IAAI,CAAC;AAC7D;AAeA,IAAAm0C,GAAA,GAAgB5iC,UAAyB,IACvC,MAAMs3C,cAAc,SAASt3C,UAAU,CAAoC;EAGzEu3C,YAAYA,CAAAA,EAAS;IACnB,IAAIh4B,GAAG,GAAG,EAAE;IACZ,IAAIE,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;IAC/B,SAAS;MACP,IAAI,IAAI,CAAC+J,KAAK,CAAC/J,GAAG,IAAI,IAAI,CAACmK,MAAM,EAAE;QACjC,MAAM,IAAI,CAACjB,KAAK,CACd0wC,SAAS,CAACQ,sBAAsB,EAChC,IAAI,CAACrwC,KAAK,CAAC1B,QACb,CAAC;MACH;MAEA,MAAM8Z,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;MAEhD,QAAQmiB,EAAE;QACR,KAAA,EAAA;QACA,KAAA,GAAA;UACE,IAAI,IAAI,CAACpY,KAAK,CAAC/J,GAAG,KAAK,IAAI,CAAC+J,KAAK,CAACxa,KAAK,EAAE;YACvC,IAAI4yB,EAAE,OAAuB,IAAI,IAAI,CAACpY,KAAK,CAACyX,kBAAkB,EAAE;cAC9D,EAAE,IAAI,CAACzX,KAAK,CAAC/J,GAAG;cAChB,IAAI,CAACynB,WAAW,CAAA,GAAe,CAAC;YAClC,CAAC,MAAM;cACL,KAAK,CAACC,gBAAgB,CAACvF,EAAE,CAAC;YAC5B;YACA;UACF;UACAO,GAAG,IAAI,IAAI,CAAC3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;UACnD,IAAI,CAACynB,WAAW,CAAa/E,GAAAA,EAAAA,GAAG,CAAC;UACjC;QAEF,KAAA,EAAA;UACEA,GAAG,IAAI,IAAI,CAAC3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;UACnD0iB,GAAG,IAAI,IAAI,CAACi4B,aAAa,EAAE;UAC3B/3B,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;UAC3B;QAEF,KAAA,EAAA;QACA,KAAA,GAAA;QAUA;UACE,IAAIyf,SAAS,CAAC0C,EAAE,CAAC,EAAE;YACjBO,GAAG,IAAI,IAAI,CAAC3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;YACnD0iB,GAAG,IAAI,IAAI,CAACk4B,cAAc,CAAC,IAAI,CAAC;YAChCh4B,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;UAC7B,CAAC,MAAM;YACL,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;UAClB;MACJ;IACF;EACF;EAEA46C,cAAcA,CAACC,aAAsB,EAAU;IAC7C,MAAM14B,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAChD,IAAI0iB,GAAG;IACP,EAAE,IAAI,CAAC3Y,KAAK,CAAC/J,GAAG;IAChB,IACEmiB,EAAE,KAA6B,EAAA,IAC/B,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC,OAAuB,EAC5D;MACA,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;MAChB0iB,GAAG,GAAGm4B,aAAa,GAAG,IAAI,GAAG,MAAM;IACrC,CAAC,MAAM;MACLn4B,GAAG,GAAGte,MAAM,CAACwU,YAAY,CAACuJ,EAAE,CAAC;IAC/B;IACA,EAAE,IAAI,CAACpY,KAAK,CAACgW,OAAO;IACpB,IAAI,CAAChW,KAAK,CAACiW,SAAS,GAAG,IAAI,CAACjW,KAAK,CAAC/J,GAAG;IAErC,OAAO0iB,GAAG;EACZ;EAEAo4B,aAAaA,CAAC9vB,KAAa,EAAQ;IACjC,IAAItI,GAAG,GAAG,EAAE;IACZ,IAAIE,UAAU,GAAG,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;IACjC,SAAS;MACP,IAAI,IAAI,CAAC+J,KAAK,CAAC/J,GAAG,IAAI,IAAI,CAACmK,MAAM,EAAE;QACjC,MAAM,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAC7E,kBAAkB,EAAE,IAAI,CAACwN,KAAK,CAAC1B,QAAQ,CAAC;MAClE;MAEA,MAAM8Z,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;MAChD,IAAImiB,EAAE,KAAK6I,KAAK,EAAE;MAClB,IAAI7I,EAAE,OAAwB,EAAE;QAC9BO,GAAG,IAAI,IAAI,CAAC3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;QACnD0iB,GAAG,IAAI,IAAI,CAACi4B,aAAa,EAAE;QAC3B/3B,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;MAC7B,CAAC,MAAM,IAAIyf,SAAS,CAAC0C,EAAE,CAAC,EAAE;QACxBO,GAAG,IAAI,IAAI,CAAC3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,CAAC;QACnD0iB,GAAG,IAAI,IAAI,CAACk4B,cAAc,CAAC,KAAK,CAAC;QACjCh4B,UAAU,GAAG,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG;MAC7B,CAAC,MAAM;QACL,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;MAClB;IACF;IACA0iB,GAAG,IAAI,IAAI,CAAC3D,KAAK,CAAC6C,KAAK,CAACgB,UAAU,EAAE,IAAI,CAAC7Y,KAAK,CAAC/J,GAAG,EAAE,CAAC;IACrD,IAAI,CAACynB,WAAW,CAAY/E,GAAAA,EAAAA,GAAG,CAAC;EAClC;EAEAi4B,aAAaA,CAAAA,EAAW;IACtB,MAAMl3B,QAAQ,GAAG,EAAE,IAAI,CAAC1Z,KAAK,CAAC/J,GAAG;IACjC,IAAI,IAAI,CAACinB,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,KAAA,EAAyB,EAAE;MAChE,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;MAEhB,IAAIhK,KAAK,GAAG,EAAE;MACd,IAAI,IAAI,CAACixB,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,KAAA,GAAyB,EAAE;QAChEhK,KAAK,GAAG,EAAE;QACV,EAAE,IAAI,CAAC+T,KAAK,CAAC/J,GAAG;MAClB;MAEA,MAAM+6C,SAAS,GAAG,IAAI,CAAC72B,OAAO,CAC5BluB,KAAK,EACKwL,SAAS,EACJ,KAAK,EACI,MAC1B,CAAC;MACD,IACEu5C,SAAS,KAAK,IAAI,IAClB,IAAI,CAAC9zB,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,OAAwB,EAC3D;QACA,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;QAChB,OAAOoE,MAAM,CAACmf,aAAa,CAACw3B,SAAS,CAAC;MACxC;IACF,CAAC,MAAM;MACL,IAAIC,KAAK,GAAG,CAAC;MACb,IAAIpsC,IAAI,GAAG,KAAK;MAChB,OACEosC,KAAK,EAAE,GAAG,EAAE,IACZ,IAAI,CAACjxC,KAAK,CAAC/J,GAAG,GAAG,IAAI,CAACmK,MAAM,IAC5B,EAAEyE,IAAI,GAAG,IAAI,CAACqY,cAAc,CAAC,IAAI,CAACld,KAAK,CAAC/J,GAAG,CAAC,KAAA,EAAwB,CAAC,EACrE;QACA,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;MAClB;MAEA,IAAI4O,IAAI,EAAE;QACR,MAAMqsC,IAAI,GAAG,IAAI,CAACl8B,KAAK,CAAC6C,KAAK,CAAC6B,QAAQ,EAAE,IAAI,CAAC1Z,KAAK,CAAC/J,GAAG,CAAC;QACvD,MAAMk7C,MAAM,GAAGC,QAAa,CAACF,IAAI,CAAC;QAClC,EAAE,IAAI,CAAClxC,KAAK,CAAC/J,GAAG;QAEhB,IAAIk7C,MAAM,EAAE;UACV,OAAOA,MAAM;QACf;MACF;IACF;IAGA,IAAI,CAACnxC,KAAK,CAAC/J,GAAG,GAAGyjB,QAAQ;IACzB,OAAO,GAAG;EACZ;EASA23B,WAAWA,CAAAA,EAAS;IAClB,IAAIj5B,EAAE;IACN,MAAM5yB,KAAK,GAAG,IAAI,CAACwa,KAAK,CAAC/J,GAAG;IAC5B,GAAG;MACDmiB,EAAE,GAAG,IAAI,CAACpD,KAAK,CAACC,UAAU,CAAC,EAAE,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC;IAC7C,CAAA,QAAQ6Y,gBAAgB,CAACsJ,EAAE,CAAC,IAAIA,EAAE,KAAmB,EAAA;IACtD,IAAI,CAACsF,WAAW,CAAA,GAAA,EAAa,IAAI,CAAC1I,KAAK,CAAC6C,KAAK,CAACryB,KAAK,EAAE,IAAI,CAACwa,KAAK,CAAC/J,GAAG,CAAC,CAAC;EACvE;EAIAq7C,kBAAkBA,CAAAA,EAAoB;IACpC,MAAM1pD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C,IAAI,IAAI,CAACoc,KAAK,CAAA,GAAW,CAAC,EAAE;MAC1B/xB,IAAI,CAACmG,IAAI,GAAG,IAAI,CAACiS,KAAK,CAACpL,KAAK;IAC7B,CAAA,MAAM,IAAIyY,cAAc,CAAC,IAAI,CAACrN,KAAK,CAACnY,IAAI,CAAC,EAAE;MAC1CD,IAAI,CAACmG,IAAI,GAAG4f,cAAc,CAAC,IAAI,CAAC3N,KAAK,CAACnY,IAAI,CAAC;IAC7C,CAAC,MAAM;MACL,IAAI,CAACiF,UAAU,CAAA,CAAE;IACnB;IACA,IAAI,CAACgjB,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAIA2pD,sBAAsBA,CAAAA,EAA0C;IAC9D,MAAMjzC,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAMvQ,IAAI,GAAG,IAAI,CAACujD,kBAAkB,EAAE;IACtC,IAAI,CAAC,IAAI,CAACj1B,GAAG,GAAS,CAAC,EAAE,OAAOtuB,IAAI;IAEpC,MAAMnG,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAsBhqB,QAAQ,CAAC;IAC5D1W,IAAI,CAAC6oD,SAAS,GAAG1iD,IAAI;IACrBnG,IAAI,CAACmG,IAAI,GAAG,IAAI,CAACujD,kBAAkB,EAAE;IACrC,OAAO,IAAI,CAAC5zC,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAKA4pD,mBAAmBA,CAAAA,EAGO;IACxB,MAAMlzC,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,IAAI1W,IAAmE,GACrE,IAAI,CAAC2pD,sBAAsB,EAAE;IAC/B,IAAI3pD,IAAI,CAACC,IAAI,KAAK,mBAAmB,EAAE;MACrC,OAAOD,IAAI;IACb;IACA,OAAO,IAAI,CAACy0B,GAAG,CAAA,EAAO,CAAC,EAAE;MACvB,MAAMyL,OAAO,GAAG,IAAI,CAACQ,WAAW,CAAwBhqB,QAAQ,CAAC;MACjEwpB,OAAO,CAAC7uB,MAAM,GAAGrR,IAAI;MACrBkgC,OAAO,CAACrB,QAAQ,GAAG,IAAI,CAAC6qB,kBAAkB,EAAE;MAC5C1pD,IAAI,GAAG,IAAI,CAAC8V,UAAU,CAACoqB,OAAO,EAAE,qBAAqB,CAAC;IACxD;IACA,OAAOlgC,IAAI;EACb;EAIA6pD,sBAAsBA,CAAAA,EAGF;IAClB,IAAI7pD,IAAI;IACR,QAAQ,IAAI,CAACoY,KAAK,CAACnY,IAAI;MACrB,KAAA,CAAA;QACED,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAE;QACvB,IAAI,CAACm0C,UAAU,CAACxjC,KAAE,CAACxM,KAAK,CAAC;QACzB,IAAI,CAACoO,IAAI,CAAA,CAAE;QACXloB,IAAI,GAAG,IAAI,CAAC+pD,2BAA2B,CAAC/pD,IAAI,EAAEsmB,KAAE,CAACvM,MAAM,CAAC;QACxD,IAAI/Z,IAAI,CAACmT,UAAU,CAAClT,IAAI,KAAK,oBAAoB,EAAE;UACjD,IAAI,CAACsX,KAAK,CAAC0wC,SAAS,CAACC,gBAAgB,EAAEloD,IAAI,CAAC;QAC9C;QACA,OAAOA,IAAI;MAEb,KAAA,GAAA;MACA,KAAA,GAAA;QACE,OAAO,IAAI,CAACunC,aAAa,EAAE;MAE7B;QACE,MAAM,IAAI,CAAChwB,KAAK,CAAC0wC,SAAS,CAACO,mBAAmB,EAAE,IAAI,CAACpwC,KAAK,CAAC1B,QAAQ,CAAC;IACxE;EACF;EAMAszC,uBAAuBA,CAAAA,EAAyB;IAC9C,MAAMhqD,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAC,IAAI,CAACtoB,KAAK,CAACsB,aAAa,CAAC;IACvD,OAAO,IAAI,CAACH,YAAY,CAACvZ,IAAI,EAAE,oBAAoB,EAAE,IAAI,CAACoY,KAAK,CAAC1B,QAAQ,CAAC;EAC3E;EAIAuzC,mBAAmBA,CAACjqD,IAA8B,EAAoB;IACpE,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACmT,UAAU,GAAG,IAAI,CAAC2yB,eAAe,EAAE;IACxC,IAAI,CAACgkB,UAAU,CAACxjC,KAAE,CAACrM,MAAM,CAAC;IAC1B,IAAI,CAAC7B,KAAK,CAACyX,kBAAkB,GAAG,IAAI;IACpC,IAAI,CAACgO,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAIA+pD,2BAA2BA,CACzB/pD,IAAsC,EACtCkqD,eAA2B,EACD;IAC1B,IAAI,IAAI,CAACn4B,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB/xB,IAAI,CAACmT,UAAU,GAAG,IAAI,CAAC62C,uBAAuB,EAAE;IAClD,CAAC,MAAM;MACL,MAAM72C,UAAU,GAAG,IAAI,CAAC2yB,eAAe,EAAE;MAczC9lC,IAAI,CAACmT,UAAU,GAAGA,UAAU;IAC9B;IACA,IAAI,CAAC22C,UAAU,CAACI,eAAe,CAAC;IAChC,IAAI,CAAC9xC,KAAK,CAACyX,kBAAkB,GAAG,IAAI;IACpC,IAAI,CAACgO,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAIAmqD,iBAAiBA,CAAAA,EAA0C;IACzD,MAAMnqD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAyC;IACpE,IAAI,IAAI,CAACoc,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB,IAAI,CAAC+3B,UAAU,CAACxjC,KAAE,CAACxM,KAAK,CAAC;MACzB,IAAI,CAACoO,IAAI,CAAA,CAAE;MACX,IAAI,CAAC2V,MAAM,CAAA,EAAY,CAAC;MACxB79B,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAACmgC,uBAAuB,EAAE;MAC9C,IAAI,CAAC6a,UAAU,CAACxjC,KAAE,CAACvM,MAAM,CAAC;MAC1B,IAAI,CAAC3B,KAAK,CAACyX,kBAAkB,GAAG,IAAI;MACpC,IAAI,CAACgO,MAAM,CAAA,CAAU,CAAC;MACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACAA,IAAI,CAACmG,IAAI,GAAG,IAAI,CAACwjD,sBAAsB,EAAE;IACzC3pD,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACynB,GAAG,CAAA,EAAM,CAAC,GAAG,IAAI,CAACo1B,sBAAsB,CAAE,CAAA,GAAG,IAAI;IACnE,OAAO,IAAI,CAAC/zC,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAIAoqD,wBAAwBA,CACtB1zC,QAAkB,EAC0B;IAC5C,MAAM1W,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAC3BhqB,QACF,CAAC;IACD,IAAI,IAAI,CAAC+d,GAAG,CAAA,GAAa,CAAC,EAAE;MAC1B,OAAO,IAAI,CAAC3e,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACAA,IAAI,CAACmG,IAAI,GAAG,IAAI,CAACyjD,mBAAmB,EAAE;IACtC,OAAO,IAAI,CAACvR,+BAA+B,CACzCr4C,IACF,CAAC;EACH;EAEAq4C,+BAA+BA,CAC7Br4C,IAAiC,EACZ;IACrB,MAAM+X,UAAqD,GAAG,EAAE;IAChE,OAAO,CAAC,IAAI,CAACga,KAAK,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAA,GAAa,CAAC,EAAE;MACzDha,UAAU,CAAC8D,IAAI,CAAC,IAAI,CAACsuC,iBAAiB,CAAE,CAAA,CAAC;IAC3C;IACAnqD,IAAI,CAAC+X,UAAU,GAAGA,UAAU;IAC5B/X,IAAI,CAACqqD,WAAW,GAAG,IAAI,CAAC51B,GAAG,GAAS,CAAC;IACrC,IAAI,CAACoJ,MAAM,CAAA,GAAa,CAAC;IACzB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAIAsqD,wBAAwBA,CACtB5zC,QAAkB,EAC0B;IAC5C,MAAM1W,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAC3BhqB,QACF,CAAC;IACD,IAAI,IAAI,CAAC+d,GAAG,CAAA,GAAa,CAAC,EAAE;MAC1B,OAAO,IAAI,CAAC3e,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACAA,IAAI,CAACmG,IAAI,GAAG,IAAI,CAACyjD,mBAAmB,EAAE;IACtC,IAAI,CAAC/rB,MAAM,CAAA,GAAa,CAAC;IACzB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAKAuqD,iBAAiBA,CAAC7zC,QAAkB,EAAgC;IAClE,MAAM1W,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA+BhqB,QAAQ,CAAC;IACrE,MAAM8zC,QAAQ,GAAG,EAAE;IACnB,MAAMC,cAAc,GAAG,IAAI,CAACL,wBAAwB,CAAC1zC,QAAQ,CAAC;IAC9D,IAAIg0C,cAAc,GAAG,IAAI;IAEzB,IAAI,CAACD,cAAc,CAACJ,WAAW,EAAE;MAC/BM,QAAQ,EAAE,SAAS;QACjB,QAAQ,IAAI,CAACvyC,KAAK,CAACnY,IAAI;UACrB,KAAA,GAAA;YACEyW,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;YAC9B,IAAI,CAACwR,IAAI,CAAA,CAAE;YACX,IAAI,IAAI,CAACuM,GAAG,CAAA,EAAS,CAAC,EAAE;cACtBi2B,cAAc,GAAG,IAAI,CAACJ,wBAAwB,CAAC5zC,QAAQ,CAAC;cACxD,MAAMi0C,QAAQ;YAChB;YACAH,QAAQ,CAAC3uC,IAAI,CAAC,IAAI,CAAC0uC,iBAAiB,CAAC7zC,QAAQ,CAAC,CAAC;YAC/C;UAEF,KAAA,GAAA;YACE8zC,QAAQ,CAAC3uC,IAAI,CAAC,IAAI,CAACjJ,YAAY,CAAC,IAAI,CAACwF,KAAK,CAACpL,KAAK,EAAE,SAAS,CAAC,CAAC;YAC7D;UAEF,KAAA,CAAA;YAAgB;cACd,MAAMhN,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAExB;cACH,IAAI,CAACm0C,UAAU,CAACxjC,KAAE,CAACxM,KAAK,CAAC;cACzB,IAAI,CAACoO,IAAI,CAAA,CAAE;cACX,IAAI,IAAI,CAAC6J,KAAK,CAAA,EAAY,CAAC,EAAE;gBAC3By4B,QAAQ,CAAC3uC,IAAI,CAAC,IAAI,CAACouC,mBAAmB,CAACjqD,IAAI,CAAC,CAAC;cAC/C,CAAC,MAAM;gBACLwqD,QAAQ,CAAC3uC,IAAI,CACX,IAAI,CAACkuC,2BAA2B,CAAC/pD,IAAI,EAAEsmB,KAAE,CAACrM,MAAM,CAClD,CAAC;cACH;cAEA;YACF;UAEA;YACE,IAAI,CAAC/U,UAAU,CAAA,CAAE;QACrB;MACF;MAEA,IACEyjD,UAAU,CAAC8B,cAAc,CAAC,IAC1B,CAAC9B,UAAU,CAAC+B,cAAc,CAAC,IAC3BA,cAAc,KAAK,IAAI,EACvB;QACA,IAAI,CAACnzC,KAAK,CAAC0wC,SAAS,CAACI,yBAAyB,EAAEqC,cAAc,CAAC;MACjE,CAAC,MAAM,IAAI,CAAC/B,UAAU,CAAC8B,cAAc,CAAC,IAAI9B,UAAU,CAAC+B,cAAc,CAAC,EAAE;QACpE,IAAI,CAACnzC,KAAK,CAAC0wC,SAAS,CAACE,wBAAwB,EAAEuC,cAAc,EAAE;UAC7DtC,cAAc,EAAEQ,mBAAmB,CAAC6B,cAAc,CAACtkD,IAAI;QACzD,CAAC,CAAC;MACJ,CAAC,MAAM,IAAI,CAACwiD,UAAU,CAAC8B,cAAc,CAAC,IAAI,CAAC9B,UAAU,CAAC+B,cAAc,CAAC,EAAE;QACrE,IACE9B,mBAAmB,CAAC8B,cAAc,CAACvkD,IAAI,CAAC,KACxCyiD,mBAAmB,CAAC6B,cAAc,CAACtkD,IAAI,CAAC,EACxC;UACA,IAAI,CAACoR,KAAK,CAAC0wC,SAAS,CAACE,wBAAwB,EAAEuC,cAAc,EAAE;YAC7DtC,cAAc,EAAEQ,mBAAmB,CAAC6B,cAAc,CAACtkD,IAAI;UACzD,CAAC,CAAC;QACJ;MACF;IACF;IAEA,IAAIwiD,UAAU,CAAC8B,cAAc,CAAC,EAAE;MAC9BzqD,IAAI,CAAC4qD,eAAe,GAAGH,cAAc;MACrCzqD,IAAI,CAAC6qD,eAAe,GAAGH,cAAc;IACvC,CAAC,MAAM;MACL1qD,IAAI,CAACyqD,cAAc,GAAGA,cAAc;MACpCzqD,IAAI,CAAC0qD,cAAc,GAAGA,cAAc;IACtC;IACA1qD,IAAI,CAACwqD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,IAAI,CAACz4B,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,MAAM,IAAI,CAACxa,KAAK,CACd0wC,SAAS,CAACS,4BAA4B,EACtC,IAAI,CAACtwC,KAAK,CAAC1B,QACb,CAAC;IACH;IAEA,OAAOiyC,UAAU,CAAC8B,cAAc,CAAC,GAC7B,IAAI,CAAC30C,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC,GACpC,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,YAAY,CAAC;EACzC;EAIA8qD,eAAeA,CAAAA,EAAiC;IAC9C,MAAMp0C,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,IAAI,CAACwR,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACqiC,iBAAiB,CAAC7zC,QAAQ,CAAC;EACzC;EAEAozC,UAAUA,CAACiB,UAAsB,EAAE;IACjC,MAAM;MAAE3kC;KAAS,GAAG,IAAI,CAAChO,KAAK;IAC9BgO,OAAO,CAACA,OAAO,CAAC5N,MAAM,GAAG,CAAC,CAAC,GAAGuyC,UAAU;EAC1C;EAMAxjB,aAAaA,CAAC5wB,mBAA6C,EAAgB;IACzE,IAAI,IAAI,CAACob,KAAK,CAAA,GAAe,CAAC,EAAE;MAC9B,OAAO,IAAI,CAAC+4B,eAAe,EAAE;IAC9B,CAAA,MAAM,IACL,IAAI,CAAC/4B,KAAK,CAAM,EAAA,CAAC,IACjB,IAAI,CAAC3E,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,CAAC,KAAA,EAA8B,EACnE;MAGA,IAAI,CAACkoB,YAAY,CAAA,GAAe,CAAC;MACjC,OAAO,IAAI,CAACu0B,eAAe,EAAE;IAC/B,CAAC,MAAM;MACL,OAAO,KAAK,CAACvjB,aAAa,CAAC5wB,mBAAmB,CAAC;IACjD;EACF;EAEAkf,SAASA,CAAAA,EAAG;IACV,MAAMlB,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;IACpC,IAAI,CAACA,UAAU,CAAC/a,aAAa,EAAE,KAAK,CAACic,SAAS,CAAA,CAAE;EAClD;EAEAE,gBAAgBA,CAAC53B,IAAY,EAAQ;IACnC,MAAMioB,OAAO,GAAG,IAAI,CAACuO,UAAU,EAAE;IAEjC,IAAIvO,OAAO,KAAKE,KAAE,CAACrM,MAAM,EAAE;MACzB,IAAI,CAAC8uC,YAAY,CAAA,CAAE;MACnB;IACF;IAEA,IAAI3iC,OAAO,KAAKE,KAAE,CAACvM,MAAM,IAAIqM,OAAO,KAAKE,KAAE,CAACtM,MAAM,EAAE;MAClD,IAAI+M,iBAAiB,CAAC5oB,IAAI,CAAC,EAAE;QAC3B,IAAI,CAACsrD,WAAW,CAAA,CAAE;QAClB;MACF;MAEA,IAAItrD,IAAI,OAA0B,EAAE;QAClC,EAAE,IAAI,CAACia,KAAK,CAAC/J,GAAG;QAChB,IAAI,CAACynB,WAAW,CAAA,GAAa,CAAC;QAC9B;MACF;MAEA,IACE,CAAC33B,IAAI,KAA4B,EAAA,IAAIA,IAAI,KAAA,EAAyB,KAClEioB,OAAO,KAAKE,KAAE,CAACvM,MAAM,EACrB;QACA,IAAI,CAACovC,aAAa,CAAChrD,IAAI,CAAC;QACxB;MACF;IACF;IAEA,IACEA,IAAI,KAAuB,EAAA,IAC3B,IAAI,CAACia,KAAK,CAACyX,kBAAkB,IAC7B,IAAI,CAACzC,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,KAAA,EAA8B,EACvE;MACA,EAAE,IAAI,CAAC+J,KAAK,CAAC/J,GAAG;MAChB,IAAI,CAACynB,WAAW,CAAA,GAAe,CAAC;MAChC;IACF;IAEA,KAAK,CAACC,gBAAgB,CAAC53B,IAAI,CAAC;EAC9B;EAEAyc,aAAaA,CAAC0b,QAAmB,EAAQ;IACvC,MAAM;MAAElQ,OAAO;MAAEnmB;KAAM,GAAG,IAAI,CAACmY,KAAK;IACpC,IAAInY,IAAI,KAAA,EAAa,IAAIq2B,QAAQ,QAAmB,EAAE;MAGpDlQ,OAAO,CAAC6G,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE3G,KAAE,CAACtM,MAAM,CAAC;MAChC,IAAI,CAAC5B,KAAK,CAACyX,kBAAkB,GAAG,KAAK;IACvC,CAAC,MAAM,IAAI5vB,IAAI,KAAA,GAAmB,EAAE;MAElCmmB,OAAO,CAACvK,IAAI,CAACyK,KAAE,CAACvM,MAAM,CAAC;IACzB,CAAC,MAAM,IAAI9Z,IAAI,KAAA,GAAiB,EAAE;MAChC,MAAM8wB,GAAG,GAAG3K,OAAO,CAACA,OAAO,CAAC5N,MAAM,GAAG,CAAC,CAAC;MACvC,IAAKuY,GAAG,KAAKzK,KAAE,CAACvM,MAAM,IAAIuc,QAAQ,KAAa,EAAA,IAAKvF,GAAG,KAAKzK,KAAE,CAACtM,MAAM,EAAE;QACrEoM,OAAO,CAACC,GAAG,CAAA,CAAE;QACb,IAAI,CAACjO,KAAK,CAACyX,kBAAkB,GAC3BzJ,OAAO,CAACA,OAAO,CAAC5N,MAAM,GAAG,CAAC,CAAC,KAAK8N,KAAE,CAACrM,MAAM;MAC7C,CAAC,MAAM;QACL,IAAI,CAAC6vC,UAAU,CAACxjC,KAAE,CAACrM,MAAM,CAAC;QAC1B,IAAI,CAAC7B,KAAK,CAACyX,kBAAkB,GAAG,IAAI;MACtC;IACF,CAAC,MAAM;MACL,IAAI,CAACzX,KAAK,CAACyX,kBAAkB,GAAGzK,0BAA0B,CAACnlB,IAAI,CAAC;IAClE;EACF;AACF,CAAC;AC5nBH,MAAM+qD,eAAe,SAAS1iC,KAAK,CAAC;EAAAhrB,WAAAA,CAAA,GAAA2Y,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAAA,CAClCg1C,OAAO,GAA4B,IAAInwC,GAAG,EAAE;EAAA;AAC9C;AAKe,MAAMowC,sBAAsB,SAASziC,YAAY,CAAkB;EAAAnrB,WAAAA,CAAA,GAAA2Y,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAChFk1C,CAAAA,YAAY,GAAkB,EAAE;EAAA;EAEhCzhC,WAAWA,CAAC3X,KAAgB,EAAmB;IAC7C,IAAI,CAACo5C,YAAY,CAACtvC,IAAI,CAAC,IAAI9P,GAAG,CAAE,CAAA,CAAC;IAEjC,OAAO,IAAIi/C,eAAe,CAACj5C,KAAK,CAAC;EACnC;EAEA4X,KAAKA,CAAC5X,KAAgB,EAAQ;IAC5B,IAAIA,KAAK,QAAwB,EAAE;MACjC,IAAI,CAACo5C,YAAY,CAACtvC,IAAI,CAAC,IAAI9P,GAAG,CAAE,CAAA,CAAC;IACnC;IAEA,KAAK,CAAC4d,KAAK,CAAC5X,KAAK,CAAC;EACpB;EAEA6X,IAAIA,CAAAA,EAAG;IACL,MAAM7X,KAAK,GAAG,KAAK,CAAC6X,IAAI,EAAE;IAE1B,IAAI7X,KAAK,QAAwB,EAAE;MACjC,IAAI,CAACo5C,YAAY,CAAC9kC,GAAG,EAAE;IACzB;IAEA,OAAOtU,KAAK;EACd;EAEAq5C,SAASA,CAACjlD,IAAY,EAAEklD,WAAqB,EAAE;IAC7C,MAAMj5B,GAAG,GAAG,IAAI,CAAC+4B,YAAY,CAAC3yC,MAAM;IACpC,IAAI,IAAI,CAAC2yC,YAAY,CAAC/4B,GAAG,GAAG,CAAC,CAAC,CAACxK,GAAG,CAACzhB,IAAI,CAAC,EAAE;MACxC,OAAO,IAAI;IACb;IACA,IAAI,CAACklD,WAAW,IAAIj5B,GAAG,GAAG,CAAC,EAAE;MAC3B,KAAK,IAAItL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsL,GAAG,GAAG,CAAC,EAAEtL,CAAC,EAAE,EAAE;QAChC,IAAI,IAAI,CAACqkC,YAAY,CAACrkC,CAAC,CAAC,CAACc,GAAG,CAACzhB,IAAI,CAAC,EAAE,OAAO,IAAI;MACjD;IACF;IACA,OAAO,KAAK;EACd;EAEA2jB,WAAWA,CAAC3jB,IAAY,EAAE4jB,WAAwB,EAAE9b,GAAa,EAAE;IACjE,IAAI8b,WAAW,OAA6B,EAAE;MAC5C,IAAI,IAAI,CAACqhC,SAAS,CAACjlD,IAAI,EAAE,IAAI,CAAC,EAAE;QAC9B,IAAI,CAACuiB,MAAM,CAACnR,KAAK,CAAC9H,MAAM,CAACzE,gBAAgB,EAAEiD,GAAG,EAAE;UAC9ClQ,cAAc,EAAEoI;QAClB,CAAC,CAAC;MACJ;MACA,IAAI,CAACglD,YAAY,CAAC,IAAI,CAACA,YAAY,CAAC3yC,MAAM,GAAG,CAAC,CAAC,CAACiS,GAAG,CAACtkB,IAAI,CAAC;MACzD;IACF;IAEA,MAAM0jB,KAAK,GAAG,IAAI,CAACf,YAAY,EAAE;IACjC,IAAI7oB,IAAI,GAAG4pB,KAAK,CAACohC,OAAO,CAACv8C,GAAG,CAACvI,IAAI,CAAC,IAAI,CAAC;IAEvC,IAAI4jB,WAAW,OAAkC,EAAE;MACjD,IAAI,CAACE,kBAAkB,CAACJ,KAAK,EAAE1jB,IAAI,CAAC;MACpC0jB,KAAK,CAACohC,OAAO,CAACt8C,GAAG,CAACxI,IAAI,EAAElG,IAAI,GAAA,EAAgC,CAAC;MAC7D;IACF;IAEA,KAAK,CAAC6pB,WAAW,CAAC3jB,IAAI,EAAE4jB,WAAW,EAAE9b,GAAG,CAAC;IAEzC,IAAI8b,WAAW,IAAwB,EAAE;MACvC,IAAI,EAAEA,WAAW,IAAyB,CAAC,EAAE;QAE3C,IAAI,CAACC,yBAAyB,CAACH,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,EAAE9b,GAAG,CAAC;QAC7D,IAAI,CAACgc,kBAAkB,CAACJ,KAAK,EAAE1jB,IAAI,CAAC;MACtC;MACAlG,IAAI,GAAGA,IAAI,GAAmB,CAAA;IAChC;IACA,IAAI8pB,WAAW,MAA2B,EAAE;MAC1C9pB,IAAI,GAAGA,IAAI,GAAmB,CAAA;IAChC;IACA,IAAI8pB,WAAW,MAAiC,EAAE;MAChD9pB,IAAI,GAAGA,IAAI,GAAwB,CAAA;IACrC;IACA,IAAI8pB,WAAW,MAAyB,EAAE;MACxC9pB,IAAI,GAAGA,IAAI,GAAqB,CAAA;IAClC;IACA,IAAIA,IAAI,EAAE4pB,KAAK,CAACohC,OAAO,CAACt8C,GAAG,CAACxI,IAAI,EAAElG,IAAI,CAAC;EACzC;EAEAkqB,mBAAmBA,CACjBN,KAAsB,EACtB1jB,IAAY,EACZ4jB,WAAwB,EACf;IACT,MAAM9pB,IAAI,GAAG4pB,KAAK,CAACohC,OAAO,CAACv8C,GAAG,CAACvI,IAAI,CAAC;IACpC,IAAI,CAAClG,IAAI,GAAmB,CAAA,IAAI,CAAC,EAAE;MACjC,IAAI8pB,WAAW,MAA2B,EAAE;QAG1C,MAAMuhC,OAAO,GAAG,CAAC,EAAEvhC,WAAW,MAAiC,CAAC;QAChE,MAAMwhC,QAAQ,GAAG,CAACtrD,IAAI,GAAA,CAAwB,IAAI,CAAC;QACnD,OAAOqrD,OAAO,KAAKC,QAAQ;MAC7B;MACA,OAAO,IAAI;IACb;IACA,IACExhC,WAAW,MAAyB,IACpC,CAAC9pB,IAAI,GAAA,CAAqB,IAAI,CAAC,EAC/B;MACA,IAAI4pB,KAAK,CAACtB,KAAK,CAAC7Z,GAAG,CAACvI,IAAI,CAAC,IAAmB,EAAE;QAE5C,OAAO,CAAC,EAAE4jB,WAAW,IAAyB,CAAC;MACjD,CAAC,MAAM;QAEL,OAAO,KAAK;MACd;IACF;IACA,IAAIA,WAAW,IAAwB,IAAI,CAAC9pB,IAAI,GAAA,CAAmB,IAAI,CAAC,EAAE;MACxE,OAAO,IAAI;IACb;IAEA,OAAO,KAAK,CAACkqB,mBAAmB,CAACN,KAAK,EAAE1jB,IAAI,EAAE4jB,WAAW,CAAC;EAC5D;EAEAK,gBAAgBA,CAACpV,EAAgB,EAAE;IACjC,MAAM;MAAE7O;IAAM,CAAA,GAAG6O,EAAE;IAEnB,IAAI,IAAI,CAACo2C,SAAS,CAACjlD,IAAI,CAAC,EAAE;IAE1B,MAAMisB,GAAG,GAAG,IAAI,CAACzJ,UAAU,CAACnQ,MAAM;IAClC,KAAK,IAAIsO,CAAC,GAAGsL,GAAG,GAAG,CAAC,EAAEtL,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACjC,MAAM+C,KAAK,GAAG,IAAI,CAAClB,UAAU,CAAC7B,CAAC,CAAC;MAChC,MAAM7mB,IAAI,GAAG4pB,KAAK,CAACohC,OAAO,CAACv8C,GAAG,CAACvI,IAAI,CAAC;MACpC,IACE,CAAClG,IAAI,GAAA,CAAmB,IAAI,CAAC,IAC7B,CAACA,IAAI,GAAA,EAAgC,IAAI,CAAC,EAC1C;QACA;MACF;IACF;IAEA,KAAK,CAACmqB,gBAAgB,CAACpV,EAAE,CAAC;EAC5B;AACF;AClIA,MAAMw2C,6BAA6B,GAAIxrD,IAAU,IAAW;EAC1D,OAAOA,IAAI,CAACC,IAAI,KAAK,yBAAyB,GAC1CurD,6BAA6B,CAACxrD,IAAI,CAACmT,UAAU,CAAC,GAC9CnT,IAAI;AACV,CAAC;AAQc,MAAeyrD,UAAU,SAAShrB,SAAS,CAAC;EAqDzDxpB,YAAYA,CAACjX,IAAU,EAAEkX,KAAc,GAAG,KAAK,EAA8B;IAAA,IAAAo4B,WAAA,EAAAoc,YAAA;IAC3E,IAAIx3C,aAAa,GAAGrE,SAAS;IAC7B,IAAI7P,IAAI,CAACC,IAAI,KAAK,yBAAyB,IAAAqvC,CAAAA,WAAA,GAAItvC,IAAI,CAACqT,KAAK,KAAA,IAAA,IAAVi8B,WAAA,CAAYp7B,aAAa,EAAE;MACxEA,aAAa,GAAGs3C,6BAA6B,CAACxrD,IAAI,CAAC;MACnD,IAAIkX,KAAK,EAAE;QAKT,IAAIhD,aAAa,CAACjU,IAAI,KAAK,YAAY,EAAE;UACvC,IAAI,CAACu/B,eAAe,CAAC1D,gCAAgC,CACnDrsB,MAAM,CAACtK,8BAA8B,EACrCnF,IACF,CAAC;QACH,CAAC,MAAM,IACLkU,aAAa,CAACjU,IAAI,KAAK,kBAAkB,IACzC,CAAC,IAAI,CAACmZ,0BAA0B,CAAClF,aAAa,CAAC,EAC/C;UAIA,IAAI,CAACqD,KAAK,CAAC9H,MAAM,CAACtK,8BAA8B,EAAEnF,IAAI,CAAC;QACzD;MACF,CAAC,MAAM;QACL,IAAI,CAACuX,KAAK,CAAC9H,MAAM,CAACtK,8BAA8B,EAAEnF,IAAI,CAAC;MACzD;IACF;IAEA,QAAQA,IAAI,CAACC,IAAI;MACf,KAAK,YAAY;MACjB,KAAK,eAAe;MACpB,KAAK,cAAc;MACnB,KAAK,mBAAmB;MACxB,KAAK,aAAa;QAChB;MAEF,KAAK,kBAAkB;QACpBD,IAAI,CAAUC,IAAI,GAAG,eAAe;QACrC,KACE,IAAI6mB,CAAC,GAAG,CAAC,EAAEtO,MAAM,GAAGxY,IAAI,CAACstB,UAAU,CAAC9U,MAAM,EAAEmzC,IAAI,GAAGnzC,MAAM,GAAG,CAAC,EAC7DsO,CAAC,GAAGtO,MAAM,EACVsO,CAAC,EAAE,EACH;UAAA,IAAA8kC,YAAA;UACA,MAAMv1C,IAAI,GAAGrW,IAAI,CAACstB,UAAU,CAACxG,CAAC,CAAC;UAC/B,MAAMxP,MAAM,GAAGwP,CAAC,KAAK6kC,IAAI;UACzB,IAAI,CAACt0C,gCAAgC,CAAChB,IAAI,EAAEiB,MAAM,EAAEJ,KAAK,CAAC;UAE1D,IACEI,MAAM,IACLjB,IAAI,CAAUpW,IAAI,KAAK,aAAa,IAAA,CAAA2rD,YAAA,GACrC5rD,IAAI,CAACqT,KAAK,aAAVu4C,YAAA,CAAYpc,gBAAgB,EAC5B;YACA,IAAI,CAACj4B,KAAK,CAAC9H,MAAM,CAACrH,iBAAiB,EAAEpI,IAAI,CAACqT,KAAK,CAACm8B,gBAAgB,CAAC;UACnE;QACF;QACA;MAEF,KAAK,gBAAgB;QAAE;UACrB,MAAM;YAAE3oC,GAAG;YAAEmG;UAAO,CAAA,GAAGhN,IAAI;UAC3B,IAAI,IAAI,CAACiV,aAAa,CAACpO,GAAG,CAAC,EAAE;YAC3B,IAAI,CAACsQ,UAAU,CAACC,cAAc,CAC5B,IAAI,CAACrC,gBAAgB,CAAClO,GAAG,CAAC,EAC1BA,GAAG,CAACoH,GAAG,CAACrQ,KACV,CAAC;UACH;UACA,IAAI,CAACqZ,YAAY,CAACjK,KAAK,EAAEkK,KAAK,CAAC;UAC/B;QACF;MAEA,KAAK,eAAe;QAAE;UACpB,MAAM,IAAI/F,KAAK,CACb,iEAAiE,GAC/D,+DACJ,CAAC;QACH;MAEA,KAAK,iBAAiB;QACnBnR,IAAI,CAAUC,IAAI,GAAG,cAAc;QACpC,IAAI,CAACsvC,gBAAgB,CACnBvvC,IAAI,CAACisB,QAAQ,GAAAy/B,YAAA,GACb1rD,IAAI,CAACqT,KAAK,KAAVq4C,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAA,CAAYlc,gBAAgB,EAC5Bt4B,KACF,CAAC;QACD;MAEF,KAAK,sBAAsB;QACzB,IAAIlX,IAAI,CAAC6rD,QAAQ,KAAK,GAAG,EAAE;UACzB,IAAI,CAACt0C,KAAK,CAAC9H,MAAM,CAAC3J,qBAAqB,EAAE9F,IAAI,CAAC+wC,IAAI,CAAC9iC,GAAG,CAACpQ,GAAG,CAAC;QAC7D;QAECmC,IAAI,CAAUC,IAAI,GAAG,mBAAmB;QACzC,OAAOD,IAAI,CAAC6rD,QAAQ;QACpB,IAAI,CAAC50C,YAAY,CAACjX,IAAI,CAAC+wC,IAAI,EAAE75B,KAAK,CAAC;QACnC;MAEF,KAAK,yBAAyB;QAE5B,IAAI,CAACD,YAAY,CAAC/C,aAAa,EAAEgD,KAAK,CAAC;QACvC;IAKJ;EACF;EAEAG,gCAAgCA,CAC9BhB,IAAU,EACViB,MAAe,EACfJ,KAAc,EACd;IACA,IAAIb,IAAI,CAACpW,IAAI,KAAK,cAAc,EAAE;MAChC,IAAI,CAACsX,KAAK,CACRlB,IAAI,CAAChW,IAAI,KAAK,KAAK,IAAIgW,IAAI,CAAChW,IAAI,KAAK,KAAK,GACtCoP,MAAM,CAAC7H,kBAAkB,GACzB6H,MAAM,CAAC5H,gBAAgB,EAC3BwO,IAAI,CAACxP,GACP,CAAC;IACH,CAAC,MAAM,IAAIwP,IAAI,CAACpW,IAAI,KAAK,eAAe,EAAE;MACvCoW,IAAI,CAAUpW,IAAI,GAAG,aAAa;MACnC,MAAM6rD,GAAG,GAAGz1C,IAAI,CAACvH,QAAQ;MACzB,IAAI,CAACi9C,qBAAqB,CAACD,GAAG,EAAqB,KAAK,CAAC;MACzD,IAAI,CAAC70C,YAAY,CAAC60C,GAAG,EAAE50C,KAAK,CAAC;MAE7B,IAAI,CAACI,MAAM,EAAE;QACX,IAAI,CAACC,KAAK,CAAC9H,MAAM,CAACrH,iBAAiB,EAAEiO,IAAI,CAAC;MAC5C;IACF,CAAC,MAAM;MACL,IAAI,CAACY,YAAY,CAACZ,IAAI,EAAEa,KAAK,CAAC;IAChC;EACF;EAIAq4B,gBAAgBA,CACdyB,QAAsD,EACtDxB,gBAA6C,EAC7Ct4B,KAAc,EACR;IACN,MAAMrZ,GAAG,GAAGmzC,QAAQ,CAACx4B,MAAM,GAAG,CAAC;IAE/B,KAAK,IAAIsO,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIjpB,GAAG,EAAEipB,CAAC,EAAE,EAAE;MAC7B,MAAMklC,GAAG,GAAGhb,QAAQ,CAAClqB,CAAC,CAAC;MACvB,IAAI,CAACklC,GAAG,EAAE;MAEV,IAAIA,GAAG,CAAC/rD,IAAI,KAAK,eAAe,EAAE;QAC/B+rD,GAAG,CAA4B/rD,IAAI,GAAG,aAAa;QACpD,MAAM6rD,GAAG,GAAGE,GAAG,CAACl9C,QAAQ;QACxB,IAAI,CAACi9C,qBAAqB,CAACD,GAAG,EAAqB,IAAI,CAAC;QACxD,IAAI,CAAC70C,YAAY,CAAC60C,GAAG,EAAE50C,KAAK,CAAC;MAC/B,CAAC,MAAM;QACL,IAAI,CAACD,YAAY,CAAC+0C,GAAG,EAAE90C,KAAK,CAAC;MAC/B;MAEA,IAAI80C,GAAG,CAAC/rD,IAAI,KAAK,aAAa,EAAE;QAC9B,IAAI6mB,CAAC,GAAGjpB,GAAG,EAAE;UACX,IAAI,CAAC0Z,KAAK,CAAC9H,MAAM,CAACrH,iBAAiB,EAAE4jD,GAAG,CAAC;QAC1C,CAAA,MAAM,IAAIxc,gBAAgB,EAAE;UAC3B,IAAI,CAACj4B,KAAK,CAAC9H,MAAM,CAACrH,iBAAiB,EAAEonC,gBAAgB,CAAC;QACxD;MACF;IACF;EACF;EAEAz4B,YAAYA,CAAC/W,IAAU,EAAEgX,SAAmB,EAAW;IACrD,QAAQhX,IAAI,CAACC,IAAI;MACf,KAAK,YAAY;MACjB,KAAK,eAAe;MACpB,KAAK,cAAc;MACnB,KAAK,mBAAmB;MACxB,KAAK,aAAa;QAChB,OAAO,IAAI;MAEb,KAAK,kBAAkB;QAAE;UACvB,MAAM0rD,IAAI,GAAG3rD,IAAI,CAACstB,UAAU,CAAC9U,MAAM,GAAG,CAAC;UACvC,OAAOxY,IAAI,CAACstB,UAAU,CAAC+hB,KAAK,CAAC,CAACh5B,IAAI,EAAEyQ,CAAC,KAAK;YACxC,OACEzQ,IAAI,CAACpW,IAAI,KAAK,cAAc,KAC3B6mB,CAAC,KAAK6kC,IAAI,IAAIt1C,IAAI,CAACpW,IAAI,KAAK,eAAe,CAAC,IAC7C,IAAI,CAAC8W,YAAY,CAACV,IAAI,CAAC;UAE3B,CAAC,CAAC;QACJ;MAEA,KAAK,gBAAgB;QACnB,OAAO,IAAI,CAACU,YAAY,CAAC/W,IAAI,CAACgN,KAAK,CAAC;MAEtC,KAAK,eAAe;QAClB,OAAO,IAAI,CAAC+J,YAAY,CAAC/W,IAAI,CAAC8O,QAAQ,CAAC;MAEzC,KAAK,iBAAiB;QACpB,OAAO9O,IAAI,CAACisB,QAAQ,CAACojB,KAAK,CACxB4c,OAAO,IAAIA,OAAO,KAAK,IAAI,IAAI,IAAI,CAACl1C,YAAY,CAACk1C,OAAO,CAC1D,CAAC;MAEH,KAAK,sBAAsB;QACzB,OAAOjsD,IAAI,CAAC6rD,QAAQ,KAAK,GAAG;MAE9B,KAAK,yBAAyB;QAC5B,OAAO,IAAI,CAAC90C,YAAY,CAAC/W,IAAI,CAACmT,UAAU,CAAC;MAE3C,KAAK,kBAAkB;MACvB,KAAK,0BAA0B;QAC7B,OAAO,CAAC6D,SAAS;MAEnB;QACE,OAAO,KAAK;IAChB;EACF;EAIAi6B,gBAAgBA,CACdD,QAE2C,EAE3CE,mBAA6B,EAGa;IAC1C,OAAOF,QAAQ;EACjB;EAEAkb,oBAAoBA,CAClBlb,QAE2C,EAC3CE,mBAA6B,EACvB;IACN,IAAI,CAACD,gBAAgB,CAACD,QAAQ,EAAEE,mBAAmB,CAAC;IAEpD,KAAK,MAAM/C,IAAI,IAAI6C,QAAQ,EAAE;MAC3B,IAAI,CAAA7C,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEluC,IAAI,MAAK,iBAAiB,EAAE;QACpC,IAAI,CAACisD,oBAAoB,CAAC/d,IAAI,CAACliB,QAAQ,CAAC;MAC1C;IACF;EACF;EAIAkgC,WAAWA,CAETx1C,mBAA6C,EAC9B;IACf,MAAM3W,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAiB;IAC5C,IAAI,CAACuS,IAAI,CAAA,CAAE;IACXloB,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAACmgC,uBAAuB,CAC1Ct4B,mBAAmB,EACnB9G,SACF,CAAC;IACD,OAAO,IAAI,CAACiG,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAIAosD,gBAAgBA,CAAAA,EAA4B;IAC1C,MAAMpsD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAe;IAC1C,IAAI,CAACuS,IAAI,CAAA,CAAE;IACXloB,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAAC6kC,gBAAgB,EAAE;IACvC,OAAO,IAAI,CAAC79B,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAGA2zC,gBAAgBA,CAAAA,EAAwB;IAEtC,QAAQ,IAAI,CAACv7B,KAAK,CAACnY,IAAI;MACrB,KAAA,CAAA;QAAkB;UAChB,MAAMD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgB;UAC3C,IAAI,CAACuS,IAAI,CAAA,CAAE;UAEXloB,IAAI,CAACisB,QAAQ,GAAG,IAAI,CAACogC,gBAAgB,CAGnCC,CAAAA,EAAAA,EAAAA,GACF,CAAC;UACD,OAAO,IAAI,CAACx2C,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;QAC9C;MAEA,KAAA,CAAA;QACE,OAAO,IAAI,CAACusD,eAAe,CAAA,CAAA,EAAY,IAAI,CAAC;IAChD;IAGA,OAAO,IAAI,CAACnmB,eAAe,EAAE;EAC/B;EAGAimB,gBAAgBA,CAEdhb,KAAgB,EAChBmb,aAAyD,EACzDz6C,KAA4B,EACU;IACtC,MAAM06C,UAAU,GAAG16C,KAAK,IAAoC;IAE5D,MAAM26C,IAA0C,GAAG,EAAE;IACrD,IAAIhgB,KAAK,GAAG,IAAI;IAChB,OAAO,CAAC,IAAI,CAACjY,GAAG,CAAC4c,KAAK,CAAC,EAAE;MACvB,IAAI3E,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7O,MAAM,CAAA,EAAS,CAAC;MACvB;MACA,IAAI4uB,UAAU,IAAI,IAAI,CAAC16B,KAAK,CAAA,EAAS,CAAC,EAAE;QACtC26B,IAAI,CAAC7wC,IAAI,CAAC,IAAI,CAAC;MAChB,CAAA,MAAM,IAAI,IAAI,CAAC4Y,GAAG,CAAC4c,KAAK,CAAC,EAAE;QAC1B;MACD,CAAA,MAAM,IAAI,IAAI,CAACtf,KAAK,CAAA,EAAY,CAAC,EAAE;QAClC,IAAIziB,IAAa,GAAG,IAAI,CAAC88C,gBAAgB,EAAE;QAC3C,IACoC,IAAI,CAACnhC,SAAS,CAAC,MAAM,CAAC,IACxDlZ,KAAK,IAA2C,EAChD;UACAzC,IAAI,GAAG,IAAI,CAACgjC,sBAAsB,CAAChjC,IAAI,CAAC;QAC1C;QACAo9C,IAAI,CAAC7wC,IAAI,CAACvM,IAAI,CAAC;QACf,IAAI,CAAC,IAAI,CAACq9C,mBAAmB,CAACH,aAAa,CAAC,EAAE;UAC5C,IAAI,CAAC3uB,MAAM,CAACwT,KAAK,CAAC;UAClB;QACF;MACF,CAAC,MAAM;QACL,MAAMn5B,UAAU,GAAG,EAAE;QACrB,IAAI,IAAI,CAAC6Z,KAAK,CAAA,EAAM,CAAC,IAAI,IAAI,CAAC9G,SAAS,CAAC,YAAY,CAAC,EAAE;UACrD,IAAI,CAAC1T,KAAK,CAAC9H,MAAM,CAAClF,6BAA6B,EAAE,IAAI,CAAC6N,KAAK,CAAC1B,QAAQ,CAAC;QACvE;QAEA,OAAO,IAAI,CAACqb,KAAK,CAAA,EAAM,CAAC,EAAE;UACxB7Z,UAAU,CAAC2D,IAAI,CAAC,IAAI,CAAC+wC,cAAc,CAAE,CAAA,CAAC;QACxC;QACAF,IAAI,CAAC7wC,IAAI,CAAC,IAAI,CAACgxC,uBAAuB,CAAC96C,KAAK,EAAEmG,UAAU,CAAC,CAAC;MAC5D;IACF;IACA,OAAOw0C,IAAI;EACb;EAGAI,wBAAwBA,CAEtBz2C,IAAyB,EACZ;IACb,IAAI,CAAC6R,IAAI,CAAA,CAAE;IAEX7R,IAAI,CAACvH,QAAQ,GAAG,IAAI,CAACs3B,eAAe,EAAE;IACtC,IAAI,CAACumB,mBAAmB,CAAA,GAA0B,CAAC;IACnD,OAAO,IAAI,CAAC72C,UAAU,CAACO,IAAI,EAAE,aAAa,CAAC;EAC7C;EAGA02C,oBAAoBA,CAAAA,EAAiD;IACnE,MAAM;MAAE9sD,IAAI;MAAEyW;KAAU,GAAG,IAAI,CAAC0B,KAAK;IACrC,IAAInY,IAAI,OAAgB,EAAE;MACxB,OAAO,IAAI,CAAC6sD,wBAAwB,CAAC,IAAI,CAACn3C,SAAS,CAAE,CAAA,CAAC;IACxD;IAEA,MAAMU,IAAI,GAAG,IAAI,CAACV,SAAS,EAAsB;IACjD,IAAI1V,IAAI,QAAmB,EAAE;MAC3B,IAAI,CAAC02B,YAAY,CAAC,sBAAsB,EAAEjgB,QAAQ,CAAC;MACnD,IAAI,CAACS,UAAU,CAACC,cAAc,CAAC,IAAI,CAACgB,KAAK,CAACpL,KAAK,EAAE0J,QAAQ,CAAC;MAC1DL,IAAI,CAACxP,GAAG,GAAG,IAAI,CAAC+N,gBAAgB,EAAE;IACpC,CAAC,MAAM;MACL,IAAI,CAACo4C,iBAAiB,CAAC32C,IAAI,CAAC;IAC9B;IACAA,IAAI,CAACvC,MAAM,GAAG,KAAK;IACnB,OAAO,IAAI,CAACu+B,iBAAiB,CAC3Bh8B,IAAI,EACJK,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KACF,CAAC;EACH;EAEAm2C,uBAAuBA,CAErB96C,KAA4B,EAC5BmG,UAAuB,EACQ;IAC/B,MAAM64B,IAAI,GAAG,IAAI,CAACwB,iBAAiB,EAAE;IACrC,IACoC,IAAI,CAACtnB,SAAS,CAAC,MAAM,CAAC,IACxDlZ,KAAK,IAA2C,EAChD;MACA,IAAI,CAACugC,sBAAsB,CAACvB,IAAI,CAAC;IACnC;IACA,MAAMib,GAAG,GAAG,IAAI,CAACzZ,iBAAiB,CAACxB,IAAI,CAAC9iC,GAAG,CAACrQ,KAAK,EAAEmzC,IAAI,CAAC;IACxD,IAAI74B,UAAU,CAACM,MAAM,EAAE;MACrBu4B,IAAI,CAAC74B,UAAU,GAAGA,UAAU;IAC9B;IACA,OAAO8zC,GAAG;EACZ;EAGA1Z,sBAAsBA,CAAC9E,KAAc,EAAW;IAC9C,OAAOA,KAAK;EACd;EAIA+E,iBAAiBA,CAEf77B,QAA0B,EAC1Bq6B,IAAqB,EACZ;IAAA,IAAA5E,SAAA,EAAA8gB,KAAA;IACT,CAAA9gB,SAAA,GAAAz1B,QAAQ,KAAA,IAAA,GAAAy1B,SAAA,GAARz1B,QAAQ,GAAK,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAChCq6B,IAAI,GAAA,CAAAkc,KAAA,GAAGlc,IAAI,KAAA,IAAA,GAAAkc,KAAA,GAAI,IAAI,CAACtZ,gBAAgB,EAAE;IACtC,IAAI,CAAC,IAAI,CAAClf,GAAG,GAAM,CAAC,EAAE,OAAOsc,IAAI;IAEjC,MAAM/wC,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAoBhqB,QAAQ,CAAC;IAC1D1W,IAAI,CAAC+wC,IAAI,GAAGA,IAAI;IAChB/wC,IAAI,CAACopC,KAAK,GAAG,IAAI,CAAC6F,uBAAuB,EAAE;IAC3C,OAAO,IAAI,CAACn5B,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EA8BA4W,WAAWA,CACT3W,IAAY,EAEZ4W,yBAAkC,EAElCC,OAAoB,EACkB;IACtC,QAAQ7W,IAAI;MACV,KAAK,mBAAmB;QACtB,OAAO,MAAM;MACf,KAAK,aAAa;QAChB,OAAO,UAAU;MACnB,KAAK,gBAAgB;QACnB,OAAO,OAAO;MAChB,KAAK,yBAAyB;QAC5B,OAAO,YAAY;MACrB,KAAK,cAAc;QACjB,OAAO,UAAU;MACnB,KAAK,eAAe;QAClB,OAAO,YAAY;IACvB;IACA,OAAO,KAAK;EACd;EAGAmZ,0BAA0BA,CAACjG,UAAgB,EAAW;IACpD,OAAOA,UAAU,CAAClT,IAAI,KAAK,0BAA0B;EACvD;EA0BAitD,SAASA,CACP/5C,UAKuB,EACvBvO,QAAsB,EACtBkS,OAAoB,KAAwB,EAC5Cq2C,YAAiC,GAAG,KAAK,EACzCjY,iBAA0B,GAAG,KAAK,EAClCkY,wBAAiC,GAAG,KAAK,EACnC;IAAA,IAAAC,iBAAA;IACN,MAAMptD,IAAI,GAAGkT,UAAU,CAAClT,IAAI;IAK5B,IAAI,IAAI,CAACqZ,cAAc,CAACnG,UAAU,CAAC,EAAE;IAErC,MAAMiG,0BAA0B,GAC9B,IAAI,CAACA,0BAA0B,CAACjG,UAAU,CAAC;IAE7C,IAAIiG,0BAA0B,IAAInZ,IAAI,KAAK,kBAAkB,EAAE;MAC7D,IAAImZ,0BAA0B,EAAE;QAC9B,IAAI,CAACud,YAAY,CAAC,wBAAwB,EAAExjB,UAAU,CAAClF,GAAG,CAACrQ,KAAK,CAAC;QACjE,IAAIgH,QAAQ,CAAC3E,IAAI,KAAK,sBAAsB,EAAE;UAC5C,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC3K,0BAA0B,EAAEqO,UAAU,EAAE;YACxDvO;UACF,CAAC,CAAC;QACJ;MACF;MAEA,IAAIkS,OAAO,OAA0B,EAAE;QACrC,IAAI,CAACS,KAAK,CAAC9H,MAAM,CAACpK,6BAA6B,EAAE8N,UAAU,CAAC;MAC9D;MACA;IACF;IAEA,IAAIlT,IAAI,KAAK,YAAY,EAAE;MACzB,IAAI,CAACqtD,eAAe,CAACn6C,UAAU,EAAE2D,OAAO,EAAEo+B,iBAAiB,CAAC;MAE5D,MAAM;QAAE/uC;MAAM,CAAA,GAAGgN,UAAU;MAE3B,IAAIg6C,YAAY,EAAE;QAChB,IAAIA,YAAY,CAACvlC,GAAG,CAACzhB,IAAI,CAAC,EAAE;UAC1B,IAAI,CAACoR,KAAK,CAAC9H,MAAM,CAAC9H,SAAS,EAAEwL,UAAU,CAAC;QAC1C,CAAC,MAAM;UACLg6C,YAAY,CAAC1iC,GAAG,CAACtkB,IAAI,CAAC;QACxB;MACF;MAEA;IACF;IAEA,MAAMonD,QAAQ,GAAG,IAAI,CAAC32C,WAAW,CAC/B3W,IAAI,EACJ,EAAEmtD,wBAAwB,IAAAC,CAAAA,iBAAA,GAAIl6C,UAAU,CAACE,KAAK,KAAhBg6C,IAAAA,IAAAA,iBAAA,CAAkBn5C,aAAa,CAAC,IAC5DtP,QAAQ,CAAC3E,IAAI,KAAK,sBAAsB,EAC1C6W,OACF,CAAC;IAED,IAAIy2C,QAAQ,KAAK,IAAI,EAAE;IACvB,IAAIA,QAAQ,KAAK,KAAK,EAAE;MACtB,MAAMC,eAAe,GACnB12C,OAAO,OAA0B,GAC7BrH,MAAM,CAAC9K,UAAU,GACjB8K,MAAM,CAAC5K,iBAAiB;MAE9B,IAAI,CAAC0S,KAAK,CAACi2C,eAAe,EAAEr6C,UAAU,EAAE;QAAEvO;MAAS,CAAC,CAAC;MACrD;IACF;IAEA,IAAIiC,GAAW,EAAE4mD,yBAAkC;IACnD,IAAI,OAAOF,QAAQ,KAAK,QAAQ,EAAE;MAChC1mD,GAAG,GAAG0mD,QAAQ;MACdE,yBAAyB,GAAGxtD,IAAI,KAAK,yBAAyB;IAChE,CAAC,MAAM;MACL,CAAC4G,GAAG,EAAE4mD,yBAAyB,CAAC,GAAGF,QAAQ;IAC7C;IAEA,MAAMG,YAAY,GAChBztD,IAAI,KAAK,cAAc,IAAIA,IAAI,KAAK,eAAe,GAC9C;MAAEA;IAAM,CAAA,GACT2E,QAAQ;IAGd,MAAMquB,GAAG,GAAG9f,UAAU,CAACtM,GAAG,CAAC;IAC3B,IAAIkI,KAAK,CAACC,OAAO,CAACikB,GAAG,CAAC,EAAE;MACtB,KAAK,MAAM06B,KAAK,IAAI16B,GAAG,EAAE;QACvB,IAAI06B,KAAK,EAAE;UACT,IAAI,CAACT,SAAS,CACZS,KAAK,EACLD,YAAY,EACZ52C,OAAO,EACPq2C,YAAY,EACZjY,iBAAiB,EACjBuY,yBACF,CAAC;QACH;MACF;IACD,CAAA,MAAM,IAAIx6B,GAAG,EAAE;MACd,IAAI,CAACi6B,SAAS,CACZj6B,GAAG,EACHy6B,YAAY,EACZ52C,OAAO,EACPq2C,YAAY,EACZjY,iBAAiB,EACjBuY,yBACF,CAAC;IACH;EACF;EAEAH,eAAeA,CACbzvC,EAAc,EACdkM,WAAwB,EACxBmrB,iBAA0B,GAAG,KAAK,EAClC;IACA,IACE,IAAI,CAAC98B,KAAK,CAACgP,MAAM,KAChB8tB,iBAAiB,GACdptB,wBAAwB,CAACjK,EAAE,CAAC1X,IAAI,EAAE,IAAI,CAACuhB,QAAQ,CAAC,GAChDG,4BAA4B,CAAChK,EAAE,CAAC1X,IAAI,CAAC,CAAC,EAC1C;MACA,IAAI4jB,WAAW,OAA0B,EAAE;QACzC,IAAI,CAACxS,KAAK,CAAC9H,MAAM,CAACnE,mBAAmB,EAAEuS,EAAE,EAAE;UAAEtS,aAAa,EAAEsS,EAAE,CAAC1X;QAAK,CAAC,CAAC;MACxE,CAAC,MAAM;QACL,IAAI,CAACoR,KAAK,CAAC9H,MAAM,CAACjE,0BAA0B,EAAEqS,EAAE,EAAE;UAChDpS,WAAW,EAAEoS,EAAE,CAAC1X;QAClB,CAAC,CAAC;MACJ;IACF;IAEA,IAAI4jB,WAAW,OAAqC,IAAIlM,EAAE,CAAC1X,IAAI,KAAK,KAAK,EAAE;MACzE,IAAI,CAACoR,KAAK,CAAC9H,MAAM,CAAC/J,mBAAmB,EAAEmY,EAAE,CAAC;IAC5C;IAEA,IAAI,EAAEkM,WAAW,KAAwB,CAAC,EAAE;MAC1C,IAAI,CAAC6jC,yBAAyB,CAAC/vC,EAAE,EAAEkM,WAAW,CAAC;IACjD;EACF;EAEA6jC,yBAAyBA,CAACC,UAAsB,EAAE/2C,OAAoB,EAAE;IACtE,IAAI,CAAC+S,KAAK,CAACC,WAAW,CAAC+jC,UAAU,CAAC1nD,IAAI,EAAE2Q,OAAO,EAAE+2C,UAAU,CAAC5/C,GAAG,CAACrQ,KAAK,CAAC;EACxE;EAEAmuD,qBAAqBA,CAAC/rD,IAAU,EAAE8tD,YAAqB,EAAQ;IAC7D,QAAQ9tD,IAAI,CAACC,IAAI;MACf,KAAK,yBAAyB;QAC5B,IAAI,CAAC8rD,qBAAqB,CAAC/rD,IAAI,CAACmT,UAAU,EAAE26C,YAAY,CAAC;QACzD;MACF,KAAK,YAAY;MACjB,KAAK,kBAAkB;QACrB;MACF,KAAK,iBAAiB;MACtB,KAAK,kBAAkB;QACrB,IAAIA,YAAY,EAAE;MAEpB;QACE,IAAI,CAACv2C,KAAK,CAAC9H,MAAM,CAAClK,4BAA4B,EAAEvF,IAAI,CAAC;IACzD;EACF;EAEA2sD,mBAAmBA,CACjBtb,KAAiD,EACxC;IACT,IAAI,CAAC,IAAI,CAACtf,KAAK,CAAA,EAAS,CAAC,EAAE;MACzB,OAAO,KAAK;IACd;IAEA,IAAI,CAACxa,KAAK,CACR,IAAI,CAAC2d,iBAAiB,CAAA,CAAE,KAAKmc,KAAK,GAC9B5hC,MAAM,CAACrH,iBAAiB,GACxBqH,MAAM,CAAChN,gBAAgB,EAC3B,IAAI,CAAC2V,KAAK,CAAC1B,QACb,CAAC;IAED,OAAO,IAAI;EACb;AACF;AC7tBA,SAASq3C,OAAOA,CAAIC,CAAY,EAAK;EACnC,IAAIA,CAAC,IAAI,IAAI,EAAE;IACb,MAAM,IAAI78C,KAAK,CAAC,cAAc68C,CAAC,SAAS,CAAC;EAC3C;EACA,OAAOA,CAAC;AACV;AAEA,SAASC,MAAMA,CAACD,CAAU,EAAQ;EAChC,IAAI,CAACA,CAAC,EAAE;IACN,MAAM,IAAI78C,KAAK,CAAC,aAAa,CAAC;EAChC;AACF;AAgBA,MAAM+8C,QAAQ,GAAGr/C,cAAc,YAAY,CAAC;EAC1Cs/C,+BAA+B,EAAEA,CAAC;IAAEC;GAAoC,KACtE,WAAWA,UAAU,gEAAgE;EACvFC,8BAA8B,EAAEA,CAAC;IAC/BC;GAGD,KACC,aAAaA,YAAY,6DAA6D;EACxFC,wBAAwB,EACtB,qDAAqD;EACvD5gD,kCAAkC,EAChC,6DAA6D;EAC/DC,gCAAgC,EAAE,0CAA0C;EAC5E4gD,qBAAqB,EAAE,mDAAmD;EAC1EC,sBAAsB,EAAE,oDAAoD;EAC5E5gD,kEAAkE,EAChE,4GAA4G;EAC9G6gD,4BAA4B,EAC1B,6DAA6D;EAC/DC,eAAe,EAAEA,CAAC;IAAEtuD;GAA+B,KACjD,+BAA+BA,IAAI,OAAO;EAC5CuuD,+BAA+B,EAC7B,mDAAmD;EACrDC,gCAAgC,EAC9B,2DAA2D;EAC7DC,8BAA8B,EAG5BA,CAAC;IAAEC;EAAyC,CAAA,KAC1C,sCAAsC;EAC1CC,iBAAiB,EAAEA,CAAC;IAAED;GAAoC,KACxD,wBAAwBA,QAAQ,IAAI;EAGtCE,uBAAuB,EAAEA,CAAC;IAAE5iD;GAA4C,KACtE,IAAIA,KAAK,yBAAyB;EACpC6iD,kBAAkB,EAAE,qCAAqC;EACzDC,mBAAmB,EAAE,sCAAsC;EAC3DC,iCAAiC,EAC/B,8DAA8D;EAChEC,wBAAwB,EAAE,4CAA4C;EACtE9sB,6BAA6B,EAC3B,4DAA4D;EAC9D+sB,qBAAqB,EAAEA,CAAC;IACtBC;GAGD,KACC,IAAIA,SAAS,CAAC,CAAC,CAAC,mCAAmCA,SAAS,CAAC,CAAC,CAAC,aAAa;EAC9EC,yBAAyB,EACvB,uDAAuD;EACzDC,8BAA8B,EAAEA,CAAC;IAC/BV;GAGD,KACC,4DAA4DA,QAAQ,KAAK;EAC3EW,wBAAwB,EACtB,sDAAsD;EACxDC,yBAAyB,EACvB,0DAA0D;EAC5DC,uBAAuB,EACrB,qDAAqD;EACvDC,qCAAqC,EACnC,mDAAmD;EACrDC,2BAA2B,EAAEA,CAAC;IAAEf;GAAoC,KAClE,IAAIA,QAAQ,4CAA4C;EAC1DgB,8BAA8B,EAAEA,CAAC;IAAEhB;GAAoC,KACrE,IAAIA,QAAQ,+CAA+C;EAC7DiB,uCAAuC,EAAEA,CAAC;IACxCjB;GAGD,KACC,IAAIA,QAAQ,qFAAqF;EACnGkB,qBAAqB,EAAEA,CAAC;IACtBC;GAGD,KACC,IAAIA,gBAAgB,CAAC,CAAC,CAAC,4BAA4BA,gBAAgB,CAAC,CAAC,CAAC,aAAa;EACrFC,iDAAiD,EAC/C,6DAA6D,GAC7D,gGAAgG;EAClGC,uBAAuB,EACrB,yDAAyD;EAC3DC,oBAAoB,EAClB,6DAA6D;EAC/DC,iCAAiC,EAC/B,4DAA4D;EAC9DC,wCAAwC,EACtC,kFAAkF;EACpFC,0BAA0B,EACxB,uDAAuD;EACzDC,qBAAqB,EACnB,4GAA4G;EAC9GztB,iBAAiB,EACf,gFAAgF;EAClF0tB,yBAAyB,EACvB,uDAAuD;EACzDC,8BAA8B,EAAEA,CAAC;IAC/B5B;GAGD,KACC,4DAA4DA,QAAQ,KAAK;EAC3E6B,0BAA0B,EACxB,mFAAmF;EACrFC,sBAAsB,EACpB,gHAAgH;EAClHC,qBAAqB,EACnB,mGAAmG;EACrGhjD,sCAAsC,EACpC,qDAAqD;EACvDC,kCAAkC,EAChC,8CAA8C;EAChDC,+BAA+B,EAC7B,wDAAwD;EAC1D+iD,uCAAuC,EAAEA,CAAC;IACxCC;EAGD,CAAA,KACC,yBAAyBA,iBAAiB,kDAAkDA,iBAAiB,KAAK;EACpHC,6BAA6B,EAC3B,+CAA+C;EACjDC,sBAAsB,EACpB,0KAA0K;EAC5KC,yBAAyB,EACvB,mHAAmH;EACrHC,sCAAsC,EACpC,kFAAkF;EACpFC,+BAA+B,EAC7B,0GAA0G;EAC5GC,+BAA+B,EAC7B,0GAA0G;EAC5GC,2BAA2B,EACzB,uEAAuE;EACzEC,kBAAkB,EAChB,8EAA8E;EAChFC,wBAAwB,EAAE,wCAAwC;EAClEC,6BAA6B,EAAE,6CAA6C;EAC5EC,6BAA6B,EAC3B,qDAAqD;EACvDC,gCAAgC,EAC9B,mEAAmE;EACrEC,iCAAiC,EAAEA,CAAC;IAAE5xD;GAAwB,KAC5D,yFAAyFA,IAAI;AACjG,CAAC,CAAC;AAMF,SAAS6xD,mBAAmBA,CAAC9kD,KAAa,EAAmC;EAC3E,QAAQA,KAAK;IACX,KAAK,KAAK;MACR,OAAO,cAAc;IACvB,KAAK,SAAS;MACZ,OAAO,kBAAkB;IAC3B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,OAAO;MACV,OAAO,gBAAgB;IACzB,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,QAAQ;MACX,OAAO,iBAAiB;IAC1B,KAAK,WAAW;MACd,OAAO,oBAAoB;IAC7B,KAAK,SAAS;MACZ,OAAO,kBAAkB;IAC3B;MACE,OAAO6C,SAAS;EACpB;AACF;AAEA,SAASkiD,kBAAkBA,CAAChD,QAAgB,EAA+B;EACzE,OACEA,QAAQ,KAAK,SAAS,IAAIA,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,KAAK,WAAW;AAE/E;AAEA,SAASiD,uBAAuBA,CAC9BjD,QAAgB,EACmB;EACnC,OAAOA,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK;AAChD;AAEA,IAAAkD,UAAA,GAAgBzgD,UAA0D,IACxE,MAAM0gD,qBAAqB,SAAS1gD,UAAU,CAAmB;EAAAlU,WAAAA,CAAA,GAAA2Y,IAAA,EAAA;IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAA,IAsY/Dk8C,CAAAA,qBAAqB,GAAG,IAAI,CAACC,gBAAgB,CAACC,IAAI,CAAC,IAAI,EAAE;MACvDC,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;MAC/BC,mBAAmB,EAAE,CACnB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,CACX;MACDC,aAAa,EAAEtE,QAAQ,CAAC6B;IAC1B,CAAC,CAAC;IAAA,IAEF0C,CAAAA,oBAAoB,GAAG,IAAI,CAACL,gBAAgB,CAACC,IAAI,CAAC,IAAI,EAAE;MACtDC,gBAAgB,EAAE,CAAC,OAAO,CAAC;MAE3BC,mBAAmB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;MAClCC,aAAa,EAAEtE,QAAQ,CAAC8B;IAC1B,CAAC,CAAC;IAAA,IAEF0C,CAAAA,0BAA0B,GAAG,IAAI,CAACN,gBAAgB,CAACC,IAAI,CAAC,IAAI,EAAE;MAC5DC,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;MACxCC,mBAAmB,EAAE,CACnB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,CACX;MACDC,aAAa,EAAEtE,QAAQ,CAAC6B;IAC1B,CAAC,CAAC;EAAA;EAvaF3wB,eAAeA,CAAAA,EAAiD;IAC9D,OAAO8rB,sBAAsB;EAC/B;EAEAyH,cAAcA,CAAAA,EAAY;IAGxB,OAAO3tC,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC;EAC3C;EAEA2yD,wBAAwBA,CAAAA,EAAG;IACzB,OACE,IAAI,CAAC7gC,KAAK,CAAA,CAAY,CAAC,IACvB,IAAI,CAACA,KAAK,EAAU,CAAC,IACrB,IAAI,CAACA,KAAK,CAAQ,EAAA,CAAC,IACnB,IAAI,CAACA,KAAK,CAAY,EAAA,CAAC,IACvB,IAAI,CAACA,KAAK,CAAA,GAAe,CAAC,IAC1B,IAAI,CAAC6M,qBAAqB,EAAE;EAEhC;EAEAi0B,yCAAyCA,CAAAA,EAAG;IAC1C,IAAI,CAAC3qC,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACsV,qBAAqB,EAAE,EAAE;MAChC,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAACo1B,wBAAwB,EAAE;EACxC;EAEAE,4BAA4BA,CAAAA,EAAG;IAI7B,IAAI,IAAI,CAAC/gC,KAAK,CAAA,GAAW,CAAC,EAAE;MAC1B,IAAI,CAAC7J,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC0qC,wBAAwB,EAAE;IACxC;IACA,OAAO,IAAI,CAACC,yCAAyC,EAAE;EACzD;EAGAE,eAAeA,CACbT,gBAAqB,EACrBU,6BAAuC,EACjB;IACtB,IACE,CAAChuC,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IACnC,IAAI,CAACmY,KAAK,CAACnY,IAAI,KAAA,EAAW,IAC1B,IAAI,CAACmY,KAAK,CAACnY,IAAI,KAAA,EAAc,EAC7B;MACA,OAAO4P,SAAS;IAClB;IAEA,MAAMk/C,QAAQ,GAAG,IAAI,CAAC32C,KAAK,CAACpL,KAAK;IACjC,IAAIslD,gBAAgB,CAAC75B,QAAQ,CAACs2B,QAAQ,CAAC,EAAE;MACvC,IAAIiE,6BAA6B,IAAI,IAAI,CAACC,uBAAuB,EAAE,EAAE;QACnE,OAAOpjD,SAAS;MAClB;MACA,IAAI,IAAI,CAACqjD,UAAU,CAAC,IAAI,CAACJ,4BAA4B,CAACT,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;QACjE,OAAOtD,QAAQ;MACjB;IACF;IACA,OAAOl/C,SAAS;EAClB;EAOAuiD,gBAAgBA,CACd;IACEE,gBAAgB;IAChBC,mBAAmB;IACnBS,6BAA6B;IAC7BR,aAAa,GAAGtE,QAAQ,CAAC4B;EAM1B,CAAA,EACDqD,QAAW,EACL;IACN,MAAMC,YAAY,GAAGA,CACnBnlD,GAAa,EACb8gD,QAAoB,EACpBsE,MAAkB,EAClBC,KAAiB,KACd;MACH,IAAIvE,QAAQ,KAAKsE,MAAM,IAAIF,QAAQ,CAACG,KAAK,CAAC,EAAE;QAC1C,IAAI,CAAC/7C,KAAK,CAAC22C,QAAQ,CAAC+B,qBAAqB,EAAEhiD,GAAG,EAAE;UAC9CiiD,gBAAgB,EAAE,CAACmD,MAAM,EAAEC,KAAK;QAClC,CAAC,CAAC;MACJ;KACD;IACD,MAAMC,YAAY,GAAGA,CACnBtlD,GAAa,EACb8gD,QAAoB,EACpByE,IAAgB,EAChBC,IAAgB,KACb;MACH,IACGN,QAAQ,CAACK,IAAI,CAAC,IAAIzE,QAAQ,KAAK0E,IAAI,IACnCN,QAAQ,CAACM,IAAI,CAAC,IAAI1E,QAAQ,KAAKyE,IAAK,EACrC;QACA,IAAI,CAACj8C,KAAK,CAAC22C,QAAQ,CAACoB,qBAAqB,EAAErhD,GAAG,EAAE;UAC9CshD,SAAS,EAAE,CAACiE,IAAI,EAAEC,IAAI;QACxB,CAAC,CAAC;MACJ;KACD;IAED,SAAS;MACP,MAAM;QAAE/8C;OAAU,GAAG,IAAI,CAAC0B,KAAK;MAC/B,MAAM22C,QAAuC,GAAG,IAAI,CAACgE,eAAe,CAClET,gBAAgB,CAAC39C,MAAM,CAAC49C,mBAAmB,WAAnBA,mBAAmB,GAAI,EAAE,CAAC,EAClDS,6BACF,CAAC;MAED,IAAI,CAACjE,QAAQ,EAAE;MAEf,IAAIgD,kBAAkB,CAAChD,QAAQ,CAAC,EAAE;QAChC,IAAIoE,QAAQ,CAACO,aAAa,EAAE;UAC1B,IAAI,CAACn8C,KAAK,CAAC22C,QAAQ,CAACY,8BAA8B,EAAEp4C,QAAQ,EAAE;YAC5Dq4C;UACF,CAAC,CAAC;QACJ,CAAC,MAAM;UACLqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAEA,QAAQ,EAAE,UAAU,CAAC;UACtDqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAEA,QAAQ,EAAE,QAAQ,CAAC;UACpDqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAEA,QAAQ,EAAE,UAAU,CAAC;UAEtDoE,QAAQ,CAACO,aAAa,GAAG3E,QAAQ;QACnC;MACF,CAAC,MAAM,IAAIiD,uBAAuB,CAACjD,QAAQ,CAAC,EAAE;QAC5C,IAAIoE,QAAQ,CAACpE,QAAQ,CAAC,EAAE;UACtB,IAAI,CAACx3C,KAAK,CAAC22C,QAAQ,CAACc,iBAAiB,EAAEt4C,QAAQ,EAAE;YAAEq4C;UAAS,CAAC,CAAC;QAChE;QACAoE,QAAQ,CAACpE,QAAQ,CAAC,GAAG,IAAI;QAEzBqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;MAC/C,CAAC,MAAM;QACL,IAAI4E,cAAA,CAAA3f,IAAA,CAAcmf,QAAQ,EAAEpE,QAAQ,CAAC,EAAE;UACrC,IAAI,CAACx3C,KAAK,CAAC22C,QAAQ,CAACc,iBAAiB,EAAEt4C,QAAQ,EAAE;YAAEq4C;UAAS,CAAC,CAAC;QAChE,CAAC,MAAM;UACLqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;UACtDqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;UACtDqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;UACxDqE,YAAY,CAAC18C,QAAQ,EAAEq4C,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;UAExDwE,YAAY,CAAC78C,QAAQ,EAAEq4C,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;UACvDwE,YAAY,CAAC78C,QAAQ,EAAEq4C,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;QACxD;QACAoE,QAAQ,CAACpE,QAAQ,CAAC,GAAG,IAAI;MAC3B;MAEA,IAAIwD,mBAAmB,YAAnBA,mBAAmB,CAAE95B,QAAQ,CAACs2B,QAAQ,CAAC,EAAE;QAC3C,IAAI,CAACx3C,KAAK,CAACi7C,aAAa,EAAE97C,QAAQ,EAAE;UAClCq4C;QACF,CAAC,CAAC;MACJ;IACF;EACF;EAEA6E,kBAAkBA,CAACvzD,IAAoB,EAAW;IAChD,QAAQA,IAAI;MACV,KAAK,aAAa;MAClB,KAAK,aAAa;QAChB,OAAO,IAAI,CAAC0xB,KAAK,CAAA,CAAU,CAAC;MAC9B,KAAK,uBAAuB;QAC1B,OAAO,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC;MAC9B,KAAK,mBAAmB;QACtB,OAAO,IAAI,CAACA,KAAK,CAAA,CAAY,CAAC;MAChC,KAAK,2BAA2B;QAC9B,OAAO,IAAI,CAACA,KAAK,CAAA,EAAM,CAAC;IAC5B;EACF;EAEA8hC,WAAWA,CACTxzD,IAAoB,EACpByzD,YAAqB,EAChB;IACL,MAAMpkB,MAAW,GAAG,EAAE;IACtB,OAAO,CAAC,IAAI,CAACkkB,kBAAkB,CAACvzD,IAAI,CAAC,EAAE;MAErCqvC,MAAM,CAAC7zB,IAAI,CAACi4C,YAAY,CAAA,CAAE,CAAC;IAC7B;IACA,OAAOpkB,MAAM;EACf;EAEAqkB,oBAAoBA,CAClB1zD,IAAoB,EACpByzD,YAAqB,EACrBE,mBAEC,EACI;IACL,OAAOjG,OAAO,CACZ,IAAI,CAACkG,0BAA0B,CAC7B5zD,IAAI,EACJyzD,YAAY,EACQ,IAAI,EACxBE,mBACF,CACF,CAAC;EACH;EAMAC,0BAA0BA,CACxB5zD,IAAoB,EACpByzD,YAAiC,EACjCI,aAAsB,EACtBF,mBAEC,EACgB;IACjB,MAAMtkB,MAAW,GAAG,EAAE;IACtB,IAAIykB,gBAAgB,GAAG,CAAC,CAAC;IAEzB,SAAS;MACP,IAAI,IAAI,CAACP,kBAAkB,CAACvzD,IAAI,CAAC,EAAE;QACjC;MACF;MACA8zD,gBAAgB,GAAG,CAAC,CAAC;MAErB,MAAMlI,OAAO,GAAG6H,YAAY,EAAE;MAC9B,IAAI7H,OAAO,IAAI,IAAI,EAAE;QACnB,OAAOp8C,SAAS;MAClB;MACA6/B,MAAM,CAAC7zB,IAAI,CAACowC,OAAO,CAAC;MAEpB,IAAI,IAAI,CAACx3B,GAAG,CAAA,EAAS,CAAC,EAAE;QACtB0/B,gBAAgB,GAAG,IAAI,CAAC/7C,KAAK,CAACC,eAAe,CAAC5a,KAAK;QACnD;MACF;MAEA,IAAI,IAAI,CAACm2D,kBAAkB,CAACvzD,IAAI,CAAC,EAAE;QACjC;MACF;MAEA,IAAI6zD,aAAa,EAAE;QAEjB,IAAI,CAACr2B,MAAM,CAAA,EAAS,CAAC;MACvB;MACA,OAAOhuB,SAAS;IAClB;IAEA,IAAImkD,mBAAmB,EAAE;MACvBA,mBAAmB,CAAChnD,KAAK,GAAGmnD,gBAAgB;IAC9C;IAEA,OAAOzkB,MAAM;EACf;EAEA0kB,oBAAoBA,CAClB/zD,IAAoB,EACpByzD,YAAqB,EACrBO,OAAgB,EAChBC,cAAuB,EACvBN,mBAEC,EACI;IACL,IAAI,CAACM,cAAc,EAAE;MACnB,IAAID,OAAO,EAAE;QACX,IAAI,CAACx2B,MAAM,CAAA,CAAY,CAAC;MAC1B,CAAC,MAAM;QACL,IAAI,CAACA,MAAM,CAAA,EAAM,CAAC;MACpB;IACF;IAEA,MAAM6R,MAAM,GAAG,IAAI,CAACqkB,oBAAoB,CACtC1zD,IAAI,EACJyzD,YAAY,EACZE,mBACF,CAAC;IAED,IAAIK,OAAO,EAAE;MACX,IAAI,CAACx2B,MAAM,CAAA,CAAY,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAACA,MAAM,CAAA,EAAM,CAAC;IACpB;IAEA,OAAO6R,MAAM;EACf;EAEA6kB,iBAAiBA,CAAAA,EAAmB;IAClC,MAAMv0D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAkB;IAC7C,IAAI,CAACkoB,MAAM,CAAA,EAAW,CAAC;IACvB,IAAI,CAACA,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC9L,KAAK,CAAA,GAAU,CAAC,EAAE;MAC1B,IAAI,CAACxa,KAAK,CAAC22C,QAAQ,CAACyD,6BAA6B,EAAE,IAAI,CAACv5C,KAAK,CAAC1B,QAAQ,CAAC;MAIhE;QACL1W,IAAI,CAAC8O,QAAQ,GAAG,KAAK,CAACy4B,aAAa,EAAS;MAC9C;IACF,CAAC,MAAM;MAGE;QAELvnC,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAAC+D,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;MAC3D;IACF;IACA,IAAI,IAAI,CAACynB,GAAG,CAAA,EAAS,CAAC,IAAI,CAAC,IAAI,CAAC1C,KAAK,CAAU,EAAA,CAAC,EAAE;MAChD/xB,IAAI,CAACkR,OAAO,GAAG,KAAK,CAAC+9B,uBAAuB,EAAE;MAC9C,IAAI,CAACxa,GAAG,CAAA,EAAS,CAAC;IACpB,CAAC,MAAM;MACLz0B,IAAI,CAACkR,OAAO,GAAG,IAAI;IACrB;IACA,IAAI,CAAC2sB,MAAM,CAAA,EAAU,CAAC;IAEtB,IAAI,IAAI,CAACpJ,GAAG,CAAA,EAAO,CAAC,EAAE;MAGpBz0B,IAAI,CAACw0D,SAAS,GAAG,IAAI,CAACC,iBAAiB,EAAE;IAC3C;IACA,IAAI,IAAI,CAAC1iC,KAAK,CAAA,EAAM,CAAC,EAAE;MAGd;QACL/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC8+C,oBAAoB,EAAE;MACnD;IACF;IACA,OAAO,IAAI,CAAC5+C,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEAy0D,iBAAiBA,CAACE,kBAA2B,GAAG,IAAI,EAAkB;IACpE,IAAIpL,MAAsB,GAAG,IAAI,CAACnjB,eAAe,CAACuuB,kBAAkB,CAAC;IACrE,OAAO,IAAI,CAAClgC,GAAG,CAAA,EAAO,CAAC,EAAE;MACvB,MAAMz0B,IAA+B,GACnC,IAAI,CAACmZ,eAAe,CAAoBowC,MAAM,CAAC;MACjDvpD,IAAI,CAAC+wC,IAAI,GAAGwY,MAAM;MAClBvpD,IAAI,CAACopC,KAAK,GAAG,IAAI,CAAChD,eAAe,CAACuuB,kBAAkB,CAAC;MACrDpL,MAAM,GAAG,IAAI,CAACzzC,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;IACnD;IACA,OAAOupD,MAAM;EACf;EAEAqL,oBAAoBA,CAAAA,EAAsB;IACxC,MAAM50D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;IAChD3V,IAAI,CAAC60D,QAAQ,GAAG,IAAI,CAACJ,iBAAiB,EAAE;IACxC,IAAI,CAAC,IAAI,CAACj3B,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACzL,KAAK,CAAM,EAAA,CAAC,EAAE;MAG/C;QACL/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC8+C,oBAAoB,EAAE;MACnD;IACF;IACA,OAAO,IAAI,CAAC5+C,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA80D,wBAAwBA,CAACC,GAAiB,EAAqB;IAC7D,IAAI,CAAC7sC,IAAI,CAAA,CAAE;IACX,MAAMloB,IAAI,GAAG,IAAI,CAACmZ,eAAe,CAAoB47C,GAAG,CAAC;IACzD/0D,IAAI,CAACg1D,aAAa,GAAGD,GAAG;IACxB/0D,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAACquB,qBAAqB,CAAgB,KAAK,CAAC;IACtEj1D,IAAI,CAACk1D,OAAO,GAAG,KAAK;IACpB,OAAO,IAAI,CAACp/C,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEAm1D,mBAAmBA,CAAAA,EAAiB;IAClC,MAAMn1D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgB;IAC3C,IAAI,CAACuS,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,YAAY,CAAC;EAC5C;EAEAo1D,gBAAgBA,CAAAA,EAAkB;IAChC,MAAMp1D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAiB;IAC5C,IAAI,CAACkoB,MAAM,CAAA,EAAW,CAAC;IACvB,IAAI,IAAI,CAAC9L,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B/xB,IAAI,CAACq1D,QAAQ,GAAG,IAAI,CAACd,iBAAiB,EAAE;IAC1C,CAAC,MAAM;MACLv0D,IAAI,CAACq1D,QAAQ,GAAG,IAAI,CAACZ,iBAAiB,EAAE;IAC1C;IACA,IAAI,CAAC,IAAI,CAACj3B,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACzL,KAAK,CAAM,EAAA,CAAC,EAAE;MAG/C;QACL/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC8+C,oBAAoB,EAAE;MACnD;IACF;IACA,OAAO,IAAI,CAAC5+C,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAsCAs1D,oBAAoBA,CAClBC,cAAyD,EACtC;IACnB,MAAMv1D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;IAEhD4/C,cAAc,CAACv1D,IAAI,CAAC;IAEpBA,IAAI,CAACmG,IAAI,GAAG,IAAI,CAACqvD,wBAAwB,EAAE;IAC3Cx1D,IAAI,CAACy1D,UAAU,GAAG,IAAI,CAACC,kBAAkB,GAAY,CAAC;IACtD11D,IAAI,CAAC2nC,OAAO,GAAG,IAAI,CAAC+tB,kBAAkB,GAAM,CAAC;IAC7C,OAAO,IAAI,CAAC5/C,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA21D,wBAAwBA,CACtBJ,cAAiD,EACA;IACjD,IAAI,IAAI,CAACxjC,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC6jC,qBAAqB,CAACL,cAAc,CAAC;IACnD;EACF;EAEAK,qBAAqBA,CAACL,cAAiD,EAAE;IACvE,MAAMv1D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgC;IAE3D,IAAI,IAAI,CAACoc,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAe,GAAA,CAAC,EAAE;MACnD,IAAI,CAAC7J,IAAI,CAAA,CAAE;IACb,CAAC,MAAM;MACL,IAAI,CAAChjB,UAAU,CAAA,CAAE;IACnB;IAEA,MAAM8uD,mBAAmB,GAAG;MAAEhnD,KAAK,EAAE,CAAC;KAAG;IAEzChN,IAAI,CAAC+T,MAAM,GAAG,IAAI,CAACqgD,oBAAoB,CACrC,2BAA2B,EAC3B,IAAI,CAACkB,oBAAoB,CAACjD,IAAI,CAAC,IAAI,EAAEkD,cAAc,CAAC,EACtC,KAAK,EACE,IAAI,EACzBvB,mBACF,CAAC;IACD,IAAIh0D,IAAI,CAAC+T,MAAM,CAACyE,MAAM,KAAK,CAAC,EAAE;MAC5B,IAAI,CAACjB,KAAK,CAAC22C,QAAQ,CAACiB,mBAAmB,EAAEnvD,IAAI,CAAC;IAChD;IACA,IAAIg0D,mBAAmB,CAAChnD,KAAK,KAAK,CAAC,CAAC,EAAE;MACpC,IAAI,CAAC8vB,QAAQ,CAAC98B,IAAI,EAAE,eAAe,EAAEg0D,mBAAmB,CAAChnD,KAAK,CAAC;IACjE;IACA,OAAO,IAAI,CAAC8I,UAAU,CAAC9V,IAAI,EAAE,4BAA4B,CAAC;EAC5D;EAIA61D,eAAeA,CACbC,WAAsB,EACtBC,SAA2C,EACrC;IAEN,MAAMC,mBAAmB,GAAGF,WAAW,KAAa,EAAA;IAGpD,MAAMG,SAAS,GAA6C,YAAY;IACxE,MAAMC,aAAa,GAEf,gBAAgB;IAEpBH,SAAS,CAACngD,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CACtD,IAAI,CAAClD,oBACP,CAAC;IACD,IAAI,CAAC50B,MAAM,CAAA,EAAU,CAAC;IACtBk4B,SAAS,CAACE,SAAS,CAAC,GAAG,IAAI,CAACE,8BAA8B,CAAA,CAAE;IAC5D,IAAIH,mBAAmB,EAAE;MACvBD,SAAS,CAACG,aAAa,CAAC,GACtB,IAAI,CAACE,oCAAoC,CAACN,WAAW,CAAC;IACzD,CAAA,MAAM,IAAI,IAAI,CAAC/jC,KAAK,CAAC+jC,WAAW,CAAC,EAAE;MAClCC,SAAS,CAACG,aAAa,CAAC,GACtB,IAAI,CAACE,oCAAoC,CAACN,WAAW,CAAC;IAC1D;EACF;EAEAK,8BAA8BA,CAAAA,EAE5B;IACA,MAAMpxB,IAAI,GAAG,KAAK,CAACsnB,gBAAgB,CAGjCC,EAAAA,EAAAA,EAAAA,GACF,CAAC;IACD,KAAK,MAAMx6C,OAAO,IAAIizB,IAAI,EAAE;MAC1B,MAAM;QAAE9kC;MAAM,CAAA,GAAG6R,OAAO;MACxB,IAAI7R,IAAI,KAAK,mBAAmB,IAAIA,IAAI,KAAK,qBAAqB,EAAE;QAClE,IAAI,CAACsX,KAAK,CAAC22C,QAAQ,CAAC2D,iCAAiC,EAAE//C,OAAO,EAAE;UAC9D7R;QACF,CAAC,CAAC;MACJ;IACF;IACA,OAAO8kC,IAAI;EAIb;EAEAsxB,0BAA0BA,CAAAA,EAAS;IACjC,IAAI,CAAC,IAAI,CAAC5hC,GAAG,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACiJ,gBAAgB,EAAE,EAAE;MACnD,IAAI,CAACG,MAAM,CAAA,EAAQ,CAAC;IACtB;EACF;EAEAy4B,sBAAsBA,CACpBj2D,IAAsE,EACtEL,IAEC,EACiE;IAClE,IAAI,CAAC61D,eAAe,CAAW71D,EAAAA,EAAAA,IAAI,CAAC;IACpC,IAAI,CAACq2D,0BAA0B,CAAA,CAAE;IACjC,OAAO,IAAI,CAACvgD,UAAU,CAAC9V,IAAI,EAAEK,IAAI,CAAC;EACpC;EAEAk2D,+BAA+BA,CAAAA,EAAG;IAChC,IAAI,CAACruC,IAAI,CAAA,CAAE;IACX,IAAIlD,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;MACtC,IAAI,CAACioB,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC6J,KAAK,CAAA,EAAS,CAAC;IAC7B;IACA,OAAO,KAAK;EACd;EAEAykC,wBAAwBA,CACtBx2D,IAAgC,EACA;IAChC,IACE,EACE,IAAI,CAAC+xB,KAAK,EAAY,CAAC,IACvB,IAAI,CAAC0kC,WAAW,CAAC,IAAI,CAACF,+BAA+B,CAAClE,IAAI,CAAC,IAAI,CAAC,CAAC,CAClE,EACD;MACA;IACF;IAEA,IAAI,CAACx0B,MAAM,CAAA,CAAY,CAAC;IACxB,MAAM7oB,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IACjCpxB,EAAE,CAAC4xB,cAAc,GAAG,IAAI,CAACquB,qBAAqB,EAAE;IAChD,IAAI,CAACx7C,gBAAgB,CAACzE,EAAE,CAAC;IAEzB,IAAI,CAAC6oB,MAAM,CAAA,CAAY,CAAC;IACxB79B,IAAI,CAAC02D,UAAU,GAAG,CAAC1hD,EAAE,CAAC;IAEtB,MAAM/U,IAAI,GAAG,IAAI,CAAC02D,wBAAwB,EAAE;IAC5C,IAAI12D,IAAI,EAAED,IAAI,CAAC4mC,cAAc,GAAG3mC,IAAI;IACpC,IAAI,CAACo2D,0BAA0B,CAAA,CAAE;IACjC,OAAO,IAAI,CAACvgD,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEA42D,gCAAgCA,CAC9B52D,IAAiD,EACjD62D,QAAiB,EAC4B;IAC7C,IAAI,IAAI,CAACpiC,GAAG,CAAY,EAAA,CAAC,EAAEz0B,IAAI,CAAC0X,QAAQ,GAAG,IAAI;IAC/C,MAAMo/C,OAAY,GAAG92D,IAAI;IAEzB,IAAI,IAAI,CAAC+xB,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EAAE;MAC9C,IAAI8kC,QAAQ,EAAE;QACZ,IAAI,CAACt/C,KAAK,CAAC22C,QAAQ,CAAC0C,0BAA0B,EAAE5wD,IAAI,CAAC;MACvD;MACA,MAAM8T,MAA2B,GAAGgjD,OAAO;MAC3C,IAAIhjD,MAAM,CAACzT,IAAI,IAAI,IAAI,CAAC0xB,KAAK,CAAM,EAAA,CAAC,EAAE;QACpC,IAAI,CAACxa,KAAK,CACR22C,QAAQ,CAACtgD,gCAAgC,EACzC,IAAI,CAACwK,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;MACH;MACA,IAAI,CAAC6lC,eAAe,CAAW/hD,EAAAA,EAAAA,MAAM,CAAC;MACtC,IAAI,CAACuiD,0BAA0B,CAAA,CAAE;MACjC,MAAMJ,SAAS,GAEX,YAAY;MAChB,MAAMC,aAAa,GAEf,gBAAgB;MACpB,IAAIpiD,MAAM,CAACzT,IAAI,KAAK,KAAK,EAAE;QACzB,IAAIyT,MAAM,CAACmiD,SAAS,CAAC,CAACz9C,MAAM,GAAG,CAAC,EAAE;UAChC,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAC3O,cAAc,EAAE,IAAI,CAACsX,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;UAC3D,IAAI,IAAI,CAAC8hB,WAAW,CAACh+B,MAAM,CAACmiD,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC1+C,KAAK,CACR22C,QAAQ,CAACvgD,kCAAkC,EAC3C,IAAI,CAACyK,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;UACH;QACF;MACF,CAAC,MAAM,IAAIlc,MAAM,CAACzT,IAAI,KAAK,KAAK,EAAE;QAChC,IAAIyT,MAAM,CAACmiD,SAAS,CAAC,CAACz9C,MAAM,KAAK,CAAC,EAAE;UAClC,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAC1O,cAAc,EAAE,IAAI,CAACqX,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;QAC7D,CAAC,MAAM;UACL,MAAM+mC,cAAc,GAAGjjD,MAAM,CAACmiD,SAAS,CAAC,CAAC,CAAC,CAAC;UAC3C,IAAI,IAAI,CAACnkB,WAAW,CAACilB,cAAc,CAAC,EAAE;YACpC,IAAI,CAACx/C,KAAK,CACR22C,QAAQ,CAACvgD,kCAAkC,EAC3C,IAAI,CAACyK,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;UACH;UACA,IACE+mC,cAAc,CAAC92D,IAAI,KAAK,YAAY,IACpC82D,cAAc,CAACr/C,QAAQ,EACvB;YACA,IAAI,CAACH,KAAK,CACR22C,QAAQ,CAACpgD,sCAAsC,EAC/C,IAAI,CAACsK,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;UACH;UACA,IAAI+mC,cAAc,CAAC92D,IAAI,KAAK,aAAa,EAAE;YACzC,IAAI,CAACsX,KAAK,CACR22C,QAAQ,CAACngD,kCAAkC,EAC3C,IAAI,CAACqK,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;UACH;QACF;QACA,IAAIlc,MAAM,CAACoiD,aAAa,CAAC,EAAE;UACzB,IAAI,CAAC3+C,KAAK,CACR22C,QAAQ,CAAClgD,+BAA+B,EACxC8F,MAAM,CAACoiD,aAAa,CACtB,CAAC;QACH;MACF,CAAC,MAAM;QACLpiD,MAAM,CAACzT,IAAI,GAAG,QAAQ;MACxB;MACA,OAAO,IAAI,CAACyV,UAAU,CAAChC,MAAM,EAAE,mBAAmB,CAAC;IACrD,CAAC,MAAM;MACL,MAAM+qB,QAA+B,GAAGi4B,OAAO;MAC/C,IAAID,QAAQ,EAAEh4B,QAAQ,CAACg4B,QAAQ,GAAG,IAAI;MACtC,MAAM52D,IAAI,GAAG,IAAI,CAAC02D,wBAAwB,EAAE;MAC5C,IAAI12D,IAAI,EAAE4+B,QAAQ,CAAC+H,cAAc,GAAG3mC,IAAI;MACxC,IAAI,CAACo2D,0BAA0B,CAAA,CAAE;MACjC,OAAO,IAAI,CAACvgD,UAAU,CAAC+oB,QAAQ,EAAE,qBAAqB,CAAC;IACzD;EACF;EAEAm4B,iBAAiBA,CAAAA,EAAoB;IACnC,MAAMh3D,IAAS,GAAG,IAAI,CAAC2V,SAAS,EAAE;IAElC,IAAI,IAAI,CAACoc,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EAAE;MAC9C,OAAO,IAAI,CAACukC,sBAAsB,CAAC,4BAA4B,EAAEt2D,IAAI,CAAC;IACxE;IAEA,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,MAAM/c,EAAE,GAAG,IAAI,CAACW,SAAS,EAAgB;MACzC,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,IAAI,IAAI,CAAC6J,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EAAE;QAC9C,OAAO,IAAI,CAACukC,sBAAsB,CAChC,iCAAiC,EACjCt2D,IACF,CAAC;MACH,CAAC,MAAM;QACLA,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAAComC,gBAAgB,CAACj4B,EAAE,EAAE,KAAK,CAAC;QAC3C,OAAO,IAAI,CAAC4hD,gCAAgC,CAAC52D,IAAI,EAAE,KAAK,CAAC;MAC3D;IACF;IAEA,IAAI,CAACoyD,gBAAgB,CACnB;MACEE,gBAAgB,EAAE,CAAC,UAAU,CAAC;MAC9BC,mBAAmB,EAAE,CACnB,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,UAAU;IAEb,CAAA,EACDvyD,IACF,CAAC;IAED,MAAMi3D,GAAG,GAAG,IAAI,CAACT,wBAAwB,CAACx2D,IAAI,CAAC;IAC/C,IAAIi3D,GAAG,EAAE;MACP,OAAOA,GAAG;IACZ;IAEA,KAAK,CAACjK,iBAAiB,CAAChtD,IAAI,CAAC;IAC7B,IACE,CAACA,IAAI,CAAC6V,QAAQ,IACd7V,IAAI,CAAC6G,GAAG,CAAC5G,IAAI,KAAK,YAAY,KAC7BD,IAAI,CAAC6G,GAAG,CAACV,IAAI,KAAK,KAAK,IAAInG,IAAI,CAAC6G,GAAG,CAACV,IAAI,KAAK,KAAK,CAAC,IACpD,IAAI,CAACysD,wBAAwB,EAAE,EAC/B;MACA5yD,IAAI,CAACK,IAAI,GAAGL,IAAI,CAAC6G,GAAG,CAACV,IAAI;MACzB,KAAK,CAAC6mD,iBAAiB,CAAChtD,IAAI,CAAC;IAC/B;IACA,OAAO,IAAI,CAAC42D,gCAAgC,CAAC52D,IAAI,EAAE,CAAC,CAACA,IAAI,CAAC62D,QAAQ,CAAC;EACrE;EAEAK,kBAAkBA,CAAAA,EAAoB;IACpC,MAAMl3D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C3V,IAAI,CAACutB,OAAO,GAAG,IAAI,CAAC4pC,wBAAwB,EAAE;IAC9C,OAAO,IAAI,CAACrhD,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAm3D,wBAAwBA,CAAAA,EAA2B;IACjD,IAAI,CAACt5B,MAAM,CAAA,CAAU,CAAC;IACtB,MAAMtQ,OAAO,GAAG,IAAI,CAACsmC,WAAW,CAC9B,aAAa,EACb,IAAI,CAACmD,iBAAiB,CAAC3E,IAAI,CAAC,IAAI,CAClC,CAAC;IACD,IAAI,CAACx0B,MAAM,CAAA,CAAU,CAAC;IACtB,OAAOtQ,OAAO;EAChB;EAEA6pC,qBAAqBA,CAAAA,EAAY;IAC/B,IAAI,CAAClvC,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACuM,GAAG,CAAA,EAAW,CAAC,EAAE;MACxB,OAAO,IAAI,CAACsI,YAAY,CAAA,GAAa,CAAC;IACxC;IACA,IAAI,IAAI,CAACA,YAAY,CAAA,GAAa,CAAC,EAAE;MACnC,IAAI,CAAC7U,IAAI,CAAA,CAAE;IACb;IACA,IAAI,CAAC,IAAI,CAAC6J,KAAK,CAAA,CAAY,CAAC,EAAE;MAC5B,OAAO,KAAK;IACd;IACA,IAAI,CAAC7J,IAAI,CAAA,CAAE;IACX,IAAI,CAAC,IAAI,CAACyqC,cAAc,EAAE,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,IAAI,CAACzqC,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAAC6J,KAAK,CAAA,EAAO,CAAC;EAC3B;EAEAslC,iBAAiBA,CAAAA,EAAmB;IAClC,MAAMr3D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAkB;IAE7C,IAAI,CAACkoB,MAAM,CAAA,CAAU,CAAC;IAEtB,IAAI,IAAI,CAAC9L,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B/xB,IAAI,CAAC62D,QAAQ,GAAG,IAAI,CAACz+C,KAAK,CAACpL,KAAK;MAChC,IAAI,CAACkb,IAAI,CAAA,CAAE;MACX,IAAI,CAACoV,gBAAgB,CAAA,GAAa,CAAC;IACpC,CAAA,MAAM,IAAI,IAAI,CAACD,aAAa,CAAA,GAAa,CAAC,EAAE;MAC3Cr9B,IAAI,CAAC62D,QAAQ,GAAG,IAAI;IACtB;IAEA,IAAI,CAACh5B,MAAM,CAAA,CAAY,CAAC;IAIjB;MACL,MAAMmM,aAAa,GAAG,IAAI,CAACr0B,SAAS,EAAqB;MACzDq0B,aAAa,CAAC7jC,IAAI,GAAG,IAAI,CAACqvD,wBAAwB,EAAE;MACpDxrB,aAAa,CAACyrB,UAAU,GAAG,IAAI,CAAC6B,qBAAqB,GAAO,CAAC;MAE7Dt3D,IAAI,CAACgqC,aAAa,GAAG,IAAI,CAACl0B,UAAU,CAACk0B,aAAa,EAAE,iBAAiB,CAAC;IACxE;IACAhqC,IAAI,CAACu3D,QAAQ,GAAG,IAAI,CAACl6B,aAAa,CAAA,EAAO,CAAC,GAAG,IAAI,CAACm6B,WAAW,CAAE,CAAA,GAAG,IAAI;IAEtE,IAAI,CAAC35B,MAAM,CAAA,CAAY,CAAC;IAExB,IAAI,IAAI,CAAC9L,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B/xB,IAAI,CAAC0X,QAAQ,GAAG,IAAI,CAACU,KAAK,CAACpL,KAAK;MAChC,IAAI,CAACkb,IAAI,CAAA,CAAE;MACX,IAAI,CAAC2V,MAAM,CAAA,EAAY,CAAC;IACzB,CAAA,MAAM,IAAI,IAAI,CAACpJ,GAAG,CAAA,EAAY,CAAC,EAAE;MAChCz0B,IAAI,CAAC0X,QAAQ,GAAG,IAAI;IACtB;IAEA1X,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC6wB,cAAc,EAAE;IAC3C,IAAI,CAAC95B,SAAS,CAAA,CAAE;IAChB,IAAI,CAACE,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEA03D,gBAAgBA,CAAAA,EAAkB;IAChC,MAAM13D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAiB;IAC5C3V,IAAI,CAAC23D,YAAY,GAAG,IAAI,CAACvD,oBAAoB,CAC3C,mBAAmB,EACnB,IAAI,CAACwD,uBAAuB,CAACvF,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,EACG,KACvB,CAAC;IAID,IAAIwF,mBAAmB,GAAG,KAAK;IAC/B73D,IAAI,CAAC23D,YAAY,CAACjiC,OAAO,CAACoiC,WAAW,IAAI;MACvC,MAAM;QAAE73D;MAAM,CAAA,GAAG63D,WAAW;MAE5B,IACED,mBAAmB,IACnB53D,IAAI,KAAK,YAAY,IACrBA,IAAI,KAAK,gBAAgB,IACzB,EAAEA,IAAI,KAAK,oBAAoB,IAAI63D,WAAW,CAACpgD,QAAQ,CAAC,EACxD;QACA,IAAI,CAACH,KAAK,CAAC22C,QAAQ,CAACsC,0BAA0B,EAAEsH,WAAW,CAAC;MAC9D;MAEAD,mBAAmB,KAAnBA,mBAAmB,GAChB53D,IAAI,KAAK,oBAAoB,IAAI63D,WAAW,CAACpgD,QAAQ,IACtDzX,IAAI,KAAK,gBAAgB,CAAA;IAC7B,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEA43D,uBAAuBA,CAAAA,EAAoC;IAGzD,MAAM;MAAElhD;KAAU,GAAG,IAAI,CAAC0B,KAAK;IAE/B,MAAM9I,IAAI,GAAG,IAAI,CAACmlB,GAAG,GAAY,CAAC;IAElC,IAAIsjC,OAAgB;IACpB,IAAIv9C,KAAmB;IACvB,IAAI9C,QAAiB;IACrB,IAAIzX,IAAqC;IAEzC,MAAM+3D,MAAM,GAAG9yC,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC;IAC1D,MAAMg4D,WAAW,GAAGD,MAAM,GAAG,IAAI,CAAC9iC,iBAAiB,CAAA,CAAE,GAAG,IAAI;IAC5D,IAAI+iC,WAAW,OAAoB,EAAE;MACnCF,OAAO,GAAG,IAAI;MACdrgD,QAAQ,GAAG,KAAK;MAChB8C,KAAK,GAAG,IAAI,CAAC4rB,eAAe,CAAC,IAAI,CAAC;MAClC,IAAI,CAACvI,MAAM,CAAA,EAAS,CAAC;MACrB59B,IAAI,GAAG,IAAI,CAACu3D,WAAW,EAAE;IAC3B,CAAC,MAAM,IAAIS,WAAW,KAAA,EAA2B,EAAE;MACjDvgD,QAAQ,GAAG,IAAI;MACf,MAAMhB,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;MACpC,MAAMwhD,QAAQ,GAAG,IAAI,CAAC9/C,KAAK,CAACpL,KAAK;MACjC,MAAMmrD,WAAW,GAAG,IAAI,CAACC,mBAAmB,EAAE;MAE9C,IAAI,IAAI,CAACljC,iBAAiB,CAAE,CAAA,OAAoB,EAAE;QAChD6iC,OAAO,GAAG,IAAI;QACdv9C,KAAK,GAAG,IAAI,CAACyyB,gBAAgB,CAC3B,IAAI,CAACvM,WAAW,CAAehqB,QAAQ,CAAC,EACxCwhD,QACF,CAAC;QACD,IAAI,CAACr6B,MAAM,CAAA,EAAY,CAAC;QACxB,IAAI,CAACA,MAAM,CAAA,EAAS,CAAC;QACrB59B,IAAI,GAAG,IAAI,CAACu3D,WAAW,EAAE;MAC3B,CAAC,MAAM;QACLO,OAAO,GAAG,KAAK;QACf93D,IAAI,GAAGk4D,WAAW;QAClB,IAAI,CAACt6B,MAAM,CAAA,EAAY,CAAC;MAC1B;IACF,CAAC,MAAM;MACL59B,IAAI,GAAG,IAAI,CAACu3D,WAAW,EAAE;MACzB9/C,QAAQ,GAAG,IAAI,CAAC+c,GAAG,GAAY,CAAC;MAIhCsjC,OAAO,GAAG,IAAI,CAACtjC,GAAG,GAAS,CAAC;IAC9B;IAEA,IAAIsjC,OAAO,EAAE;MACX,IAAIM,WAAyC;MAC7C,IAAI79C,KAAK,EAAE;QACT69C,WAAW,GAAG,IAAI,CAACl/C,eAAe,CAAuBqB,KAAK,CAAC;QAC/D69C,WAAW,CAAC3gD,QAAQ,GAAGA,QAAQ;QAC/B2gD,WAAW,CAAC79C,KAAK,GAAGA,KAAK;QACzB69C,WAAW,CAAC39B,WAAW,GAAGz6B,IAAI;QAE9B,IAAI,IAAI,CAACw0B,GAAG,CAAA,EAAY,CAAC,EAAE;UACzB4jC,WAAW,CAAC3gD,QAAQ,GAAG,IAAI;UAC3B,IAAI,CAACH,KAAK,CACR22C,QAAQ,CAACgD,sBAAsB,EAC/B,IAAI,CAAC94C,KAAK,CAACC,eACb,CAAC;QACH;MACF,CAAC,MAAM;QACLggD,WAAW,GAAG,IAAI,CAACl/C,eAAe,CAAuBlZ,IAAI,CAAC;QAC9Do4D,WAAW,CAAC3gD,QAAQ,GAAGA,QAAQ;QAC/B,IAAI,CAACH,KAAK,CAAC22C,QAAQ,CAACkC,uBAAuB,EAAEnwD,IAAI,CAAC;QAGlDo4D,WAAW,CAAC79C,KAAK,GAAGva,IAAI;QACxBo4D,WAAW,CAAC39B,WAAW,GAAG,IAAI,CAAC88B,WAAW,EAAE;MAC9C;MACAv3D,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAACuiD,WAAW,EAAE,oBAAoB,CAAC;IAC1D,CAAA,MAAM,IAAI3gD,QAAQ,EAAE;MACnB,MAAM4gD,gBAAgB,GAAG,IAAI,CAACn/C,eAAe,CAAmBlZ,IAAI,CAAC;MACrEq4D,gBAAgB,CAAC1xB,cAAc,GAAG3mC,IAAI;MACtCA,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAACwiD,gBAAgB,EAAE,gBAAgB,CAAC;IAC5D;IAEA,IAAIhpD,IAAI,EAAE;MACR,MAAMipD,QAAQ,GAAG,IAAI,CAAC73B,WAAW,CAAehqB,QAAQ,CAAC;MACzD6hD,QAAQ,CAAC3xB,cAAc,GAAG3mC,IAAI;MAC9BA,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAACyiD,QAAQ,EAAE,YAAY,CAAC;IAChD;IAEA,OAAOt4D,IAAI;EACb;EAEAu4D,wBAAwBA,CAAAA,EAA0B;IAChD,MAAMx4D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAyB;IACpD,IAAI,CAACkoB,MAAM,CAAA,EAAU,CAAC;IACtB79B,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC4wB,WAAW,EAAE;IACxC,IAAI,CAAC35B,MAAM,CAAA,EAAU,CAAC;IACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAy4D,gCAAgCA,CAC9Bx4D,IAA4C,EAC5Cy4D,QAAkB,EACa;IAC/B,MAAM14D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAExB;IACH,IAAI1V,IAAI,KAAK,mBAAmB,EAAE;MAC/BD,IAAI,CAAiC04D,QAAQ,GAAG,CAAC,CAACA,QAAQ;MAC3D,IAAIA,QAAQ,EAAE,IAAI,CAACxwC,IAAI,EAAE;MACzB,IAAI,CAACA,IAAI,CAAA,CAAE;IACb;IACA,IAAI,CAACywC,gCAAgC,CAAC,MACpC,IAAI,CAAC9C,eAAe,CAAA,EAAA,EAAW71D,IAAI,CACrC,CAAC;IACD,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAEC,IAAI,CAAC;EACpC;EAEA24D,sBAAsBA,CAAAA,EAAoB;IACxC,MAAM54D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C,QAAQ,IAAI,CAACyC,KAAK,CAACnY,IAAI;MACrB,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QAGED,IAAI,CAAC82C,OAAO,GAAG,KAAK,CAACvP,aAAa,EAAE;QACpC;MACF;QACE,IAAI,CAACriC,UAAU,CAAA,CAAE;IACrB;IACA,OAAO,IAAI,CAAC4Q,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEA64D,0BAA0BA,CAAAA,EAAoB;IAC5C,MAAM74D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C3V,IAAI,CAAC82C,OAAO,GAAG,KAAK,CAACgiB,aAAa,CAAC,KAAK,CAAC;IACzC,OAAO,IAAI,CAAChjD,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEA+4D,yBAAyBA,CAAAA,EAA4B;IACnD,IAAI,IAAI,CAAC3gD,KAAK,CAACiX,MAAM,EAAE,OAAO,IAAI,CAACmoC,WAAW,CAAA,CAAE;IAChD,OAAO,KAAK,CAACuB,yBAAyB,EAAE;EAC1C;EAEAC,kCAAkCA,CAAAA,EAAqC;IACrE,MAAMC,WAAW,GAAG,IAAI,CAAC9D,mBAAmB,EAAE;IAC9C,IAAI,IAAI,CAACp4B,YAAY,CAAA,GAAO,CAAC,IAAI,CAAC,IAAI,CAACS,qBAAqB,EAAE,EAAE;MAC9D,OAAO,IAAI,CAACs3B,wBAAwB,CAACmE,WAAW,CAAC;IACnD,CAAC,MAAM;MACL,OAAOA,WAAW;IACpB;EACF;EAEAb,mBAAmBA,CAAAA,EAAa;IAC9B,QAAQ,IAAI,CAAChgD,KAAK,CAACnY,IAAI;MACrB,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,GAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAAC24D,sBAAsB,EAAE;MACtC,KAAA,EAAA;QACE,IAAI,IAAI,CAACxgD,KAAK,CAACpL,KAAK,KAAK,GAAG,EAAE;UAC5B,MAAMhN,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;UAC9C,MAAM6e,SAAS,GAAG,IAAI,CAACI,SAAS,EAAE;UAClC,IAAIJ,SAAS,CAACv0B,IAAI,KAAA,GAAW,IAAIu0B,SAAS,CAACv0B,IAAI,KAAA,GAAc,EAAE;YAC7D,IAAI,CAACiF,UAAU,CAAA,CAAE;UACnB;UAEAlF,IAAI,CAAC82C,OAAO,GAAG,IAAI,CAACoiB,eAAe,EAAE;UACrC,OAAO,IAAI,CAACpjD,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;QAC/C;QACA;MACF,KAAA,EAAA;QACE,OAAO,IAAI,CAACg5D,kCAAkC,EAAE;MAClD,KAAA,EAAA;QACE,OAAO,IAAI,CAAC5D,gBAAgB,EAAE;MAChC,KAAA,EAAA;QACE,OAAO,IAAI,CAACb,iBAAiB,EAAE;MACjC,KAAA,CAAA;QACE,OAAO,IAAI,CAACkC,WAAW,CAAC,IAAI,CAACW,qBAAqB,CAAC/E,IAAI,CAAC,IAAI,CAAC,CAAC,GAC1D,IAAI,CAACgF,iBAAiB,CAAA,CAAE,GACxB,IAAI,CAACH,kBAAkB,CAAA,CAAE;MAC/B,KAAA,CAAA;QACE,OAAO,IAAI,CAACQ,gBAAgB,EAAE;MAChC,KAAA,EAAA;QAeE,OAAO,IAAI,CAACc,wBAAwB,EAAE;MACxC,KAAA,EAAA;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAACK,0BAA0B,EAAE;MAC1C;QAAS;UACP,MAAM;YAAE54D;WAAM,GAAG,IAAI,CAACmY,KAAK;UAC3B,IACE4M,iBAAiB,CAAC/kB,IAAI,CAAC,IACvBA,IAAI,KAAa,EAAA,IACjBA,IAAI,KAAA,EAAa,EACjB;YACA,MAAMk5D,QAAQ,GACZl5D,IAAI,OAAa,GACb,eAAe,GACfA,IAAI,KAAA,EAAa,GACf,eAAe,GACf6xD,mBAAmB,CAAC,IAAI,CAAC15C,KAAK,CAACpL,KAAK,CAAC;YAC7C,IACEmsD,QAAQ,KAAKtpD,SAAS,IACtB,IAAI,CAACqlB,iBAAiB,CAAA,CAAE,KAAA,EAAkB,EAC1C;cACA,MAAMl1B,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;cAC9C,IAAI,CAACuS,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAEm5D,QAAQ,CAAC;YACxC;YACA,OAAO,IAAI,CAACvE,oBAAoB,EAAE;UACpC;QACF;IACF;IAEA,IAAI,CAAC1vD,UAAU,CAAA,CAAE;EACnB;EAEAk0D,wBAAwBA,CAAAA,EAAa;IACnC,IAAIn5D,IAAI,GAAG,IAAI,CAACm4D,mBAAmB,EAAE;IACrC,OAAO,CAAC,IAAI,CAAC56B,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAAC/I,GAAG,CAAY,CAAA,CAAC,EAAE;MAC7D,IAAI,IAAI,CAAC1C,KAAK,CAAA,CAAY,CAAC,EAAE;QAC3B,MAAM/xB,IAAI,GAAG,IAAI,CAACmZ,eAAe,CAAgBlZ,IAAI,CAAC;QACtDD,IAAI,CAAC06B,WAAW,GAAGz6B,IAAI;QACvB,IAAI,CAAC49B,MAAM,CAAA,CAAY,CAAC;QACxB59B,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;MAC7C,CAAC,MAAM;QACL,MAAMA,IAAI,GAAG,IAAI,CAACmZ,eAAe,CAAwBlZ,IAAI,CAAC;QAC9DD,IAAI,CAACotC,UAAU,GAAGntC,IAAI;QACtBD,IAAI,CAACqtC,SAAS,GAAG,IAAI,CAACmqB,WAAW,EAAE;QACnC,IAAI,CAAC35B,MAAM,CAAA,CAAY,CAAC;QACxB59B,IAAI,GAAG,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;MACrD;IACF;IACA,OAAOC,IAAI;EACb;EAEAo5D,mBAAmBA,CAAAA,EAAqB;IACtC,MAAMr5D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;IAC/C,MAAMk2C,QAAQ,GAAG,IAAI,CAACzzC,KAAK,CAACpL,KAAK;IACjC,IAAI,CAACkb,IAAI,CAAA,CAAE;IACXloB,IAAI,CAAC6rD,QAAQ,GAAGA,QAAQ;IACxB7rD,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC0yB,2BAA2B,EAAE;IAExD,IAAIzN,QAAQ,KAAK,UAAU,EAAE;MAC3B,IAAI,CAAC0N,gCAAgC,CAACv5D,IAAI,CAAC;IAC7C;IAEA,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAu5D,gCAAgCA,CAACv5D,IAA8B,EAAE;IAC/D,QAAQA,IAAI,CAAC4mC,cAAc,CAAC3mC,IAAI;MAC9B,KAAK,aAAa;MAClB,KAAK,aAAa;QAChB;MACF;QACE,IAAI,CAACsX,KAAK,CAAC22C,QAAQ,CAACsD,kBAAkB,EAAExxD,IAAI,CAAC;IACjD;EACF;EAEAw5D,gBAAgBA,CAAAA,EAAkB;IAChC,MAAMx5D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAiB;IAC5C,IAAI,CAAC2nB,gBAAgB,CAAA,GAAU,CAAC;IAChC,MAAM0M,aAAa,GAAG,IAAI,CAACr0B,SAAS,EAAqB;IACzDq0B,aAAa,CAAC7jC,IAAI,GAAG,IAAI,CAACqvD,wBAAwB,EAAE;IACpDxrB,aAAa,CAACyrB,UAAU,GAAG,IAAI,CAACvC,UAAU,CAAC,MACzC,IAAI,CAACuG,6BAA6B,CAAA,CACpC,CAAC;IACDz5D,IAAI,CAACgqC,aAAa,GAAG,IAAI,CAACl0B,UAAU,CAACk0B,aAAa,EAAE,iBAAiB,CAAC;IACtE,OAAO,IAAI,CAACl0B,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEAy5D,6BAA6BA,CAAAA,EAAG;IAC9B,IAAI,IAAI,CAAChlC,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAMghC,UAAU,GAAG,IAAI,CAACiE,mCAAmC,CAAC,MAC1D,IAAI,CAAClC,WAAW,CAAA,CAClB,CAAC;MACD,IACE,IAAI,CAACp/C,KAAK,CAACsX,iCAAiC,IAC5C,CAAC,IAAI,CAACqC,KAAK,CAAY,EAAA,CAAC,EACxB;QACA,OAAO0jC,UAAU;MACnB;IACF;EACF;EAEA6D,2BAA2BA,CAAAA,EAAa;IACtC,MAAMK,cAAc,GAClB9zC,qBAAqB,CAAC,IAAI,CAACzN,KAAK,CAACnY,IAAI,CAAC,IAAI,CAAC,IAAI,CAACmY,KAAK,CAAC0X,WAAW;IACnE,OAAO6pC,cAAc,GACjB,IAAI,CAACN,mBAAmB,CAAE,CAAA,GAC1B,IAAI,CAACt8B,YAAY,CAAA,GAAU,CAAC,GAC1B,IAAI,CAACy8B,gBAAgB,CAAA,CAAE,GACvB,IAAI,CAACb,gCAAgC,CAAC,MACpC,IAAI,CAACS,wBAAwB,CAAA,CAC/B,CAAC;EACT;EAEAQ,8BAA8BA,CAC5Bv5D,IAA0C,EAC1Cw5D,oBAAoC,EACpChO,QAAmB,EACT;IACV,MAAM7rD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAwC;IACnE,MAAMmkD,kBAAkB,GAAG,IAAI,CAACrlC,GAAG,CAACo3B,QAAQ,CAAC;IAC7C,MAAMhyC,KAAK,GAAG,EAAE;IAChB,GAAG;MACDA,KAAK,CAACgC,IAAI,CAACg+C,oBAAoB,CAAA,CAAE,CAAC;IACpC,CAAC,QAAQ,IAAI,CAACplC,GAAG,CAACo3B,QAAQ,CAAC;IAC3B,IAAIhyC,KAAK,CAACrB,MAAM,KAAK,CAAC,IAAI,CAACshD,kBAAkB,EAAE;MAC7C,OAAOjgD,KAAK,CAAC,CAAC,CAAC;IACjB;IACA7Z,IAAI,CAAC6Z,KAAK,GAAGA,KAAK;IAClB,OAAO,IAAI,CAAC/D,UAAU,CAAC9V,IAAI,EAAEK,IAAI,CAAC;EACpC;EAEA05D,+BAA+BA,CAAAA,EAAa;IAC1C,OAAO,IAAI,CAACH,8BAA8B,CACxC,oBAAoB,EACpB,IAAI,CAACN,2BAA2B,CAACjH,IAAI,CAAC,IAAI,CAAC,IAE7C,CAAC;EACH;EAEA2H,wBAAwBA,CAAAA,EAAG;IACzB,OAAO,IAAI,CAACJ,8BAA8B,CACxC,aAAa,EACb,IAAI,CAACG,+BAA+B,CAAC1H,IAAI,CAAC,IAAI,CAAC,IAEjD,CAAC;EACH;EAEA4H,uBAAuBA,CAAAA,EAAG;IACxB,IAAI,IAAI,CAACloC,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,OAAO,IAAI;IACb;IACA,OACE,IAAI,CAACA,KAAK,GAAU,CAAC,IACrB,IAAI,CAAC0kC,WAAW,CAAC,IAAI,CAACyD,oCAAoC,CAAC7H,IAAI,CAAC,IAAI,CAAC,CAAC;EAE1E;EAEA8H,oBAAoBA,CAAAA,EAAY;IAC9B,IAAIn1C,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IAAI,IAAI,CAAC8xB,KAAK,CAAA,EAAS,CAAC,EAAE;MAC9D,IAAI,CAAC7J,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAC6J,KAAK,CAAA,CAAU,CAAC,EAAE;MAEzB,MAAM;QAAEzD;OAAQ,GAAG,IAAI,CAAClW,KAAK;MAC7B,MAAMgiD,kBAAkB,GAAG9rC,MAAM,CAAC9V,MAAM;MACxC,IAAI;QACF,IAAI,CAAC+zC,eAAe,CAAY,CAAA,EAAA,IAAI,CAAC;QACrC,OAAOj+B,MAAM,CAAC9V,MAAM,KAAK4hD,kBAAkB;MAC5C,CAAA,CAAC,OAAA7nD,OAAA,EAAM;QACN,OAAO,KAAK;MACd;IACF;IAEA,IAAI,IAAI,CAACwf,KAAK,CAAA,CAAY,CAAC,EAAE;MAC3B,IAAI,CAAC7J,IAAI,CAAA,CAAE;MAEX,MAAM;QAAEoG;OAAQ,GAAG,IAAI,CAAClW,KAAK;MAC7B,MAAMgiD,kBAAkB,GAAG9rC,MAAM,CAAC9V,MAAM;MACxC,IAAI;QACF,KAAK,CAAC6zC,gBAAgB,CAAA,CAAA,EAAA,EAAA,GAItB,CAAC;QACD,OAAO/9B,MAAM,CAAC9V,MAAM,KAAK4hD,kBAAkB;MAC5C,CAAA,CAAC,OAAAC,QAAA,EAAM;QACN,OAAO,KAAK;MACd;IACF;IAEA,OAAO,KAAK;EACd;EAEAH,oCAAoCA,CAAAA,EAAY;IAC9C,IAAI,CAAChyC,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAAC6J,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAY,EAAA,CAAC,EAAE;MAGpD,OAAO,IAAI;IACb;IACA,IAAI,IAAI,CAACooC,oBAAoB,EAAE,EAAE;MAC/B,IACE,IAAI,CAACpoC,KAAK,CAAA,EAAS,CAAC,IACpB,IAAI,CAACA,KAAK,CAAS,EAAA,CAAC,IACpB,IAAI,CAACA,KAAK,CAAA,EAAY,CAAC,IACvB,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,EACjB;QAKA,OAAO,IAAI;MACb;MACA,IAAI,IAAI,CAACA,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,IAAI,CAAC7J,IAAI,CAAA,CAAE;QACX,IAAI,IAAI,CAAC6J,KAAK,CAAA,EAAS,CAAC,EAAE;UAExB,OAAO,IAAI;QACb;MACF;IACF;IACA,OAAO,KAAK;EACd;EAEAqkC,oCAAoCA,CAClCN,WAAsB,EACF;IACpB,OAAO,IAAI,CAACwE,QAAQ,CAAC,MAAM;MACzB,MAAMC,CAAC,GAAG,IAAI,CAAC5kD,SAAS,EAAsB;MAC9C,IAAI,CAACkoB,MAAM,CAACi4B,WAAW,CAAC;MAExB,MAAM91D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;MAEhD,MAAMu/C,OAAO,GAAG,CAAC,CAAC,IAAI,CAAChC,UAAU,CAC/B,IAAI,CAACsH,2BAA2B,CAACnI,IAAI,CAAC,IAAI,CAC5C,CAAC;MAED,IAAI6C,OAAO,IAAI,IAAI,CAACnjC,KAAK,CAAA,EAAS,CAAC,EAAE;QAGnC,IAAI0oC,iBAAiB,GAAG,IAAI,CAACzB,kCAAkC,EAAE;QAGjE,IAAIyB,iBAAiB,CAACx6D,IAAI,KAAK,YAAY,EAAE;UAC3CD,IAAI,CAACg1D,aAAa,GAAGyF,iBAAiB;UACtCz6D,IAAI,CAACk1D,OAAO,GAAG,IAAI;UAClBl1D,IAAI,CAAuB4mC,cAAc,GAAG,IAAI;UACjD6zB,iBAAiB,GAAG,IAAI,CAAC3kD,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;QAC9D,CAAC,MAAM;UACL,IAAI,CAAC2gC,0BAA0B,CAAC85B,iBAAiB,EAAEz6D,IAAI,CAAC;UACxDy6D,iBAAiB,CAACvF,OAAO,GAAG,IAAI;QAClC;QACAqF,CAAC,CAAC3zB,cAAc,GAAG6zB,iBAAiB;QACpC,OAAO,IAAI,CAAC3kD,UAAU,CAACykD,CAAC,EAAE,kBAAkB,CAAC;MAC/C;MAEA,MAAMG,qBAAqB,GACzB,IAAI,CAAC/H,cAAc,CAAA,CAAE,IACrB,IAAI,CAACO,UAAU,CAAC,IAAI,CAACyH,0BAA0B,CAACtI,IAAI,CAAC,IAAI,CAAC,CAAC;MAE7D,IAAI,CAACqI,qBAAqB,EAAE;QAC1B,IAAI,CAACxF,OAAO,EAAE;UAEZ,OAAO,IAAI,CAACD,qBAAqB,CAAgB,KAAK,EAAEsF,CAAC,CAAC;QAC5D;QAGAv6D,IAAI,CAACg1D,aAAa,GAAG,IAAI,CAAC5uB,eAAe,EAAE;QAC3CpmC,IAAI,CAACk1D,OAAO,GAAGA,OAAO;QACrBl1D,IAAI,CAAuB4mC,cAAc,GAAG,IAAI;QACjD2zB,CAAC,CAAC3zB,cAAc,GAAG,IAAI,CAAC9wB,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;QAC3D,OAAO,IAAI,CAAC8V,UAAU,CAACykD,CAAC,EAAE,kBAAkB,CAAC;MAC/C;MAGA,MAAMt6D,IAAI,GAAG,IAAI,CAACg1D,qBAAqB,CAAgB,KAAK,CAAC;MAC7Dj1D,IAAI,CAACg1D,aAAa,GAAG0F,qBAAqB;MAC1C16D,IAAI,CAAC4mC,cAAc,GAAG3mC,IAAI;MAC1BD,IAAI,CAACk1D,OAAO,GAAGA,OAAO;MACtBqF,CAAC,CAAC3zB,cAAc,GAAG,IAAI,CAAC9wB,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;MAC3D,OAAO,IAAI,CAAC8V,UAAU,CAACykD,CAAC,EAAE,kBAAkB,CAAC;IAC/C,CAAC,CAAC;EACJ;EAEAK,uCAAuCA,CAAAA,EAAmC;IACxE,IAAI,IAAI,CAAC7oC,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,OAAO,IAAI,CAACqkC,oCAAoC,CAAA,EAAS,CAAC;IAC5D;EACF;EAEAO,wBAAwBA,CAAAA,EAAmC;IACzD,IAAI,IAAI,CAAC5kC,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,OAAO,IAAI,CAACkjC,qBAAqB,EAAE;IACrC;EACF;EAEAwC,cAAcA,CAAAA,EAAyB;IACrC,OAAO,IAAI,CAAC/B,kBAAkB,CAAA,EAAS,CAAC;EAC1C;EAEAiF,0BAA0BA,CAAAA,EAA6B;IACrD,MAAM3lD,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IACjC,IAAI,IAAI,CAACrJ,YAAY,CAAA,GAAO,CAAC,IAAI,CAAC,IAAI,CAACS,qBAAqB,EAAE,EAAE;MAC9D,IAAI,CAACtV,IAAI,CAAA,CAAE;MACX,OAAOlT,EAAE;IACX;EACF;EAEAwlD,2BAA2BA,CAAAA,EAAY;IACrC,IAAI,IAAI,CAACpiD,KAAK,CAACnY,IAAI,QAAgB,EAAE;MACnC,OAAO,KAAK;IACd;IACA,MAAM6vB,WAAW,GAAG,IAAI,CAAC1X,KAAK,CAAC0X,WAAW;IAC1C,IAAI,CAAC5H,IAAI,CAAA,CAAE;IACX,IAAI,CAAClD,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC8xB,KAAK,CAAA,EAAS,CAAC,EAAE;MAChE,OAAO,KAAK;IACd;IAEA,IAAIjC,WAAW,EAAE;MACf,IAAI,CAACvY,KAAK,CACR9H,MAAM,CAACjL,0BAA0B,EACjC,IAAI,CAAC4T,KAAK,CAACC,eAAe,EAC1B;QACE5T,YAAY,EAAE;MAChB,CACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb;EAEAwwD,qBAAqBA,CACnB4F,QAAQ,GAAG,IAAI,EACfN,CAA6B,GAAG,IAAI,CAAC5kD,SAAS,CAAA,CAAsB,EAChD;IACpB,IAAI,CAAC2kD,QAAQ,CAAC,MAAM;MAClB,IAAIO,QAAQ,EAAE,IAAI,CAACh9B,MAAM,GAAS,CAAC;MACnC08B,CAAC,CAAC3zB,cAAc,GAAG,IAAI,CAAC4wB,WAAW,EAAE;IACvC,CAAC,CAAC;IACF,OAAO,IAAI,CAAC1hD,UAAU,CAACykD,CAAC,EAAE,kBAAkB,CAAC;EAC/C;EAGA/C,WAAWA,CAAAA,EAAa;IAEtBvJ,MAAM,CAAC,IAAI,CAAC71C,KAAK,CAACiX,MAAM,CAAC;IACzB,MAAMpvB,IAAI,GAAG,IAAI,CAAC66D,yBAAyB,EAAE;IAE7C,IACE,IAAI,CAAC1iD,KAAK,CAACsX,iCAAiC,IAC5C,IAAI,CAAC8N,qBAAqB,CAAE,CAAA,IAC5B,CAAC,IAAI,CAAC/I,GAAG,CAAA,EAAY,CAAC,EACtB;MACA,OAAOx0B,IAAI;IACb;IACA,MAAMD,IAAI,GAAG,IAAI,CAACmZ,eAAe,CAAsBlZ,IAAI,CAAC;IAC5DD,IAAI,CAAC+6D,SAAS,GAAG96D,IAAI;IAErBD,IAAI,CAACg7D,WAAW,GAAG,IAAI,CAACtB,mCAAmC,CAAC,MAC1D,IAAI,CAACoB,yBAAyB,CAAA,CAChC,CAAC;IAED,IAAI,CAACj9B,MAAM,CAAA,EAAY,CAAC;IACxB79B,IAAI,CAACi7D,QAAQ,GAAG,IAAI,CAACtC,gCAAgC,CAAC,MACpD,IAAI,CAACnB,WAAW,CAAA,CAClB,CAAC;IAED,IAAI,CAAC35B,MAAM,CAAA,EAAS,CAAC;IACrB79B,IAAI,CAACk7D,SAAS,GAAG,IAAI,CAACvC,gCAAgC,CAAC,MACrD,IAAI,CAACnB,WAAW,CAAA,CAClB,CAAC;IAED,OAAO,IAAI,CAAC1hD,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAm7D,8BAA8BA,CAAAA,EAAY;IACxC,OACE,IAAI,CAACp+B,YAAY,CAAA,GAAa,CAAC,IAAI,IAAI,CAACnI,SAAS,CAAE,CAAA,CAAC30B,IAAI,KAAY,EAAA;EAExE;EAEA66D,yBAAyBA,CAAAA,EAAa;IACpC,IAAI,IAAI,CAACb,uBAAuB,EAAE,EAAE;MAClC,OAAO,IAAI,CAACxB,gCAAgC,CAAC,gBAAgB,CAAC;IAChE;IACA,IAAI,IAAI,CAAC1mC,KAAK,CAAA,EAAQ,CAAC,EAAE;MAEvB,OAAO,IAAI,CAAC0mC,gCAAgC,CAAC,mBAAmB,CAAC;IACnE,CAAC,MAAM,IAAI,IAAI,CAAC0C,8BAA8B,EAAE,EAAE;MAEhD,OAAO,IAAI,CAAC1C,gCAAgC,CAC1C,mBAAmB,EACJ,IACjB,CAAC;IACH;IACA,OAAO,IAAI,CAACuB,wBAAwB,EAAE;EACxC;EAEAoB,oBAAoBA,CAAAA,EAAsB;IACxC,IAAI,IAAI,CAACvmD,eAAe,CAAC,YAAY,EAAE,0BAA0B,CAAC,EAAE;MAClE,IAAI,CAAC0C,KAAK,CAAC22C,QAAQ,CAAC4C,qBAAqB,EAAE,IAAI,CAAC14C,KAAK,CAAC1B,QAAQ,CAAC;IACjE;IAEA,MAAM1W,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;IAChD3V,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC0zB,QAAQ,CAAC,MAAM;MACxC,IAAI,CAACpyC,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC6J,KAAK,CAAU,EAAA,CAAC,GACxB,IAAI,CAAC6iC,oBAAoB,CAAE,CAAA,GAC3B,IAAI,CAAC4C,WAAW,EAAE;IACxB,CAAC,CAAC;IACF,IAAI,CAAC35B,MAAM,CAAA,EAAM,CAAC;IAClB79B,IAAI,CAACmT,UAAU,GAAG,IAAI,CAAC+lD,eAAe,EAAE;IACxC,OAAO,IAAI,CAACpjD,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAIAq7D,qBAAqBA,CACnBhvD,KAA+B,EAC4B;IAC3D,MAAMivD,gBAAgB,GAAG,IAAI,CAACljD,KAAK,CAAC1B,QAAQ;IAE5C,MAAM6kD,aAAa,GAAG,IAAI,CAACxH,oBAAoB,CAC7C,uBAAuB,EACvB,MAAM;MACJ,MAAM/zD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAExB;MACH3V,IAAI,CAACmT,UAAU,GAAG,IAAI,CAACshD,iBAAiB,EAAE;MASnC;QACL,IAAI,IAAI,CAAC1iC,KAAK,CAAA,EAAM,CAAC,EAAE;UAErB/xB,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC8+C,oBAAoB,EAAE;QACnD;QAEA,OAAO,IAAI,CAAC5+C,UAAU,CACpB9V,IAAI,EAEJ,+BACF,CAAC;MACH;IACF,CACF,CAAC;IAED,IAAI,CAACu7D,aAAa,CAAC/iD,MAAM,EAAE;MACzB,IAAI,CAACjB,KAAK,CAAC22C,QAAQ,CAACe,uBAAuB,EAAEqM,gBAAgB,EAAE;QAC7DjvD;MACF,CAAC,CAAC;IACJ;IAEA,OAAOkvD,aAAa;EAGtB;EAEAC,2BAA2BA,CACzBx7D,IAAsC,EACtCstB,UAEC,GAAG,EAAE,EAC2B;IACjC,IAAI,IAAI,CAACmQ,qBAAqB,EAAE,EAAE,OAAO,IAAI;IAC7C,IAAI,CAACH,gBAAgB,CAAA,GAAc,CAAC;IACpC,IAAIhQ,UAAU,CAAC+b,OAAO,EAAErpC,IAAI,CAACqpC,OAAO,GAAG,IAAI;IAC3C,IAAIrkB,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;MACtCD,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;MAChC,IAAI,CAACknB,eAAe,CAACttD,IAAI,CAACgV,EAAE,KAA+B,CAAC;IAC9D,CAAC,MAAM;MACLhV,IAAI,CAACgV,EAAE,GAAG,IAAI;MACd,IAAI,CAACuC,KAAK,CAAC22C,QAAQ,CAACmC,oBAAoB,EAAE,IAAI,CAACj4C,KAAK,CAAC1B,QAAQ,CAAC;IAChE;IAEA1W,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CACjD,IAAI,CAACjD,0BACP,CAAC;IACD,IAAI,IAAI,CAACj+B,GAAG,CAAA,EAAY,CAAC,EAAE;MACzBz0B,IAAI,CAACooC,OAAO,GAAG,IAAI,CAACizB,qBAAqB,CAAC,SAAS,CAAC;IACtD;IACA,MAAM3mD,IAAI,GAAG,IAAI,CAACiB,SAAS,EAAqB;IAChDjB,IAAI,CAACA,IAAI,GAAG,IAAI,CAAC4lD,QAAQ,CAAC,IAAI,CAACnD,wBAAwB,CAAC9E,IAAI,CAAC,IAAI,CAAC,CAAC;IACnEryD,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACoB,UAAU,CAACpB,IAAI,EAAE,iBAAiB,CAAC;IACpD,OAAO,IAAI,CAACoB,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAEAy7D,2BAA2BA,CACzBz7D,IAA8B,EACJ;IAC1BA,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IAChC,IAAI,CAACknB,eAAe,CAACttD,IAAI,CAACgV,EAAE,GAA0B,CAAC;IAEvDhV,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC0zB,QAAQ,CAAC,MAAM;MACxCt6D,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CACjD,IAAI,CAACxD,qBACP,CAAC;MAED,IAAI,CAACt0B,MAAM,CAAA,EAAM,CAAC;MAElB,IACE,IAAI,CAACd,YAAY,CAAA,GAAc,CAAC,IAChC,IAAI,CAACnI,SAAS,CAAE,CAAA,CAAC30B,IAAI,OAAW,EAChC;QACA,MAAMD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;QAC9C,IAAI,CAACuS,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;MACpD;MAEA,OAAO,IAAI,CAACw3D,WAAW,EAAE;IAC3B,CAAC,CAAC;IAEF,IAAI,CAAC75B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,wBAAwB,CAAC;EACxD;EAGA07D,mBAAmBA,CAAIxxB,EAAW,EAAK;IACrC,IAAI,IAAI,CAACvV,UAAU,EAAE,KAAKrO,KAAE,CAACxM,KAAK,EAAE;MAClC,MAAMqwB,UAAU,GAAG,IAAI,CAAC/xB,KAAK,CAACgO,OAAO;MACrC,IAAI,CAAChO,KAAK,CAACgO,OAAO,GAAG,CAAC+jB,UAAU,CAAC,CAAC,CAAC,CAAC;MACpC,IAAI;QACF,OAAOD,EAAE,CAAA,CAAE;MACb,CAAC,SAAS;QACR,IAAI,CAAC9xB,KAAK,CAACgO,OAAO,GAAG+jB,UAAU;MACjC;IACF,CAAC,MAAM;MACL,OAAOD,EAAE,CAAA,CAAE;IACb;EACF;EAOAowB,QAAQA,CAAIpwB,EAAW,EAAK;IAC1B,MAAMxE,SAAS,GAAG,IAAI,CAACttB,KAAK,CAACiX,MAAM;IACnC,IAAI,CAACjX,KAAK,CAACiX,MAAM,GAAG,IAAI;IACxB,IAAI;MACF,OAAO6a,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAAC9xB,KAAK,CAACiX,MAAM,GAAGqW,SAAS;IAC/B;EACF;EAEAg0B,mCAAmCA,CAAIxvB,EAAW,EAAK;IACrD,MAAMyxB,oCAAoC,GACxC,IAAI,CAACvjD,KAAK,CAACsX,iCAAiC;IAC9C,IAAI,CAACtX,KAAK,CAACsX,iCAAiC,GAAG,IAAI;IACnD,IAAI;MACF,OAAOwa,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAAC9xB,KAAK,CAACsX,iCAAiC,GAC1CisC,oCAAoC;IACxC;EACF;EAEAhD,gCAAgCA,CAAIzuB,EAAW,EAAK;IAClD,MAAMyxB,oCAAoC,GACxC,IAAI,CAACvjD,KAAK,CAACsX,iCAAiC;IAC9C,IAAI,CAACtX,KAAK,CAACsX,iCAAiC,GAAG,KAAK;IACpD,IAAI;MACF,OAAOwa,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAAC9xB,KAAK,CAACsX,iCAAiC,GAC1CisC,oCAAoC;IACxC;EACF;EAEAjG,kBAAkBA,CAACrpD,KAAgB,EAAwB;IACzD,IAAI,IAAI,CAAC0lB,KAAK,CAAC1lB,KAAK,CAAC,EAAE;MACrB,OAAO,IAAI,CAACuvD,mBAAmB,EAAE;IACnC;EACF;EAEAtE,qBAAqBA,CAACjrD,KAAgB,EAAY;IAChD,OAAO,IAAI,CAACiuD,QAAQ,CAAC,MAAM;MACzB,IAAI,CAACz8B,MAAM,CAACxxB,KAAK,CAAC;MAClB,OAAO,IAAI,CAACmrD,WAAW,EAAE;IAC3B,CAAC,CAAC;EACJ;EAEAoE,mBAAmBA,CAAAA,EAAa;IAC9B,OAAO,IAAI,CAACtB,QAAQ,CAAC,MAAM;MACzB,IAAI,CAACpyC,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAACsvC,WAAW,EAAE;IAC3B,CAAC,CAAC;EACJ;EAEAqE,iBAAiBA,CAAAA,EAAmB;IAClC,MAAM77D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAkB;IAE7C3V,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC+c,KAAK,CAAU,GAAA,CAAC,GAC3B,KAAK,CAAClf,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC,GAC1C,IAAI,CAACo5B,eAAe,CAAe,IAAI,CAAC;IAC5C,IAAI,IAAI,CAAC3R,GAAG,CAAA,EAAM,CAAC,EAAE;MACnBz0B,IAAI,CAAC87D,WAAW,GAAG,KAAK,CAAC7sB,uBAAuB,EAAE;IACpD;IACA,OAAO,IAAI,CAACn5B,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAEA+7D,sBAAsBA,CACpB/7D,IAAiC,EACjCstB,UAGC,GAAG,EAAE,EACe;IACrB,IAAIA,UAAU,CAACqX,KAAK,EAAE3kC,IAAI,CAAC2kC,KAAK,GAAG,IAAI;IACvC,IAAIrX,UAAU,CAAC+b,OAAO,EAAErpC,IAAI,CAACqpC,OAAO,GAAG,IAAI;IAC3C,IAAI,CAAC/L,gBAAgB,CAAA,GAAS,CAAC;IAC/Bt9B,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IAChC,IAAI,CAACknB,eAAe,CAClBttD,IAAI,CAACgV,EAAE,EACPhV,IAAI,CAAC2kC,KAAK,cACZ,CAAC;IAIM;MACL,IAAI,CAAC9G,MAAM,CAAA,CAAU,CAAC;MACtB79B,IAAI,CAACutB,OAAO,GAAG,IAAI,CAACwmC,oBAAoB,CACtC,aAAa,EACb,IAAI,CAAC8H,iBAAiB,CAACxJ,IAAI,CAAC,IAAI,CAClC,CAAC;MACD,IAAI,CAACx0B,MAAM,CAAA,CAAU,CAAC;IACxB;IACA,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAg8D,eAAeA,CAAAA,EAAiB;IAC9B,MAAMh8D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgB;IAC3C,IAAI,CAACkoB,MAAM,CAAA,CAAU,CAAC;IACtB79B,IAAI,CAACutB,OAAO,GAAG,IAAI,CAACwmC,oBAAoB,CACtC,aAAa,EACb,IAAI,CAAC8H,iBAAiB,CAACxJ,IAAI,CAAC,IAAI,CAClC,CAAC;IACD,IAAI,CAACx0B,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,YAAY,CAAC;EAC5C;EAEAi8D,kBAAkBA,CAAAA,EAAoB;IACpC,MAAMj8D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C,IAAI,CAACkU,KAAK,CAACF,KAAK,EAAgB,CAAC;IAEjC,IAAI,CAACkU,MAAM,CAAA,CAAU,CAAC;IAEtB,KAAK,CAACq+B,2BAA2B,CAC9Bl8D,IAAI,CAAC0U,IAAI,GAAG,EAAE,EACE7E,SAAS,EACX,IAAI,GAErB,CAAC;IACD,IAAI,CAACga,KAAK,CAACD,IAAI,EAAE;IACjB,OAAO,IAAI,CAAC9T,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAm8D,mCAAmCA,CACjCn8D,IAAmC,EACnCo8D,MAAe,GAAG,KAAK,EACA;IACvBp8D,IAAI,CAACgV,EAAE,GAEH,IAAI,CAACoxB,eAAe,EAAE;IAE1B,IACiE,CAACg2B,MAAM,EACtE;MAEA,IAAI,CAAC9O,eAAe,CAACttD,IAAI,CAACgV,EAAE,MAA+B,CAAC;IAC9D;IAEA,IAAqC,IAAI,CAACyf,GAAG,CAAA,EAAO,CAAC,EAAE;MACrD,MAAM4nC,KAAK,GAAG,IAAI,CAAC1mD,SAAS,EAAyB;MACrD,IAAI,CAACwmD,mCAAmC,CAACE,KAAK,EAAE,IAAI,CAAC;MAErDr8D,IAAI,CAAC0U,IAAI,GAAG2nD,KAAK;IACnB,CAAC,MAAM;MACL,IAAI,CAACxyC,KAAK,CAACF,KAAK,IAAoB,CAAC;MACrC,IAAI,CAAC2V,SAAS,CAAC3V,KAAK,EAAgB,CAAC;MACrC3pB,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACunD,kBAAkB,EAAE;MACrC,IAAI,CAAC38B,SAAS,CAAC1V,IAAI,EAAE;MACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACnB;IACA,OAAO,IAAI,CAAC9T,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAs8D,uCAAuCA,CACrCt8D,IAA2B,EACJ;IACvB,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAW,CAAC,EAAE;MACjC/8B,IAAI,CAACK,IAAI,GAAG,QAAQ;MACe;QACjCL,IAAI,CAACu8D,MAAM,GAAG,IAAI;MACpB;MACAv8D,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;IACjC,CAAA,MAAM,IAAI,IAAI,CAACrU,KAAK,CAAA,GAAU,CAAC,EAAE;MAChC/xB,IAAI,CAACK,IAAI,GAAG,QAAQ;MACpBL,IAAI,CAACgV,EAAE,GAAG,KAAK,CAACnC,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;IACtD,CAAC,MAAM;MACL,IAAI,CAAC9H,UAAU,CAAA,CAAE;IACnB;IACA,IAAI,IAAI,CAAC6sB,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB,IAAI,CAAClI,KAAK,CAACF,KAAK,IAAoB,CAAC;MACrC,IAAI,CAAC2V,SAAS,CAAC3V,KAAK,EAAgB,CAAC;MACrC3pB,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACunD,kBAAkB,EAAE;MACrC,IAAI,CAAC38B,SAAS,CAAC1V,IAAI,EAAE;MACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACnB,CAAC,MAAM;MACL,IAAI,CAAC+T,SAAS,CAAA,CAAE;IAClB;IAEA,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAEAw8D,8BAA8BA,CAC5Bx8D,IAAyC,EACzCy8D,sBAA4C,EAC5C1pB,QAAkB,EACW;IAC7B/yC,IAAI,CAAC+yC,QAAQ,GAAGA,QAAQ,IAAI,KAAK;IACjC/yC,IAAI,CAACgV,EAAE,GAAGynD,sBAAsB,IAAI,IAAI,CAACr2B,eAAe,CAAA,CAAE;IAC1D,IAAI,CAACknB,eAAe,CAACttD,IAAI,CAACgV,EAAE,MAAkC,CAAC;IAC/D,IAAI,CAAC6oB,MAAM,CAAA,EAAM,CAAC;IAClB,MAAM6+B,eAAe,GAAG,IAAI,CAACC,sBAAsB,EAAE;IACrD,IACE38D,IAAI,CAACykC,UAAU,KAAK,MAAM,IAC1Bi4B,eAAe,CAACz8D,IAAI,KAAK,2BAA2B,EACpD;MACA,IAAI,CAACsX,KAAK,CAAC22C,QAAQ,CAACmB,wBAAwB,EAAEqN,eAAe,CAAC;IAChE;IACA18D,IAAI,CAAC08D,eAAe,GAAGA,eAAe;IACtC,IAAI,CAAC/+B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,2BAA2B,CAAC;EAC3D;EAEA48D,2BAA2BA,CAAAA,EAAY;IACrC,OACE,IAAI,CAAC7/B,YAAY,CAAY,GAAA,CAAC,IAC9B,IAAI,CAAC7H,iBAAiB,CAAE,CAAA,KAA8B,EAAA;EAE1D;EAEAynC,sBAAsBA,CAAAA,EAAwB;IAC5C,OAAO,IAAI,CAACC,2BAA2B,CAAA,CAAE,GACrC,IAAI,CAACC,8BAA8B,CAAA,CAAE,GACrC,IAAI,CAACpI,iBAAiB,CAA0B,KAAK,CAAC;EAC5D;EAEAoI,8BAA8BA,CAAAA,EAAgC;IAC5D,MAAM78D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA+B;IAC1D,IAAI,CAAC2nB,gBAAgB,CAAA,GAAY,CAAC;IAClC,IAAI,CAACO,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC9L,KAAK,CAAA,GAAU,CAAC,EAAE;MAC1B,IAAI,CAAC7sB,UAAU,CAAA,CAAE;IACnB;IAEAlF,IAAI,CAACmT,UAAU,GAAG,KAAK,CAACo0B,aAAa,EAAqB;IAC1D,IAAI,CAAC1J,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAAClT,iBAAiB,GAAG,IAAI;IAC7B,OAAO,IAAI,CAAC7U,UAAU,CAAC9V,IAAI,EAAE,2BAA2B,CAAC;EAC3D;EAIAy2D,WAAWA,CAAIqG,CAAU,EAAK;IAC5B,MAAM1kD,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,CAAA,CAAE;IAChC,MAAM8iB,GAAG,GAAG0rC,CAAC,EAAE;IACf,IAAI,CAAC1kD,KAAK,GAAGA,KAAK;IAClB,OAAOgZ,GAAG;EACZ;EAEA2rC,kBAAkBA,CAChBD,CAAU,EACY;IACtB,MAAMptB,MAAM,GAAG,IAAI,CAAC5R,QAAQ,CAC1B0W,KAAK,IAEHsoB,CAAC,CAAE,CAAA,IAAItoB,KAAK,CAAA,CAChB,CAAC;IAED,IAAI9E,MAAM,CAACtR,OAAO,IAAI,CAACsR,MAAM,CAAC1vC,IAAI,EAAE;IACpC,IAAI0vC,MAAM,CAACvhC,KAAK,EAAE,IAAI,CAACiK,KAAK,GAAGs3B,MAAM,CAACxR,SAAS;IAE/C,OAAOwR,MAAM,CAAC1vC,IAAI;EACpB;EAEAkzD,UAAUA,CAAI4J,CAA8B,EAAiB;IAC3D,MAAM1kD,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,CAAA,CAAE;IAChC,MAAMohC,MAAM,GAAGotB,CAAC,EAAE;IAClB,IAAIptB,MAAM,KAAK7/B,SAAS,IAAI6/B,MAAM,KAAK,KAAK,EAAE;MAC5C,OAAOA,MAAM;IACf;IACA,IAAI,CAACt3B,KAAK,GAAGA,KAAK;EACpB;EAEA4kD,iBAAiBA,CAACC,IAAS,EAA6B;IACtD,IAAI,IAAI,CAACv/B,gBAAgB,EAAE,EAAE;MAC3B;IACF;IACA,IAAIw/B,SAAS,GAAG,IAAI,CAAC9kD,KAAK,CAACnY,IAAI;IAC/B,IAAII,IAAkB;IAEtB,IAAI,IAAI,CAAC08B,YAAY,CAAA,GAAQ,CAAC,EAAE;MAC9BmgC,SAAS,GAAU,EAAA;MACnB78D,IAAI,GAAG,KAAK;IACd;IAGA,OAAO,IAAI,CAAC88D,kBAAkB,CAAC,MAAM;MACnC,QAAQD,SAAS;QACf,KAAA,EAAA;UACED,IAAI,CAAC5zB,OAAO,GAAG,IAAI;UACnB,OAAO,KAAK,CAAC+zB,sBAAsB,CACjCH,IAAI,EACQ,KAAK,EACU,KAC7B,CAAC;QACH,KAAA,EAAA;UAGEA,IAAI,CAAC5zB,OAAO,GAAG,IAAI;UACnB,OAAO,IAAI,CAACg0B,UAAU,CACpBJ,IAAI,EACc,IAAI,EACL,KACnB,CAAC;QACH,KAAA,GAAA;UACE,OAAO,IAAI,CAAClB,sBAAsB,CAACkB,IAAI,EAAE;YAAE5zB,OAAO,EAAE;UAAK,CAAC,CAAC;QAC7D,KAAA,GAAA;UACE,OAAO,IAAI,CAACizB,uCAAuC,CAACW,IAAI,CAAC;QAC3D,KAAA,EAAA;QACA,KAAA,EAAA;UACE,IAAI,CAAC,IAAI,CAAClrC,KAAK,GAAU,CAAC,IAAI,CAAC,IAAI,CAACqL,qBAAqB,CAAC,MAAM,CAAC,EAAE;YACjE6/B,IAAI,CAAC5zB,OAAO,GAAG,IAAI;YACnB,OAAO,IAAI,CAACi0B,iBAAiB,CAC3BL,IAAI,EACJ58D,IAAI,IAAI,IAAI,CAAC+X,KAAK,CAACpL,KAAK,EACxB,IACF,CAAC;UACH;UAGA,IAAI,CAAC6wB,MAAM,CAAA,EAAU,CAAC;UACtB,OAAO,IAAI,CAACk+B,sBAAsB,CAACkB,IAAI,EAAE;YACvCt4B,KAAK,EAAE,IAAI;YACX0E,OAAO,EAAE;UACX,CAAC,CAAC;QACJ,KAAA,GAAA;UAAoB;YAClB,MAAMqG,MAAM,GAAG,IAAI,CAAC8rB,2BAA2B,CAACyB,IAAI,EAAE;cACpD5zB,OAAO,EAAE;YACX,CAAC,CAAC;YACF,IAAIqG,MAAM,EAAE,OAAOA,MAAM;UAC3B;QAEA;UACE,IAAI1qB,iBAAiB,CAACk4C,SAAS,CAAC,EAAE;YAChC,OAAO,IAAI,CAACK,kBAAkB,CAC5BN,IAAI,EACJ,IAAI,CAAC7kD,KAAK,CAACpL,KAAK,EACL,IAAI,EACE,IACnB,CAAC;UACH;MACJ;IACF,CAAC,CAAC;EACJ;EAGAwwD,2BAA2BA,CAAAA,EAA8B;IACvD,OAAO,IAAI,CAACD,kBAAkB,CAC5B,IAAI,CAAC5nD,SAAS,CAAE,CAAA,EAChB,IAAI,CAACyC,KAAK,CAACpL,KAAK,EACL,IAAI,EACE,IACnB,CAAC;EACH;EAEAywD,0BAA0BA,CACxBz9D,IAAmC,EACnCmuC,IAAkB,EAClBj2B,UAAgC,EACL;IAC3B,QAAQi2B,IAAI,CAAChoC,IAAI;MACf,KAAK,SAAS;QAAE;UACd,MAAMuS,WAAW,GAAG,IAAI,CAACskD,iBAAiB,CAACh9D,IAAI,CAAC;UAChD,IAAI0Y,WAAW,EAAE;YACfA,WAAW,CAAC2wB,OAAO,GAAG,IAAI;UAC5B;UACA,OAAO3wB,WAAW;QACpB;MACA,KAAK,QAAQ;QAGX,IAAI,IAAI,CAACqZ,KAAK,CAAA,CAAU,CAAC,EAAE;UACzB,IAAI,CAAClI,KAAK,CAACF,KAAK,IAAoB,CAAC;UACrC,IAAI,CAAC2V,SAAS,CAAC3V,KAAK,EAAgB,CAAC;UACrC,MAAM+zC,GAAG,GAAG19D,IAAI;UAChB09D,GAAG,CAACr9D,IAAI,GAAG,QAAQ;UACgB;YACjCL,IAAI,CAACu8D,MAAM,GAAG,IAAI;UACpB;UACAmB,GAAG,CAAC1oD,EAAE,GAAGm5B,IAAI;UACbuvB,GAAG,CAAChpD,IAAI,GAAG,IAAI,CAACunD,kBAAkB,EAAE;UACpC,IAAI,CAACpyC,KAAK,CAACD,IAAI,EAAE;UACjB,IAAI,CAAC0V,SAAS,CAAC1V,IAAI,EAAE;UACrB,OAAO,IAAI,CAAC9T,UAAU,CAAC4nD,GAAG,EAAE,qBAAqB,CAAC;QACpD;QACA;MAEF;QACE,OAAO,IAAI,CAACH,kBAAkB,CAC5Bv9D,IAAI,EACJmuC,IAAI,CAAChoC,IAAI,EACE,KAAK,EAChB+R,UACF,CAAC;IACL;EACF;EAGAqlD,kBAAkBA,CAChBv9D,IAAS,EACTgN,KAAa,EACbkb,IAAa,EACbhQ,UAAgC,EACE;IAElC,QAAQlL,KAAK;MACX,KAAK,UAAU;QACb,IACE,IAAI,CAAC2wD,qBAAqB,CAACz1C,IAAI,CAAC,KAC/B,IAAI,CAAC6J,KAAK,CAAA,EAAU,CAAC,IAAI/M,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,CAAC,EAC7D;UACA,OAAO,IAAI,CAAC29D,0BAA0B,CAAC59D,IAAI,EAAEkY,UAAU,CAAC;QAC1D;QACA;MAEF,KAAK,QAAQ;QACX,IAAI,IAAI,CAACylD,qBAAqB,CAACz1C,IAAI,CAAC,EAAE;UACpC,IAAI,IAAI,CAAC6J,KAAK,CAAA,GAAU,CAAC,EAAE;YACzB,OAAO,IAAI,CAACuqC,uCAAuC,CAACt8D,IAAI,CAAC;UAC1D,CAAA,MAAM,IAAIglB,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;YAC7CD,IAAI,CAACK,IAAI,GAAG,QAAQ;YACpB,OAAO,IAAI,CAAC87D,mCAAmC,CAACn8D,IAAI,CAAC;UACvD;QACF;QACA;MAEF,KAAK,WAAW;QACd,IACE,IAAI,CAAC29D,qBAAqB,CAACz1C,IAAI,CAAC,IAChClD,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAClC;UACAD,IAAI,CAACK,IAAI,GAAG,WAAW;UACvB,OAAO,IAAI,CAAC87D,mCAAmC,CAACn8D,IAAI,CAAC;QACvD;QACA;MAEF,KAAK,MAAM;QACT,IACE,IAAI,CAAC29D,qBAAqB,CAACz1C,IAAI,CAAC,IAChClD,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAClC;UACA,OAAO,IAAI,CAACw7D,2BAA2B,CAACz7D,IAAI,CAAC;QAC/C;QACA;IACJ;EACF;EAEA29D,qBAAqBA,CAACz1C,IAAa,EAAE;IACnC,IAAIA,IAAI,EAAE;MACR,IAAI,IAAI,CAACuV,qBAAqB,EAAE,EAAE,OAAO,KAAK;MAC9C,IAAI,CAACvV,IAAI,CAAA,CAAE;MACX,OAAO,IAAI;IACb;IACA,OAAO,CAAC,IAAI,CAACwV,gBAAgB,EAAE;EACjC;EAEAmgC,mCAAmCA,CACjCnnD,QAAkB,EACqB;IACvC,IAAI,CAAC,IAAI,CAACqb,KAAK,CAAA,EAAM,CAAC,EAAE;IAExB,MAAM+rC,yBAAyB,GAAG,IAAI,CAAC1lD,KAAK,CAACgX,sBAAsB;IACnE,IAAI,CAAChX,KAAK,CAACgX,sBAAsB,GAAG,IAAI;IAExC,MAAMgC,GAAkD,GACtD,IAAI,CAAC2rC,kBAAkB,CAAC,MAAM;MAC5B,MAAM/8D,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA4BhqB,QAAQ,CAAC;MAClE1W,IAAI,CAAC4V,cAAc,GAAG,IAAI,CAACggD,qBAAqB,CAC9C,IAAI,CAACnD,oBACP,CAAC;MAED,KAAK,CAAC7e,mBAAmB,CAAC5zC,IAAI,CAAC;MAC/BA,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAACi0B,uCAAuC,EAAE;MAChE,IAAI,CAAC/8B,MAAM,CAAA,EAAS,CAAC;MACrB,OAAO79B,IAAI;IACb,CAAC,CAAC;IAEJ,IAAI,CAACoY,KAAK,CAACgX,sBAAsB,GAAG0uC,yBAAyB;IAE7D,IAAI,CAAC1sC,GAAG,EAAE;IAEV,OAAO,KAAK,CAACykB,oBAAoB,CAC/BzkB,GAAG,EAC0B,IAAI,EACrB,IACd,CAAC;EACH;EAIA2sC,gCAAgCA,CAAAA,EAElB;IACZ,IAAI,IAAI,CAAC1zB,SAAS,EAAE,OAAU,EAAE;IAChC,OAAO,IAAI,CAACqqB,oBAAoB,EAAE;EACpC;EAEAA,oBAAoBA,CAAAA,EAAmC;IACrD,MAAM10D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAkC;IAC7D3V,IAAI,CAAC+T,MAAM,GAAG,IAAI,CAACumD,QAAQ,CAAC,MAC1B,IAAI,CAACoB,mBAAmB,CAAC,MAAM;MAC7B,IAAI,CAAC79B,MAAM,CAAA,EAAM,CAAC;MAClB,OAAO,IAAI,CAACk2B,oBAAoB,CAC9B,2BAA2B,EAC3B,IAAI,CAACyD,WAAW,CAACnF,IAAI,CAAC,IAAI,CAC5B,CAAC;IACF,CAAA,CACH,CAAC;IACD,IAAIryD,IAAI,CAAC+T,MAAM,CAACyE,MAAM,KAAK,CAAC,EAAE;MAC5B,IAAI,CAACjB,KAAK,CAAC22C,QAAQ,CAACgB,kBAAkB,EAAElvD,IAAI,CAAC;IAC/C,CAAC,MAAM,IAAI,CAAC,IAAI,CAACoY,KAAK,CAACiX,MAAM,IAAI,IAAI,CAACsF,UAAU,CAAA,CAAE,KAAKrO,KAAE,CAACxM,KAAK,EAAE;MAG/D,IAAI,CAACywB,YAAY,CAAA,CAAE;IACrB;IACA,IAAI,CAAC1M,MAAM,CAAA,EAAM,CAAC;IAClB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,8BAA8B,CAAC;EAC9D;EAEAg+D,oBAAoBA,CAAAA,EAAY;IAC9B,OAAOl4C,yBAAyB,CAAC,IAAI,CAAC1N,KAAK,CAACnY,IAAI,CAAC;EACnD;EAMAouC,wBAAwBA,CAAAA,EAAY;IAClC,IAAI,IAAI,CAAC2vB,oBAAoB,EAAE,EAAE,OAAO,KAAK;IAC7C,OAAO,KAAK,CAAC3vB,wBAAwB,EAAE;EACzC;EAEAwe,uBAAuBA,CACrB96C,KAA4B,EAC5BmG,UAAyB,EACU;IAEnC,MAAMxB,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAEpC,MAAMy8C,QAAsB,GAAG,CAAA,CAAE;IACjC,IAAI,CAACf,gBAAgB,CACnB;MACEE,gBAAgB,EAAE,CAChB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU;IAEb,CAAA,EACDa,QACF,CAAC;IACD,MAAMO,aAAa,GAAGP,QAAQ,CAACO,aAAa;IAC5C,MAAMuK,QAAQ,GAAG9K,QAAQ,CAAC8K,QAAQ;IAClC,MAAMpH,QAAQ,GAAG1D,QAAQ,CAAC0D,QAAQ;IAClC,IACE,EAAE9kD,KAAK,IAA8C,CAAC,KACrD2hD,aAAa,IAAImD,QAAQ,IAAIoH,QAAQ,CAAC,EACvC;MACA,IAAI,CAAC1mD,KAAK,CAAC22C,QAAQ,CAACqD,2BAA2B,EAAE76C,QAAQ,CAAC;IAC5D;IAEA,MAAMq6B,IAAI,GAAG,IAAI,CAACwB,iBAAiB,EAAE;IACrC,IAAIxgC,KAAK,IAA2C,EAAE;MACpD,IAAI,CAACugC,sBAAsB,CAACvB,IAAI,CAAC;IACnC;IACA,MAAMib,GAAG,GAAG,IAAI,CAACzZ,iBAAiB,CAACxB,IAAI,CAAC9iC,GAAG,CAACrQ,KAAK,EAAEmzC,IAAI,CAAC;IACxD,IAAI2iB,aAAa,IAAImD,QAAQ,IAAIoH,QAAQ,EAAE;MACzC,MAAMC,EAAE,GAAG,IAAI,CAACx9B,WAAW,CAAwBhqB,QAAQ,CAAC;MAC5D,IAAIwB,UAAU,CAACM,MAAM,EAAE;QACrB0lD,EAAE,CAAChmD,UAAU,GAAGA,UAAU;MAC5B;MACA,IAAIw7C,aAAa,EAAEwK,EAAE,CAACxK,aAAa,GAAGA,aAAa;MACnD,IAAImD,QAAQ,EAAEqH,EAAE,CAACrH,QAAQ,GAAGA,QAAQ;MACpC,IAAIoH,QAAQ,EAAEC,EAAE,CAACD,QAAQ,GAAGA,QAAQ;MACpC,IAAIjS,GAAG,CAAC/rD,IAAI,KAAK,YAAY,IAAI+rD,GAAG,CAAC/rD,IAAI,KAAK,mBAAmB,EAAE;QACjE,IAAI,CAACsX,KAAK,CAAC22C,QAAQ,CAAC0D,gCAAgC,EAAEsM,EAAE,CAAC;MAC3D;MACAA,EAAE,CAACC,SAAS,GAAGnS,GAAgD;MAC/D,OAAO,IAAI,CAACl2C,UAAU,CAACooD,EAAE,EAAE,qBAAqB,CAAC;IACnD;IAEA,IAAIhmD,UAAU,CAACM,MAAM,EAAE;MACrBu4B,IAAI,CAAC74B,UAAU,GAAGA,UAAU;IAC9B;IAEA,OAAO8zC,GAAG;EACZ;EAEAoS,iBAAiBA,CAACp+D,IAAuC,EAAW;IAClE,OACGA,IAAI,CAACC,IAAI,KAAK,qBAAqB,IAClC,KAAK,CAACm+D,iBAAiB,CAACp+D,IAAI,CAACm+D,SAAS,CAAC,IACzC,KAAK,CAACC,iBAAiB,CAACp+D,IAAI,CAAC;EAEjC;EAEAq+D,yBAAyBA,CAACr+D,IAAwB,EAAE;IAClD,KAAK,MAAMwtC,KAAK,IAAIxtC,IAAI,CAAC+T,MAAM,EAAE;MAC/B,IACEy5B,KAAK,CAACvtC,IAAI,KAAK,YAAY,IAC1ButC,KAAK,CAAS91B,QAAQ,IACvB,CAAC,IAAI,CAACU,KAAK,CAACoX,gBAAgB,EAC5B;QACA,IAAI,CAACjY,KAAK,CAAC22C,QAAQ,CAAClrB,iBAAiB,EAAEwK,KAAK,CAAC;MAC/C;IACF;EACF;EAEAuH,0BAA0BA,CACxB/0C,IAAuC,EACvC+T,MAAsB,EACtBy7B,gBAAkC,EAC5B;IACN,KAAK,CAACuF,0BAA0B,CAAC/0C,IAAI,EAAE+T,MAAM,EAAEy7B,gBAAgB,CAAC;IAChE,IAAI,CAAC6uB,yBAAyB,CAACr+D,IAAI,CAAC;EACtC;EAEA+tC,0BAA0BA,CAMxB/tC,IAAe,EAAEC,IAAe,EAAEmV,QAAiB,GAAG,KAAK,EAAK;IAChE,IAAI,IAAI,CAAC2c,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/xB,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAACyvB,oCAAoC,GAAS,CAAC;IACvE;IAEA,MAAMkI,YAAY,GAChBr+D,IAAI,KAAK,qBAAqB,GAC1B,mBAAmB,GACnBA,IAAI,KAAK,aAAa,IAAIA,IAAI,KAAK,oBAAoB,GACrD,iBAAiB,GACjB4P,SAAS;IACjB,IAAIyuD,YAAY,IAAI,CAAC,IAAI,CAACvsC,KAAK,CAAA,CAAU,CAAC,IAAI,IAAI,CAAC2L,gBAAgB,EAAE,EAAE;MACrE,OAAO,IAAI,CAAC5nB,UAAU,CAAC9V,IAAI,EAAEs+D,YAAY,CAAC;IAC5C;IACA,IAAIA,YAAY,KAAK,mBAAmB,IAAI,IAAI,CAAClmD,KAAK,CAACoX,gBAAgB,EAAE;MACvE,IAAI,CAACjY,KAAK,CAAC22C,QAAQ,CAACW,gCAAgC,EAAE7uD,IAAI,CAAC;MAC3D,IAAKA,IAAI,CAAmCqpC,OAAO,EAAE;QACnD,OAAO,KAAK,CAAC0E,0BAA0B,CAAC/tC,IAAI,EAAEs+D,YAAY,EAAElpD,QAAQ,CAAC;MACvE;IACF;IACA,IAAI,CAACipD,yBAAyB,CAACr+D,IAAI,CAAC;IAEpC,OAAO,KAAK,CAAC+tC,0BAA0B,CAAC/tC,IAAI,EAAEC,IAAI,EAAEmV,QAAQ,CAAC;EAC/D;EAEAmpD,2BAA2BA,CAACv+D,IAAgB,EAAQ;IAClD,IAAI,CAACA,IAAI,CAAC0U,IAAI,IAAI1U,IAAI,CAACgV,EAAE,EAAE;MAGzB,IAAI,CAACs4C,eAAe,CAACttD,IAAI,CAACgV,EAAE,MAA6B,CAAC;IAC5D,CAAC,MAAM;MACL,KAAK,CAACupD,2BAA2B,CAACv+D,IAAI,CAAC;IACzC;EACF;EAEAw+D,0BAA0BA,CAACC,KAA4C,EAAE;IACvEA,KAAK,CAAC/oC,OAAO,CAAC11B,IAAI,IAAI;MACpB,IAAI,CAAAA,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEC,IAAI,MAAK,sBAAsB,EAAE;QACzC,IAAI,CAACsX,KAAK,CAAC22C,QAAQ,CAACuD,wBAAwB,EAAEzxD,IAAI,CAAC4mC,cAAc,CAAC;MACpE;IACF,CAAC,CAAC;EACJ;EAEAqK,gBAAgBA,CACdD,QAAgD,EAEhD0tB,UAAoB,EACoB;IAKxC,IAAI,CAACF,0BAA0B,CAACxtB,QAAQ,CAAC;IACzC,OAAOA,QAAQ;EACjB;EAEAI,cAAcA,CACZC,KAAgB,EAChBC,YAAqB,EACrBC,OAAgB,EAChB56B,mBAA6C,EACN;IACvC,MAAM3W,IAAI,GAAG,KAAK,CAACoxC,cAAc,CAC/BC,KAAK,EACLC,YAAY,EACZC,OAAO,EACP56B,mBACF,CAAC;IAED,IAAI3W,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;MACnC,IAAI,CAACu+D,0BAA0B,CAACx+D,IAAI,CAACisB,QAAQ,CAAC;IAChD;IAEA,OAAOjsB,IAAI;EACb;EAEA4Y,cAAcA,CACZC,IAAkB,EAElBnC,QAAkB,EAClBoC,OAAmC,EACnCV,KAA4B,EACd;IACd,IAAI,CAAC,IAAI,CAAColB,qBAAqB,CAAA,CAAE,IAAI,IAAI,CAACzL,KAAK,CAAQ,EAAA,CAAC,EAAE;MAIxD,IAAI,CAAC3Z,KAAK,CAACyX,kBAAkB,GAAG,KAAK;MACrC,IAAI,CAAC3H,IAAI,CAAA,CAAE;MAEX,MAAMy2C,iBAAiB,GACrB,IAAI,CAACj+B,WAAW,CAAwBhqB,QAAQ,CAAC;MACnDioD,iBAAiB,CAACxrD,UAAU,GAAG0F,IAAI;MACnC,OAAO,IAAI,CAAC/C,UAAU,CAAC6oD,iBAAiB,EAAE,qBAAqB,CAAC;IAClE;IAEA,IAAIC,cAAc,GAAG,KAAK;IAC1B,IACE,IAAI,CAAC7sC,KAAK,CAAA,EAAe,CAAC,IAC1B,IAAI,CAACmD,iBAAiB,CAAE,CAAA,KAAA,EAAuB,EAC/C;MACA,IAAIpc,OAAO,EAAE;QACXV,KAAK,CAACa,IAAI,GAAG,IAAI;QACjB,OAAOJ,IAAI;MACb;MACAT,KAAK,CAACW,mBAAmB,GAAG6lD,cAAc,GAAG,IAAI;MACjD,IAAI,CAAC12C,IAAI,CAAA,CAAE;IACb;IAGA,IAAI,IAAI,CAAC6J,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;MACjD,IAAI8sC,oBAAoB;MAIxB,MAAMnvB,MAAM,GAAG,IAAI,CAACqtB,kBAAkB,CAAC,MAAM;QAC3C,IAAI,CAACjkD,OAAO,IAAI,IAAI,CAACgmD,oBAAoB,CAACjmD,IAAI,CAAC,EAAE;UAG/C,MAAMkmD,YAAY,GAChB,IAAI,CAAClB,mCAAmC,CAACnnD,QAAQ,CAAC;UACpD,IAAIqoD,YAAY,EAAE;YAChB,OAAOA,YAAY;UACrB;QACF;QAEA,MAAMrpB,aAAa,GAAG,IAAI,CAACqoB,gCAAgC,EAAE;QAC7D,IAAI,CAACroB,aAAa,EAAE;QAEpB,IAAIkpB,cAAc,IAAI,CAAC,IAAI,CAAC7sC,KAAK,CAAA,EAAU,CAAC,EAAE;UAC5C8sC,oBAAoB,GAAG,IAAI,CAACzmD,KAAK,CAAC4X,WAAW,EAAE;UAC/C;QACF;QAEA,IAAI9J,eAAe,CAAC,IAAI,CAAC9N,KAAK,CAACnY,IAAI,CAAC,EAAE;UACpC,MAAMyvC,MAAM,GAAG,KAAK,CAACsvB,6BAA6B,CAChDnmD,IAAI,EACJnC,QAAQ,EACR0B,KACF,CAAC;UAGM;YACLs3B,MAAM,CAAC95B,cAAc,GAAG8/B,aAAa;UACvC;UACA,OAAOhG,MAAM;QACf;QAEA,IAAI,CAAC52B,OAAO,IAAI,IAAI,CAAC2b,GAAG,CAAA,EAAU,CAAC,EAAE;UACnC,MAAMz0B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAE3BhqB,QAAQ,CAAC;UACX1W,IAAI,CAAC2X,MAAM,GAAGkB,IAAI;UAElB7Y,IAAI,CAAC8X,SAAS,GAAG,IAAI,CAACw9B,4BAA4B,GAAU,CAAC;UAG7D,IAAI,CAACkpB,0BAA0B,CAACx+D,IAAI,CAAC8X,SAAS,CAAC;UAIxC;YACL9X,IAAI,CAAC4V,cAAc,GAAG8/B,aAAa;UACrC;UAEA,IAAIt9B,KAAK,CAACW,mBAAmB,EAAE;YAC5B/Y,IAAI,CAAsC0X,QAAQ,GACjDknD,cAAc;UAClB;UAEA,OAAO,IAAI,CAACpnD,oBAAoB,CAACxX,IAAI,EAAEoY,KAAK,CAACW,mBAAmB,CAAC;QACnE;QAEA,MAAMkmD,SAAS,GAAG,IAAI,CAAC7mD,KAAK,CAACnY,IAAI;QACjC,IAEEg/D,SAAS,OAAU,IAEnBA,SAAS,OAAiB,IAEzBA,SAAS,OAAc,IACtB55C,uBAAuB,CAAC45C,SAAS,CAAC,IAClC,CAAC,IAAI,CAACzhC,qBAAqB,CAAA,CAAG,EAChC;UAEA;QACF;QAEA,MAAMx9B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA8BhqB,QAAQ,CAAC;QACpE1W,IAAI,CAACmT,UAAU,GAAG0F,IAAI;QAGf;UACL7Y,IAAI,CAAC4V,cAAc,GAAG8/B,aAAa;QACrC;QACA,OAAO,IAAI,CAAC5/B,UAAU,CAAC9V,IAAI,EAAE,2BAA2B,CAAC;MAC3D,CAAC,CAAC;MAEF,IAAI6+D,oBAAoB,EAAE;QACxB,IAAI,CAAC35D,UAAU,CAAC25D,oBAAoB,IAAW,CAAC;MAClD;MAEA,IAAInvB,MAAM,EAAE;QACV,IACEA,MAAM,CAACzvC,IAAI,KAAK,2BAA2B,KAC1C,IAAI,CAAC8xB,KAAK,CAAA,EAAO,CAAC,IAChB,IAAI,CAACA,KAAK,CAAe,EAAA,CAAC,IACzB,IAAI,CAACmD,iBAAiB,CAAE,CAAA,KAA+B,EAAA,CAAC,EAC5D;UACA,IAAI,CAAC3d,KAAK,CACR22C,QAAQ,CAACiC,iDAAiD,EAC1D,IAAI,CAAC/3C,KAAK,CAAC1B,QACb,CAAC;QACH;QACA,OAAOg5B,MAAM;MACf;IACF;IAEA,OAAO,KAAK,CAAC92B,cAAc,CAACC,IAAI,EAAEnC,QAAQ,EAAEoC,OAAO,EAAEV,KAAK,CAAC;EAC7D;EAEAu9B,cAAcA,CAAC31C,IAAqB,EAAQ;IAAA,IAAAk/D,aAAA;IAC1C,KAAK,CAACvpB,cAAc,CAAC31C,IAAI,CAAC;IAE1B,MAAM;MAAE2X;IAAQ,CAAA,GAAG3X,IAAI;IACvB,IACE2X,MAAM,CAAC1X,IAAI,KAAK,2BAA2B,IAC3C,EAAAi/D,CAAAA,aAAA,GAACvnD,MAAM,CAACtE,KAAK,KAAA,IAAA,IAAZ6rD,aAAA,CAAchrD,aAAa,CAC5B,EAAA;MAGO;QACLlU,IAAI,CAAC4V,cAAc,GAAG+B,MAAM,CAAC/B,cAAc;MAC7C;MACA5V,IAAI,CAAC2X,MAAM,GAAGA,MAAM,CAACxE,UAAU;IACjC;EACF;EAEAgsD,WAAWA,CACTpuB,IAAkB,EAClBquB,YAAsB,EACtBC,OAAe,EACD;IACd,IAAIC,WAAoB;IACxB,IACEt5C,uBAAuB,CAAA,EAAO,CAAC,GAAGq5C,OAAO,IACzC,CAAC,IAAI,CAAC7hC,qBAAqB,EAAE,KAC5B,IAAI,CAACT,YAAY,CAAO,EAAA,CAAC,KACvBuiC,WAAW,GAAG,IAAI,CAACviC,YAAY,CAAc,GAAA,CAAC,CAAC,CAAC,EACnD;MACA,MAAM/8B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAE3B0+B,YAAY,CAAC;MACfp/D,IAAI,CAACmT,UAAU,GAAG49B,IAAI;MACtB/wC,IAAI,CAAC4mC,cAAc,GAAG,IAAI,CAAC0zB,QAAQ,CAAC,MAAM;QACxC,IAAI,CAACpyC,IAAI,CAAA,CAAE;QACX,IAAI,IAAI,CAAC6J,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,IAAIutC,WAAW,EAAE;YACf,IAAI,CAAC/nD,KAAK,CAAC9H,MAAM,CAACtG,iBAAiB,EAAE,IAAI,CAACiP,KAAK,CAAC1B,QAAQ,EAAE;cACxDtN,OAAO,EAAE;YACX,CAAC,CAAC;UACJ;UACA,OAAO,IAAI,CAACwrD,oBAAoB,EAAE;QACpC;QAEA,OAAO,IAAI,CAAC4C,WAAW,EAAE;MAC3B,CAAC,CAAC;MACF,IAAI,CAAC1hD,UAAU,CACb9V,IAAI,EACJs/D,WAAW,GAAG,uBAAuB,GAAG,gBAC1C,CAAC;MAED,IAAI,CAAC/0B,YAAY,CAAA,CAAE;MACnB,OAAO,IAAI,CAAC40B,WAAW,CAErBn/D,IAAI,EACJo/D,YAAY,EACZC,OACF,CAAC;IACH;IAEA,OAAO,KAAK,CAACF,WAAW,CAACpuB,IAAI,EAAEquB,YAAY,EAAEC,OAAO,CAAC;EACvD;EAEA3rB,iBAAiBA,CACfjsB,IAAY,EACZ/Q,QAAkB,EAClB6oD,aAAsB,EACtBvoD,SAAkB,EACZ;IAGN,IAAI,CAAC,IAAI,CAACoB,KAAK,CAACoX,gBAAgB,EAAE;MAChC,KAAK,CAACkkB,iBAAiB,CAACjsB,IAAI,EAAE/Q,QAAQ,EAAE6oD,aAAa,EAAEvoD,SAAS,CAAC;IACnE;EACF;EAEAw7B,qBAAqBA,CAACxyC,IAAiC,EAAE;IACvD,KAAK,CAACwyC,qBAAqB,CAACxyC,IAAI,CAAC;IACjC,IAAIA,IAAI,CAACyyC,MAAM,IAAIzyC,IAAI,CAACykC,UAAU,KAAK,OAAO,EAAE;MAC9C,IAAI,CAACltB,KAAK,CACR22C,QAAQ,CAAC3rB,6BAA6B,EACtCviC,IAAI,CAACuY,UAAU,CAAC,CAAC,CAAC,CAACtK,GAAG,CAACrQ,KACzB,CAAC;IACH;EACF;EAWA4hE,qBAAqBA,CAAAA,EAAG,CAAC;EAEzB1sB,sBAAsBA,CAACC,QAAiB,EAAW;IACjD,IAAI,KAAK,CAACD,sBAAsB,CAACC,QAAQ,CAAC,EAAE,OAAO,IAAI;IACvD,IAAI,IAAI,CAAChW,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,MAAMvM,EAAE,GAAG,IAAI,CAAC0E,iBAAiB,EAAE;MACnC,OAAO6d,QAAQ,GACXviB,EAAE,KAAA,GAA6B,IAAIA,EAAE,KAAA,EAAuB,GAC5DA,EAAE,KAAuB,EAAA;IAC/B;IACA,OAAO,CAACuiB,QAAQ,IAAI,IAAI,CAAChW,YAAY,GAAW,CAAC;EACnD;EAEAiW,gBAAgBA,CACdhzC,IAA4D,EAC5D+yC,QAAiB,EACjBvwC,KAAoB,EACpByL,GAAc,EACR;IACN,KAAK,CAAC+kC,gBAAgB,CAAChzC,IAAI,EAAE+yC,QAAQ,EAAEvwC,KAAK,EAAEyL,GAAG,CAAC;IAClD,IAAI8kC,QAAQ,EAAE;MACX/yC,IAAI,CAA8B6nC,UAAU,GAC3CrlC,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;IACvC,CAAC,MAAM;MACJxC,IAAI,CAAyBykC,UAAU,GACtCjiC,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,OAAO;IAC5D;EACF;EAEAilC,WAAWA,CACTznC,IAA+D,EAClD;IACb,IAAI,IAAI,CAAC+xB,KAAK,CAAA,GAAU,CAAC,EAAE;MACzB/xB,IAAI,CAACykC,UAAU,GAAG,OAAO;MACzB,OAAO,KAAK,CAACgD,WAAW,CAACznC,IAAmC,CAAC;IAC/D;IAEA,IAAIy/D,UAAU;IACd,IACEz6C,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IAClC,IAAI,CAACi1B,iBAAiB,CAAE,CAAA,OAAuB,EAC/C;MACAl1B,IAAI,CAACykC,UAAU,GAAG,OAAO;MACzB,OAAO,IAAI,CAAC+3B,8BAA8B,CACxCx8D,IACF,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAS,CAAC,EAAE;MACtC,MAAM0/B,sBAAsB,GAAG,IAAI,CAACiD,qBAAqB,CACvD1/D,IAAI,EACW,KACjB,CAAC;MACD,IAAI,IAAI,CAACk1B,iBAAiB,CAAE,CAAA,OAAuB,EAAE;QACnD,OAAO,IAAI,CAACsnC,8BAA8B,CACxCx8D,IAAI,EACJy8D,sBACF,CAAC;MACH,CAAC,MAAM;QACLgD,UAAU,GAAG,KAAK,CAACE,6BAA6B,CAC9C3/D,IAAI,EACJy8D,sBACF,CAAC;MACH;IACF,CAAC,MAAM;MACLgD,UAAU,GAAG,KAAK,CAACh4B,WAAW,CAACznC,IAAmC,CAAC;IACrE;IAIA,IACEy/D,UAAU,CAACh7B,UAAU,KAAK,MAAM,IAEhCg7B,UAAU,CAAClnD,UAAU,CAACC,MAAM,GAAG,CAAC,IAEhCinD,UAAU,CAAClnD,UAAU,CAAC,CAAC,CAAC,CAACtY,IAAI,KAAK,wBAAwB,EAC1D;MACA,IAAI,CAACsX,KAAK,CAAC22C,QAAQ,CAACkD,sCAAsC,EAAEqO,UAAU,CAAC;IACzE;IAEA,OAAOA,UAAU;EACnB;EAEAxnD,WAAWA,CACTjY,IAIC,EACDkY,UAAgC,EACnB;IACb,IAAI,IAAI,CAAC6Z,KAAK,CAAA,EAAW,CAAC,EAAE;MAE1B,IAAI,CAAC7J,IAAI,CAAA,CAAE;MACX,MAAM03C,gBAAgB,GAAG5/D,IAA2C;MACpE,IAAIy8D,sBAA2C,GAAG,IAAI;MACtD,IACE,IAAI,CAAC1/B,YAAY,CAAA,GAAS,CAAC,IAE3B,IAAI,CAAC+V,sBAAsB,CAAgB,KAAK,CAAC,EACjD;QACA2pB,sBAAsB,GAAG,IAAI,CAACiD,qBAAqB,CACjDE,gBAAgB,EACD,KACjB,CAAC;MACH,CAAC,MAAM;QACLA,gBAAgB,CAACn7B,UAAU,GAAG,OAAO;MACvC;MACA,OAAO,IAAI,CAAC+3B,8BAA8B,CACxCoD,gBAAgB,EAChBnD,sBAAsB,EACP,IACjB,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAAChoC,GAAG,CAAA,EAAM,CAAC,EAAE;MAE1B,MAAMhmB,MAAM,GAAGzO,IAAoC;MACnDyO,MAAM,CAAC0E,UAAU,GAAG,KAAK,CAAC2yB,eAAe,EAAE;MAC3C,IAAI,CAACnI,SAAS,CAAA,CAAE;MAChB,IAAI,CAAChT,iBAAiB,GAAG,IAAI;MAC7B,OAAO,IAAI,CAAC7U,UAAU,CAACrH,MAAM,EAAE,oBAAoB,CAAC;IACrD,CAAA,MAAM,IAAI,IAAI,CAAC4uB,aAAa,CAAA,EAAO,CAAC,EAAE;MAErC,MAAMyW,IAAI,GAAG9zC,IAA8C;MAE3D,IAAI,CAACs9B,gBAAgB,CAAA,GAAc,CAAC;MACpCwW,IAAI,CAAC9+B,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;MAChC,IAAI,CAACzI,SAAS,CAAA,CAAE;MAChB,OAAO,IAAI,CAAC7nB,UAAU,CAACg+B,IAAI,EAAE,8BAA8B,CAAC;IAC9D,CAAC,MAAM;MACL,OAAO,KAAK,CAAC77B,WAAW,CACtBjY,IAAI,EACJkY,UACF,CAAC;IACH;EACF;EAEA2nD,eAAeA,CAAAA,EAAY;IACzB,OACE,IAAI,CAAC9iC,YAAY,CAAA,GAAa,CAAC,IAAI,IAAI,CAACnI,SAAS,CAAE,CAAA,CAAC30B,IAAI,KAAc,EAAA;EAE1E;EAEAquC,4BAA4BA,CAAAA,EAA8C;IACxE,IAAI,IAAI,CAACuxB,eAAe,EAAE,EAAE;MAC1B,MAAMC,GAAG,GAAG,IAAI,CAACnqD,SAAS,EAAW;MACrC,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX43C,GAAG,CAACpH,QAAQ,GAAG,IAAI;MACnB,OAAO,IAAI,CAAC2E,UAAU,CAACyC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IACzC;IAIA,IAAI,IAAI,CAAC/tC,KAAK,CAAA,GAAc,CAAC,EAAE;MAC7B,MAAM2d,MAAM,GAAG,IAAI,CAAC8rB,2BAA2B,CAC7C,IAAI,CAAC7lD,SAAS,CAChB,CAAA,CAAC;MACD,IAAI+5B,MAAM,EAAE,OAAOA,MAAM;IAC3B;IAEA,OAAO,KAAK,CAACpB,4BAA4B,EAAE;EAC7C;EAEAgvB,iBAAiBA,CACft9D,IAA2B,EAC3BK,IAAuC,EACvC0/D,uBAAgC,GAAG,KAAK,EACxC;IACA,MAAM;MAAEvwC;KAAkB,GAAG,IAAI,CAACpX,KAAK;IACvC,MAAMM,WAAW,GAAG,KAAK,CAAC4kD,iBAAiB,CACzCt9D,IAAI,EACJK,IAAI,EACJ0/D,uBAAuB,IAAIvwC,gBAC7B,CAAC;IAED,IAAI,CAACA,gBAAgB,EAAE,OAAO9W,WAAW;IAEzC,KAAK,MAAM;MAAE1D,EAAE;MAAEma;IAAK,CAAC,IAAIzW,WAAW,CAACsnD,YAAY,EAAE;MAEnD,IAAI,CAAC7wC,IAAI,EAAE;MAGX,IAAI9uB,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC2U,EAAE,CAAC4xB,cAAc,EAAE;QAC3C,IAAI,CAACrvB,KAAK,CAAC22C,QAAQ,CAAC2B,qCAAqC,EAAE1gC,IAAI,CAAC;MAClE,CAAC,MAAM,IACL,CAAC8wC,8BAA8B,CAAC9wC,IAAI,EAAE,IAAI,CAAClE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAC/D;QACA,IAAI,CAAC1T,KAAK,CACR22C,QAAQ,CAACrgD,kEAAkE,EAC3EshB,IACF,CAAC;MACH;IACF;IAEA,OAAOzW,WAAW;EACpB;EAEAwnD,qBAAqBA,CACnBnuD,KAAyB,EACzBmG,UAAiC,EACpB;IACb,IAAI,IAAI,CAAC6Z,KAAK,CAAA,EAAU,CAAC,IAAI,IAAI,CAACqL,qBAAqB,CAAC,MAAM,CAAC,EAAE;MAC/D,MAAMp9B,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAuB;MAClD,IAAI,CAACkoB,MAAM,CAAA,EAAU,CAAC;MACtB,OAAO,IAAI,CAACk+B,sBAAsB,CAAC/7D,IAAI,EAAE;QAAE2kC,KAAK,EAAE;MAAK,CAAC,CAAC;IAC3D;IAEA,IAAI,IAAI,CAAC5H,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,OAAO,IAAI,CAACg/B,sBAAsB,CAChC,IAAI,CAACpmD,SAAS,CAChB,CAAA,CAAC;IACH;IAEA,IAAI,IAAI,CAAConB,YAAY,CAAA,GAAc,CAAC,EAAE;MACpC,MAAM2S,MAAM,GAAG,IAAI,CAAC8rB,2BAA2B,CAAC,IAAI,CAAC7lD,SAAS,CAAE,CAAA,CAAC;MACjE,IAAI+5B,MAAM,EAAE,OAAOA,MAAM;IAC3B;IAEA,OAAO,KAAK,CAACwwB,qBAAqB,CAACnuD,KAAK,EAAEmG,UAAU,CAAC;EACvD;EAEAioD,mBAAmBA,CAAAA,EAAuC;IACxD,OAAO,IAAI,CAACpN,eAAe,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;EACjE;EAEAqN,kBAAkBA,CAAC1vB,MAAW,EAAE6e,SAAgC,EAAW;IACzE,OAAOA,SAAS,CAACv1B,IAAI,CAAC+0B,QAAQ,IAAI;MAChC,IAAIgD,kBAAkB,CAAChD,QAAQ,CAAC,EAAE;QAChC,OAAOre,MAAM,CAACgjB,aAAa,KAAK3E,QAAQ;MAC1C;MACA,OAAO,CAAC,CAACre,MAAM,CAACqe,QAAQ,CAAC;IAC3B,CAAC,CAAC;EACJ;EAEAkE,uBAAuBA,CAAAA,EAAG;IACxB,OACE,IAAI,CAACl2B,YAAY,CAAW,GAAA,CAAC,IAC7B,IAAI,CAAC7H,iBAAiB,CAAE,CAAA,KAA6B,GAAA;EAEzD;EAEAsb,gBAAgBA,CACdC,SAAsB,EACtBC,MAAW,EACXt4B,KAA8B,EACxB;IACN,MAAMm3C,SAAS,GAAG,CAChB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,CACA;IACV,IAAI,CAAC6C,gBAAgB,CACnB;MACEE,gBAAgB,EAAE/C,SAAS;MAC3BgD,mBAAmB,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;MAClCS,6BAA6B,EAAE,IAAI;MACnCR,aAAa,EAAEtE,QAAQ,CAAC8B;IACzB,CAAA,EACDtf,MACF,CAAC;IAED,MAAM2vB,gCAAgC,GAAGA,CAAAA,KAAM;MAC7C,IAAI,IAAI,CAACpN,uBAAuB,EAAE,EAAE;QAClC,IAAI,CAAC/qC,IAAI,CAAA,CAAE;QACX,IAAI,CAACA,IAAI,CAAA,CAAE;QACX,IAAI,IAAI,CAACk4C,kBAAkB,CAAC1vB,MAAM,EAAE6e,SAAS,CAAC,EAAE;UAC9C,IAAI,CAACh4C,KAAK,CACR22C,QAAQ,CAAC+C,6BAA6B,EACtC,IAAI,CAAC74C,KAAK,CAAC4X,WAAW,CAAA,CACxB,CAAC;QACH;QACA,KAAK,CAACswC,qBAAqB,CAAC7vB,SAAS,EAAEC,MAAuB,CAAC;MACjE,CAAC,MAAM;QACL,IAAI,CAAC6vB,4BAA4B,CAC/B9vB,SAAS,EACTC,MAAM,EACNt4B,KAAK,EACL,CAAC,CAACs4B,MAAM,CAAC5F,MACX,CAAC;MACH;KACD;IACD,IAAI4F,MAAM,CAACrH,OAAO,EAAE;MAClB,IAAI,CAAC8zB,kBAAkB,CAACkD,gCAAgC,CAAC;IAC3D,CAAC,MAAM;MACLA,gCAAgC,EAAE;IACpC;EACF;EAEAE,4BAA4BA,CAC1B9vB,SAAsB,EACtBC,MAAkD,EAClDt4B,KAA8B,EAC9ByyB,QAAiB,EACX;IACN,MAAMosB,GAAG,GAAG,IAAI,CAACT,wBAAwB,CACvC9lB,MACF,CAAC;IACD,IAAIumB,GAAG,EAAE;MACPxmB,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAACo7C,GAAG,CAAC;MAExB,IAAKvmB,MAAM,CAASgoB,QAAQ,EAAE;QAC5B,IAAI,CAACnhD,KAAK,CAAC22C,QAAQ,CAACsB,yBAAyB,EAAE9e,MAAM,CAAC;MACxD;MACA,IAAKA,MAAM,CAASgjB,aAAa,EAAE;QACjC,IAAI,CAACn8C,KAAK,CAAC22C,QAAQ,CAACuB,8BAA8B,EAAE/e,MAAM,EAAE;UAC1Dqe,QAAQ,EAAGre,MAAM,CAASgjB;QAC5B,CAAC,CAAC;MACJ;MACA,IAAKhjB,MAAM,CAASrH,OAAO,EAAE;QAC3B,IAAI,CAAC9xB,KAAK,CAAC22C,QAAQ,CAACwB,wBAAwB,EAAEhf,MAAM,CAAC;MACvD;MACA,IAAKA,MAAM,CAASutB,QAAQ,EAAE;QAC5B,IAAI,CAAC1mD,KAAK,CAAC22C,QAAQ,CAACyB,yBAAyB,EAAEjf,MAAM,CAAC;MACxD;MAEA;IACF;IAEA,IAAI,CAAC,IAAI,CAACt4B,KAAK,CAACqX,eAAe,IAAKihB,MAAM,CAASgoB,QAAQ,EAAE;MAC3D,IAAI,CAACnhD,KAAK,CAAC22C,QAAQ,CAACoC,iCAAiC,EAAE5f,MAAM,CAAC;IAChE;IAEA,IAAKA,MAAM,CAASutB,QAAQ,EAAE;MAC5B,IAAI,CAAC7lD,KAAK,CAACooD,aAAa,EAAE;QACxB,IAAI,CAACjpD,KAAK,CAAC22C,QAAQ,CAACuC,qBAAqB,EAAE/f,MAAM,CAAC;MACpD;IACF;IAIA,KAAK,CAAC6vB,4BAA4B,CAChC9vB,SAAS,EACTC,MAAM,EACNt4B,KAAK,EACLyyB,QACF,CAAC;EACH;EAEA41B,4BAA4BA,CAC1BC,YAAsE,EAChE;IACN,MAAMhpD,QAAQ,GAAG,IAAI,CAAC+c,GAAG,GAAY,CAAC;IACtC,IAAI/c,QAAQ,EAAEgpD,YAAY,CAAChpD,QAAQ,GAAG,IAAI;IAE1C,IAAKgpD,YAAY,CAAS7J,QAAQ,IAAI,IAAI,CAAC9kC,KAAK,CAAU,EAAA,CAAC,EAAE;MAC3D,IAAI,CAACxa,KAAK,CAAC22C,QAAQ,CAACO,sBAAsB,EAAEiS,YAAY,CAAC;IAC3D;IAEA,IAAKA,YAAY,CAASr3B,OAAO,IAAI,IAAI,CAACtX,KAAK,CAAU,EAAA,CAAC,EAAE;MAC1D,IAAI,CAACxa,KAAK,CAAC22C,QAAQ,CAACM,qBAAqB,EAAEkS,YAAY,CAAC;IAC1D;EACF;EAOAxyB,wBAAwBA,CACtBluC,IAAmC,EACnCmuC,IAAkB,EAClBj2B,UAAgC,EACnB;IACb,MAAM47B,IAAI,GACR3F,IAAI,CAACluC,IAAI,KAAK,YAAY,GAEtB,IAAI,CAACw9D,0BAA0B,CAACz9D,IAAI,EAAEmuC,IAAI,EAAEj2B,UAAU,CAAC,GACvDrI,SAAS;IACf,OAAOikC,IAAI,IAAI,KAAK,CAAC5F,wBAAwB,CAACluC,IAAI,EAAEmuC,IAAI,EAAEj2B,UAAU,CAAC;EACvE;EAIAk2B,4BAA4BA,CAAAA,EAAY;IACtC,IAAI,IAAI,CAAC4vB,oBAAoB,EAAE,EAAE,OAAO,IAAI;IAC5C,OAAO,KAAK,CAAC5vB,4BAA4B,EAAE;EAC7C;EAGAG,gBAAgBA,CACdJ,IAAkB,EAElBz3B,QAAkB,EAClBC,mBAA6C,EAC/B;IAGd,IAAI,CAAC,IAAI,CAACyB,KAAK,CAACgX,sBAAsB,IAAI,CAAC,IAAI,CAAC2C,KAAK,CAAA,EAAY,CAAC,EAAE;MAClE,OAAO,KAAK,CAACwc,gBAAgB,CAC3BJ,IAAI,EAEJz3B,QAAQ,EACRC,mBACF,CAAC;IACH;IAEA,MAAM+4B,MAAM,GAAG,IAAI,CAAC5R,QAAQ,CAAC,MAC3B,KAAK,CAACyQ,gBAAgB,CAACJ,IAAI,EAAEz3B,QAAQ,CACvC,CAAC;IAED,IAAI,CAACg5B,MAAM,CAAC1vC,IAAI,EAAE;MAChB,IAAI0vC,MAAM,CAACvhC,KAAK,EAAE;QAEhB,KAAK,CAACqgC,0BAA0B,CAAC73B,mBAAmB,EAAE+4B,MAAM,CAACvhC,KAAK,CAAC;MACrE;MAEA,OAAOggC,IAAI;IACb;IACA,IAAIuB,MAAM,CAACvhC,KAAK,EAAE,IAAI,CAACiK,KAAK,GAAGs3B,MAAM,CAACxR,SAAS;IAC/C,OAAOwR,MAAM,CAAC1vC,IAAI;EACpB;EAIA2vC,cAAcA,CACZ3vC,IAAO,EACP0W,QAAkB,EACU;IAC5B,MAAMwpB,OAAO,GAAG,KAAK,CAACyP,cAAc,CAAC3vC,IAAI,EAAE0W,QAAQ,CAAC;IACpD,IAAI,IAAI,CAAC+d,GAAG,CAAA,EAAY,CAAC,EAAE;MACxByL,OAAO,CAAkBxoB,QAAQ,GAAG,IAAI;MAIzC,IAAI,CAAC+B,gBAAgB,CAACzZ,IAAI,CAAC;IAC7B;IAEA,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAM6d,YAAY,GAAG,IAAI,CAAClP,WAAW,CAAyBhqB,QAAQ,CAAC;MACvEk5B,YAAY,CAACz8B,UAAU,GAAGnT,IAAoB;MAC9C4vC,YAAY,CAAChJ,cAAc,GAAG,IAAI,CAACquB,qBAAqB,EAAE;MAE1D,OAAO,IAAI,CAACn/C,UAAU,CAAC85B,YAAY,EAAE,sBAAsB,CAAC;IAC9D;IAEA,OAAO5vC,IAAI;EACb;EAEA8vC,sBAAsBA,CACpB9vC,IAA8B,EACI;IAClC,IAAI,CAAC,IAAI,CAACoY,KAAK,CAACoX,gBAAgB,IAAI,IAAI,CAACuN,YAAY,CAAY,GAAA,CAAC,EAAE;MAClE,OAAO,IAAI,CAACogC,kBAAkB,CAAC,MAAM,IAAI,CAACrtB,sBAAsB,CAAC9vC,IAAI,CAAC,CAAC;IACzE;IAGA,MAAM0W,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAEpC,MAAMiqD,SAAS,GAAG,IAAI,CAACtjC,aAAa,IAAY,CAAC;IAEjD,IACEsjC,SAAS,KACR,IAAI,CAAC5jC,YAAY,CAAY,GAAA,CAAC,IAAI,CAAC,IAAI,CAACqR,4BAA4B,CAAA,CAAE,CAAC,EACxE;MACA,MAAM,IAAI,CAAC72B,KAAK,CACd22C,QAAQ,CAACkB,iCAAiC,EAC1C,IAAI,CAACh3C,KAAK,CAAC1B,QACb,CAAC;IACH;IAEA,MAAMkqD,YAAY,GAAG57C,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC;IACvD,MAAMyY,WAA6C,GAChDkoD,YAAY,IAAI,IAAI,CAACpD,2BAA2B,CAAE,CAAA,IACnD,KAAK,CAAC1tB,sBAAsB,CAAC9vC,IAAI,CAAC;IAEpC,IAAI,CAAC0Y,WAAW,EAAE,OAAO,IAAI;IAE7B,IACEA,WAAW,CAACzY,IAAI,KAAK,wBAAwB,IAC7CyY,WAAW,CAACzY,IAAI,KAAK,wBAAwB,IAC7C0gE,SAAS,EACT;MACA3gE,IAAI,CAAC6nC,UAAU,GAAG,MAAM;IAC1B;IAEA,IAAI84B,SAAS,EAAE;MAEb,IAAI,CAAChoD,kBAAkB,CAACD,WAAW,EAAEhC,QAAQ,CAAC;MAE9CgC,WAAW,CAAC2wB,OAAO,GAAG,IAAI;IAC5B;IAEA,OAAO3wB,WAAW;EACpB;EAEA23B,YAAYA,CACVrwC,IAAa,EACbswC,WAAoB,EACpBC,UAA2B,EAE3BxmB,WAAyB,EACnB;IACN,IAAI,CAAC,CAACumB,WAAW,IAAIC,UAAU,KAAK,IAAI,CAACxT,YAAY,CAAe,GAAA,CAAC,EAAE;MACrE;IACF;IAEA,KAAK,CAACsT,YAAY,CAChBrwC,IAAI,EACJswC,WAAW,EACXC,UAAU,EACTvwC,IAAI,CAASqpC,OAAO,cAGvB,CAAC;IACD,MAAMzzB,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CAClD,IAAI,CAACjD,0BACP,CAAC;IACD,IAAI98C,cAAc,EAAE5V,IAAI,CAAC4V,cAAc,GAAGA,cAAc;EAC1D;EAEAirD,4BAA4BA,CAC1B7gE,IAAwE,EAClE;IACN,IAAI,CAACA,IAAI,CAAC0X,QAAQ,EAAE;MAClB,IAAI,IAAI,CAAC+c,GAAG,CAAA,EAAQ,CAAC,EAAE;QACrBz0B,IAAI,CAAC8gE,QAAQ,GAAG,IAAI;MACrB,CAAA,MAAM,IAAI,IAAI,CAACrsC,GAAG,CAAA,EAAY,CAAC,EAAE;QAChCz0B,IAAI,CAAC0X,QAAQ,GAAG,IAAI;MACtB;IACF;IAEA,MAAMzX,IAAI,GAAG,IAAI,CAAC02D,wBAAwB,EAAE;IAC5C,IAAI12D,IAAI,EAAED,IAAI,CAAC4mC,cAAc,GAAG3mC,IAAI;EACtC;EAEA+V,kBAAkBA,CAAChW,IAAqB,EAAmB;IACzD,IAAI,CAAC6gE,4BAA4B,CAAC7gE,IAAI,CAAC;IAEvC,IACE,IAAI,CAACoY,KAAK,CAACoX,gBAAgB,IAC3B,EAAExvB,IAAI,CAAC62D,QAAQ,IAAI,CAAC72D,IAAI,CAAC4mC,cAAc,CAAC,IACxC,IAAI,CAAC7U,KAAK,CAAM,EAAA,CAAC,EACjB;MACA,IAAI,CAACxa,KAAK,CACR22C,QAAQ,CAACU,+BAA+B,EACxC,IAAI,CAACx2C,KAAK,CAAC1B,QACb,CAAC;IACH;IACA,IAAI1W,IAAI,CAAC04D,QAAQ,IAAI,IAAI,CAAC3mC,KAAK,CAAM,EAAA,CAAC,EAAE;MACtC,MAAM;QAAElrB;MAAK,CAAA,GAAG7G,IAAI;MACpB,IAAI,CAACuX,KAAK,CACR22C,QAAQ,CAACG,8BAA8B,EACvC,IAAI,CAACj2C,KAAK,CAAC1B,QAAQ,EACnB;QACE43C,YAAY,EACVznD,GAAG,CAAC5G,IAAI,KAAK,YAAY,IAAI,CAACD,IAAI,CAAC6V,QAAQ,GACvChP,GAAG,CAACV,IAAI,GACR,IAAI,IAAI,CAACinB,KAAK,CAAC6C,KAAK,CAAC,IAAI,CAAClF,iBAAiB,CAAClkB,GAAG,CAACjJ,KAAK,CAAC,EAAE,IAAI,CAACmtB,iBAAiB,CAAClkB,GAAG,CAAChJ,GAAG,CAAC,CAAC;MAChG,CACF,CAAC;IACH;IAEA,OAAO,KAAK,CAACmY,kBAAkB,CAAChW,IAAI,CAAC;EACvC;EAEAmW,yBAAyBA,CACvBnW,IAA4B,EACJ;IACxB,IAAIA,IAAI,CAAC04D,QAAQ,EAAE;MACjB,IAAI,CAACnhD,KAAK,CAAC22C,QAAQ,CAACwC,yBAAyB,EAAE1wD,IAAI,CAAC;IACtD;IAEA,IAAIA,IAAI,CAAC0zD,aAAa,EAAE;MACtB,IAAI,CAACn8C,KAAK,CAAC22C,QAAQ,CAACyC,8BAA8B,EAAE3wD,IAAI,EAAE;QACxD+uD,QAAQ,EAAE/uD,IAAI,CAAC0zD;MACjB,CAAC,CAAC;IACJ;IAEA,IAAI,CAACmN,4BAA4B,CAAC7gE,IAAI,CAAC;IACvC,OAAO,KAAK,CAACmW,yBAAyB,CAACnW,IAAI,CAAC;EAC9C;EAEA+gE,0BAA0BA,CACxB/gE,IAA6B,EACJ;IACzB,IAAI,CAAC6gE,4BAA4B,CAAC7gE,IAAI,CAAC;IACvC,IAAIA,IAAI,CAAC0X,QAAQ,EAAE;MACjB,IAAI,CAACH,KAAK,CAAC22C,QAAQ,CAACK,wBAAwB,EAAEvuD,IAAI,CAAC;IACrD;IACA,OAAO,KAAK,CAAC+gE,0BAA0B,CAAC/gE,IAAI,CAAC;EAC/C;EAEA4xC,eAAeA,CACbnB,SAAsB,EACtB38B,MAAqB,EACrBwB,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBs8B,iBAA0B,EACpB;IACN,MAAMj8B,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CAClD,IAAI,CAAClD,oBACP,CAAC;IACD,IAAI78C,cAAc,IAAIL,aAAa,EAAE;MACnC,IAAI,CAACgC,KAAK,CAAC22C,QAAQ,CAACQ,4BAA4B,EAAE94C,cAAc,CAAC;IACnE;IAGA,MAAM;MAAEyzB,OAAO,GAAG,KAAK;MAAEhpC;IAAM,CAAA,GAAGyT,MAAM;IAExC,IAAIu1B,OAAO,KAAKhpC,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,KAAK,CAAC,EAAE;MACjD,IAAI,CAACkX,KAAK,CAAC22C,QAAQ,CAACS,eAAe,EAAE76C,MAAM,EAAE;QAAEzT;MAAK,CAAC,CAAC;IACxD;IACA,IAAIuV,cAAc,EAAE9B,MAAM,CAAC8B,cAAc,GAAGA,cAAc;IAC1D,KAAK,CAACg8B,eAAe,CACnBnB,SAAS,EACT38B,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACbs8B,iBACF,CAAC;EACH;EAEAE,sBAAsBA,CACpBtB,SAAsB,EACtB38B,MAA4B,EAC5BwB,WAAoB,EACpB5B,OAAgB,EACV;IACN,MAAMkC,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CAClD,IAAI,CAAClD,oBACP,CAAC;IACD,IAAI78C,cAAc,EAAE9B,MAAM,CAAC8B,cAAc,GAAGA,cAAc;IAC1D,KAAK,CAACm8B,sBAAsB,CAACtB,SAAS,EAAE38B,MAAM,EAAEwB,WAAW,EAAE5B,OAAO,CAAC;EACvE;EAEAstD,gCAAgCA,CAC9BhhE,IAA8C,EAC9CK,IAAY,EACZ;IACA,IAAIL,IAAI,CAACC,IAAI,KAAK,iBAAiB,EAAE;IAErC,IACGD,IAAI,CAAYC,IAAI,KAAK,kBAAkB,IAC5C,CAAC0zD,cAAA,CAAA3f,IAAA,CACEh0C,IAAI,CAAyCgN,KAAK,EACnD,MACF,CAAC,EACD;MACA;IACF;IAEA,KAAK,CAACg0D,gCAAgC,CAAChhE,IAAI,EAAEK,IAAI,CAAC;EACpD;EAEA2xC,eAAeA,CAAChyC,IAAa,EAAQ;IACnC,KAAK,CAACgyC,eAAe,CAAChyC,IAAI,CAAC;IAE3B,IAAIA,IAAI,CAACwR,UAAU,KAAK,IAAI,CAACugB,KAAK,CAAA,EAAM,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,CAAC,EAAE;MAG/D;QACL/xB,IAAI,CAACiyC,mBAAmB,GAAG,IAAI,CAAC8rB,gCAAgC,EAAE;MACpE;IACF;IACA,IAAI,IAAI,CAAC1gC,aAAa,CAAA,GAAe,CAAC,EAAE;MACtCr9B,IAAI,CAACsoC,UAAU,GAAG,IAAI,CAAC+yB,qBAAqB,CAAC,YAAY,CAAC;IAC5D;EACF;EAEAhpB,iBAAiBA,CACfh8B,IAAe,EACfK,QAAqC,EACrCpB,WAAoB,EACpB5B,OAAgB,EAChB4C,SAAkB,EAClBC,UAAmB,EACnBI,mBAA6C,EAC1C;IACH,MAAMf,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CAClD,IAAI,CAAClD,oBACP,CAAC;IACD,IAAI78C,cAAc,EAAES,IAAI,CAACT,cAAc,GAAGA,cAAc;IAExD,OAAO,KAAK,CAACy8B,iBAAiB,CAC5Bh8B,IAAI,EAEJK,QAAQ,EACRpB,WAAW,EACX5B,OAAO,EACP4C,SAAS,EACTC,UAAU,EACVI,mBACF,CAAC;EACH;EAEAi9B,mBAAmBA,CAAC5zC,IAAgB,EAAEuV,aAAsB,EAAQ;IAClE,MAAMK,cAAc,GAAG,IAAI,CAAC+/C,wBAAwB,CAClD,IAAI,CAAClD,oBACP,CAAC;IACD,IAAI78C,cAAc,EAAE5V,IAAI,CAAC4V,cAAc,GAAGA,cAAc;IACxD,KAAK,CAACg+B,mBAAmB,CAAC5zC,IAAI,EAAEuV,aAAa,CAAC;EAChD;EAGAs+B,UAAUA,CACRC,IAA0B,EAC1BzzC,IAAuC,EACjC;IACN,KAAK,CAACwzC,UAAU,CAACC,IAAI,EAAEzzC,IAAI,CAAC;IAC5B,IACEyzC,IAAI,CAAC9+B,EAAE,CAAC/U,IAAI,KAAK,YAAY,IAC7B,CAAC,IAAI,CAACu9B,qBAAqB,EAAE,IAC7B,IAAI,CAAC/I,GAAG,CAAA,EAAQ,CAAC,EACjB;MACAqf,IAAI,CAACgtB,QAAQ,GAAG,IAAI;IACtB;IAEA,MAAM7gE,IAAI,GAAG,IAAI,CAAC02D,wBAAwB,EAAE;IAC5C,IAAI12D,IAAI,EAAE;MACR6zC,IAAI,CAAC9+B,EAAE,CAAC4xB,cAAc,GAAG3mC,IAAI;MAC7B,IAAI,CAACwZ,gBAAgB,CAACq6B,IAAI,CAAC9+B,EAAE,CAAC;IAChC;EACF;EAGA++B,iCAAiCA,CAC/B/zC,IAA+B,EAC/Bg0C,IAAsB,EACK;IAC3B,IAAI,IAAI,CAACjiB,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB/xB,IAAI,CAAC2mC,UAAU,GAAG,IAAI,CAACsuB,qBAAqB,EAAE;IAChD;IACA,OAAO,KAAK,CAAClhB,iCAAiC,CAAC/zC,IAAI,EAAEg0C,IAAI,CAAC;EAC5D;EAEAhF,gBAAgBA,CACdr4B,mBAA6C,EAC7Cu9B,cAAyB,EACX;IAAA,IAAAC,IAAA,EAAAG,KAAA,EAAA2sB,SAAA,EAAA1sB,KAAA,EAAA2sB,UAAA;IAGd,IAAI9oD,KAA+B;IACnC,IAAIg8B,GAAG;IACP,IAAI+sB,QAAQ;IAEZ,IACE,IAAI,CAACl2C,SAAS,CAAC,KAAK,CAAC,KACpB,IAAI,CAAC8G,KAAK,CAAe,GAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAM,EAAA,CAAC,CAAC,EACjD;MAEA3Z,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,EAAE;MAE1B8lC,GAAG,GAAG,IAAI,CAACtW,QAAQ,CACjB,MAAM,KAAK,CAACkR,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAAC,EACjE97B,KACF,CAAC;MAID,IAAI,CAACg8B,GAAG,CAACjmC,KAAK,EAAE,OAAOimC,GAAG,CAACp0C,IAAI;MAK/B,MAAM;QAAEomB;OAAS,GAAG,IAAI,CAAChO,KAAK;MAC9B,MAAMi8B,cAAc,GAAGjuB,OAAO,CAACA,OAAO,CAAC5N,MAAM,GAAG,CAAC,CAAC;MAClD,IAAI67B,cAAc,KAAK/tB,KAAE,CAACvM,MAAM,IAAIs6B,cAAc,KAAK/tB,KAAE,CAACrM,MAAM,EAAE;QAChEmM,OAAO,CAACC,GAAG,CAAA,CAAE;MACf;IACF;IAEA,IAAI,EAAA8tB,CAAAA,IAAA,GAACC,GAAG,aAAHD,IAAA,CAAKhmC,KAAK,CAAA,IAAI,CAAC,IAAI,CAAC4jB,KAAK,CAAA,EAAM,CAAC,EAAE;MACrC,OAAO,KAAK,CAACid,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAAC;IACpE;IAOA,IAAI,CAAC97B,KAAK,IAAIA,KAAK,KAAK,IAAI,CAACA,KAAK,EAAEA,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC9J,KAAK,EAAE;IAE9D,IAAIsH,cAA+D;IAEnE,MAAM2H,KAAK,GAAG,IAAI,CAACugB,QAAQ,CAAE0W,KAAkB,IAAK;MAAA,IAAArD,WAAA,EAAAiwB,eAAA;MAElDxrD,cAAc,GAAG,IAAI,CAACggD,qBAAqB,CAAC,IAAI,CAACnD,oBAAoB,CAAC;MACtE,MAAMtkB,IAAI,GAAG,KAAK,CAACa,gBAAgB,CACjCr4B,mBAAmB,EACnBu9B,cACF,CAAC;MAED,IACE/F,IAAI,CAACluC,IAAI,KAAK,yBAAyB,IAAAkxC,CAAAA,WAAA,GACvChD,IAAI,CAAC96B,KAAK,KAAA,IAAA,IAAV89B,WAAA,CAAYj9B,aAAa,EACzB;QACAsgC,KAAK,EAAE;MACT;MAGA,IAAI,CAAA4sB,CAAAA,eAAA,GAAAxrD,cAAc,KAAdwrD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAgBrtD,MAAM,CAACyE,MAAM,MAAK,CAAC,EAAE;QACvC,IAAI,CAACmoB,0BAA0B,CAACwN,IAAI,EAAEv4B,cAAc,CAAC;MACvD;MACAu4B,IAAI,CAACv4B,cAAc,GAAGA,cAAc;MA2BpC,OAAOu4B,IAAI;IACZ,CAAA,EAAE/1B,KAAK,CAAC;IAGT,IAAI,CAACmF,KAAK,CAACpP,KAAK,IAAI,CAACoP,KAAK,CAAC6gB,OAAO,EAAE;MAIlC,IAAIxoB,cAAc,EAAE,IAAI,CAACyrD,4BAA4B,CAACzrD,cAAc,CAAC;MACrE,OAAO2H,KAAK,CAACvd,IAAI;IACnB;IAEA,IAAI,CAACo0C,GAAG,EAAE;MAIR6Z,MAAM,CAAC,CAAC,IAAI,CAAChjC,SAAS,CAAC,KAAK,CAAC,CAAC;MAI9Bk2C,QAAQ,GAAG,IAAI,CAACrjC,QAAQ,CACtB,MAAM,KAAK,CAACkR,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAAC,EACjE97B,KACF,CAAC;MAGD,IAAI,CAAC+oD,QAAQ,CAAChzD,KAAK,EAAE,OAAOgzD,QAAQ,CAACnhE,IAAI;IAC3C;IAEA,IAAA,CAAAs0C,KAAA,GAAIF,GAAG,aAAHE,KAAA,CAAKt0C,IAAI,EAAE;MAEb,IAAI,CAACoY,KAAK,GAAGg8B,GAAG,CAAClW,SAAS;MAC1B,OAAOkW,GAAG,CAACp0C,IAAI;IACjB;IAEA,IAAIud,KAAK,CAACvd,IAAI,EAAE;MAEd,IAAI,CAACoY,KAAK,GAAGmF,KAAK,CAAC2gB,SAAS;MAC5B,IAAItoB,cAAc,EAAE,IAAI,CAACyrD,4BAA4B,CAACzrD,cAAc,CAAC;MACrE,OAAO2H,KAAK,CAACvd,IAAI;IACnB;IAEA,IAAA,CAAAihE,SAAA,GAAIE,QAAQ,aAARF,SAAA,CAAUjhE,IAAI,EAAE;MAElB,IAAI,CAACoY,KAAK,GAAG+oD,QAAQ,CAACjjC,SAAS;MAC/B,OAAOijC,QAAQ,CAACnhE,IAAI;IACtB;IAEA,MAAM,EAAAu0C,KAAA,GAAAH,GAAG,KAAHG,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAA,CAAKpmC,KAAK,KAAIoP,KAAK,CAACpP,KAAK,MAAA+yD,UAAA,GAAIC,QAAQ,KAARD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAA,CAAU/yD,KAAK,CAAA;EACpD;EAEAkzD,4BAA4BA,CAACrhE,IAAS,EAAE;IAAA,IAAAsvC,WAAA;IACtC,IACEtvC,IAAI,CAAC+T,MAAM,CAACyE,MAAM,KAAK,CAAC,IACxB,CAACxY,IAAI,CAAC+T,MAAM,CAAC,CAAC,CAAC,CAAC0hD,UAAU,IAC1B,EAAAnmB,CAAAA,WAAA,GAACtvC,IAAI,CAACqT,KAAK,KAAA,IAAA,IAAVi8B,WAAA,CAAYgyB,aAAa,CAC1B,IAAA,IAAI,CAACzsD,eAAe,CAAC,YAAY,EAAE,0BAA0B,CAAC,EAC9D;MACA,IAAI,CAAC0C,KAAK,CAAC22C,QAAQ,CAAC2C,sBAAsB,EAAE7wD,IAAI,CAAC;IACnD;EACF;EAGAk5D,eAAeA,CACbviD,mBAA6C,EAC7C4qD,QAAkB,EACJ;IACd,IAAI,CAAC,IAAI,CAACt2C,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC8G,KAAK,CAAA,EAAM,CAAC,EAAE;MAC/C,OAAO,IAAI,CAACqpC,oBAAoB,EAAE;IACpC;IACA,OAAO,KAAK,CAAClC,eAAe,CAACviD,mBAAmB,EAAE4qD,QAAQ,CAAC;EAC7D;EAEA1sB,UAAUA,CACR70C,IAAuC,EACe;IACtD,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAS,CAAC,EAAE;MAIxB,MAAM2d,MAAM,GAAG,IAAI,CAAC5R,QAAQ,CAAC0W,KAAK,IAAI;QACpC,MAAM7N,UAAU,GAAG,IAAI,CAACyvB,oCAAoC,GAE5D,CAAC;QACD,IAAI,IAAI,CAAC74B,kBAAkB,CAAA,CAAE,IAAI,CAAC,IAAI,CAACxL,KAAK,CAAS,EAAA,CAAC,EAAEyiB,KAAK,EAAE;QAC/D,OAAO7N,UAAU;MACnB,CAAC,CAAC;MAEF,IAAI+I,MAAM,CAACtR,OAAO,EAAE;MAEpB,IAAI,CAACsR,MAAM,CAACvR,MAAM,EAAE;QAClB,IAAIuR,MAAM,CAACvhC,KAAK,EAAE,IAAI,CAACiK,KAAK,GAAGs3B,MAAM,CAACxR,SAAS;QAE/Cl+B,IAAI,CAAC2mC,UAAU,GAAG+I,MAAM,CAAC1vC,IAAI;MAC/B;IACF;IAEA,OAAO,KAAK,CAAC60C,UAAU,CAAC70C,IAAI,CAAC;EAC/B;EAGAsyC,sBAAsBA,CAAC9E,KAAgB,EAAE;IACvC,IAAI,IAAI,CAAC/Y,GAAG,CAAA,EAAY,CAAC,EAAE;MACxB+Y,KAAK,CAAyB91B,QAAQ,GAAG,IAAI;IAChD;IACA,MAAMzX,IAAI,GAAG,IAAI,CAAC02D,wBAAwB,EAAE;IAC5C,IAAI12D,IAAI,EAAEutC,KAAK,CAAC5G,cAAc,GAAG3mC,IAAI;IACrC,IAAI,CAACwZ,gBAAgB,CAAC+zB,KAAK,CAAC;IAE5B,OAAOA,KAAK;EACd;EAEAz2B,YAAYA,CAAC/W,IAAY,EAAEgX,SAAmB,EAAW;IACvD,QAAQhX,IAAI,CAACC,IAAI;MACf,KAAK,sBAAsB;QACzB,OAAO,IAAI,CAAC8W,YAAY,CAAC/W,IAAI,CAACmT,UAAU,EAAE6D,SAAS,CAAC;MACtD,KAAK,qBAAqB;QACxB,OAAO,IAAI;MACb;QACE,OAAO,KAAK,CAACD,YAAY,CAAC/W,IAAI,EAAEgX,SAAS,CAAC;IAC9C;EACF;EAEAC,YAAYA,CAACjX,IAAY,EAAEkX,KAAc,GAAG,KAAK,EAAQ;IACvD,QAAQlX,IAAI,CAACC,IAAI;MACf,KAAK,yBAAyB;QAC5B,IAAI,CAACuhE,mCAAmC,CAACxhE,IAAI,EAAEkX,KAAK,CAAC;QACrD;MACF,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,qBAAqB;MAC1B,KAAK,iBAAiB;QACpB,IAAIA,KAAK,EAAE;UACT,IAAI,CAACsoB,eAAe,CAAC1D,gCAAgC,CACnDoyB,QAAQ,CAACwD,6BAA6B,EACtC1xD,IACF,CAAC;QACH,CAAC,MAAM;UACL,IAAI,CAACuX,KAAK,CAAC22C,QAAQ,CAACwD,6BAA6B,EAAE1xD,IAAI,CAAC;QAC1D;QACA,IAAI,CAACiX,YAAY,CAACjX,IAAI,CAACmT,UAAU,EAAE+D,KAAK,CAAC;QACzC;MACF,KAAK,sBAAsB;QACzB,IAAI,CAACA,KAAK,IAAIlX,IAAI,CAAC+wC,IAAI,CAAC9wC,IAAI,KAAK,sBAAsB,EAAE;UACvDD,IAAI,CAAC+wC,IAAI,GAAG,IAAI,CAACnD,mBAAmB,CAAC5tC,IAAI,CAAC+wC,IAAI,CAAiB;QACjE;MAEF;QACE,KAAK,CAAC95B,YAAY,CAACjX,IAAI,EAAEkX,KAAK,CAAC;IACnC;EACF;EAEAsqD,mCAAmCA,CACjCxhE,IAA+B,EAC/BkX,KAAc,EACR;IACN,QAAQlX,IAAI,CAACmT,UAAU,CAAClT,IAAI;MAC1B,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,qBAAqB;MAC1B,KAAK,iBAAiB;MACtB,KAAK,yBAAyB;QAC5B,IAAI,CAACgX,YAAY,CAACjX,IAAI,CAACmT,UAAU,EAAE+D,KAAK,CAAC;QACzC;MACF;QACE,KAAK,CAACD,YAAY,CAACjX,IAAI,EAAEkX,KAAK,CAAC;IACnC;EACF;EAEA60C,qBAAqBA,CAAC/rD,IAAY,EAAE8tD,YAAqB,EAAQ;IAC/D,QAAQ9tD,IAAI,CAACC,IAAI;MACf,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,iBAAiB;MACtB,KAAK,qBAAqB;QACxB,IAAI,CAAC8rD,qBAAqB,CAAC/rD,IAAI,CAACmT,UAAU,EAAE,KAAK,CAAC;QAClD;MACF;QACE,KAAK,CAAC44C,qBAAqB,CAAC/rD,IAAI,EAAE8tD,YAAY,CAAC;IACnD;EACF;EAEAl3C,WAAWA,CACT3W,IAOqB,EACrB4W,yBAAkC,EAClCC,OAAoB,EACpB;IACA,QAAQ7W,IAAI;MAIV,KAAK,sBAAsB;QACzB,OAAO,IAAI;MACb,KAAK,qBAAqB;QACxB,OAAO,WAAW;MACpB,KAAK,qBAAqB;MAC1B,KAAK,2BAA2B;QAC9B,OAAO,YAAY;MACrB,KAAK,gBAAgB;MACrB,KAAK,uBAAuB;MAC5B,KAAK,iBAAiB;QACpB,OACE,CAAC6W,OAAO,OAA0B,IAAI,CAACD,yBAAyB,KAC/D,CAAC,YAAY,EAAE,IAAI,CAAuB;MAE/C;QACE,OAAO,KAAK,CAACD,WAAW,CAAC3W,IAAI,EAAE4W,yBAAyB,EAAEC,OAAO,CAAC;IACtE;EACF;EAEA68B,gBAAgBA,CAAAA,EAAc;IAC5B,IAAI,IAAI,CAACv7B,KAAK,CAACnY,IAAI,OAAa,EAAE;MAChC,OAAO,IAAI,CAACmmC,eAAe,CAAe,IAAI,CAAC;IACjD;IACA,OAAO,KAAK,CAACuN,gBAAgB,EAAE;EACjC;EAEA8tB,4BAA4BA,CAC1BtzB,IAAkB,EAClBz3B,QAAkB,EACJ;IAEd,IAAI,IAAI,CAACqb,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;MACjD,MAAM2jB,aAAa,GAAG,IAAI,CAACqoB,gCAAgC,EAAE;MAE7D,IAAI,IAAI,CAAChsC,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,MAAMiiB,IAAI,GAAG,KAAK,CAACytB,4BAA4B,CAC7CtzB,IAAI,EACJz3B,QACF,CAAqB;QAGd;UACLs9B,IAAI,CAACp+B,cAAc,GAAG8/B,aAAa;QACrC;QAEA,OAAO1B,IAAI;MACb;MAEA,IAAI,CAAC9uC,UAAU,CAAC,IAAI,IAAW,CAAC;IAClC;IAEA,OAAO,KAAK,CAACu8D,4BAA4B,CAACtzB,IAAI,EAAEz3B,QAAQ,CAAC;EAC3D;EAEAi2C,mBAAmBA,CACjBtb,KAAiD,EACxC;IACT,IACE,IAAI,CAACj5B,KAAK,CAACoX,gBAAgB,IAC3B,IAAI,CAACuC,KAAK,GAAS,CAAC,IACpB,IAAI,CAACmD,iBAAiB,CAAE,CAAA,KAAKmc,KAAK,EAClC;MACA,IAAI,CAACnpB,IAAI,CAAA,CAAE;MACX,OAAO,KAAK;IACd;IACA,OAAO,KAAK,CAACykC,mBAAmB,CAACtb,KAAK,CAAC;EACzC;EAOAI,aAAaA,CAAAA,EAAY;IACvB,OAAO,IAAI,CAAC1f,KAAK,CAAM,EAAA,CAAC,IAAI,KAAK,CAAC0f,aAAa,CAAA,CAAE;EACnD;EAEAC,eAAeA,CAAAA,EAAY;IACzB,OACE,IAAI,CAAC3f,KAAK,CAAQ,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAS,CAAC,IAAI,KAAK,CAAC2f,eAAe,EAAE;EAE1E;EAEAa,iBAAiBA,CACf77B,QAA0B,EAC1Bq6B,IAAqB,EACV;IACX,MAAM/wC,IAAI,GAAG,KAAK,CAACuyC,iBAAiB,CAAC77B,QAAQ,EAAEq6B,IAAI,CAAC;IAEpD,IACE/wC,IAAI,CAACC,IAAI,KAAK,mBAAmB,IACjCD,IAAI,CAAC4mC,cAAc,IACnB5mC,IAAI,CAACopC,KAAK,CAACxrC,KAAK,GAAGoC,IAAI,CAAC4mC,cAAc,CAAChpC,KAAK,EAC5C;MACA,IAAI,CAAC2Z,KAAK,CAAC22C,QAAQ,CAACiD,yBAAyB,EAAEnxD,IAAI,CAAC4mC,cAAc,CAAC;IACrE;IAEA,OAAO5mC,IAAI;EACb;EAGA+1B,gBAAgBA,CAAC53B,IAAY,EAAQ;IACnC,IAAI,IAAI,CAACia,KAAK,CAACiX,MAAM,EAAE;MACrB,IAAIlxB,IAAI,OAA0B,EAAE;QAClC,IAAI,CAAC04B,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;QACvB;MACF;MACA,IAAI14B,IAAI,OAAuB,EAAE;QAC/B,IAAI,CAAC04B,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;QACvB;MACF;IACF;IACA,KAAK,CAACd,gBAAgB,CAAC53B,IAAI,CAAC;EAC9B;EAGAosC,YAAYA,CAAAA,EAAG;IACb,MAAM;MAAEtqC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,OAAU,EAAE;MAClB,IAAI,CAACmY,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACspB,YAAY,CAAA,CAAE;IACrB,CAAC,MAAM,IAAI13B,IAAI,KAAA,EAAU,EAAE;MACzB,IAAI,CAACmY,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACupB,YAAY,CAAA,CAAE;IACrB;EACF;EAEAyS,SAASA,CAAAA,EAAG;IACV,MAAM;MAAEpqC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,OAAiB,EAAE;MACzB,IAAI,CAACmY,KAAK,CAAC/J,GAAG,IAAI,CAAC;MACnB,IAAI,CAACwoB,QAAQ,CAAQ,EAAA,EAAA,CAAC,CAAC;MACvB,OAAA,EAAA;IACF;IACA,OAAO52B,IAAI;EACb;EAEAsvC,gBAAgBA,CACdyB,QAAsB,EACtBxB,gBAA6C,EAC7Ct4B,KAAc,EACR;IACN,KAAK,IAAI4P,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkqB,QAAQ,CAACx4B,MAAM,EAAEsO,CAAC,EAAE,EAAE;MACxC,MAAMqnB,IAAI,GAAG6C,QAAQ,CAAClqB,CAAC,CAAC;MACxB,IAAI,CAAAqnB,IAAI,IAAJA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAI,CAAEluC,IAAI,MAAK,sBAAsB,EAAE;QACzC+wC,QAAQ,CAAClqB,CAAC,CAAC,GAAG,IAAI,CAAC8mB,mBAAmB,CAACO,IAAI,CAAC;MAC9C;IACF;IACA,KAAK,CAACoB,gBAAgB,CAACyB,QAAQ,EAAExB,gBAAgB,EAAEt4B,KAAK,CAAC;EAC3D;EAEA02B,mBAAmBA,CAAC5tC,IAA4B,EAAgB;IAC7DA,IAAI,CAACmT,UAAU,CAAkByzB,cAAc,GAAG5mC,IAAI,CAAC4mC,cAAc;IAEtE,IAAI,CAACntB,gBAAgB,CAACzZ,IAAI,CAACmT,UAAU,EAAEnT,IAAI,CAAC4mC,cAAc,CAAC34B,GAAG,CAACpQ,GAAG,CAAC;IAEnE,OAAOmC,IAAI,CAACmT,UAAU;EACxB;EAEA2hC,gBAAgBA,CAAC/gC,MAAqB,EAAE;IACtC,IAAI,IAAI,CAACge,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,OAAOhe,MAAM,CAACs7B,KAAK,CAAClB,IAAI,IAAI,IAAI,CAACp3B,YAAY,CAACo3B,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D;IACA,OAAO,KAAK,CAAC2G,gBAAgB,CAAC/gC,MAAM,CAAC;EACvC;EAEAkgC,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO,IAAI,CAACliB,KAAK,CAAS,EAAA,CAAC,IAAI,KAAK,CAACkiB,qBAAqB,CAAA,CAAE;EAC9D;EAEAytB,uBAAuBA,CAAAA,EAAG;IAExB,OAAO,KAAK,CAACA,uBAAuB,CAAA,CAAE,IAAI,IAAI,CAAC7B,eAAe,CAAA,CAAE;EAClE;EAEAxnB,+BAA+BA,CAC7Br4C,IAAyB,EACJ;IAErB,IAAI,IAAI,CAAC+xB,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAa,EAAA,CAAC,EAAE;MACjD,MAAM2jB,aAAa,GAAG,IAAI,CAACqnB,kBAAkB,CAAC,MAC5C,IAAI,CAACgB,gCAAgC,CAAA,CACvC,CAAC;MACD,IAAIroB,aAAa,EAAE;QAGV;UACL11C,IAAI,CAAC4V,cAAc,GAAG8/B,aAAa;QACrC;MACF;IACF;IACA,OAAO,KAAK,CAAC2C,+BAA+B,CAACr4C,IAAI,CAAC;EACpD;EAEA2hE,iCAAiCA,CAC/B7tD,MAAsC,EAC9B;IACR,MAAM8tD,SAAS,GAAG,KAAK,CAACD,iCAAiC,CAAC7tD,MAAM,CAAC;IACjE,MAAMC,MAAM,GAAG,IAAI,CAACF,4BAA4B,CAACC,MAAM,CAAC;IACxD,MAAM+tD,UAAU,GAAG9tD,MAAM,CAAC,CAAC,CAAC;IAC5B,MAAM+tD,eAAe,GAAGD,UAAU,IAAI,IAAI,CAAC/vB,WAAW,CAAC+vB,UAAU,CAAC;IAElE,OAAOC,eAAe,GAAGF,SAAS,GAAG,CAAC,GAAGA,SAAS;EACpD;EAEAG,qBAAqBA,CAAAA,EAAc;IACjC,MAAMv0B,KAAK,GAAG,KAAK,CAACu0B,qBAAqB,EAAE;IAC3C,MAAM9hE,IAAI,GAAG,IAAI,CAAC02D,wBAAwB,EAAE;IAE5C,IAAI12D,IAAI,EAAE;MACRutC,KAAK,CAAC5G,cAAc,GAAG3mC,IAAI;MAC3B,IAAI,CAACwZ,gBAAgB,CAAC+zB,KAAK,CAAC;IAC9B;IAEA,OAAOA,KAAK;EACd;EAEA2vB,kBAAkBA,CAAIjzB,EAAW,EAAK;IACpC,MAAM;MAAE1a,gBAAgB,EAAEwyC,mBAAmB;MAAE56C,MAAM,EAAE66C;KAAW,GAChE,IAAI,CAAC7pD,KAAK;IACZ,IAAI,CAACA,KAAK,CAACoX,gBAAgB,GAAG,IAAI;IAClC,IAAI,CAACpX,KAAK,CAACgP,MAAM,GAAG,KAAK;IACzB,IAAI;MACF,OAAO8iB,EAAE,CAAA,CAAE;IACb,CAAC,SAAS;MACR,IAAI,CAAC9xB,KAAK,CAACoX,gBAAgB,GAAGwyC,mBAAmB;MACjD,IAAI,CAAC5pD,KAAK,CAACgP,MAAM,GAAG66C,SAAS;IAC/B;EACF;EAEA5E,UAAUA,CACRr9D,IAAe,EACfswC,WAAoB,EACpBC,UAAoB,EACjB;IACH,MAAM2xB,kBAAkB,GAAG,IAAI,CAAC9pD,KAAK,CAACqX,eAAe;IACrD,IAAI,CAACrX,KAAK,CAACqX,eAAe,GAAG,CAAC,CAAEzvB,IAAI,CAAS04D,QAAQ;IACrD,IAAI;MACF,OAAO,KAAK,CAAC2E,UAAU,CAACr9D,IAAI,EAAEswC,WAAW,EAAEC,UAAU,CAAC;IACxD,CAAC,SAAS;MACR,IAAI,CAACn4B,KAAK,CAACqX,eAAe,GAAGyyC,kBAAkB;IACjD;EACF;EAEAtE,0BAA0BA,CACxB59D,IAAS,EACTkY,UAAgC,EACkC;IAClE,IAAI,IAAI,CAAC6Z,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB/xB,IAAI,CAAC04D,QAAQ,GAAG,IAAI;MACpB,OAAO,IAAI,CAACyJ,mBAAmB,CAC7BjqD,UAAU,EACV,IAAI,CAACmlD,UAAU,CACbr9D,IAAI,EACc,IAAI,EACL,KACnB,CACF,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAAC+8B,YAAY,CAAA,GAAc,CAAC,EAAE;MAM3C,IAAI,CAAC,IAAI,CAACU,qBAAqB,EAAE,EAAE;QACjCz9B,IAAI,CAAC04D,QAAQ,GAAG,IAAI;QACpB,IAAI,CAACnhD,KAAK,CAAC22C,QAAQ,CAACqC,wCAAwC,EAAEvwD,IAAI,CAAC;QACnE,OAAO,IAAI,CAACw7D,2BAA2B,CACrCx7D,IACF,CAAC;MACH;IACF,CAAC,MAAM;MACL,IAAI,CAACkF,UAAU,CAAC,IAAI,IAAW,CAAC;IAClC;EACF;EAEAmQ,WAAWA,CAGTrV,IAAe,EACfsV,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBC,gBAAyB,EACzBvV,IAAe,EACfwV,YAAsB,EACtB;IACA,MAAM3B,MAAM,GAAG,KAAK,CAACuB,WAAW,CAC9BrV,IAAI,EACJsV,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACbC,gBAAgB,EAChBvV,IAAI,EACJwV,YACF,CAAC;IAED,IAAI3B,MAAM,CAAC4kD,QAAQ,EAAE;MACnB,MAAM0J,eAAe,GAAG,IAAI,CAACn3C,SAAS,CAAC,QAAQ,CAAC;MAChD,MAAMo3C,QAAQ,GAAGD,eAAe,GAE5BtuD,MAAM,CAAC9G,KAAK,GACZ8G,MAAM;MACV,IAAIuuD,QAAQ,CAAC3tD,IAAI,EAAE;QACjB,MAAM;UAAE7N;QAAK,CAAA,GAAGiN,MAAM;QACtB,IAAI,CAACyD,KAAK,CAAC22C,QAAQ,CAACC,+BAA+B,EAAEr6C,MAAM,EAAE;UAC3Ds6C,UAAU,EACRvnD,GAAG,CAAC5G,IAAI,KAAK,YAAY,IAAI,CAAC6T,MAAM,CAAC+B,QAAQ,GACzChP,GAAG,CAACV,IAAI,GACR,IAAI,IAAI,CAACinB,KAAK,CAAC6C,KAAK,CAAC,IAAI,CAAClF,iBAAiB,CAAClkB,GAAG,CAACjJ,KAAK,CAAC,EAAE,IAAI,CAACmtB,iBAAiB,CAAClkB,GAAG,CAAChJ,GAAG,CAAC,CAAC;QAChG,CAAC,CAAC;MACJ;IACF;IACA,OAAOiW,MAAM;EACf;EAEA0hD,wBAAwBA,CAAAA,EAA0B;IAChD,MAAMX,QAAsB,GAAG,IAAI,CAACzuB,eAAe,EAAE;IACrD,OAAiDyuB,QAAQ,CAAC1uD,IAAI;EAChE;EAEAm8D,2BAA2BA,CAAAA,EAAY;IACrC,OAAO,CAAC,CAAC,IAAI,CAACztD,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC;EACpD;EAEAnD,KAAKA,CAAAA,EAAG;IACN,IAAI,IAAI,CAAC4wD,2BAA2B,EAAE,EAAE;MACtC,IAAI,CAAClqD,KAAK,CAACoX,gBAAgB,GAAG,IAAI;IACpC;IACA,OAAO,KAAK,CAAC9d,KAAK,EAAE;EACtB;EAEA6wD,aAAaA,CAAAA,EAAG;IACd,IAAI,IAAI,CAACD,2BAA2B,EAAE,EAAE;MACtC,IAAI,CAAClqD,KAAK,CAACoX,gBAAgB,GAAG,IAAI;IACpC;IACA,OAAO,KAAK,CAAC+yC,aAAa,EAAE;EAC9B;EAEAC,oBAAoBA,CAClBxiE,IAA+B,EAC/ByiE,QAAiB,EACjBC,cAAuB,EACvBtvB,eAAwB,EACxB;IACA,IAAI,CAACqvB,QAAQ,IAAIrvB,eAAe,EAAE;MAChC,IAAI,CAACuvB,kCAAkC,CACrC3iE,IAAI,EACW,KAAK,EACpB0iE,cACF,CAAC;MACD,OAAO,IAAI,CAAC5sD,UAAU,CAAoB9V,IAAI,EAAE,iBAAiB,CAAC;IACpE;IACAA,IAAI,CAAC6nC,UAAU,GAAG,OAAO;IACzB,OAAO,KAAK,CAAC26B,oBAAoB,CAC/BxiE,IAAI,EACJyiE,QAAQ,EACRC,cAAc,EACdtvB,eACF,CAAC;EACH;EAEAH,oBAAoBA,CAClBN,SAAoC,EACpCO,gBAAyB,EACzBC,kBAA2B,EAC3BC,eAAwB,EAExBrpB,WAAoC,EACjB;IACnB,IAAI,CAACmpB,gBAAgB,IAAIE,eAAe,EAAE;MACxC,IAAI,CAACuvB,kCAAkC,CACrChwB,SAAS,EACM,IAAI,EACnBQ,kBACF,CAAC;MACD,OAAO,IAAI,CAACr9B,UAAU,CAAoB68B,SAAS,EAAE,iBAAiB,CAAC;IACzE;IACAA,SAAS,CAAClO,UAAU,GAAG,OAAO;IAC9B,OAAO,KAAK,CAACwO,oBAAoB,CAC/BN,SAAS,EACTO,gBAAgB,EAChBC,kBAAkB,EAClBC,eAAe,EACfD,kBAAkB,cAGpB,CAAC;EACH;EAEAwvB,kCAAkCA,CAChC3iE,IAAS,EACT4iE,QAAiB,EACjBC,wBAAiC,EAC3B;IACN,MAAMC,WAAW,GAAGF,QAAQ,GAAG,UAAU,GAAG,OAAO;IACnD,MAAMG,YAAY,GAAGH,QAAQ,GAAG,OAAO,GAAG,UAAU;IAEpD,IAAII,QAAQ,GAAGhjE,IAAI,CAAC8iE,WAAW,CAAC;IAChC,IAAIG,SAAS;IAEb,IAAIC,gBAAgB,GAAG,KAAK;IAC5B,IAAIC,iBAAiB,GAAG,IAAI;IAE5B,MAAMl1D,GAAG,GAAG+0D,QAAQ,CAAC/0D,GAAG,CAACrQ,KAAK;IAO9B,IAAI,IAAI,CAACm/B,YAAY,CAAA,EAAO,CAAC,EAAE;MAE7B,MAAMqmC,OAAO,GAAG,IAAI,CAACh9B,eAAe,EAAE;MACtC,IAAI,IAAI,CAACrJ,YAAY,CAAA,EAAO,CAAC,EAAE;QAE7B,MAAMsmC,QAAQ,GAAG,IAAI,CAACj9B,eAAe,EAAE;QACvC,IAAIlhB,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC,EAAE;UAE/CijE,gBAAgB,GAAG,IAAI;UACvBF,QAAQ,GAAGI,OAAO;UAClBH,SAAS,GAAGL,QAAQ,GAChB,IAAI,CAACx8B,eAAe,CAAA,CAAE,GACtB,IAAI,CAACk9B,qBAAqB,EAAE;UAChCH,iBAAiB,GAAG,KAAK;QAC3B,CAAC,MAAM;UAELF,SAAS,GAAGI,QAAQ;UACpBF,iBAAiB,GAAG,KAAK;QAC3B;MACD,CAAA,MAAM,IAAIj+C,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC,EAAE;QAEtDkjE,iBAAiB,GAAG,KAAK;QACzBF,SAAS,GAAGL,QAAQ,GAChB,IAAI,CAACx8B,eAAe,CAAA,CAAE,GACtB,IAAI,CAACk9B,qBAAqB,EAAE;MAClC,CAAC,MAAM;QAELJ,gBAAgB,GAAG,IAAI;QACvBF,QAAQ,GAAGI,OAAO;MACpB;IACD,CAAA,MAAM,IAAIl+C,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC,EAAE;MAEtDijE,gBAAgB,GAAG,IAAI;MACvB,IAAIN,QAAQ,EAAE;QACZI,QAAQ,GAAG,IAAI,CAAC58B,eAAe,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,IAAI,CAACrJ,YAAY,CAAA,EAAO,CAAC,EAAE;UAC9B,IAAI,CAAC2W,iBAAiB,CACpBsvB,QAAQ,CAAC78D,IAAI,EACb68D,QAAQ,CAAC/0D,GAAG,CAACrQ,KAAK,EAClB,IAAI,EACJ,IACF,CAAC;QACH;MACF,CAAC,MAAM;QACLolE,QAAQ,GAAG,IAAI,CAACM,qBAAqB,EAAE;MACzC;IACF;IACA,IAAIJ,gBAAgB,IAAIL,wBAAwB,EAAE;MAChD,IAAI,CAACtrD,KAAK,CACRqrD,QAAQ,GACJ1U,QAAQ,CAACoD,+BAA+B,GACxCpD,QAAQ,CAACmD,+BAA+B,EAC5CpjD,GACF,CAAC;IACH;IAEAjO,IAAI,CAAC8iE,WAAW,CAAC,GAAGE,QAAQ;IAC5BhjE,IAAI,CAAC+iE,YAAY,CAAC,GAAGE,SAAS;IAE9B,MAAMM,OAAO,GAAGX,QAAQ,GAAG,YAAY,GAAG,YAAY;IACtD5iE,IAAI,CAACujE,OAAO,CAAC,GAAGL,gBAAgB,GAAG,MAAM,GAAG,OAAO;IAEnD,IAAIC,iBAAiB,IAAI,IAAI,CAAC9lC,aAAa,CAAA,EAAO,CAAC,EAAE;MACnDr9B,IAAI,CAAC+iE,YAAY,CAAC,GAAGH,QAAQ,GACzB,IAAI,CAACx8B,eAAe,EAAE,GACtB,IAAI,CAACk9B,qBAAqB,EAAE;IAClC;IACA,IAAI,CAACtjE,IAAI,CAAC+iE,YAAY,CAAC,EAAE;MACvB/iE,IAAI,CAAC+iE,YAAY,CAAC,GAAG3iC,eAAe,CAACpgC,IAAI,CAAC8iE,WAAW,CAAC,CAAC;IACzD;IACA,IAAIF,QAAQ,EAAE;MACZ,IAAI,CAACtV,eAAe,CAClBttD,IAAI,CAAC+iE,YAAY,CAAC,EAClBG,gBAAgB,cAGlB,CAAC;IACH;EACF;AACF,CAAC;AAEH,SAASM,qBAAqBA,CAACrwD,UAAwB,EAAW;EAChE,IAAIA,UAAU,CAAClT,IAAI,KAAK,kBAAkB,EAAE,OAAO,KAAK;EAExD,MAAM;IAAE4V,QAAQ;IAAEgpB;EAAU,CAAA,GAAG1rB,UAAU;EAEzC,IACE0C,QAAQ,IACRgpB,QAAQ,CAAC5+B,IAAI,KAAK,eAAe,KAChC4+B,QAAQ,CAAC5+B,IAAI,KAAK,iBAAiB,IAAI4+B,QAAQ,CAAC4kC,WAAW,CAACjrD,MAAM,GAAG,CAAC,CAAC,EACxE;IACA,OAAO,KAAK;EACd;EAEA,OAAOkrD,iCAAiC,CAACvwD,UAAU,CAAC9B,MAAM,CAAC;AAC7D;AAQA,SAAS4uD,8BAA8BA,CACrC9sD,UAAwB,EACxB5B,MAAe,EACN;EAAA,IAAA87C,iBAAA;EACT,MAAM;IAAEptD;EAAM,CAAA,GAAGkT,UAAU;EAC3B,IAAAk6C,CAAAA,iBAAA,GAAIl6C,UAAU,CAACE,KAAK,KAAhBg6C,IAAAA,IAAAA,iBAAA,CAAkBn5C,aAAa,EAAE;IACnC,OAAO,KAAK;EACd;EACA,IAAI3C,MAAM,EAAE;IACV,IAAItR,IAAI,KAAK,SAAS,EAAE;MACtB,MAAM;QAAE+M;MAAO,CAAA,GAAGmG,UAAU;MAC5B,IAAI,OAAOnG,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;QAC3D,OAAO,IAAI;MACb;IACF;EACF,CAAC,MAAM;IACL,IAAI/M,IAAI,KAAK,eAAe,IAAIA,IAAI,KAAK,gBAAgB,EAAE;MACzD,OAAO,IAAI;IACb;EACF;EACA,IAAI0jE,QAAQ,CAACxwD,UAAU,EAAE5B,MAAM,CAAC,IAAIqyD,gBAAgB,CAACzwD,UAAU,EAAE5B,MAAM,CAAC,EAAE;IACxE,OAAO,IAAI;EACb;EACA,IAAItR,IAAI,KAAK,iBAAiB,IAAIkT,UAAU,CAACswD,WAAW,CAACjrD,MAAM,KAAK,CAAC,EAAE;IACrE,OAAO,IAAI;EACb;EACA,IAAIgrD,qBAAqB,CAACrwD,UAAU,CAAC,EAAE;IACrC,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEA,SAASwwD,QAAQA,CAACxwD,UAAwB,EAAE5B,MAAe,EAAW;EACpE,IAAIA,MAAM,EAAE;IACV,OACE4B,UAAU,CAAClT,IAAI,KAAK,SAAS,KAC5B,OAAOkT,UAAU,CAACnG,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAImG,UAAU,CAAC;EAEpE;EACA,OACEA,UAAU,CAAClT,IAAI,KAAK,gBAAgB,IAAIkT,UAAU,CAAClT,IAAI,KAAK,eAAe;AAE/E;AAEA,SAAS2jE,gBAAgBA,CAACzwD,UAAwB,EAAE5B,MAAe,EAAW;EAC5E,IAAI4B,UAAU,CAAClT,IAAI,KAAK,iBAAiB,EAAE;IACzC,MAAM;MAAE4rD,QAAQ;MAAE/8C;IAAU,CAAA,GAAGqE,UAAU;IACzC,IAAI04C,QAAQ,KAAK,GAAG,IAAI8X,QAAQ,CAAC70D,QAAQ,EAAEyC,MAAM,CAAC,EAAE;MAClD,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd;AAEA,SAASmyD,iCAAiCA,CAACvwD,UAAwB,EAAW;EAC5E,IAAIA,UAAU,CAAClT,IAAI,KAAK,YAAY,EAAE,OAAO,IAAI;EACjD,IAAIkT,UAAU,CAAClT,IAAI,KAAK,kBAAkB,IAAIkT,UAAU,CAAC0C,QAAQ,EAAE;IACjE,OAAO,KAAK;EACd;EAEA,OAAO6tD,iCAAiC,CAACvwD,UAAU,CAAC9B,MAAM,CAAC;AAC7D;ACruIA,MAAMwyD,iBAAiB,GAAGh1D,cAAc,cAAc,CAAC;EACrDi1D,mBAAmB,EAAE,2BAA2B;EAChDC,eAAe,EAAE;AACnB,CAAC,CAAC;AAEF,IAAAC,YAAA,GAAgBxyD,UAAyB,IACvC,MAAMyyD,uBAAuB,SAASzyD,UAAU,CAAmB;EACjE0yD,gBAAgBA,CACd3jC,YAAe,EACwC;IACvD,IAAI,IAAI,CAACxO,KAAK,CAAA,GAAe,CAAC,EAAE;MAC9B,MAAM/xB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;MAC/C,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,IAAI,CAACi8C,aAAa,CAAA,CAAE;MAIpBnkE,IAAI,CAACmG,IAAI,GAAG,KAAK,CAACigC,eAAe,CAAe,IAAI,CAAC;MAErD,IAAI,CAAC+9B,aAAa,CAAA,CAAE;MACpB,IAAI,CAACtmC,MAAM,CAAA,GAAe,CAAC;MAC3B,OAAO,IAAI,CAACumC,iBAAiB,CAACpkE,IAAI,EAAEugC,YAAY,CAAC;IACnD;EACF;EAEA6jC,iBAAiBA,CACfpkE,IAA8D,EAC9DugC,YAAe,EAC2B;IAC1C,IAAIjc,WAAW,GAAGtkB,IAAmC;IAErD,IAAI,CAACskB,WAAW,CAACic,YAAY,IAAI,CAACjc,WAAW,CAACrkB,IAAI,EAAE;MAClDqkB,WAAW,GAAG,IAAI,CAACxO,UAAU,CAC3BwO,WAAW,EACX,aACF,CAAgC;IAClC;IAEAA,WAAW,CAACic,YAAY,GAAGA,YAAY;IACvC,OAAOjc,WAAW;EACpB;EAMAyR,gBAAgBA,CAAC53B,IAAY,EAAE;IAC7B,IACEA,IAAI,KAA0B,EAAA,IAC9B,IAAI,CAACivB,KAAK,CAACC,UAAU,CAAC,IAAI,CAACjV,KAAK,CAAC/J,GAAG,GAAG,CAAC,CAAC,OAA0B,EACnE;MACA,IAAI,CAACwoB,QAAQ,CAAiB,GAAA,EAAA,CAAC,CAAC;IAClC,CAAC,MAAM;MACL,KAAK,CAACd,gBAAgB,CAAC53B,IAAI,CAAC;IAC9B;EACF;EAMAopC,aAAaA,CACX5wB,mBAA6C,EACb;IAChC,OACE,IAAI,CAACutD,gBAAgB,CAAC,YAAY,CAAC,IACnC,KAAK,CAAC38B,aAAa,CAAC5wB,mBAAmB,CAAC;EAE5C;EAEAyvB,eAAeA,CAAC+C,OAAiB,EAAkC;IAKjE,OACE,IAAI,CAAC+6B,gBAAgB,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC99B,eAAe,CAAC+C,OAAO,CAAC;EAEzE;EAEAuK,iBAAiBA,CACfjsB,IAAY,EACZ/Q,QAAkB,EAClB6oD,aAAsB,EACtBvoD,SAAkB,EAClB;IAIA,IAAIyQ,IAAI,KAAK5X,SAAS,EAAE;MACtB,KAAK,CAAC6jC,iBAAiB,CAACjsB,IAAI,EAAE/Q,QAAQ,EAAE6oD,aAAa,EAAEvoD,SAAS,CAAC;IACnE;EACF;EAMA28B,gBAAgBA,CAAAA,EAAgC;IAC9C,OAAO,IAAI,CAACuwB,gBAAgB,CAAC,SAAS,CAAC,IAAI,KAAK,CAACvwB,gBAAgB,CAAA,CAAE;EACrE;EAEA/8B,WAAWA,CAAC3W,IAAY,EAAEuxC,eAAwB,EAAE16B,OAAoB,EAAE;IACxE,OACE7W,IAAI,KAAK,aAAa,IACtB,KAAK,CAAC2W,WAAW,CAAC3W,IAAI,EAAEuxC,eAAe,EAAE16B,OAAO,CAAC;EAErD;EAEAG,YAAYA,CAACjX,IAAY,EAAEkX,KAAc,EAAQ;IAC/C,IACElX,IAAI,IACJA,IAAI,CAACC,IAAI,KAAK,aAAa,IAC3BD,IAAI,CAACugC,YAAY,KAAK,YAAY,EAClC;MACAvgC,IAAI,CAACugC,YAAY,GAAG,SAAS;IAC/B,CAAC,MAAM;MACL,KAAK,CAACtpB,YAAY,CAACjX,IAAI,EAAEkX,KAAK,CAAC;IACjC;EACF;EAMAmtD,yBAAyBA,CAAC7zC,EAAU,EAAEniB,GAAW,EAAW;IAC1D,IAAI,KAAK,CAACg2D,yBAAyB,CAAC7zC,EAAE,EAAEniB,GAAG,CAAC,EAAE;MAC5C,OAAO,IAAI;IACb;IAIA,MAAMmmB,SAAS,GAAG,IAAI,CAACI,SAAS,EAAE;IAClC,IAAIJ,SAAS,CAACv0B,IAAI,KAAA,GAAmB,EAAE;MACrC,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEAqkE,mBAAmBA,CACjBtkE,IAA4C,EAC5CukE,OAAgB,EAChB;IAEA,IAAIvkE,IAAI,CAACwa,KAAK,IAAIxa,IAAI,CAACwa,KAAK,CAACva,IAAI,KAAK,aAAa,EAAE;IACrD,KAAK,CAACqkE,mBAAmB,CAACtkE,IAAI,EAAEukE,OAAO,CAAC;EAC1C;EAGAr2B,wBAAwBA,CACtBluC,IAAmC,EACnCmuC,IAAoC,EACL;IAAA,IAAAgD,WAAA;IAE/B,IAAIhD,IAAI,CAACluC,IAAI,KAAK,aAAa,IAAAkxC,CAAAA,WAAA,GAAIhD,IAAI,CAAC96B,KAAK,KAAA,IAAA,IAAV89B,WAAA,CAAYj9B,aAAa,EAAE;MAE5D,OAAO,KAAK,CAACg6B,wBAAwB,CAACluC,IAAI,EAAEmuC,IAAI,CAAC;IACnD;IAEA,IAAI,IAAI,CAACpc,KAAK,CAAA,EAAS,CAAC,EAAE;MAExB,MAAMxe,IAAwB,GAAGvT,IAAI;MACrCuT,IAAI,CAACiH,KAAK,GAAG,IAAI,CAAC4pD,iBAAiB,CAACj2B,IAAI,EAAE,YAAY,CAAC;MACvD,IAAI,CAACjmB,IAAI,CAAA,CAAE;MACX3U,IAAI,CAACmB,IAAI,GAAG,KAAK,CAAC8vD,+CAA+C,EAAE;MACnE,OAAO,IAAI,CAAC1uD,UAAU,CAACvC,IAAI,EAAE,kBAAkB,CAAC;IAClD;IAEA,IAAI,CAACoqB,SAAS,CAAA,CAAE;IAChB,MAAM8mC,eAAe,GAAGzkE,IAA6C;IACrEykE,eAAe,CAACt+D,IAAI,GAAIgoC,IAAI,CAAmBhoC,IAAI;IACnD,OAAO,IAAI,CAACi+D,iBAAiB,CAACK,eAAe,EAAE,WAAW,CAAC;EAC7D;EAEAC,UAAUA,CACRtwD,eAAyB,EACzBuwD,qBAA+B,EAC/BrwD,eAA2D,EACvB;IACpC,OACE,IAAI,CAAC4vD,gBAAgB,CAAC,gBAAgB,CAAC,IACvC,KAAK,CAACQ,UAAU,CACdtwD,eAAe,EACfuwD,qBAAqB,EACrBrwD,eACF,CAAC;EAEL;EAEAswD,eAAeA,CACbC,SAAmB,EACgC;IACnD,OACE,IAAI,CAACX,gBAAgB,CAAC,YAAY,CAAC,IAAI,KAAK,CAACU,eAAe,CAACC,SAAS,CAAC;EAE3E;EAEAxH,UAAUA,CACRr9D,IAAO,EACPswC,WAAiD,EACjDC,UAAoB,EACjB;IACH,MAAMtwC,IAAI,GAAGqwC,WAAW,GAAG,kBAAkB,GAAG,iBAAiB;IAEjE,IAAI,CAACpoB,IAAI,CAAA,CAAE;IACX,MAAM+5C,SAAS,GAAG,IAAI,CAAC7pD,KAAK,CAACgP,MAAM;IAEnC,MAAM9C,WAAW,GAAG,IAAI,CAAC4/C,gBAAgB,CAAC,YAAY,CAAC;IACvD,IAAI5/C,WAAW,EAAE;MACf,IACE,IAAI,CAACyN,KAAK,CAAY,EAAA,CAAC,IACvB,IAAI,CAACA,KAAK,CAAA,GAAe,CAAC,IAC1B,IAAI,CAACA,KAAK,CAAA,CAAU,CAAC,EACrB;QACA/xB,IAAI,CAACgV,EAAE,GAAGsP,WAAW;MACvB,CAAC,MAAM,IAAIisB,UAAU,IAAI,CAACD,WAAW,EAAE;QACrCtwC,IAAI,CAACgV,EAAE,GAAG,IAAI;QACdhV,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAAC0vD,iBAAiB,CAAC9/C,WAAW,EAAE,WAAW,CAAC;QAC5D,OAAO,IAAI,CAACxO,UAAU,CAAC9V,IAAI,EAAEC,IAAI,CAAC;MACpC,CAAC,MAAM;QACL,MAAM,IAAI,CAACsX,KAAK,CACdssD,iBAAiB,CAACC,mBAAmB,EACrC,IAAI,CAAC1rD,KAAK,CAAC1B,QACb,CAAC;MACH;IACF,CAAC,MAAM;MACL,IAAI,CAAC25B,YAAY,CAACrwC,IAAI,EAAEswC,WAAW,EAAEC,UAAU,CAAC;IAClD;IAEA,KAAK,CAACyB,eAAe,CAAChyC,IAAI,CAAC;IAC3BA,IAAI,CAAC0U,IAAI,GACP,IAAI,CAACwvD,gBAAgB,CAAC,WAAW,CAAC,IAClC,KAAK,CAACY,cAAc,CAAC,CAAC,CAAC9kE,IAAI,CAACwR,UAAU,EAAEywD,SAAS,CAAC;IACpD,OAAO,IAAI,CAACnsD,UAAU,CAAC9V,IAAI,EAAEC,IAAI,CAAC;EACpC;EAEAgY,WAAWA,CACTjY,IAIC,EACDkY,UAAgC,EACnB;IACb,MAAMoM,WAAW,GAAG,IAAI,CAAC4/C,gBAAgB,CAAC,YAAY,CAAC;IACvD,IAAI,CAAC5/C,WAAW,EAAE,OAAO,KAAK,CAACrM,WAAW,CAACjY,IAAI,EAAEkY,UAAU,CAAC;IAE5D,MAAMk0B,KAAK,GAAGpsC,IAAwC;IAEtD,IAAI,CAAC,IAAI,CAAC+8B,YAAY,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAAChL,KAAK,CAAA,EAAS,CAAC,EAAE;MAEzDqa,KAAK,CAAC7zB,UAAU,GAAG,EAAE;MACrB6zB,KAAK,CAACv0B,MAAM,GAAG,IAAI;MACnBu0B,KAAK,CAAC1zB,WAAW,GAAG,IAAI,CAAC0rD,iBAAiB,CAAC9/C,WAAW,EAAE,aAAa,CAAC;MACtE,OAAO,IAAI,CAACxO,UAAU,CAACs2B,KAAK,EAAE,wBAAwB,CAAC;IACzD;IAGA,IAAI,CAACzV,YAAY,CAAC,mBAAmB,CAAC;IACtC,MAAMgc,SAAS,GAAG,IAAI,CAACh9B,SAAS,EAA4B;IAC5Dg9B,SAAS,CAACr6B,QAAQ,GAAGgM,WAAW;IAChC8nB,KAAK,CAAC7zB,UAAU,GAAG,CAAC,IAAI,CAACzC,UAAU,CAAC68B,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAEzE,OAAO,KAAK,CAAC16B,WAAW,CAACm0B,KAAK,EAAEl0B,UAAU,CAAC;EAC7C;EAEAm2B,wBAAwBA,CAAAA,EAAY;IAClC,IAAI,IAAI,CAACtc,KAAK,CAAA,EAAY,CAAC,EAAE;MAC3B,MAAM7J,IAAI,GAAG,IAAI,CAAC6M,cAAc,EAAE;MAClC,IAAI,IAAI,CAACiI,oBAAoB,CAAC9U,IAAI,EAAE,MAAM,CAAC,EAAE;QAC3C,IACE,IAAI,CAACkF,KAAK,CAAC23C,UAAU,CACnBh/C,cAAc,CAAe,GAAA,CAAC,EAC9B,IAAI,CAACiP,mBAAmB,CAAC9M,IAAI,GAAG,CAAC,CACnC,CAAC,EACD;UACA,OAAO,IAAI;QACb;MACF;IACF;IACA,OAAO,KAAK,CAACmmB,wBAAwB,EAAE;EACzC;EAEA22B,gCAAgCA,CAC9BhlE,IAIC,EACDy8D,sBAA2C,EACD;IAAA,IAAAwI,WAAA;IAC1C,IAAAA,CAAAA,WAAA,GAAKjlE,IAAI,CAA8BuY,UAAU,KAA7C0sD,IAAAA,IAAAA,WAAA,CAA+CzsD,MAAM,EAAE;MAEzD,OAAO,IAAI;IACb;IACA,OAAO,KAAK,CAACwsD,gCAAgC,CAC3ChlE,IAAI,EACJy8D,sBACF,CAAC;EACH;EAEAyI,WAAWA,CAACllE,IAA8B,EAAQ;IAChD,MAAM;MAAEuY;IAAY,CAAA,GAAGvY,IAAI;IAC3B,IAAIuY,UAAU,IAAA,IAAA,IAAVA,UAAU,CAAEC,MAAM,EAAE;MACtBxY,IAAI,CAACuY,UAAU,GAAGA,UAAU,CAAC4sD,MAAM,CAEjCnlE,IAAI,IAAIA,IAAI,CAACsY,QAAQ,CAACrY,IAAI,KAAK,aACjC,CAAC;IACH;IACA,KAAK,CAACilE,WAAW,CAACllE,IAAI,CAAC;IACvBA,IAAI,CAACuY,UAAU,GAAGA,UAAU;EAC9B;EAEAkvB,WAAWA,CACTznC,IAAiC,EACkB;IACnD,MAAMskB,WAAW,GAAG,IAAI,CAAC4/C,gBAAgB,CAAC,YAAY,CAAC;IACvD,IAAI,CAAC5/C,WAAW,EAAE,OAAO,KAAK,CAACmjB,WAAW,CAACznC,IAAI,CAAC;IAEhDA,IAAI,CAACuY,UAAU,GAAG,EAAE;IAEpB,IAAI,CAAC,IAAI,CAACwkB,YAAY,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAAChL,KAAK,CAAA,EAAS,CAAC,EAAE;MAEzD/xB,IAAI,CAAC6X,MAAM,GAAG,IAAI,CAACusD,iBAAiB,CAAC9/C,WAAW,EAAE,eAAe,CAAC;MAClE,IAAI,CAACqZ,SAAS,CAAA,CAAE;MAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;IACnD;IAGA,MAAM2yC,SAAS,GACb,IAAI,CAACx5B,eAAe,CAA2BmL,WAAW,CAAC;IAC7DquB,SAAS,CAACC,KAAK,GAAGtuB,WAAW;IAC7BtkB,IAAI,CAACuY,UAAU,CAACsD,IAAI,CAClB,IAAI,CAAC/F,UAAU,CAAC68B,SAAS,EAAE,wBAAwB,CACrD,CAAC;IAED,IAAI,IAAI,CAACle,GAAG,CAAA,EAAS,CAAC,EAAE;MAEtB,MAAM2wC,aAAa,GAAG,IAAI,CAACC,6BAA6B,CAACrlE,IAAI,CAAC;MAG9D,IAAI,CAAColE,aAAa,EAAE,IAAI,CAACE,0BAA0B,CAACtlE,IAAI,CAAC;IAC3D;IAEA,IAAI,CAACs9B,gBAAgB,CAAA,EAAS,CAAC;IAC/Bt9B,IAAI,CAAC6X,MAAM,GAAG,IAAI,CAAC0tD,iBAAiB,EAAE;IACtC,IAAI,CAAC5nC,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAulE,iBAAiBA,CAAAA,EAAsC;IAGrD,OACE,IAAI,CAACrB,gBAAgB,CAAC,eAAe,CAAC,IAAI,KAAK,CAACqB,iBAAiB,CAAA,CAAE;EAEvE;EAGApB,aAAaA,CAAAA,EAAS;IACpB,IACE,IAAI,CAAC/rD,KAAK,CAACxa,KAAK,GAChB,IAAI,CAACmtB,iBAAiB,CAAC,IAAI,CAAC3S,KAAK,CAACsB,aAAa,CAACjc,KAAK,CAAC,EACtD;MACA,IAAI,CAAC8Z,KAAK,CAACssD,iBAAiB,CAACE,eAAe,EAAE,IAAI,CAAC3rD,KAAK,CAACsB,aAAa,CAAC;IACzE;EACF;AACF,CAAC;AC3YH,IAAA8rD,WAAA,GAAgBh0D,UAAyB,IACvC,MAAMi0D,gBAAgB,SAASj0D,UAAU,CAAmB;EAC1Dk0D,gBAAgBA,CAAAA,EAAiB;IAC/B,IAAI,IAAI,CAAC3zC,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,MAAM4zC,mBAAmB,GAAG,IAAI,CAACvtD,KAAK,CAAC1B,QAAQ;MAE/C,MAAM1W,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgB;MAC3C,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,IAAIlD,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;QACtC,MAAMkG,IAAI,GAAG,IAAI,CAACy/D,mBAAmB,EAAE;QACvC,MAAM/X,UAAU,GAAG,IAAI,CAAC5gB,gBAAgB,CAACjtC,IAAI,EAAEmG,IAAI,CAAC;QAEpD0nD,UAAU,CAAC5tD,IAAI,GAAG,uBAAuB;QACzC,IAAI,IAAI,CAAC8xB,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,OAAO87B,UAAU;QACnB;MACF;MACA,IAAI,CAAC3oD,UAAU,CAACygE,mBAAmB,CAAC;IACtC;EACF;EAMAp+B,aAAaA,CAAC5wB,mBAA6C,EAAgB;IACzE,OACE,IAAI,CAAC+uD,gBAAgB,CAAE,CAAA,IAAI,KAAK,CAACn+B,aAAa,CAAC5wB,mBAAmB,CAAC;EAEvE;AACF,CAAC;ACxBH,MAAMkvD,kBAAkB,GAEpB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AAC1C,MAAMC,YAAY,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAEzC,SAASC,eAAeA,CAACC,UAA4B,EAAE;EAC5D,IAAIA,UAAU,CAACp+C,GAAG,CAAC,YAAY,CAAC,EAAE;IAChC,IAAIo+C,UAAU,CAACp+C,GAAG,CAAC,mBAAmB,CAAC,EAAE;MACvC,MAAM,IAAIzW,KAAK,CACb,iEACF,CAAC;IACH;IAEA,MAAM80D,sBAAsB,GAC1BD,UAAU,CAACt3D,GAAG,CAAC,YAAY,CAAC,CAACu3D,sBAAsB;IACrD,IACEA,sBAAsB,IAAI,IAAI,IAC9B,OAAOA,sBAAsB,KAAK,SAAS,EAC3C;MACA,MAAM,IAAI90D,KAAK,CACb,2DACF,CAAC;IACH;IAEA,MAAM+0D,sBAAsB,GAC1BF,UAAU,CAACt3D,GAAG,CAAC,YAAY,CAAC,CAACw3D,sBAAsB;IACrD,IACEA,sBAAsB,IAAI,IAAI,IAC9B,OAAOA,sBAAsB,KAAK,SAAS,EAC3C;MACA,MAAM,IAAI/0D,KAAK,CAAC,6CAA6C,CAAC;IAChE;EACF;EAEA,IAAI60D,UAAU,CAACp+C,GAAG,CAAC,MAAM,CAAC,IAAIo+C,UAAU,CAACp+C,GAAG,CAAC,YAAY,CAAC,EAAE;IAC1D,MAAM,IAAIzW,KAAK,CAAC,6CAA6C,CAAC;EAChE;EAEA,IAAI60D,UAAU,CAACp+C,GAAG,CAAC,cAAc,CAAC,IAAIo+C,UAAU,CAACp+C,GAAG,CAAC,aAAa,CAAC,EAAE;IACnE,MAAM,IAAIzW,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,IAAI60D,UAAU,CAACp+C,GAAG,CAAC,kBAAkB,CAAC,EAAE;IAAA,IAAAu+C,eAAA;IACtC,MAAM9uC,QAAQ,GAAG2uC,UAAU,CAACt3D,GAAG,CAAC,kBAAkB,CAAC,CAAC2oB,QAAQ;IAE5D,IAAI,CAACwuC,kBAAkB,CAACptC,QAAQ,CAACpB,QAAQ,CAAC,EAAE;MAC1C,MAAM+uC,YAAY,GAAGP,kBAAkB,CAAC3/D,GAAG,CAACmgE,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAAC//D,IAAI,CAAC,IAAI,CAAC;MACrE,MAAM,IAAI6K,KAAK,CACb,6EAA6Ei1D,YAAY,GAC3F,CAAC;IACH;IAEA,MAAME,iBAAiB,GAEnB,CAAA,CAAAH,eAAA,GAAAH,UAAU,CAACt3D,GAAG,CAAC,gBAAgB,CAAC,KAAhCy3D,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAkCI,UAAU,MAAK,MAAM;IAE3D,IAAIlvC,QAAQ,KAAK,MAAM,EAAE;MACvB,IAAI2uC,UAAU,CAACp+C,GAAG,CAAC,cAAc,CAAC,EAAE;QAClC,MAAM,IAAIzW,KAAK,CACb,0DACF,CAAC;MACH;MAEA,IAAI60D,UAAU,CAACp+C,GAAG,CAAC,aAAa,CAAC,EAAE;QACjC,MAAM,IAAIzW,KAAK,CACb,yDACF,CAAC;MACH;MAEA,MAAMmmB,UAAU,GAAG0uC,UAAU,CAACt3D,GAAG,CAAC,kBAAkB,CAAC,CAAC4oB,UAAU;MAEhE,IAAI,CAACwuC,YAAY,CAACrtC,QAAQ,CAACnB,UAAU,CAAC,EAAE;QACtC,MAAMkvC,SAAS,GAAGV,YAAY,CAAC5/D,GAAG,CAACq0D,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAACj0D,IAAI,CAAC,IAAI,CAAC;QAE5D,MAAM,IAAI6K,KAAK,CACb,iHAAiHq1D,SAAS,GAC5H,CAAC;MACH;MAEA,IAAIlvC,UAAU,KAAK,GAAG,IAAIgvC,iBAAiB,EAAE;QAC3C,MAAM,IAAIn1D,KAAK,CACb,iGAAiG/K,IAAI,CAACC,SAAS,CAAC,CAAC,gBAAgB,EAAE2/D,UAAU,CAACt3D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KACvK,CAAC;MACH;IACF,CAAC,MAAM,IAAI2oB,QAAQ,KAAK,OAAO,IAAIivC,iBAAiB,EAAE;MACpD,MAAM,IAAIn1D,KAAK,CACb,iFAAiF/K,IAAI,CAACC,SAAS,CAAC,CAAC,gBAAgB,EAAE2/D,UAAU,CAACt3D,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KACvJ,CAAC;IACH;EACF;EAEA,IAAIs3D,UAAU,CAACp+C,GAAG,CAAC,kBAAkB,CAAC,EAAE;IAK/B;MACL,IACEo+C,UAAU,CAACp+C,GAAG,CAAC,wBAAwB,CAAC,IACxCo+C,UAAU,CAACp+C,GAAG,CAAC,kBAAkB,CAAC,EAClC;QACA,MAAM,IAAIzW,KAAK,CACb,uFACF,CAAC;MACH;MACA,MAAMs1D,mCAAmC,GACvCT,UAAU,CAACt3D,GAAG,CAAC,kBAAkB,CAAC,CAACg4D,OAAO;MAC5C,IAAID,mCAAmC,KAAK,UAAU,EAAE;QACtD,MAAM,IAAIt1D,KAAK,CACb,4DAA4D,GAC1D,wDAAwD,GACxD,sCACJ,CAAC;MACH;IACF;EACF;EACA,IAAI60D,UAAU,CAACp+C,GAAG,CAAC,kBAAkB,CAAC,EAAE;IAM/B,IAAIo+C,UAAU,CAACp+C,GAAG,CAAC,wBAAwB,CAAC,EAAE;MACnD,MAAM,IAAIzW,KAAK,CACb,qEACF,CAAC;IACH;EACF;EACA,IACE,CAAC60D,UAAU,CAACp+C,GAAG,CAAC,wBAAwB,CAAC,IACzCo+C,UAAU,CAACp+C,GAAG,CAAC,kBAAkB,CAAC,IAClCo+C,UAAU,CAACt3D,GAAG,CAAC,kBAAkB,CAAC,CAACi4D,sBAAsB,EACzD;IAMO;MACLX,UAAU,CAACr3D,GAAG,CAAC,wBAAwB,EAAE,CAAA,CAAE,CAAC;IAC9C;EACF;EAEA,IAAIq3D,UAAU,CAACp+C,GAAG,CAAC,gBAAgB,CAAC,EAAE;IACpC,MAAM2+C,UAAU,GAAGP,UAAU,CAACt3D,GAAG,CAAC,gBAAgB,CAAC,CAAC63D,UAAU;IAC9D,IAAIA,UAAU,IAAI,IAAI,EAAE;MAWf;QACL,MAAMK,6BAA6B,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QACrD,IAAI,CAACA,6BAA6B,CAACnuC,QAAQ,CAAC8tC,UAAU,CAAC,EAAE;UACvD,MAAM,IAAIp1D,KAAK,CACb,yEAAyE,GACvEy1D,6BAA6B,CAAC1gE,GAAG,CAACmgE,CAAC,IAAI,IAAIA,CAAC,GAAG,CAAC,CAAC//D,IAAI,CAAC,IAAI,CAC9D,CAAC;QACH;MACF;IACF;EACF;EAEA,IACE0/D,UAAU,CAACp+C,GAAG,CAAC,oBAAoB,CAAC,IACpC,CAACo+C,UAAU,CAACp+C,GAAG,CAAC,eAAe,CAAC,EAChC;IACA,MAAMzZ,KAAK,GAAG,IAAIgD,KAAK,CACrB,8FACF,CAAC;IAEDhD,KAAK,CAAC04D,cAAc,GAAG,eAAe;IACtC,MAAM14D,KAAK;EACb;EAEA,IACE63D,UAAU,CAACp+C,GAAG,CAAC,wBAAwB,CAAC,IACxCo+C,UAAU,CAACt3D,GAAG,CAAC,wBAAwB,CAAC,CAACg4D,OAAO,KAAK,SAAS,EAC9D;IACA,MAAM,IAAIv1D,KAAK,CACb,kEAAkE,GAChE,wDAAwD,GACxD,qCACJ,CAAC;EACH;AAeF;AAYO,MAAM21D,YAAY,GAAG;EAC1Bv1D,MAAM;EACN6iC,GAAG;EACHjP,IAAI;EACJ8sB,UAAU;EACVuT,WAAW;EACXxB;AACF,CAAC;AAEM,MAAM+C,gBAAgB,GAAG95D,MAAM,CAACkC,IAAI,CAAC23D,YAAY,CAEvD;AC1Kc,MAAeE,gBAAgB,SAASvb,UAAU,CAAC;EAuChEwb,UAAUA,CACR5wD,IAAsC,EACtC6wD,QAAoC,EACpCC,QAEC,EACDxwD,mBAA6C,EACvC;IACN,IACEN,IAAI,CAACpW,IAAI,KAAK,eAAe,IAC7B,IAAI,CAACqZ,cAAc,CAACjD,IAAI,CAAC,IACzBA,IAAI,CAACR,QAAQ,IACbQ,IAAI,CAACG,SAAS,EACd;MACA;IACF;IAEA,MAAM3P,GAAG,GAAGwP,IAAI,CAACxP,GAIE;IAEnB,MAAMV,IAAI,GAAGU,GAAG,CAAC5G,IAAI,KAAK,YAAY,GAAG4G,GAAG,CAACV,IAAI,GAAGU,GAAG,CAACmG,KAAK;IAE7D,IAAI7G,IAAI,KAAK,WAAW,EAAE;MACxB,IAAI+gE,QAAQ,EAAE;QACZ,IAAI,CAAC3vD,KAAK,CAAC9H,MAAM,CAACtH,aAAa,EAAEtB,GAAG,CAAC;QACrC;MACF;MACA,IAAIsgE,QAAQ,CAACC,IAAI,EAAE;QACjB,IAAIzwD,mBAAmB,EAAE;UAGvB,IAAIA,mBAAmB,CAAC6nB,cAAc,KAAK,IAAI,EAAE;YAC/C7nB,mBAAmB,CAAC6nB,cAAc,GAAG33B,GAAG,CAACoH,GAAG,CAACrQ,KAAK;UACpD;QACF,CAAC,MAAM;UACL,IAAI,CAAC2Z,KAAK,CAAC9H,MAAM,CAACpN,cAAc,EAAEwE,GAAG,CAAC;QACxC;MACF;MAEAsgE,QAAQ,CAACC,IAAI,GAAG,IAAI;IACtB;EACF;EAEAC,oBAAoBA,CAClBl5B,IAAkC,EAClC5f,gBAAwB,EACW;IACnC,OACE4f,IAAI,CAACluC,IAAI,KAAK,yBAAyB,IACvC,IAAI,CAAC8qB,iBAAiB,CAACojB,IAAI,CAACvwC,KAAK,CAAC,KAAK2wB,gBAAgB;EAE3D;EAGAg0C,aAAaA,CAAAA,EAA8C;IACzD,IAAI,CAAC9iC,kBAAkB,CAAA,CAAE;IACzB,IAAI,CAACjL,SAAS,CAAA,CAAE;IAChB,MAAM2Z,IAAI,GAAG,IAAI,CAACrI,eAAe,EAAmC;IACpE,IAAI,CAAC,IAAI,CAAC/T,KAAK,CAAA,GAAO,CAAC,EAAE;MACvB,IAAI,CAAC7sB,UAAU,CAAA,CAAE;IACnB;IAGA,IAAI,CAACsoB,yBAAyB,CAAA,CAAE;IAChC2gB,IAAI,CAAC1iB,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC7B0iB,IAAI,CAAC7f,MAAM,GAAG,IAAI,CAAClW,KAAK,CAACkW,MAAM;IAC/B,IAAI,IAAI,CAAC1c,WAAW,MAAqB,EAAE;MACzCu8B,IAAI,CAACz9B,MAAM,GAAG,IAAI,CAACA,MAAM;IAC3B;IACA,OAAOy9B,IAAI;EACb;EAqBArI,eAAeA,CAEbwhC,UAAoB,EACpB3wD,mBAAsC,EACxB;IACd,IAAI2wD,UAAU,EAAE;MACd,OAAO,IAAI,CAACC,aAAa,CAAC,MACxB,IAAI,CAACC,mBAAmB,CAAC7wD,mBAAmB,CAC9C,CAAC;IACH;IACA,OAAO,IAAI,CAAC8wD,UAAU,CAAC,MAAM,IAAI,CAACD,mBAAmB,CAAC7wD,mBAAmB,CAAC,CAAC;EAC7E;EAGA6wD,mBAAmBA,CAEjB7wD,mBAAsC,EACxB;IACd,MAAMD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAMy3B,IAAI,GAAG,IAAI,CAACa,gBAAgB,CAACr4B,mBAAmB,CAAC;IACvD,IAAI,IAAI,CAACob,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAM/xB,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAuBhqB,QAAQ,CAAC;MAC7D1W,IAAI,CAACyjE,WAAW,GAAG,CAACt1B,IAAI,CAAC;MACzB,OAAO,IAAI,CAAC1Z,GAAG,CAAA,EAAS,CAAC,EAAE;QACzBz0B,IAAI,CAACyjE,WAAW,CAAC5nD,IAAI,CAAC,IAAI,CAACmzB,gBAAgB,CAACr4B,mBAAmB,CAAC,CAAC;MACnE;MACA,IAAI,CAACs6B,gBAAgB,CAACjxC,IAAI,CAACyjE,WAAW,CAAC;MACvC,OAAO,IAAI,CAAC3tD,UAAU,CAAC9V,IAAI,EAAE,oBAAoB,CAAC;IACpD;IACA,OAAOmuC,IAAI;EACb;EAGAu5B,0BAA0BA,CAExB/wD,mBAA6C,EAC7Cu9B,cAAyB,EACzB;IACA,OAAO,IAAI,CAACqzB,aAAa,CAAC,MACxB,IAAI,CAACv4B,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAC3D,CAAC;EACH;EAGAjF,uBAAuBA,CAErBt4B,mBAA6C,EAC7Cu9B,cAAyB,EACzB;IACA,OAAO,IAAI,CAACuzB,UAAU,CAAC,MACrB,IAAI,CAACz4B,gBAAgB,CAACr4B,mBAAmB,EAAEu9B,cAAc,CAC3D,CAAC;EACH;EAIA1F,0BAA0BA,CACxB73B,mBAAqC,EACrCgxD,WAA6B,EAC7B;IAAA,IAAAC,gBAAA;IACAjxD,mBAAmB,CAAC+nB,qBAAqB,GAAA,CAAAkpC,gBAAA,GACvCD,WAAW,IAAXA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAW,CAAE15D,GAAG,YAAA25D,gBAAA,GAAI,IAAI,CAACxvD,KAAK,CAAC1B,QAAQ;EAC3C;EAKAs4B,gBAAgBA,CAEdr4B,mBAA6C,EAC7Cu9B,cAAyB,EACX;IACd,MAAMx9B,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,IAAI,IAAI,CAACqmB,YAAY,CAAA,GAAU,CAAC,EAAE;MAChC,IAAI,IAAI,CAACuC,SAAS,CAAC7C,QAAQ,EAAE;QAC3B,IAAIsU,IAAI,GAAG,IAAI,CAAC82B,UAAU,EAAE;QAC5B,IAAI3zB,cAAc,EAAE;UAClBnD,IAAI,GAAGmD,cAAc,CAACF,IAAI,CAAC,IAAI,EAAEjD,IAAI,EAAEr6B,QAAQ,CAAC;QAClD;QACA,OAAOq6B,IAAI;MACb;IACF;IAEA,IAAI+2B,mBAAmB;IACvB,IAAInxD,mBAAmB,EAAE;MACvBmxD,mBAAmB,GAAG,KAAK;IAC7B,CAAC,MAAM;MACLnxD,mBAAmB,GAAG,IAAIipB,gBAAgB,EAAE;MAC5CkoC,mBAAmB,GAAG,IAAI;IAC5B;IACA,MAAM;MAAE7nE;KAAM,GAAG,IAAI,CAACmY,KAAK;IAE3B,IAAInY,IAAI,KAAc,EAAA,IAAI+kB,iBAAiB,CAAC/kB,IAAI,CAAC,EAAE;MACjD,IAAI,CAACmY,KAAK,CAACmW,gBAAgB,GAAG,IAAI,CAACnW,KAAK,CAACxa,KAAK;IAChD;IAEA,IAAImzC,IAAI,GAAG,IAAI,CAACg3B,qBAAqB,CAACpxD,mBAAmB,CAAC;IAC1D,IAAIu9B,cAAc,EAAE;MAClBnD,IAAI,GAAGmD,cAAc,CAACF,IAAI,CAAC,IAAI,EAAEjD,IAAI,EAAEr6B,QAAQ,CAAC;IAClD;IACA,IAAI4O,iBAAiB,CAAC,IAAI,CAAClN,KAAK,CAACnY,IAAI,CAAC,EAAE;MACtC,MAAMD,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAyBhqB,QAAQ,CAAC;MAC/D,MAAMm1C,QAAQ,GAAG,IAAI,CAACzzC,KAAK,CAACpL,KAAK;MACjChN,IAAI,CAAC6rD,QAAQ,GAAGA,QAAQ;MAExB,IAAI,IAAI,CAAC95B,KAAK,CAAA,EAAM,CAAC,EAAE;QACrB,IAAI,CAAC9a,YAAY,CAAC85B,IAAI,EAAc,IAAI,CAAC;QACzC/wC,IAAI,CAAC+wC,IAAI,GAAGA,IAAI;QAEhB,MAAMjhC,UAAU,GAAG4G,QAAQ,CAACjZ,KAAK;QACjC,IACEkZ,mBAAmB,CAAC6nB,cAAc,IAAI,IAAI,IAC1C7nB,mBAAmB,CAAC6nB,cAAc,CAAC/gC,KAAK,IAAIqS,UAAU,EACtD;UACA6G,mBAAmB,CAAC6nB,cAAc,GAAG,IAAI;QAC3C;QACA,IACE7nB,mBAAmB,CAAC4nB,kBAAkB,IAAI,IAAI,IAC9C5nB,mBAAmB,CAAC4nB,kBAAkB,CAAC9gC,KAAK,IAAIqS,UAAU,EAC1D;UACA6G,mBAAmB,CAAC4nB,kBAAkB,GAAG,IAAI;QAC/C;QACA,IACE5nB,mBAAmB,CAAC8nB,aAAa,IAAI,IAAI,IACzC9nB,mBAAmB,CAAC8nB,aAAa,CAAChhC,KAAK,IAAIqS,UAAU,EACrD;UACA,IAAI,CAAC6vB,yBAAyB,CAAChpB,mBAAmB,CAAC;UACnDA,mBAAmB,CAAC8nB,aAAa,GAAG,IAAI;QAC1C;MACF,CAAC,MAAM;QACLz+B,IAAI,CAAC+wC,IAAI,GAAGA,IAA+B;MAC7C;MAEA,IAAI,CAAC7oB,IAAI,CAAA,CAAE;MACXloB,IAAI,CAACopC,KAAK,GAAG,IAAI,CAAC4F,gBAAgB,EAAE;MACpC,IAAI,CAACke,SAAS,CAACnc,IAAI,EAAE,IAAI,CAACj7B,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC,CAAC;MAEnE,OAAOA,IAAI;IACZ,CAAA,MAAM,IAAI8nE,mBAAmB,EAAE;MAC9B,IAAI,CAACzpC,qBAAqB,CAAC1nB,mBAAmB,EAAE,IAAI,CAAC;IACvD;IAEA,OAAOo6B,IAAI;EACb;EAKAg3B,qBAAqBA,CAEnBpxD,mBAAqC,EACvB;IACd,MAAMD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAM6X,gBAAgB,GAAG,IAAI,CAACnW,KAAK,CAACmW,gBAAgB;IACpD,MAAM4f,IAAI,GAAG,IAAI,CAAC65B,YAAY,CAACrxD,mBAAmB,CAAC;IAEnD,IAAI,IAAI,CAAC0wD,oBAAoB,CAACl5B,IAAI,EAAE5f,gBAAgB,CAAC,EAAE;MACrD,OAAO4f,IAAI;IACb;IAEA,OAAO,IAAI,CAACI,gBAAgB,CAACJ,IAAI,EAAEz3B,QAAQ,EAAEC,mBAAmB,CAAC;EACnE;EAEA43B,gBAAgBA,CAEdJ,IAAkB,EAClBz3B,QAAkB,EAElBC,mBAA6C,EAC/B;IACd,IAAI,IAAI,CAAC8d,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAMz0B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA0BhqB,QAAQ,CAAC;MAChE1W,IAAI,CAACgnB,IAAI,GAAGmnB,IAAI;MAChBnuC,IAAI,CAAC0uC,UAAU,GAAG,IAAI,CAACO,uBAAuB,EAAE;MAChD,IAAI,CAACpR,MAAM,CAAA,EAAS,CAAC;MACrB79B,IAAI,CAAC+uC,SAAS,GAAG,IAAI,CAACC,gBAAgB,EAAE;MACxC,OAAO,IAAI,CAACl5B,UAAU,CAAC9V,IAAI,EAAE,uBAAuB,CAAC;IACvD;IACA,OAAOmuC,IAAI;EACb;EAEA85B,wBAAwBA,CAEtBtxD,mBAAsC,EACR;IAC9B,OAAO,IAAI,CAACob,KAAK,CAAe,GAAA,CAAC,GAC7B,IAAI,CAACnd,gBAAgB,CAAA,CAAE,GACvB,IAAI,CAACskD,eAAe,CAACviD,mBAAmB,CAAC;EAC/C;EAKAqxD,YAAYA,CAEVrxD,mBAAqC,EACvB;IACd,MAAMD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAM6X,gBAAgB,GAAG,IAAI,CAACnW,KAAK,CAACmW,gBAAgB;IACpD,MAAM4f,IAAI,GAAG,IAAI,CAAC85B,wBAAwB,CAACtxD,mBAAmB,CAAC;IAE/D,IAAI,IAAI,CAAC0wD,oBAAoB,CAACl5B,IAAI,EAAE5f,gBAAgB,CAAC,EAAE;MACrD,OAAO4f,IAAI;IACb;IAEA,OAAO,IAAI,CAACgxB,WAAW,CAAChxB,IAAI,EAAEz3B,QAAQ,EAAE,CAAC,CAAC,CAAC;EAC7C;EAQAyoD,WAAWA,CAETpuB,IAAkC,EAClCquB,YAAsB,EACtBC,OAAe,EACD;IACd,IAAI,IAAI,CAACpqD,aAAa,CAAC87B,IAAI,CAAC,EAAE;MAK5B,MAAM/jC,KAAK,GAAG,IAAI,CAAC+H,gBAAgB,CAACg8B,IAAI,CAAC;MAEzC,IACEsuB,OAAO,IAAIr5C,uBAAuB,GAAO,CAAC,IAC1C,CAAC,IAAI,CAACsZ,SAAS,CAAC3C,KAAK,IACrB,CAAC,IAAI,CAAC5K,KAAK,CAAA,EAAO,CAAC,EACnB;QACA,IAAI,CAACxa,KAAK,CAAC9H,MAAM,CAAC3H,mBAAmB,EAAEipC,IAAI,EAAE;UAC3ChzC,cAAc,EAAEiP;QAClB,CAAC,CAAC;MACJ;MAEA,IAAI,CAACmK,UAAU,CAACC,cAAc,CAACpK,KAAK,EAAE+jC,IAAI,CAAC9iC,GAAG,CAACrQ,KAAK,CAAC;IACvD;IAEA,MAAMsqE,EAAE,GAAG,IAAI,CAAC9vD,KAAK,CAACnY,IAAI;IAC1B,IAAIylB,eAAe,CAACwiD,EAAE,CAAC,KAAK,IAAI,CAAC5oC,SAAS,CAAC3C,KAAK,IAAI,CAAC,IAAI,CAAC5K,KAAK,CAAO,EAAA,CAAC,CAAC,EAAE;MACxE,IAAIo2C,IAAI,GAAGniD,uBAAuB,CAACkiD,EAAE,CAAC;MACtC,IAAIC,IAAI,GAAG9I,OAAO,EAAE;QAClB,IAAI6I,EAAE,OAAgB,EAAE;UACtB,IAAI,CAACvxC,YAAY,CAAC,kBAAkB,CAAC;UACrC,IAAI,IAAI,CAACve,KAAK,CAACwX,0BAA0B,EAAE;YAEzC,OAAOmhB,IAAI;UACb;UACA,IAAI,CAACq3B,4BAA4B,CAACr3B,IAAI,EAAkBquB,YAAY,CAAC;QACvE;QACA,MAAMp/D,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAC3B0+B,YACF,CAAC;QACDp/D,IAAI,CAAC+wC,IAAI,GAAGA,IAAI;QAChB/wC,IAAI,CAAC6rD,QAAQ,GAAG,IAAI,CAACzzC,KAAK,CAACpL,KAAK;QAEhC,MAAMq7D,OAAO,GAAGH,EAAE,KAAiB,EAAA,IAAIA,EAAE,KAAkB,EAAA;QAC3D,MAAMI,QAAQ,GAAGJ,EAAE,KAAyB,EAAA;QAE5C,IAAII,QAAQ,EAAE;UAGZH,IAAI,GAAGniD,uBAAuB,CAAA,EAAc,CAAC;QAC/C;QAEA,IAAI,CAACkC,IAAI,CAAA,CAAE;QAEX,IACEggD,EAAE,OAAgB,IAElB,IAAI,CAACj9C,SAAS,CAAC,CAAC,kBAAkB,EAAE;UAAEoM,QAAQ,EAAE;QAAW,CAAA,CAAC,CAAC,EAC7D;UACA,IAAI,IAAI,CAACjf,KAAK,CAACnY,IAAI,KAAA,EAAc,IAAI,IAAI,CAACq/B,SAAS,CAAC9C,QAAQ,EAAE;YAC5D,MAAM,IAAI,CAACjlB,KAAK,CACd9H,MAAM,CAACzG,gCAAgC,EACvC,IAAI,CAACoP,KAAK,CAAC1B,QACb,CAAC;UACH;QACF;QAEA1W,IAAI,CAACopC,KAAK,GAAG,IAAI,CAACm/B,oBAAoB,CAACL,EAAE,EAAEC,IAAI,CAAC;QAChD,MAAMK,YAAY,GAAG,IAAI,CAAC1yD,UAAU,CAClC9V,IAAI,EACJqoE,OAAO,IAAIC,QAAQ,GAAG,mBAAmB,GAAG,kBAC9C,CAAC;QAMD,MAAMG,MAAM,GAAG,IAAI,CAACrwD,KAAK,CAACnY,IAAI;QAC9B,IACGqoE,QAAQ,KAAKG,MAAM,KAAA,EAAiB,IAAIA,MAAM,KAAkB,EAAA,CAAC,IACjEJ,OAAO,IAAII,MAAM,OAA0B,EAC5C;UACA,MAAM,IAAI,CAAClxD,KAAK,CACd9H,MAAM,CAAChJ,yBAAyB,EAChC,IAAI,CAAC2R,KAAK,CAAC1B,QACb,CAAC;QACH;QAEA,OAAO,IAAI,CAACyoD,WAAW,CAACqJ,YAAY,EAAEpJ,YAAY,EAAEC,OAAO,CAAC;MAC9D;IACF;IAEA,OAAOtuB,IAAI;EACb;EAKAw3B,oBAAoBA,CAElBL,EAAa,EACbC,IAAY,EACE;IACd,MAAMzxD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,QAAQwxD,EAAE;MACR,KAAA,EAAA;QACE,QAAQ,IAAI,CAACrzD,eAAe,CAAC,kBAAkB,EAAE,UAAU,CAAC;UAC1D,KAAK,MAAM;YACT,OAAO,IAAI,CAAC6zD,uBAAuB,CAAC,MAAM;cACxC,OAAO,IAAI,CAACC,iBAAiB,EAAE;YACjC,CAAC,CAAC;UAGJ,KAAK,OAAO;YACV,OAAO,IAAI,CAACD,uBAAuB,CAAC,MAAM;cACxC,IAAI,IAAI,CAACppC,SAAS,CAAC7C,QAAQ,IAAI,IAAI,CAACM,YAAY,CAAU,GAAA,CAAC,EAAE;gBAC3D,MAAM,IAAI,CAACxlB,KAAK,CAAC9H,MAAM,CAACxD,iBAAiB,EAAE,IAAI,CAACmM,KAAK,CAAC1B,QAAQ,CAAC;cACjE;cACA,OAAO,IAAI,CAACkyD,6BAA6B,CACvC,IAAI,CAACC,wBAAwB,CAACX,EAAE,EAAEC,IAAI,CAAC,EACvCzxD,QACF,CAAC;YACH,CAAC,CAAC;UAEJ,KAAK,QAAQ;YACX,OAAO,IAAI,CAACoyD,8BAA8B,CAAC,MAAM;cAC/C,OAAO,IAAI,CAACC,uBAAuB,CAACZ,IAAI,CAAC;YAC3C,CAAC,CAAC;QACN;MAGF;QACE,OAAO,IAAI,CAACU,wBAAwB,CAACX,EAAE,EAAEC,IAAI,CAAC;IAClD;EACF;EAKAU,wBAAwBA,CAEtBX,EAAa,EACbC,IAAY,EACE;IACd,MAAMzxD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAEpC,OAAO,IAAI,CAACyoD,WAAW,CACrB,IAAI,CAAC8I,wBAAwB,CAAA,CAAE,EAC/BvxD,QAAQ,EACRuP,uBAAuB,CAACiiD,EAAE,CAAC,GAAGC,IAAI,GAAG,CAAC,GAAGA,IAC3C,CAAC;EACH;EAEAQ,iBAAiBA,CAAAA,EAA6B;IAAA,IAAAK,WAAA;IAC5C,MAAM;MAAEtyD;KAAU,GAAG,IAAI,CAAC0B,KAAK;IAC/B,MAAM1D,IAAI,GAAG,IAAI,CAACs6B,gBAAgB,EAAE;IACpC,MAAMi6B,mBAAmB,GAAGn9D,mCAAmC,CAAC8b,GAAG,CAEjElT,IAAI,CAACzU,IACP,CAAC;IAGD,IAAIgpE,mBAAmB,IAAI,EAAAD,CAAAA,WAAA,GAACt0D,IAAI,CAACrB,KAAK,KAAV21D,IAAAA,IAAAA,WAAA,CAAY90D,aAAa,CAAE,EAAA;MACrD,IAAI,CAACqD,KAAK,CAAC9H,MAAM,CAAClD,uBAAuB,EAAEmK,QAAQ,EAAE;QACnDzW,IAAI,EAAEyU,IAAI,CAACzU;MACb,CAAC,CAAC;IACJ;IACA,IAAI,CAAC,IAAI,CAACipE,qCAAqC,EAAE,EAAE;MAEjD,IAAI,CAAC3xD,KAAK,CAAC9H,MAAM,CAACnD,eAAe,EAAEoK,QAAQ,CAAC;IAC9C;IAEA,OAAOhC,IAAI;EACb;EAEAy0D,0BAA0BA,CACxBnpE,IAAmD,EACnD;IACA,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAY,CAAC,EAAE;MAC3B,IAAI,CAACxa,KAAK,CAAC9H,MAAM,CAAC3F,kCAAkC,EAAE9J,IAAI,CAAC8O,QAAQ,CAAC;IACtE;EACF;EAIAoqD,eAAeA,CAEbviD,mBAA6C,EAC7C4qD,QAAkB,EACJ;IACd,MAAM7qD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAM0yD,OAAO,GAAG,IAAI,CAACrsC,YAAY,GAAU,CAAC;IAE5C,IAAIqsC,OAAO,IAAI,IAAI,CAACC,oBAAoB,EAAE,EAAE;MAC1C,IAAI,CAACnhD,IAAI,CAAA,CAAE;MACX,MAAMimB,IAAI,GAAG,IAAI,CAACm7B,UAAU,CAAC5yD,QAAQ,CAAC;MACtC,IAAI,CAAC6qD,QAAQ,EAAE,IAAI,CAAC4H,0BAA0B,CAACh7B,IAAI,CAAC;MACpD,OAAOA,IAAI;IACb;IACA,MAAMo7B,MAAM,GAAG,IAAI,CAACx3C,KAAK,GAAU,CAAC;IACpC,MAAM/xB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA0C;IACrE,IAAIiQ,aAAa,CAAC,IAAI,CAACxN,KAAK,CAACnY,IAAI,CAAC,EAAE;MAClCD,IAAI,CAAC6rD,QAAQ,GAAG,IAAI,CAACzzC,KAAK,CAACpL,KAAK;MAChChN,IAAI,CAACE,MAAM,GAAG,IAAI;MAElB,IAAI,IAAI,CAAC6xB,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,IAAI,CAAC4E,YAAY,CAAC,kBAAkB,CAAC;MACvC;MACA,MAAM6yC,QAAQ,GAAG,IAAI,CAACz3C,KAAK,GAAW,CAAC;MACvC,IAAI,CAAC7J,IAAI,CAAA,CAAE;MAEXloB,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAACoqD,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;MAEhD,IAAI,CAAC76B,qBAAqB,CAAC1nB,mBAAmB,EAAE,IAAI,CAAC;MAErD,IAAI,IAAI,CAACyB,KAAK,CAACgP,MAAM,IAAIoiD,QAAQ,EAAE;QACjC,MAAM1d,GAAG,GAAG9rD,IAAI,CAAC8O,QAAQ;QAEzB,IAAIg9C,GAAG,CAAC7rD,IAAI,KAAK,YAAY,EAAE;UAC7B,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAACpE,YAAY,EAAErL,IAAI,CAAC;QACtC,CAAA,MAAM,IAAI,IAAI,CAACqZ,wBAAwB,CAACyyC,GAAG,CAAC,EAAE;UAC7C,IAAI,CAACv0C,KAAK,CAAC9H,MAAM,CAAC1N,kBAAkB,EAAE/B,IAAI,CAAC;QAC7C;MACF;MAEA,IAAI,CAACupE,MAAM,EAAE;QACX,IAAI,CAAChI,QAAQ,EAAE;UACb,IAAI,CAAC4H,0BAA0B,CAACnpE,IAAiC,CAAC;QACpE;QACA,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;MACjD;IACF;IAEA,MAAMmuC,IAAI,GAAG,IAAI,CAACs7B,WAAW,CAE3BzpE,IAAI,EACJupE,MAAM,EACN5yD,mBACF,CAAC;IAED,IAAIyyD,OAAO,EAAE;MACX,MAAM;QAAEnpE;OAAM,GAAG,IAAI,CAACmY,KAAK;MAC3B,MAAM+B,UAAU,GAAG,IAAI,CAAC8Q,SAAS,CAAC,aAAa,CAAC,GAC5C5F,uBAAuB,CAACplB,IAAI,CAAC,GAC7BolB,uBAAuB,CAACplB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC8xB,KAAK,CAAA,EAAU,CAAC;MAC3D,IAAI5X,UAAU,IAAI,CAAC,IAAI,CAACuvD,gBAAgB,EAAE,EAAE;QAC1C,IAAI,CAAC7vC,cAAc,CAACpqB,MAAM,CAAC7O,sBAAsB,EAAE8V,QAAQ,CAAC;QAC5D,OAAO,IAAI,CAAC4yD,UAAU,CAAC5yD,QAAQ,CAAC;MAClC;IACF;IAEA,OAAOy3B,IAAI;EACb;EAGAs7B,WAAWA,CAETzpE,IAAkB,EAClBupE,MAAe,EACf5yD,mBAA6C,EAC/B;IACd,IAAI4yD,MAAM,EAAE;MACV,MAAMI,oBAAoB,GAAG3pE,IAAkC;MAC/D,IAAI,CAACktD,SAAS,CACZyc,oBAAoB,CAAC76D,QAAQ,EAC7B,IAAI,CAACgH,UAAU,CAAC6zD,oBAAoB,EAAE,kBAAkB,CAC1D,CAAC;MACD,OAAO3pE,IAAI;IACb;IAEA,MAAM0W,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,IAAIy3B,IAAI,GAAG,IAAI,CAACy7B,mBAAmB,CAACjzD,mBAAmB,CAAC;IACxD,IAAI,IAAI,CAAC0nB,qBAAqB,CAAC1nB,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAOw3B,IAAI;IACvE,OAAOxoB,cAAc,CAAC,IAAI,CAACvN,KAAK,CAACnY,IAAI,CAAC,IAAI,CAAC,IAAI,CAACs9B,kBAAkB,EAAE,EAAE;MACpE,MAAMv9B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAqBhqB,QAAQ,CAAC;MAC3D1W,IAAI,CAAC6rD,QAAQ,GAAG,IAAI,CAACzzC,KAAK,CAACpL,KAAK;MAChChN,IAAI,CAACE,MAAM,GAAG,KAAK;MACnBF,IAAI,CAAC8O,QAAQ,GAAGq/B,IAAI;MACpB,IAAI,CAACjmB,IAAI,CAAA,CAAE;MACX,IAAI,CAACglC,SAAS,CAAC/e,IAAI,EAAGA,IAAI,GAAG,IAAI,CAACr4B,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAE,CAAC;IAC1E;IACA,OAAOmuC,IAAI;EACb;EAIAy7B,mBAAmBA,CAEjBjzD,mBAA6C,EAC/B;IACd,MAAMD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAM6X,gBAAgB,GAAG,IAAI,CAACnW,KAAK,CAACmW,gBAAgB;IACpD,MAAM4f,IAAI,GAAG,IAAI,CAAC5G,aAAa,CAAC5wB,mBAAmB,CAAC;IAEpD,IAAI,IAAI,CAAC0wD,oBAAoB,CAACl5B,IAAI,EAAE5f,gBAAgB,CAAC,EAAE;MACrD,OAAO4f,IAAI;IACb;IAEA,OAAO,IAAI,CAACkH,eAAe,CAAClH,IAAI,EAAEz3B,QAAQ,CAAC;EAC7C;EAEA2+B,eAAeA,CAEbx8B,IAAkB,EAClBnC,QAAkB,EAClBoC,OAAwB,EACV;IACd,MAAMV,KAAK,GAAG;MACZW,mBAAmB,EAAE,KAAK;MAC1B8wD,eAAe,EAAE,IAAI,CAAC/K,oBAAoB,CAACjmD,IAAI,CAAC;MAChDI,IAAI,EAAE;KACP;IACD,GAAG;MACDJ,IAAI,GAAG,IAAI,CAACD,cAAc,CAACC,IAAI,EAAEnC,QAAQ,EAAEoC,OAAO,EAAEV,KAAK,CAAC;MAG1DA,KAAK,CAACyxD,eAAe,GAAG,KAAK;IAC/B,CAAC,QAAQ,CAACzxD,KAAK,CAACa,IAAI;IACpB,OAAOJ,IAAI;EACb;EAMAD,cAAcA,CAEZC,IAAkB,EAClBnC,QAAkB,EAClBoC,OAAmC,EACnCV,KAA4B,EACd;IACd,MAAM;MAAEnY;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAI,CAACU,OAAO,IAAI7Y,IAAI,OAAmB,EAAE;MACvC,OAAO,IAAI,CAAC6pE,SAAS,CAACjxD,IAAI,EAAEnC,QAAQ,EAAEoC,OAAO,EAAEV,KAAK,CAAC;IACvD,CAAC,MAAM,IAAI8N,eAAe,CAACjmB,IAAI,CAAC,EAAE;MAChC,OAAO,IAAI,CAAC++D,6BAA6B,CAACnmD,IAAI,EAAEnC,QAAQ,EAAE0B,KAAK,CAAC;IAClE;IAEA,IAAIV,QAAQ,GAAG,KAAK;IAEpB,IAAIzX,IAAI,OAAmB,EAAE;MAC3B,IAAI6Y,OAAO,EAAE;QACX,IAAI,CAACvB,KAAK,CAAC9H,MAAM,CAACjI,qBAAqB,EAAE,IAAI,CAAC4Q,KAAK,CAAC1B,QAAQ,CAAC;QAC7D,IAAI,IAAI,CAACwe,iBAAiB,CAAE,CAAA,OAA8B,EAAE;UAE1D9c,KAAK,CAACa,IAAI,GAAG,IAAI;UACjB,OAAOJ,IAAI;QACb;MACF;MACAT,KAAK,CAACW,mBAAmB,GAAGrB,QAAQ,GAAG,IAAI;MAC3C,IAAI,CAACwQ,IAAI,CAAA,CAAE;IACb;IAEA,IAAI,CAACpP,OAAO,IAAI,IAAI,CAACiZ,KAAK,CAAA,EAAU,CAAC,EAAE;MACrC,OAAO,IAAI,CAACg4C,+BAA+B,CACzClxD,IAAI,EACJnC,QAAQ,EACR0B,KAAK,EACLV,QACF,CAAC;IACH,CAAC,MAAM;MACL,MAAM7B,QAAQ,GAAG,IAAI,CAAC4e,GAAG,EAAY,CAAC;MACtC,IAAI5e,QAAQ,IAAI6B,QAAQ,IAAI,IAAI,CAAC+c,GAAG,CAAO,EAAA,CAAC,EAAE;QAC5C,OAAO,IAAI,CAACu1C,WAAW,CAACnxD,IAAI,EAAEnC,QAAQ,EAAE0B,KAAK,EAAEvC,QAAQ,EAAE6B,QAAQ,CAAC;MACpE,CAAC,MAAM;QACLU,KAAK,CAACa,IAAI,GAAG,IAAI;QACjB,OAAOJ,IAAI;MACb;IACF;EACF;EAMAmxD,WAAWA,CAETnxD,IAAkB,EAClBnC,QAAkB,EAClB0B,KAA4B,EAC5BvC,QAAiB,EACjB6B,QAAiB,EACgC;IACjD,MAAM1X,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAE3BhqB,QAAQ,CAAC;IACX1W,IAAI,CAACqR,MAAM,GAAGwH,IAAI;IAClB7Y,IAAI,CAAC6V,QAAQ,GAAGA,QAAQ;IACxB,IAAIA,QAAQ,EAAE;MACZ7V,IAAI,CAAC6+B,QAAQ,GAAG,IAAI,CAACiH,eAAe,EAAE;MACtC,IAAI,CAACjI,MAAM,CAAA,CAAY,CAAC;IACzB,CAAA,MAAM,IAAI,IAAI,CAAC9L,KAAK,CAAA,GAAe,CAAC,EAAE;MACrC,IAAIlZ,IAAI,CAAC5Y,IAAI,KAAK,OAAO,EAAE;QACzB,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC/G,iBAAiB,EAAEgO,QAAQ,CAAC;MAChD;MACA,IAAI,CAACS,UAAU,CAACC,cAAc,CAAC,IAAI,CAACgB,KAAK,CAACpL,KAAK,EAAE,IAAI,CAACoL,KAAK,CAAC1B,QAAQ,CAAC;MACrE1W,IAAI,CAAC6+B,QAAQ,GAAG,IAAI,CAACjqB,gBAAgB,EAAE;IACzC,CAAC,MAAM;MACL5U,IAAI,CAAC6+B,QAAQ,GAAG,IAAI,CAACuH,eAAe,CAAC,IAAI,CAAC;IAC5C;IAEA,IAAIhuB,KAAK,CAACW,mBAAmB,EAAE;MAC5B/Y,IAAI,CAAgC0X,QAAQ,GAAGA,QAAQ;MACxD,OAAO,IAAI,CAAC5B,UAAU,CAAC9V,IAAI,EAAE,0BAA0B,CAAC;IAC1D,CAAC,MAAM;MACL,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;IAClD;EACF;EAGA8pE,SAASA,CAEPjxD,IAAkB,EAClBnC,QAAkB,EAClBoC,OAAmC,EACnCV,KAA4B,EACd;IACd,MAAMpY,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAmBhqB,QAAQ,CAAC;IACzD1W,IAAI,CAACqR,MAAM,GAAGwH,IAAI;IAClB,IAAI,CAACqP,IAAI,CAAA,CAAE;IACXloB,IAAI,CAAC2X,MAAM,GAAG,IAAI,CAACsyD,eAAe,EAAE;IACpC7xD,KAAK,CAACa,IAAI,GAAG,IAAI;IACjB,OAAO,IAAI,CAACo8B,eAAe,CACzB,IAAI,CAACv/B,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC,EACvC0W,QAAQ,EACRoC,OACF,CAAC;EACH;EAMAixD,+BAA+BA,CAE7BlxD,IAAkB,EAClBnC,QAAkB,EAClB0B,KAA4B,EAC5BV,QAAiB,EACH;IACd,MAAMomD,yBAAyB,GAAG,IAAI,CAAC1lD,KAAK,CAACgX,sBAAsB;IACnE,IAAIzY,mBAA4C,GAAG,IAAI;IAEvD,IAAI,CAACyB,KAAK,CAACgX,sBAAsB,GAAG,IAAI;IACxC,IAAI,CAAClH,IAAI,CAAA,CAAE;IAEX,MAAMloB,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAC3BhqB,QACF,CAAC;IACD1W,IAAI,CAAC2X,MAAM,GAAGkB,IAAI;IAClB,MAAM;MAAEgxD,eAAe;MAAE9wD;IAAqB,CAAA,GAAGX,KAAK;IAEtD,IAAIyxD,eAAe,EAAE;MACnB,IAAI,CAACrqC,eAAe,CAAC7V,KAAK,CAACwS,kBAAkB,CAAE,CAAA,CAAC;MAChDxlB,mBAAmB,GAAG,IAAIipB,gBAAgB,EAAE;IAC9C;IAEA,IAAI7mB,mBAAmB,EAAE;MAEvB/Y,IAAI,CAAC0X,QAAQ,GAAGA,QAAQ;IAC1B;IAEA,IAAIA,QAAQ,EAAE;MACZ1X,IAAI,CAAC8X,SAAS,GAAG,IAAI,CAACw9B,4BAA4B,GAAU,CAAC;IAC/D,CAAC,MAAM;MACLt1C,IAAI,CAAC8X,SAAS,GAAG,IAAI,CAACw9B,4BAA4B,CAEhDz8B,EAAAA,EAAAA,IAAI,CAAC5Y,IAAI,KAAK,OAAO,EACrBD,IAAI,EACJ2W,mBACF,CAAC;IACH;IACA,IAAI6xD,YAGyB,GAAG,IAAI,CAAChxD,oBAAoB,CACvDxX,IAAI,EACJ+Y,mBACF,CAAC;IAED,IAAI8wD,eAAe,IAAI,IAAI,CAAC51B,qBAAqB,CAAE,CAAA,IAAI,CAACv8B,QAAQ,EAAE;MAEhEU,KAAK,CAACa,IAAI,GAAG,IAAI;MACjB,IAAI,CAAC0mB,yBAAyB,CAAChpB,mBAAmB,CAAC;MACnD,IAAI,CAAC6oB,eAAe,CAACxD,iBAAiB,EAAE;MACxC,IAAI,CAACwD,eAAe,CAAC5V,IAAI,EAAE;MAC3B4+C,YAAY,GAAG,IAAI,CAACz0B,iCAAiC,CACnD,IAAI,CAACrT,WAAW,CAA4BhqB,QAAQ,CAAC,EACrD8xD,YACF,CAAC;IACH,CAAC,MAAM;MACL,IAAIqB,eAAe,EAAE;QACnB,IAAI,CAACxrC,qBAAqB,CAAC1nB,mBAAmB,EAAE,IAAI,CAAC;QACrD,IAAI,CAAC6oB,eAAe,CAAC5V,IAAI,EAAE;MAC7B;MACA,IAAI,CAAC5R,qBAAqB,CAACwwD,YAAY,CAAC;IAC1C;IAEA,IAAI,CAACpwD,KAAK,CAACgX,sBAAsB,GAAG0uC,yBAAyB;IAE7D,OAAO0K,YAAY;EACrB;EAEAxwD,qBAAqBA,CACnBhY,IAAiD,EACjDkxC,mBAA6B,EAC7B;IACA,IAAI,CAACgb,oBAAoB,CAAClsD,IAAI,CAAC8X,SAAS,EAAEo5B,mBAAmB,CAAC;EAChE;EAIA8tB,6BAA6BA,CAE3BnmD,IAAkB,EAClBnC,QAAkB,EAClB0B,KAA4B,EACA;IAC5B,MAAMpY,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAA6BhqB,QAAQ,CAAC;IACnE1W,IAAI,CAACkqE,GAAG,GAAGrxD,IAAI;IACf7Y,IAAI,CAACmqE,KAAK,GAAG,IAAI,CAACrR,aAAa,CAAC,IAAI,CAAC;IACrC,IAAI1gD,KAAK,CAACW,mBAAmB,EAAE;MAC7B,IAAI,CAACxB,KAAK,CAAC9H,MAAM,CAAChI,0BAA0B,EAAEiP,QAAQ,CAAC;IACzD;IACA,OAAO,IAAI,CAACZ,UAAU,CAAC9V,IAAI,EAAE,0BAA0B,CAAC;EAC1D;EAEA8+D,oBAAoBA,CAACjmD,IAAkB,EAAW;IAChD,OACEA,IAAI,CAAC5Y,IAAI,KAAK,YAAY,IAC1B4Y,IAAI,CAAC1S,IAAI,KAAK,OAAO,IACrB,IAAI,CAACiS,KAAK,CAACsB,aAAa,CAACjc,KAAK,KAAKob,IAAI,CAAChb,GAAG,IAC3C,CAAC,IAAI,CAAC0/B,kBAAkB,CAAA,CAAE,IAE1B1kB,IAAI,CAAChb,GAAG,GAAGgb,IAAI,CAACjb,KAAK,KAAK,CAAC,IAC3B,IAAI,CAACmtB,iBAAiB,CAAClS,IAAI,CAACjb,KAAK,CAAC,KAAK,IAAI,CAACwa,KAAK,CAACmW,gBAAgB;EAEtE;EAEA/W,oBAAoBA,CAClBxX,IAAe,EACf0X,QAAiB,EACd;IACH,IAAI1X,IAAI,CAAC2X,MAAM,CAAC1X,IAAI,KAAK,QAAQ,EAAE;MACjC,IAAID,IAAI,CAAC8X,SAAS,CAACU,MAAM,KAAK,CAAC,IAAIxY,IAAI,CAAC8X,SAAS,CAACU,MAAM,GAAG,CAAC,EAAE;QAC5D,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAChM,eAAe,EAAEzD,IAAI,CAAC;MAC1C,CAAC,MAAM;QACL,KAAK,MAAM8rD,GAAG,IAAI9rD,IAAI,CAAC8X,SAAS,EAAE;UAChC,IAAIg0C,GAAG,CAAC7rD,IAAI,KAAK,eAAe,EAAE;YAChC,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC9L,wBAAwB,EAAEmoD,GAAG,CAAC;UAClD;QACF;MACF;IACF;IACA,OAAO,IAAI,CAACh2C,UAAU,CACpB9V,IAAI,EACJ0X,QAAQ,GAAG,wBAAwB,GAAG,gBACxC,CAAC;EACH;EAEA49B,4BAA4BA,CAE1BjE,KAAgB,EAChB+4B,gBAA0B,EAC1BC,YAAoC,EACpC1zD,mBAA6C,EACxB;IACrB,MAAM+1C,IAAoB,GAAG,EAAE;IAC/B,IAAIhgB,KAAK,GAAG,IAAI;IAChB,MAAM49B,6BAA6B,GAAG,IAAI,CAAClyD,KAAK,CAACwX,0BAA0B;IAC3E,IAAI,CAACxX,KAAK,CAACwX,0BAA0B,GAAG,KAAK;IAE7C,OAAO,CAAC,IAAI,CAAC6E,GAAG,CAAC4c,KAAK,CAAC,EAAE;MACvB,IAAI3E,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7O,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAAC9L,KAAK,CAACsf,KAAK,CAAC,EAAE;UACrB,IAAIg5B,YAAY,EAAE;YAChB,IAAI,CAACE,2BAA2B,CAACF,YAAY,CAAC;UAChD;UACA,IAAI,CAACniD,IAAI,CAAA,CAAE;UACX;QACF;MACF;MAEAwkC,IAAI,CAAC7wC,IAAI,CACP,IAAI,CAAC2uD,iBAAiB,CAAC,KAAK,EAAE7zD,mBAAmB,EAAEyzD,gBAAgB,CACrE,CAAC;IACH;IAEA,IAAI,CAAChyD,KAAK,CAACwX,0BAA0B,GAAG06C,6BAA6B;IAErE,OAAO5d,IAAI;EACb;EAEAzY,qBAAqBA,CAAAA,EAAY;IAC/B,OAAO,IAAI,CAACliB,KAAK,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAACwL,kBAAkB,EAAE;EAC3D;EAEAwW,iCAAiCA,CAE/B/zC,IAAuC,EACvCg0C,IAAsB,EACK;IAAA,IAAAy2B,WAAA;IAC3B,IAAI,CAACh9C,iCAAiC,CAACumB,IAAI,CAAC;IAC5C,IAAI,CAACnW,MAAM,CAAA,EAAS,CAAC;IACrB,IAAI,CAACgY,oBAAoB,CACvB71C,IAAI,EACJg0C,IAAI,CAACl8B,SAAS,EACd,IAAI,GAAA2yD,WAAA,GACJz2B,IAAI,CAAC3gC,KAAK,qBAAVo3D,WAAA,CAAYj7B,gBACd,CAAC;IAED,IAAIwE,IAAI,CAACjoB,aAAa,EAAE;MACtBD,gBAAgB,CAAC9rB,IAAI,EAAEg0C,IAAI,CAACjoB,aAAa,CAAC;IAC5C;IAEA,IAAIioB,IAAI,CAACr8B,MAAM,CAAC+T,gBAAgB,EAAE;MAChCI,gBAAgB,CAAC9rB,IAAI,EAAEg0C,IAAI,CAACr8B,MAAM,CAAC+T,gBAAgB,CAAC;IACtD;IACA,OAAO1rB,IAAI;EACb;EAIAiqE,eAAeA,CAAAA,EAA6B;IAC1C,MAAMvzD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,OAAO,IAAI,CAAC2+B,eAAe,CAAC,IAAI,CAAC9N,aAAa,CAAA,CAAE,EAAE7wB,QAAQ,EAAE,IAAI,CAAC;EACnE;EAcA6wB,aAAaA,CAEX5wB,mBAA6C,EAC/B;IACd,IAAI3W,IAAI;IACR,IAAIkY,UAAgC,GAAG,IAAI;IAE3C,MAAM;MAAEjY;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,QAAQnY,IAAI;MACV,KAAA,EAAA;QACE,OAAO,IAAI,CAACyqE,UAAU,EAAE;MAE1B,KAAA,EAAA;QACE1qE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAkD;QACvE,IAAI,CAACuS,IAAI,CAAA,CAAE;QAEX,IAAI,IAAI,CAAC6J,KAAK,CAAA,EAAO,CAAC,EAAE;UACtB,OAAO,IAAI,CAAC44C,uBAAuB,CAAC3qE,IAA8B,CAAC;QACrE;QAEA,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAU,CAAC,EAAE;UACzB,IAAI,IAAI,CAACngB,WAAW,MAAsC,EAAE;YAC1D,OAAO,IAAI,CAACg5D,eAAe,CAAC5qE,IAAkC,CAAC;UACjE,CAAC,MAAM;YACL,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,QAAQ,CAAC;UACxC;QACF,CAAC,MAAM;UACL,IAAI,CAACuX,KAAK,CAAC9H,MAAM,CAACtF,iBAAiB,EAAE,IAAI,CAACiO,KAAK,CAACC,eAAe,CAAC;UAChE,OAAO,IAAI,CAACvC,UAAU,CAAC9V,IAAI,EAAE,QAAQ,CAAC;QACxC;MAEF,KAAA,EAAA;QACEA,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;QACzC,IAAI,CAACuS,IAAI,CAAA,CAAE;QACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;MAEhD,KAAA,EAAA;QAAa;UACX,OAAO,IAAI,CAAC6qE,OAAO,CAAC,IAAI,CAACl1D,SAAS,CAAE,CAAA,EAAE,KAAK,CAAC;QAC9C;MAEA,KAAA,EAAA;MACA,KAAA,EAAA;QAAqB;UACnB,IAAI,CAACyiB,UAAU,CAAA,CAAE;UACjB,OAAO,IAAI,CAACvmB,kBAAkB,CAAC,IAAI,CAACuG,KAAK,CAACpL,KAAK,CAAC;QAClD;MAEA,KAAA,GAAA;QACE,OAAO,IAAI,CAAC8F,mBAAmB,CAAC,IAAI,CAACsF,KAAK,CAACpL,KAAK,CAAC;MAEnD,KAAA,GAAA;QACE,OAAO,IAAI,CAACoF,kBAAkB,CAAC,IAAI,CAACgG,KAAK,CAACpL,KAAK,CAAC;MAElD,KAAA,GAAA;QACE,OAAO,IAAI,CAAC6F,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;MAElD,KAAA,EAAA;QACE,OAAO,IAAI,CAAC+F,gBAAgB,EAAE;MAEhC,KAAA,EAAA;QACE,OAAO,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAAC;MACvC,KAAA,EAAA;QACE,OAAO,IAAI,CAACA,mBAAmB,CAAC,KAAK,CAAC;MAExC,KAAA,EAAA;QAAgB;UACd,MAAMoiC,UAAU,GAAG,IAAI,CAACh9B,KAAK,CAACmW,gBAAgB,KAAK,IAAI,CAACnW,KAAK,CAACxa,KAAK;UACnE,OAAO,IAAI,CAACu3C,kCAAkC,CAACC,UAAU,CAAC;QAC5D;MAEA,KAAA,CAAA;MACA,KAAA,CAAA;QAAsB;UACpB,OAAO,IAAI,CAAChE,cAAc,CACxB,IAAI,CAACh5B,KAAK,CAACnY,IAAI,MAAmB,GAA+B,CAAA,GAAA,CAAA,EAC9C,KAAK,EACV,IAChB,CAAC;QACH;MACA,KAAA,CAAA;QAAkB;UAChB,OAAO,IAAI,CAACmxC,cAAc,CAAA,CAAA,EAEL,IAAI,EACT,KAAK,EACnBz6B,mBACF,CAAC;QACH;MACA,KAAA,CAAA;MACA,KAAA,CAAA;QAAoB;UAClB,OAAO,IAAI,CAAC41C,eAAe,CACzB,IAAI,CAACn0C,KAAK,CAACnY,IAAI,MAAiB,GAA2B,CAAA,GAAA,CAAA,EAC3C,KAAK,EACN,IACjB,CAAC;QACH;MACA,KAAA,CAAA;QAAgB;UACd,OAAO,IAAI,CAACssD,eAAe,CAAA,CAAA,EAET,KAAK,EACN,KAAK,EACpB51C,mBACF,CAAC;QACH;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAACm0D,2BAA2B,EAAE;MAE3C,KAAA,EAAA;QACE5yD,UAAU,GAAG,IAAI,CAAC6yD,eAAe,EAAE;MAErC,KAAA,EAAA;QACE,OAAO,IAAI,CAAC1N,UAAU,CACpB,IAAI,CAAC8E,mBAAmB,CACtBjqD,UAAU,EACV,IAAI,CAACvC,SAAS,CAAA,CAChB,CAAC,EACD,KACF,CAAC;MAEH,KAAA,EAAA;QACE,OAAO,IAAI,CAACq1D,mBAAmB,EAAE;MAEnC,KAAA,EAAA;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAAClS,aAAa,CAAC,KAAK,CAAC;MAIlC,KAAA,EAAA;QAAqB;UACnB94D,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;UACzC,IAAI,CAACuS,IAAI,CAAA,CAAE;UACXloB,IAAI,CAACqR,MAAM,GAAG,IAAI;UAClB,MAAMsG,MAAM,GAAI3X,IAAI,CAAC2X,MAAM,GAAG,IAAI,CAACsyD,eAAe,CAAA,CAAG;UACrD,IAAItyD,MAAM,CAAC1X,IAAI,KAAK,kBAAkB,EAAE;YACtC,OAAO,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;UAChD,CAAC,MAAM;YACL,MAAM,IAAI,CAACuX,KAAK,CAAC9H,MAAM,CAACzF,eAAe,EAAE2N,MAAM,CAAC;UAClD;QACF;MAEA,KAAA,GAAA;QAAqB;UAOnB,IAAI,CAACJ,KAAK,CAAC9H,MAAM,CAAC3H,mBAAmB,EAAE,IAAI,CAACsQ,KAAK,CAAC1B,QAAQ,EAAE;YAC1D3Y,cAAc,EAAE,IAAI,CAACqa,KAAK,CAACpL;UAC7B,CAAC,CAAC;UACF,OAAO,IAAI,CAAC4H,gBAAgB,EAAE;QAChC;MAEA,KAAA,EAAA;QAAsB;UACpB,OAAO,IAAI,CAACq2D,iCAAiC,CAAA,EAAA,EAAY,GAAG,CAAC;QAC/D;MAEA,KAAA,EAAA;QAAmB;UACjB,OAAO,IAAI,CAACA,iCAAiC,CAAA,EAAA,EAAgB,GAAG,CAAC;QACnE;MAEA,KAAA,EAAA;MACA,KAAA,EAAA;QAAkB;UAChB,OAAO,IAAI,CAACC,mBAAmB,CAAC,MAAM,CAAC;QACzC;MAEA,KAAA,EAAA;MACA,KAAA,EAAA;MACA,KAAA,EAAA;QAAc;UACZ,MAAMC,YAAY,GAAG,IAAI,CAACt2D,eAAe,CACvC,kBAAkB,EAClB,UACF,CAAC;UAED,IAAIs2D,YAAY,EAAE;YAChB,OAAO,IAAI,CAACD,mBAAmB,CAACC,YAAY,CAAC;UAC/C;UACA,IAAI,CAACjmE,UAAU,CAAA,CAAE;UACjB;QACF;MAEA,KAAA,EAAA;QAAY;UACV,MAAMqyB,WAAW,GAAG,IAAI,CAACnK,KAAK,CAACoK,WAAW,CAAC,IAAI,CAACzC,cAAc,CAAA,CAAE,CAAC;UACjE,IACEhO,iBAAiB,CAACwQ,WAAW,CAAC,IAC9BA,WAAW,OAA0B,EACrC;YACA,IAAI,CAACuC,eAAe,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;UACrD,CAAC,MAAM;YACL,IAAI,CAAC50B,UAAU,CAAA,CAAE;UACnB;UACA;QACF;MAEA;QACE,IAAqCjF,IAAI,QAAe,EAAE;UACxD,OAAO,IAAI,CAACyS,mBAAmB,CAAC,IAAI,CAAC0F,KAAK,CAACpL,KAAK,CAAC;QACnD;QAEA,IAAIgY,iBAAiB,CAAC/kB,IAAI,CAAC,EAAE;UAC3B,IACE,IAAI,CAAC88B,YAAY,CAAA,GAAW,CAAC,IAC7B,IAAI,CAAC1H,uBAAuB,CAAE,CAAA,KAAA,GAA6B,EAC3D;YACA,OAAO,IAAI,CAAC+1C,qBAAqB,EAAE;UACrC;UACA,MAAMh2B,UAAU,GAAG,IAAI,CAACh9B,KAAK,CAACmW,gBAAgB,KAAK,IAAI,CAACnW,KAAK,CAACxa,KAAK;UACnE,MAAMkyB,WAAW,GAAG,IAAI,CAAC1X,KAAK,CAAC0X,WAAW;UAC1C,MAAM9a,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;UAEjC,IACE,CAACtW,WAAW,IACZ9a,EAAE,CAAC7O,IAAI,KAAK,OAAO,IACnB,CAAC,IAAI,CAACo3B,kBAAkB,EAAE,EAC1B;YACA,MAAM;cAAEt9B;aAAM,GAAG,IAAI,CAACmY,KAAK;YAC3B,IAAInY,IAAI,OAAiB,EAAE;cACzB,IAAI,CAACwtB,iCAAiC,CAACzY,EAAE,CAAC;cAC1C,IAAI,CAACkT,IAAI,CAAA,CAAE;cACX,OAAO,IAAI,CAACmjD,4BAA4B,CACtC,IAAI,CAAClyD,eAAe,CAACnE,EAAE,CACzB,CAAC;YACH,CAAC,MAAM,IAAIgQ,iBAAiB,CAAC/kB,IAAI,CAAC,EAAE;cAIlC,IAAI,IAAI,CAACi1B,iBAAiB,CAAE,CAAA,OAAuB,EAAE;gBAInD,OAAO,IAAI,CAACo2C,4BAA4B,CACtC,IAAI,CAACnyD,eAAe,CAACnE,EAAE,CACzB,CAAC;cACH,CAAC,MAAM;gBAGL,OAAOA,EAAE;cACX;YACF,CAAC,MAAM,IAAI/U,IAAI,KAAA,EAAW,EAAE;cAC1B,IAAI,CAACwtB,iCAAiC,CAACzY,EAAE,CAAC;cAC1C,OAAO,IAAI,CAAC61D,OAAO,CAAC,IAAI,CAAC1xD,eAAe,CAACnE,EAAE,CAAC,EAAE,IAAI,CAAC;YACrD;UACF;UAEA,IACEogC,UAAU,IACV,IAAI,CAACrjB,KAAK,CAAS,EAAA,CAAC,IACpB,CAAC,IAAI,CAACwL,kBAAkB,EAAE,EAC1B;YACA,IAAI,CAACrV,IAAI,CAAA,CAAE;YACX,OAAO,IAAI,CAAC2tB,oBAAoB,CAC9B,IAAI,CAAC18B,eAAe,CAACnE,EAAE,CAAC,EACxB,CAACA,EAAE,CAAC,EACJ,KACF,CAAC;UACH;UAEA,OAAOA,EAAE;QACX,CAAC,MAAM;UACL,IAAI,CAAC9P,UAAU,CAAA,CAAE;QACnB;IACJ;EACF;EAYA+lE,iCAAiCA,CAC/BM,cAAyB,EACzBC,eAAuB,EACT;IACd,MAAML,YAAY,GAAG,IAAI,CAACt2D,eAAe,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAEzE,IAAIs2D,YAAY,EAAE;MAKhB,IAAI,CAAC/yD,KAAK,CAACnY,IAAI,GAAGsrE,cAAc;MAChC,IAAI,CAACnzD,KAAK,CAACpL,KAAK,GAAGw+D,eAAe;MAGlC,IAAI,CAACpzD,KAAK,CAAC/J,GAAG,EAAE;MAChB,IAAI,CAAC+J,KAAK,CAACva,GAAG,EAAE;MAGhB,IAAI,CAACua,KAAK,CAACoB,MAAM,GAAGxb,8BAA8B,CAAC,IAAI,CAACoa,KAAK,CAACoB,MAAM,EAAE,CAAC,CAAC,CAAC;MAEzE,OAAO,IAAI,CAAC0xD,mBAAmB,CAACC,YAAY,CAAC;IAC/C,CAAC,MAAM;MACL,IAAI,CAACjmE,UAAU,CAAA,CAAE;IACnB;EACF;EAQAgmE,mBAAmBA,CAACC,YAAoB,EAAgB;IACtD,MAAMnrE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;IAC/C,MAAMe,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IACpC,MAAMuoD,SAAS,GAAG,IAAI,CAAC7mD,KAAK,CAACnY,IAAI;IAGjC,IAAI,CAACioB,IAAI,CAAA,CAAE;IAKX,OAAO,IAAI,CAACujD,oBAAoB,CAACzrE,IAAI,EAAE0W,QAAQ,EAAEy0D,YAAY,EAAElM,SAAS,CAAC;EAC3E;EAeAwM,oBAAoBA,CAGlBzrE,IAAe,EACf0W,QAAkB,EAClBy0D,YAAoB,EACpBlM,SAAoB,EACjB;IACH,IACE,IAAI,CAACyM,+BAA+B,CAACP,YAAY,EAAEz0D,QAAQ,EAAEuoD,SAAS,CAAC,EACvE;MAMA,MAAM9F,QAAQ,GACZgS,YAAY,KAAK,OAAO,GACpB,+BAA+B,GAG/B,gBAAgB;MAEtB,IAAI,CAAC,IAAI,CAACQ,uCAAuC,EAAE,EAAE;QACnD,IAAI,CAACp0D,KAAK,CAIR4zD,YAAY,KAAK,OAAO,GACpB17D,MAAM,CAAC7C,sBAAsB,GAE7B6C,MAAM,CAACtD,gBAAgB,EAC3BuK,QACF,CAAC;MACH;MAIA,IAAI,CAACk1D,sBAAsB,CAAA,CAAE;MAE7B,OAAO,IAAI,CAAC91D,UAAU,CAAC9V,IAAI,EAAEm5D,QAAQ,CAAC;IACxC,CAAC,MAAM;MAEL,MAAM,IAAI,CAAC5hD,KAAK,CAAC9H,MAAM,CAACrD,0BAA0B,EAAEsK,QAAQ,EAAE;QAC5DrK,KAAK,EAAE0Z,cAAc,CAACk5C,SAAS;MACjC,CAAC,CAAC;IACJ;EACF;EAWAyM,+BAA+BA,CAC7BP,YAAoB,EACpBz0D,QAAkB,EAClBuoD,SAAoB,EACX;IACT,QAAQkM,YAAY;MAClB,KAAK,MAAM;QAAE;UACX,OAAO,IAAI,CAAClgD,SAAS,CAAC,CACpB,kBAAkB,EAClB;YAEEqM,UAAU,EAAEvR,cAAc,CAACk5C,SAAS;UACrC,CAAA,CACF,CAAC;QACJ;MACA,KAAK,OAAO;QACV,OAAOA,SAAS,KAAY,EAAA;MAC9B;QACE,MAAM,IAAI,CAAC1nD,KAAK,CAAC9H,MAAM,CAACvD,0BAA0B,EAAEwK,QAAQ,CAAC;IACjE;EACF;EAGA40D,4BAA4BA,CAE1BtrE,IAAuC,EACZ;IAG3B,IAAI,CAACs/B,SAAS,CAAC3V,KAAK,CAACiT,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC0C,SAAS,CAAC7C,QAAQ,CAAC,CAAC;IAClE,MAAM1oB,MAAM,GAAG,CAAC,IAAI,CAACqyB,eAAe,CAAE,CAAA,CAAC;IACvC,IAAI,CAAC9G,SAAS,CAAC1V,IAAI,EAAE;IACrB,IAAI,IAAI,CAAC4T,qBAAqB,EAAE,EAAE;MAChC,IAAI,CAACjmB,KAAK,CAAC9H,MAAM,CAAC9J,yBAAyB,EAAE,IAAI,CAACyS,KAAK,CAAC4X,WAAW,CAAA,CAAE,CAAC;IACxE;IACA,IAAI,CAAC6N,MAAM,CAAA,EAAS,CAAC;IAErB,OAAO,IAAI,CAACgY,oBAAoB,CAAC71C,IAAI,EAAE+T,MAAM,EAAE,IAAI,CAAC;EACtD;EAIA82D,OAAOA,CAEL7qE,IAA4B,EAC5B0T,OAAgB,EACA;IAChB,IAAI,CAACijB,YAAY,CAAC,eAAe,CAAC;IAClC,IAAIjjB,OAAO,EAAE;MACX,IAAI,CAACijB,YAAY,CAAC,oBAAoB,CAAC;IACzC;IACA32B,IAAI,CAAC40C,KAAK,GAAGlhC,OAAO;IACpB,IAAI,CAACwU,IAAI,CAAA,CAAE;IACX,MAAM6W,SAAS,GAAG,IAAI,CAAC3mB,KAAK,CAACyW,MAAM;IACnC,IAAI,CAACzW,KAAK,CAACyW,MAAM,GAAG,EAAE;IACtB,IAAInb,OAAO,EAAE;MAGX,IAAI,CAAC4rB,SAAS,CAAC3V,KAAK,EAAsB,CAAC;MAC3C3pB,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACgwD,UAAU,EAAE;MAC7B,IAAI,CAACplC,SAAS,CAAC1V,IAAI,EAAE;IACvB,CAAC,MAAM;MACL5pB,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACgwD,UAAU,EAAE;IAC/B;IAEA,IAAI,CAACtsD,KAAK,CAACyW,MAAM,GAAGkQ,SAAS;IAC7B,OAAO,IAAI,CAACjpB,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAGA0qE,UAAUA,CAAAA,EAAY;IACpB,MAAM1qE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAW;IACtC,IAAI,CAACuS,IAAI,CAAA,CAAE;IACX,IACE,IAAI,CAAC6J,KAAK,CAAA,EAAU,CAAC,IACrB,CAAC,IAAI,CAAClI,KAAK,CAACrU,gBAAgB,IAC5B,EAAE,IAAI,CAAC5D,WAAW,KAAsC,CAAC,EACzD;MACA,IAAI,CAAC2F,KAAK,CAAC9H,MAAM,CAAChH,eAAe,EAAEzI,IAAI,CAAC;IAC1C,CAAC,MAAM,IACL,CAAC,IAAI,CAAC6pB,KAAK,CAACZ,UAAU,IACtB,EAAE,IAAI,CAACrX,WAAW,KAAsC,CAAC,EACzD;MACA,IAAI,CAAC2F,KAAK,CAAC9H,MAAM,CAAC9F,eAAe,EAAE3J,IAAI,CAAC;IAC1C;IAEA,IACE,CAAC,IAAI,CAAC+xB,KAAK,GAAU,CAAC,IACtB,CAAC,IAAI,CAACA,KAAK,CAAY,CAAA,CAAC,IACxB,CAAC,IAAI,CAACA,KAAK,CAAA,EAAO,CAAC,EACnB;MACA,IAAI,CAACxa,KAAK,CAAC9H,MAAM,CAAChF,gBAAgB,EAAEzK,IAAI,CAAC;IAC3C;IAEA,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,OAAO,CAAC;EACvC;EAEA4U,gBAAgBA,CAAAA,EAAkB;IAChC,MAAM5U,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAiB;IAC5C,MAAMX,EAAE,GAAG,IAAI,CAAC0rB,WAAW,CAGzB1iC,8BAA8B,CAAC,IAAI,CAACoa,KAAK,CAAC1B,QAAQ,EAAE,CAAC,CACvD,CAAC;IACD,MAAMvQ,IAAI,GAAG,IAAI,CAACiS,KAAK,CAACpL,KAAK;IAC7B,IAAI,CAACkb,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACi4B,gBAAgB,CAACj4B,EAAE,EAAE7O,IAAI,CAAC;IACzC,OAAO,IAAI,CAAC2P,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEA8qE,2BAA2BA,CAAAA,EAEc;IACvC,MAAM9qE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAyC;IAOpE,IAAI,CAACuS,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAACoX,SAAS,CAAC7C,QAAQ,IAAI,IAAI,CAAC1K,KAAK,CAAO,EAAA,CAAC,EAAE;MACjD,MAAM85C,IAAI,GAAG,IAAI,CAAC5+B,gBAAgB,CAChC,IAAI,CAAC9zB,eAAe,CAAenZ,IAAI,CAAC,EACxC,UACF,CAAC;MACD,IAAI,CAACkoB,IAAI,CAAA,CAAE;MAEX,IAAI,IAAI,CAAC6J,KAAK,CAAA,GAAS,CAAC,EAAE;QACxB,IAAI,CAAC4E,YAAY,CAAC,cAAc,CAAC;MAClC,CAAA,MAAM,IAAI,CAAC,IAAI,CAAC1L,SAAS,CAAC,cAAc,CAAC,EAAE;QAE1C,IAAI,CAAC/lB,UAAU,CAAA,CAAE;MACnB;MACA,OAAO,IAAI,CAAC4mE,iBAAiB,CAC3B9rE,IAAI,EACJ6rE,IAAI,EACJ,MACF,CAAC;IACH;IACA,OAAO,IAAI,CAACE,aAAa,CAAC/rE,IAAoC,CAAC;EACjE;EAEA8rE,iBAAiBA,CACf9rE,IAA4B,EAC5B6rE,IAAkB,EAClBvd,YAAoB,EACJ;IAChBtuD,IAAI,CAAC6rE,IAAI,GAAGA,IAAI;IAEhB,MAAM/7C,WAAW,GAAG,IAAI,CAAC1X,KAAK,CAAC0X,WAAW;IAE1C9vB,IAAI,CAAC6+B,QAAQ,GAAG,IAAI,CAACuH,eAAe,CAAC,IAAI,CAAC;IAE1C,IAAIpmC,IAAI,CAAC6+B,QAAQ,CAAC14B,IAAI,KAAKmoD,YAAY,IAAIx+B,WAAW,EAAE;MACtD,IAAI,CAACvY,KAAK,CAAC9H,MAAM,CAACrF,uBAAuB,EAAEpK,IAAI,CAAC6+B,QAAQ,EAAE;QACxDx0B,MAAM,EAAEwhE,IAAI,CAAC1lE,IAAI;QACjBmE,qBAAqB,EAAEgkD;MACzB,CAAC,CAAC;IACJ;IAEA,OAAO,IAAI,CAACx4C,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAGA2qE,uBAAuBA,CAErB3qE,IAAiD,EACZ;IACrC,MAAMgV,EAAE,GAAG,IAAI,CAACi4B,gBAAgB,CAC9B,IAAI,CAAC9zB,eAAe,CAAenZ,IAAI,CAAC,EACxC,QACF,CAAC;IACD,IAAI,CAACkoB,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAAC6U,YAAY,CAAA,GAAS,CAAC,EAAE;MAC/B,IAAI,CAAC,IAAI,CAACrV,QAAQ,EAAE;QAClB,IAAI,CAACnQ,KAAK,CAAC9H,MAAM,CAACpR,uBAAuB,EAAE2W,EAAE,CAAC;MAChD;MACA,IAAI,CAAC2V,iBAAiB,GAAG,IAAI;IAC/B,CAAC,MAAM,IAAI,IAAI,CAACoS,YAAY,CAAA,GAAW,CAAC,IAAI,IAAI,CAACA,YAAY,CAAA,EAAU,CAAC,EAAE;MACxE,MAAMivC,QAAQ,GAAG,IAAI,CAACjvC,YAAY,IAAW,CAAC;MAE9C,IAAI,CAACpG,YAAY,CACfq1C,QAAQ,GAAG,oBAAoB,GAAG,0BACpC,CAAC;MACD,IAAI,EAAE,IAAI,CAACp6D,WAAW,MAAsC,CAAC,EAAE;QAC7D,MAAM,IAAI,CAAC2F,KAAK,CACd9H,MAAM,CAAClN,2CAA2C,EAClD,IAAI,CAAC6V,KAAK,CAAC1B,QAAQ,EACnB;UACElU,KAAK,EAAE,IAAI,CAAC4V,KAAK,CAACpL;QACpB,CACF,CAAC;MACH;MACA,IAAI,CAACkb,IAAI,CAAA,CAAE;MACVloB,IAAI,CAAgCwC,KAAK,GAAGwpE,QAAQ,GACjD,QAAQ,GACR,OAAO;MACX,OAAO,IAAI,CAACpB,eAAe,CAAC5qE,IAAkC,CAAC;IACjE;IAEA,OAAO,IAAI,CAAC8rE,iBAAiB,CAAC9rE,IAAI,EAA4BgV,EAAE,EAAE,MAAM,CAAC;EAC3E;EAEAg4B,kBAAkBA,CAChBhgC,KAAU,EACV/M,IAAe,EACfD,IAAS,EACN;IACH,IAAI,CAAC88B,QAAQ,CAAC98B,IAAI,EAAE,UAAU,EAAEgN,KAAK,CAAC;IACtC,IAAI,CAAC8vB,QAAQ,CACX98B,IAAI,EACJ,KAAK,EACL,IAAI,CAACotB,KAAK,CAAC6C,KAAK,CAAC,IAAI,CAAClF,iBAAiB,CAAC/qB,IAAI,CAACpC,KAAK,CAAC,EAAE,IAAI,CAACwa,KAAK,CAACva,GAAG,CACrE,CAAC;IACDmC,IAAI,CAACgN,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACkb,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAI9V,IAAI,EAAEC,IAAI,CAAC;EACvC;EAEA2S,YAAYA,CAAmB5F,KAAU,EAAE/M,IAAe,EAAK;IAC7D,MAAMD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAE;IAC7B,OAAO,IAAI,CAACq3B,kBAAkB,CAAChgC,KAAK,EAAE/M,IAAI,EAAED,IAAI,CAAC;EACnD;EAEA6S,kBAAkBA,CAAC7F,KAAU,EAAE;IAC7B,OAAO,IAAI,CAAC4F,YAAY,CAAkB5F,KAAK,EAAE,eAAe,CAAC;EACnE;EAEA8F,mBAAmBA,CAAC9F,KAAU,EAAE;IAC9B,OAAO,IAAI,CAAC4F,YAAY,CAAmB5F,KAAK,EAAE,gBAAgB,CAAC;EACrE;EAEAoF,kBAAkBA,CAACpF,KAAU,EAAE;IAC7B,OAAO,IAAI,CAAC4F,YAAY,CAAkB5F,KAAK,EAAE,eAAe,CAAC;EACnE;EAGA0F,mBAAmBA,CAAC1F,KAAU,EAAE;IAC9B,OAAO,IAAI,CAAC4F,YAAY,CAAmB5F,KAAK,EAAE,gBAAgB,CAAC;EACrE;EAEA6E,kBAAkBA,CAAC7E,KAIlB,EAAE;IACD,MAAMhN,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAmB;IAC9C,IAAI,CAACmnB,QAAQ,CACX98B,IAAI,EACJ,KAAK,EACL,IAAI,CAACotB,KAAK,CAAC6C,KAAK,CAAC,IAAI,CAAClF,iBAAiB,CAAC/qB,IAAI,CAACpC,KAAK,CAAC,EAAE,IAAI,CAACwa,KAAK,CAACva,GAAG,CACrE,CAAC;IACDmC,IAAI,CAAC8R,OAAO,GAAG9E,KAAK,CAAC8E,OAAO;IAC5B9R,IAAI,CAAC+R,KAAK,GAAG/E,KAAK,CAAC+E,KAAK;IACxB,IAAI,CAACmW,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAgT,mBAAmBA,CAAChG,KAAc,EAAE;IAClC,MAAMhN,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;IAC/C3V,IAAI,CAACgN,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACkb,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEA+S,gBAAgBA,CAAAA,EAAG;IACjB,MAAM/S,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAiB;IAC5C,IAAI,CAACuS,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAGAm1C,kCAAkCA,CAEhCC,UAAmB,EACL;IACd,MAAM1+B,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAEpC,IAAIuc,GAAG;IACP,IAAI,CAAC/K,IAAI,CAAA,CAAE;IACX,IAAI,CAACsX,eAAe,CAAC7V,KAAK,CAACuS,iBAAiB,CAAE,CAAA,CAAC;IAE/C,MAAM4hC,yBAAyB,GAAG,IAAI,CAAC1lD,KAAK,CAACgX,sBAAsB;IACnE,MAAMk7C,6BAA6B,GAAG,IAAI,CAAClyD,KAAK,CAACwX,0BAA0B;IAC3E,IAAI,CAACxX,KAAK,CAACgX,sBAAsB,GAAG,IAAI;IACxC,IAAI,CAAChX,KAAK,CAACwX,0BAA0B,GAAG,KAAK;IAE7C,MAAMq8C,aAAa,GAAG,IAAI,CAAC7zD,KAAK,CAAC1B,QAAQ;IACzC,MAAMs6B,QAA0C,GAAG,EAAE;IACrD,MAAMr6B,mBAAmB,GAAG,IAAIipB,gBAAgB,EAAE;IAClD,IAAI8M,KAAK,GAAG,IAAI;IAChB,IAAIw/B,cAAc;IAClB,IAAIC,qBAAqB;IAEzB,OAAO,CAAC,IAAI,CAACp6C,KAAK,CAAA,EAAU,CAAC,EAAE;MAC7B,IAAI2a,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7O,MAAM,CAETlnB,EAAAA,EAAAA,mBAAmB,CAAC+nB,qBAAqB,KAAK,IAAI,GAC9C,IAAI,GACJ/nB,mBAAmB,CAAC+nB,qBAC1B,CAAC;QACD,IAAI,IAAI,CAAC3M,KAAK,CAAA,EAAU,CAAC,EAAE;UACzBo6C,qBAAqB,GAAG,IAAI,CAAC/zD,KAAK,CAAC1B,QAAQ;UAC3C;QACF;MACF;MAEA,IAAI,IAAI,CAACqb,KAAK,CAAA,EAAY,CAAC,EAAE;QAC3B,MAAMq6C,kBAAkB,GAAG,IAAI,CAACh0D,KAAK,CAAC1B,QAAQ;QAC9Cw1D,cAAc,GAAG,IAAI,CAAC9zD,KAAK,CAAC1B,QAAQ;QACpCs6B,QAAQ,CAACn1B,IAAI,CACX,IAAI,CAAC8zB,cAAc,CAAC,IAAI,CAACyc,gBAAgB,CAAE,CAAA,EAAEggB,kBAAkB,CACjE,CAAC;QAED,IAAI,CAAC,IAAI,CAACzf,mBAAmB,CAAA,EAA2B,CAAC,EAAE;UACzD;QACF;MACF,CAAC,MAAM;QACL3b,QAAQ,CAACn1B,IAAI,CACX,IAAI,CAACozB,uBAAuB,CAC1Bt4B,mBAAmB,EACnB,IAAI,CAACg5B,cACP,CACF,CAAC;MACH;IACF;IAEA,MAAM08B,WAAW,GAAG,IAAI,CAACj0D,KAAK,CAACsB,aAAa;IAC5C,IAAI,CAACmkB,MAAM,CAAA,EAAU,CAAC;IAEtB,IAAI,CAACzlB,KAAK,CAACgX,sBAAsB,GAAG0uC,yBAAyB;IAC7D,IAAI,CAAC1lD,KAAK,CAACwX,0BAA0B,GAAG06C,6BAA6B;IAErE,IAAIgC,SAAS,GAAG,IAAI,CAAC5rC,WAAW,CAA4BhqB,QAAQ,CAAC;IACrE,IACE0+B,UAAU,IACV,IAAI,CAACN,gBAAgB,CAAC9D,QAAQ,CAAC,KAC9Bs7B,SAAS,GAAG,IAAI,CAACz3B,UAAU,CAACy3B,SAAS,CAAC,CAAC,EACxC;MACA,IAAI,CAAC3sC,yBAAyB,CAAChpB,mBAAmB,CAAC;MACnD,IAAI,CAAC6oB,eAAe,CAACxD,iBAAiB,EAAE;MACxC,IAAI,CAACwD,eAAe,CAAC5V,IAAI,EAAE;MAC3B,IAAI,CAACisB,oBAAoB,CAACy2B,SAAS,EAAEt7B,QAAQ,EAAE,KAAK,CAAC;MAErD,OAAOs7B,SAAS;IAClB;IACA,IAAI,CAAC9sC,eAAe,CAAC5V,IAAI,EAAE;IAE3B,IAAI,CAAConB,QAAQ,CAACx4B,MAAM,EAAE;MACpB,IAAI,CAACtT,UAAU,CAAC,IAAI,CAACkT,KAAK,CAACC,eAAe,CAAC;IAC7C;IACA,IAAI8zD,qBAAqB,EAAE,IAAI,CAACjnE,UAAU,CAACinE,qBAAqB,CAAC;IACjE,IAAID,cAAc,EAAE,IAAI,CAAChnE,UAAU,CAACgnE,cAAc,CAAC;IACnD,IAAI,CAAC7tC,qBAAqB,CAAC1nB,mBAAmB,EAAE,IAAI,CAAC;IAErD,IAAI,CAACu1C,oBAAoB,CAAClb,QAAQ,EAA4B,IAAI,CAAC;IACnE,IAAIA,QAAQ,CAACx4B,MAAM,GAAG,CAAC,EAAE;MACvBya,GAAG,GAAG,IAAI,CAACyN,WAAW,CAAuBurC,aAAa,CAAC;MAC3Dh5C,GAAG,CAACwwC,WAAW,GAAGzyB,QAA0B;MAE5C,IAAI,CAACl7B,UAAU,CAACmd,GAAG,EAAE,oBAAoB,CAAC;MAC1C,IAAI,CAACxZ,gBAAgB,CAACwZ,GAAG,EAAEo5C,WAAW,CAAC;IACzC,CAAC,MAAM;MACLp5C,GAAG,GAAG+d,QAAQ,CAAC,CAAC,CAAC;IACnB;IAEA,OAAO,IAAI,CAACu7B,eAAe,CACzB71D,QAAQ,EAERuc,GACF,CAAC;EACH;EAEAs5C,eAAeA,CAAC71D,QAAkB,EAAEvD,UAAwB,EAAgB;IAC1E,IAAI,EAAE,IAAI,CAACvB,WAAW,MAA6C,CAAC,EAAE;MACpE,IAAI,CAACkrB,QAAQ,CAAC3pB,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC;MAChD,IAAI,CAAC2pB,QAAQ,CAAC3pB,UAAU,EAAE,YAAY,EAAEuD,QAAQ,CAACjZ,KAAK,CAAC;MAEvD,IAAI,CAACkwB,uBAAuB,CAC1Bxa,UAAU,EACVuD,QAAQ,CAACjZ,KAAK,EACd,IAAI,CAAC2a,KAAK,CAACsB,aAAa,CAACjc,KAC3B,CAAC;MAED,OAAO0V,UAAU;IACnB;IAEA,MAAMq5D,eAAe,GACnB,IAAI,CAAC9rC,WAAW,CAA4BhqB,QAAQ,CAAC;IACvD81D,eAAe,CAACr5D,UAAU,GAAGA,UAAU;IACvC,OAAO,IAAI,CAAC2C,UAAU,CAAC02D,eAAe,EAAE,yBAAyB,CAAC;EACpE;EAGA13B,gBAAgBA,CAAC/gC,MAAqB,EAAW;IAC/C,OAAO,CAAC,IAAI,CAACwpB,kBAAkB,EAAE;EACnC;EAEAsX,UAAUA,CACR70C,IAAuC,EACQ;IAC/C,IAAI,IAAI,CAACy0B,GAAG,CAAA,EAAS,CAAC,EAAE;MACtB,OAAOz0B,IAAI;IACb;EACF;EAEA2vC,cAAcA,CACZ3vC,IAAO,EAEP0W,QAAkB,EACiC;IACnD,OAAO1W,IAAI;EACb;EAEAgrE,mBAAmBA,CAAAA,EAAiD;IAClE,MAAMhrE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoC;IAC/D,IAAI,CAACuS,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAAC6J,KAAK,CAAA,EAAO,CAAC,EAAE;MAEtB,MAAM85C,IAAI,GAAG,IAAI,CAAC5+B,gBAAgB,CAChC,IAAI,CAAC9zB,eAAe,CAAenZ,IAAI,CAAC,EACxC,KACF,CAAC;MACD,IAAI,CAACkoB,IAAI,CAAA,CAAE;MACX,MAAMukD,QAAQ,GAAG,IAAI,CAACX,iBAAiB,CACrC9rE,IAAI,EACJ6rE,IAAI,EACJ,QACF,CAAC;MAED,IACE,CAAC,IAAI,CAAChiD,KAAK,CAACN,kBAAkB,IAC9B,CAAC,IAAI,CAACM,KAAK,CAACV,OAAO,IACnB,EAAE,IAAI,CAACvX,WAAW,IAA4C,CAAC,EAC/D;QACA,IAAI,CAAC2F,KAAK,CAAC9H,MAAM,CAAClG,mBAAmB,EAAEkjE,QAAQ,CAAC;MAClD;MAEA,OAAOA,QAAQ;IACjB;IAEA,OAAO,IAAI,CAACC,QAAQ,CAAC1sE,IAA+B,CAAC;EACvD;EAQA0sE,QAAQA,CAAe1sE,IAA6B,EAAmB;IACrE,IAAI,CAAC21C,cAAc,CAAC31C,IAAI,CAAC;IAEzB,IAAI,IAAI,CAACy0B,GAAG,CAAA,EAAU,CAAC,EAAE;MACvB,MAAMxe,IAAI,GAAG,IAAI,CAAC02D,aAAa,GAAU,CAAC;MAC1C,IAAI,CAAC17B,gBAAgB,CAACh7B,IAAI,CAAC;MAE3BjW,IAAI,CAAC8X,SAAS,GAAG7B,IAAI;IACvB,CAAC,MAAM;MACLjW,IAAI,CAAC8X,SAAS,GAAG,EAAE;IACrB;IAEA,OAAO,IAAI,CAAChC,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEA21C,cAAcA,CAAe31C,IAA6B,EAAQ;IAChE,MAAM4iE,QAAQ,GAAG,IAAI,CAAC7wC,KAAK,GAAW,CAAC;IACvC,MAAMpa,MAAM,GAAG,IAAI,CAACsyD,eAAe,EAAE;IACrCjqE,IAAI,CAAC2X,MAAM,GAAGA,MAAM;IACpB,IACEirD,QAAQ,KACPjrD,MAAM,CAAC1X,IAAI,KAAK,QAAQ,IAAI0X,MAAM,CAAC1X,IAAI,KAAK,kBAAkB,CAAC,EAChE;MACA,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC/L,0BAA0B,EAAEiU,MAAM,CAAC;IACvD;EACF;EAIAi1D,oBAAoBA,CAACC,QAAiB,EAAqB;IACzD,MAAM;MAAEjvE,KAAK;MAAE8Y,QAAQ;MAAE7Y,GAAG;MAAEmP;KAAO,GAAG,IAAI,CAACoL,KAAK;IAClD,MAAM00D,SAAS,GAAGlvE,KAAK,GAAG,CAAC;IAC3B,MAAMmvE,IAAI,GAAG,IAAI,CAACrsC,WAAW,CAC3B1iC,8BAA8B,CAAC0Y,QAAQ,EAAE,CAAC,CAC5C,CAAC;IACD,IAAI1J,KAAK,KAAK,IAAI,EAAE;MAClB,IAAI,CAAC6/D,QAAQ,EAAE;QACb,IAAI,CAACt1D,KAAK,CACR9H,MAAM,CAAClL,6BAA6B,EAEpCvG,8BAA8B,CAC5B,IAAI,CAACoa,KAAK,CAAC2W,6BAA6B,EACxC,CACF,CACF,CAAC;MACH;IACF;IAEA,MAAMi+C,MAAM,GAAG,IAAI,CAACj7C,KAAK,GAAgB,CAAC;IAC1C,MAAMk7C,SAAS,GAAGD,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC,MAAME,OAAO,GAAGrvE,GAAG,GAAGovE,SAAS;IAC/BF,IAAI,CAAC//D,KAAK,GAAG;MACXoG,GAAG,EAAE,IAAI,CAACga,KAAK,CAAC6C,KAAK,CAAC68C,SAAS,EAAEI,OAAO,CAAC,CAACv0C,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;MACjEw0C,MAAM,EAAEngE,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAACijB,KAAK,CAAC,CAAC,EAAEg9C,SAAS;KACzD;IACDF,IAAI,CAACK,IAAI,GAAGJ,MAAM;IAClB,IAAI,CAAC9kD,IAAI,CAAA,CAAE;IACX,MAAMsgD,YAAY,GAAG,IAAI,CAAC1yD,UAAU,CAACi3D,IAAI,EAAE,iBAAiB,CAAC;IAC7D,IAAI,CAACtzD,gBAAgB,CACnB+uD,YAAY,EACZxqE,8BAA8B,CAAC,IAAI,CAACoa,KAAK,CAACsB,aAAa,EAAEuzD,SAAS,CACpE,CAAC;IACD,OAAOzE,YAAY;EACrB;EAGA1P,aAAaA,CAAe+T,QAAiB,EAAqB;IAChE,MAAM7sE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;IAChD,IAAI03D,MAAM,GAAG,IAAI,CAACT,oBAAoB,CAACC,QAAQ,CAAC;IAChD,MAAMS,MAAM,GAAG,CAACD,MAAM,CAAC;IACvB,MAAME,aAAa,GAAG,EAAE;IACxB,OAAO,CAACF,MAAM,CAACD,IAAI,EAAE;MACnBG,aAAa,CAAC1xD,IAAI,CAAC,IAAI,CAACk9C,yBAAyB,CAAE,CAAA,CAAC;MACpD,IAAI,CAACz/B,wBAAwB,CAAA,CAAE;MAC/Bg0C,MAAM,CAACzxD,IAAI,CAAEwxD,MAAM,GAAG,IAAI,CAACT,oBAAoB,CAACC,QAAQ,CAAE,CAAC;IAC7D;IAGA7sE,IAAI,CAACyjE,WAAW,GAAG8J,aAA4C;IAC/DvtE,IAAI,CAACstE,MAAM,GAAGA,MAAM;IACpB,OAAO,IAAI,CAACx3D,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAGA+4D,yBAAyBA,CAAAA,EAAwC;IAC/D,OAAO,IAAI,CAACjzB,eAAe,EAAE;EAC/B;EAsBAymB,eAAeA,CAEblb,KAAgB,EAChB/6B,SAAkB,EAClB4wD,QAAyB,EACzBvwD,mBAA6C,EAC1C;IACH,IAAIuwD,QAAQ,EAAE;MACZ,IAAI,CAACvwC,YAAY,CAAC,gBAAgB,CAAC;IACrC;IACA,MAAM2zC,6BAA6B,GAAG,IAAI,CAAClyD,KAAK,CAACwX,0BAA0B;IAC3E,IAAI,CAACxX,KAAK,CAACwX,0BAA0B,GAAG,KAAK;IAC7C,MAAM49C,QAAa,GAAGvgE,MAAM,CAACqzB,MAAM,CAAC,IAAI,CAAC;IACzC,IAAIoM,KAAK,GAAG,IAAI;IAChB,MAAM1sC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAExB;IAEH3V,IAAI,CAACstB,UAAU,GAAG,EAAE;IACpB,IAAI,CAACpF,IAAI,CAAA,CAAE;IAEX,OAAO,CAAC,IAAI,CAAC6J,KAAK,CAACsf,KAAK,CAAC,EAAE;MACzB,IAAI3E,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7O,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAAC9L,KAAK,CAACsf,KAAK,CAAC,EAAE;UACrB,IAAI,CAACk5B,2BAA2B,CAACvqE,IAAI,CAAC;UACtC;QACF;MACF;MAEA,IAAIqW,IAAI;MACR,IAAIC,SAAS,EAAE;QACbD,IAAI,GAAG,IAAI,CAAC02C,oBAAoB,EAAE;MACpC,CAAC,MAAM;QACL12C,IAAI,GAAG,IAAI,CAACo3D,uBAAuB,CAAC92D,mBAAmB,CAAC;QACxD,IAAI,CAACswD,UAAU,CAAC5wD,IAAI,EAAE6wD,QAAQ,EAAEsG,QAAQ,EAAE72D,mBAAmB,CAAC;MAChE;MAEA,IACEuwD,QAAQ,IACR,CAAC,IAAI,CAACtzD,gBAAgB,CAACyC,IAAI,CAAC,IAC5BA,IAAI,CAACpW,IAAI,KAAK,eAAe,EAC7B;QACA,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAACnK,qBAAqB,EAAE+Q,IAAI,CAAC;MAChD;MAEmC;QAEjC,IAAIA,IAAI,CAACG,SAAS,EAAE;UAClB,IAAI,CAACsmB,QAAQ,CAACzmB,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;QACxC;MACF;MAGArW,IAAI,CAACstB,UAAU,CAACzR,IAAI,CAACxF,IAAI,CAAC;IAC5B;IAEA,IAAI,CAAC6R,IAAI,CAAA,CAAE;IAEX,IAAI,CAAC9P,KAAK,CAACwX,0BAA0B,GAAG06C,6BAA6B;IACrE,IAAIrqE,IAAI,GAAG,kBAAkB;IAC7B,IAAIqW,SAAS,EAAE;MACbrW,IAAI,GAAG,eAAe;IACvB,CAAA,MAAM,IAAIinE,QAAQ,EAAE;MACnBjnE,IAAI,GAAG,kBAAkB;IAC3B;IAEA,OAAO,IAAI,CAAC6V,UAAU,CAAC9V,IAAI,EAAEC,IAAI,CAAC;EACpC;EAEAsqE,2BAA2BA,CAACvqE,IAAoB,EAAQ;IACtD,IAAI,CAAC88B,QAAQ,CAAC98B,IAAI,EAAE,eAAe,EAAE,IAAI,CAACoY,KAAK,CAACC,eAAe,CAAC5a,KAAK,CAAC;IACtE,IAAI,CAACq/B,QAAQ,CAAC98B,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAACoY,KAAK,CAACC,eAAe,EAAE,KAAK,CAAC;EAC5E;EAKAq1D,wBAAwBA,CACtBr3D,IAA8B,EACe;IAC7C,OACE,CAACA,IAAI,CAACR,QAAQ,IACdQ,IAAI,CAACxP,GAAG,CAAC5G,IAAI,KAAK,YAAY,KAC7B,IAAI,CAAC2+B,qBAAqB,CAAA,CAAE,IAC3B,IAAI,CAAC7M,KAAK,CAAA,CAAY,CAAC,IACvB,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,CAAC;EAE1B;EAGA07C,uBAAuBA,CAErB92D,mBAA6C,EACX;IAClC,IAAIuB,UAAU,GAAG,EAAE;IACnB,IAAI,IAAI,CAAC6Z,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,IAAI,IAAI,CAAC9G,SAAS,CAAC,YAAY,CAAC,EAAE;QAChC,IAAI,CAAC1T,KAAK,CAAC9H,MAAM,CAACjF,4BAA4B,EAAE,IAAI,CAAC4N,KAAK,CAAC1B,QAAQ,CAAC;MACtE;MAIA,OAAO,IAAI,CAACqb,KAAK,CAAA,EAAM,CAAC,EAAE;QACxB7Z,UAAU,CAAC2D,IAAI,CAAC,IAAI,CAAC+wC,cAAc,CAAE,CAAA,CAAC;MACxC;IACF;IAEA,MAAMv2C,IAAI,GAAG,IAAI,CAACV,SAAS,EAAoB;IAC/C,IAAIjC,OAAO,GAAG,KAAK;IACnB,IAAI6C,UAAU,GAAG,KAAK;IACtB,IAAIG,QAAQ;IAEZ,IAAI,IAAI,CAACqb,KAAK,CAAA,EAAY,CAAC,EAAE;MAC3B,IAAI7Z,UAAU,CAACM,MAAM,EAAE,IAAI,CAACtT,UAAU,CAAA,CAAE;MACxC,OAAO,IAAI,CAACinD,WAAW,EAAE;IAC3B;IAEA,IAAIj0C,UAAU,CAACM,MAAM,EAAE;MACrBnC,IAAI,CAAC6B,UAAU,GAAGA,UAAU;MAC5BA,UAAU,GAAG,EAAE;IACjB;IAEA7B,IAAI,CAACvC,MAAM,GAAG,KAAK;IAEnB,IAAI6C,mBAAmB,EAAE;MACvBD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAChC;IAEA,IAAIpB,WAAW,GAAG,IAAI,CAACmf,GAAG,GAAQ,CAAC;IACnC,IAAI,CAAC2d,+BAA+B,CAAC/7B,IAAI,CAAC;IAC1C,MAAMyZ,WAAW,GAAG,IAAI,CAAC1X,KAAK,CAAC0X,WAAW;IAC1C,IAAI,CAACk9B,iBAAiB,CAAC32C,IAAI,EAAEM,mBAAmB,CAAC;IAEjD,IAAI,CAACrB,WAAW,IAAI,CAACwa,WAAW,IAAI,IAAI,CAAC49C,wBAAwB,CAACr3D,IAAI,CAAC,EAAE;MACvE,MAAM;QAAExP;MAAK,CAAA,GAAGwP,IAAI;MACpB,MAAMs3D,OAAO,GAAG9mE,GAAG,CAACV,IAAI;MAGxB,IAAIwnE,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,CAACnwC,qBAAqB,CAAA,CAAE,EAAE;QACxD9pB,OAAO,GAAG,IAAI;QACd,IAAI,CAAC+Z,iCAAiC,CAAC5mB,GAAG,CAAC;QAC3CyO,WAAW,GAAG,IAAI,CAACmf,GAAG,GAAQ,CAAC;QAC/B,IAAI,CAACu4B,iBAAiB,CAAC32C,IAAI,CAAC;MAC9B;MAGA,IAAIs3D,OAAO,KAAK,KAAK,IAAIA,OAAO,KAAK,KAAK,EAAE;QAC1Cp3D,UAAU,GAAG,IAAI;QACjB,IAAI,CAACkX,iCAAiC,CAAC5mB,GAAG,CAAC;QAC3CwP,IAAI,CAAChW,IAAI,GAAGstE,OAAO;QACnB,IAAI,IAAI,CAAC57C,KAAK,CAAA,EAAQ,CAAC,EAAE;UACvBzc,WAAW,GAAG,IAAI;UAClB,IAAI,CAACiC,KAAK,CAAC9H,MAAM,CAACrP,mBAAmB,EAAE,IAAI,CAACgY,KAAK,CAAC4X,WAAW,EAAE,EAAE;YAC/D3vB,IAAI,EAAEstE;UACR,CAAC,CAAC;UACF,IAAI,CAACzlD,IAAI,CAAA,CAAE;QACb;QACA,IAAI,CAAC8kC,iBAAiB,CAAC32C,IAAI,CAAC;MAC9B;IACF;IAEA,OAAO,IAAI,CAACg8B,iBAAiB,CAC3Bh8B,IAAI,EACJK,QAAQ,EACRpB,WAAW,EACX5B,OAAO,EACP,KAAK,EACL6C,UAAU,EACVI,mBACF,CAAC;EACH;EAEAgrD,iCAAiCA,CAC/B7tD,MAAsC,EAC9B;IACR,OAAOA,MAAM,CAACzT,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;EACtC;EAGAwT,4BAA4BA,CAACC,MAAsC,EAAE;IACnE,OAAOA,MAAM,CAACC,MAAM;EACtB;EAIAo+B,uBAAuBA,CAACr+B,MAAsC,EAAQ;IAAA,IAAA85D,OAAA;IACpE,MAAM1hC,UAAU,GAAG,IAAI,CAACy1B,iCAAiC,CAAC7tD,MAAM,CAAC;IACjE,MAAMC,MAAM,GAAG,IAAI,CAACF,4BAA4B,CAACC,MAAM,CAAC;IAExD,IAAIC,MAAM,CAACyE,MAAM,KAAK0zB,UAAU,EAAE;MAChC,IAAI,CAAC30B,KAAK,CACRzD,MAAM,CAACzT,IAAI,KAAK,KAAK,GAAGoP,MAAM,CAAC3O,cAAc,GAAG2O,MAAM,CAAC1O,cAAc,EACrE+S,MACF,CAAC;IACH;IAEA,IACEA,MAAM,CAACzT,IAAI,KAAK,KAAK,IACrB,CAAA,CAAAutE,OAAA,GAAA75D,MAAM,CAACA,MAAM,CAACyE,MAAM,GAAG,CAAC,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzBo1D,OAAA,CAA2B3tE,IAAI,MAAK,aAAa,EACjD;MACA,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAACzO,sBAAsB,EAAE8S,MAAM,CAAC;IACnD;EACF;EAGAsC,iBAAiBA,CAEfC,IAA4B,EAC5Bf,WAAoB,EACpB5B,OAAgB,EAChB4C,SAAkB,EAClBC,UAAmB,EACgB;IACnC,IAAIA,UAAU,EAAE;MAEd,MAAMs3D,YAAY,GAAG,IAAI,CAACx4D,WAAW,CACnCgB,IAAI,EAGJf,WAAW,EACG,KAAK,EACC,KAAK,EACzB,KAAK,EACL,cACF,CAAC;MACD,IAAI,CAAC68B,uBAAuB,CAAC07B,YAAY,CAAC;MAC1C,OAAOA,YAAY;IACrB;IAEA,IAAIn6D,OAAO,IAAI4B,WAAW,IAAI,IAAI,CAACyc,KAAK,CAAU,EAAA,CAAC,EAAE;MACnD,IAAIzb,SAAS,EAAE,IAAI,CAACpR,UAAU,EAAE;MAChCmR,IAAI,CAAChW,IAAI,GAAG,QAAQ;MACpBgW,IAAI,CAACvC,MAAM,GAAG,IAAI;MAClB,OAAO,IAAI,CAACuB,WAAW,CACrBgB,IAAI,EACJf,WAAW,EACX5B,OAAO,EACa,KAAK,EACzB,KAAK,EACL,cACF,CAAC;IACH;EACF;EAIA+C,mBAAmBA,CAEjBJ,IAA8B,EAC9BK,QAAqC,EACrCJ,SAAkB,EAClBK,mBAA6C,EACR;IACrCN,IAAI,CAACG,SAAS,GAAG,KAAK;IAEtB,IAAI,IAAI,CAACie,GAAG,CAAA,EAAS,CAAC,EAAE;MACtBpe,IAAI,CAACrJ,KAAK,GAAGsJ,SAAS,GAClB,IAAI,CAACi8B,iBAAiB,CAAC,IAAI,CAACn6B,KAAK,CAAC1B,QAAQ,CAAC,GAC3C,IAAI,CAACu4B,uBAAuB,CAACt4B,mBAAmB,CAAC;MAErD,OAAO,IAAI,CAACb,UAAU,CAACO,IAAI,EAAE,gBAAgB,CAAC;IAChD;IAEA,IAAI,CAACA,IAAI,CAACR,QAAQ,IAAIQ,IAAI,CAACxP,GAAG,CAAC5G,IAAI,KAAK,YAAY,EAAE;MAKpD,IAAI,CAACyzC,iBAAiB,CAACr9B,IAAI,CAACxP,GAAG,CAACV,IAAI,EAAEkQ,IAAI,CAACxP,GAAG,CAACoH,GAAG,CAACrQ,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;MAEtE,IAAI0Y,SAAS,EAAE;QACbD,IAAI,CAACrJ,KAAK,GAAG,IAAI,CAACulC,iBAAiB,CACjC77B,QAAQ,EACR0pB,eAAe,CAAC/pB,IAAI,CAACxP,GAAG,CAC1B,CAAC;MACF,CAAA,MAAM,IAAI,IAAI,CAACkrB,KAAK,CAAA,EAAM,CAAC,EAAE;QAC5B,MAAMwM,kBAAkB,GAAG,IAAI,CAACnmB,KAAK,CAAC1B,QAAQ;QAC9C,IAAIC,mBAAmB,IAAI,IAAI,EAAE;UAC/B,IAAIA,mBAAmB,CAAC4nB,kBAAkB,KAAK,IAAI,EAAE;YACnD5nB,mBAAmB,CAAC4nB,kBAAkB,GAAGA,kBAAkB;UAC7D;QACF,CAAC,MAAM;UACL,IAAI,CAAChnB,KAAK,CAAC9H,MAAM,CAACvL,2BAA2B,EAAEq6B,kBAAkB,CAAC;QACpE;QACAloB,IAAI,CAACrJ,KAAK,GAAG,IAAI,CAACulC,iBAAiB,CACjC77B,QAAQ,EACR0pB,eAAe,CAAC/pB,IAAI,CAACxP,GAAG,CAC1B,CAAC;MACH,CAAC,MAAM;QACLwP,IAAI,CAACrJ,KAAK,GAAGozB,eAAe,CAAC/pB,IAAI,CAACxP,GAAG,CAAC;MACxC;MACAwP,IAAI,CAACG,SAAS,GAAG,IAAI;MAErB,OAAO,IAAI,CAACV,UAAU,CAACO,IAAI,EAAE,gBAAgB,CAAC;IAChD;EACF;EAEAg8B,iBAAiBA,CAEfh8B,IAAe,EACfK,QAAqC,EACrCpB,WAAoB,EACpB5B,OAAgB,EAChB4C,SAAkB,EAClBC,UAAmB,EACnBI,mBAA6C,EAC1C;IACH,MAAM3W,IAAI,GAAI,IAAI,CAACoW,iBAAiB,CAClCC,IAAI,EACJf,WAAW,EACX5B,OAAO,EACP4C,SAAS,EACTC,UACF,CAAC,IACC,IAAI,CAACE,mBAAmB,CACtBJ,IAAI,EACJK,QAAQ,EACRJ,SAAS,EACTK,mBACF,CAAO;IAET,IAAI,CAAC3W,IAAI,EAAE,IAAI,CAACkF,UAAU,EAAE;IAE5B,OAAOlF,IAAI;EACb;EAKAgtD,iBAAiBA,CAEf32C,IAE4B,EAC5BM,mBAA6C,EACvC;IACN,IAAI,IAAI,CAAC8d,GAAG,CAAA,CAAY,CAAC,EAAE;MACxBpe,IAAI,CAAmCR,QAAQ,GAAG,IAAI;MACvDQ,IAAI,CAACxP,GAAG,GAAG,IAAI,CAACooC,uBAAuB,EAAE;MACzC,IAAI,CAACpR,MAAM,CAAA,CAAY,CAAC;IAC1B,CAAC,MAAM;MAEL,MAAM;QAAE59B,IAAI;QAAE+M;OAAO,GAAG,IAAI,CAACoL,KAAK;MAClC,IAAIvR,GAAG;MAEP,IAAIqe,0BAA0B,CAACjlB,IAAI,CAAC,EAAE;QACpC4G,GAAG,GAAG,IAAI,CAACu/B,eAAe,CAAC,IAAI,CAAC;MAClC,CAAC,MAAM;QACL,QAAQnmC,IAAI;UACV,KAAA,GAAA;YACE4G,GAAG,GAAG,IAAI,CAACiM,mBAAmB,CAAC9F,KAAK,CAAC;YACrC;UACF,KAAA,GAAA;YACEnG,GAAG,GAAG,IAAI,CAACgM,kBAAkB,CAAC7F,KAAK,CAAC;YACpC;UACF,KAAA,GAAA;YACEnG,GAAG,GAAG,IAAI,CAACuL,kBAAkB,CAACpF,KAAK,CAAC;YACpC;UACF,KAAA,GAAA;YAAqB;cAEnB,MAAMyxB,aAAa,GAAG,IAAI,CAACrmB,KAAK,CAAC1B,QAAQ;cACzC,IAAIC,mBAAmB,IAAI,IAAI,EAAE;gBAC/B,IAAIA,mBAAmB,CAAC8nB,aAAa,KAAK,IAAI,EAAE;kBAC9C9nB,mBAAmB,CAAC8nB,aAAa,GAAGA,aAAa;gBACnD;cACF,CAAC,MAAM;gBACL,IAAI,CAAClnB,KAAK,CAAC9H,MAAM,CAAChG,sBAAsB,EAAEg1B,aAAa,CAAC;cAC1D;cACA53B,GAAG,GAAG,IAAI,CAAC+N,gBAAgB,EAAE;cAC7B;YACF;UACA;YACE,IAAqC3U,IAAI,QAAe,EAAE;cACxD4G,GAAG,GAAG,IAAI,CAAC6L,mBAAmB,CAAC1F,KAAK,CAAC;cACrC;YACF;YAEA,IAAI,CAAC9H,UAAU,CAAA,CAAE;QACrB;MACF;MACCmR,IAAI,CAASxP,GAAG,GAAGA,GAAG;MACvB,IAAI5G,IAAI,QAAmB,EAAE;QAE3BoW,IAAI,CAACR,QAAQ,GAAG,KAAK;MACvB;IACF;EACF;EAIApC,YAAYA,CAACzT,IAAoC,EAAE0T,OAAgB,EAAQ;IACzE1T,IAAI,CAACgV,EAAE,GAAG,IAAI;IACdhV,IAAI,CAAC8tE,SAAS,GAAG,KAAK;IACtB9tE,IAAI,CAAC40C,KAAK,GAAGlhC,OAAO;EACtB;EAIA2B,WAAWA,CAETrV,IAAe,EACfsV,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBC,gBAAyB,EACzBvV,IAAe,EACfwV,YAAqB,GAAG,KAAK,EAC1B;IACH,IAAI,CAAChC,YAAY,CAACzT,IAAI,EAAE0T,OAAO,CAAC;IAChC1T,IAAI,CAAC8tE,SAAS,GAAGx4D,WAAW;IAC5B,IAAI,CAACuU,KAAK,CAACF,KAAK,CACdL,MACiB,IACd7T,YAAY,QAAqB,CAAC,CAAC,IACnCD,gBAAgB,QAA4B,CAAC,CAClD,CAAC;IACD,IAAI,CAAC8pB,SAAS,CAAC3V,KAAK,CAACiT,aAAa,CAAClpB,OAAO,EAAE1T,IAAI,CAAC8tE,SAAS,CAAC,CAAC;IAC5D,IAAI,CAACl6B,mBAAmB,CAAC5zC,IAAI,EAAEuV,aAAa,CAAC;IAC7C,MAAMizD,YAAY,GAAG,IAAI,CAACz6B,0BAA0B,CAAC/tC,IAAI,EAAEC,IAAI,EAAE,IAAI,CAAC;IACtE,IAAI,CAACq/B,SAAS,CAAC1V,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IAEjB,OAAO4+C,YAAY;EACrB;EAKAp3B,cAAcA,CAEZC,KAAgB,EAChBC,YAAqB,EACrBC,OAAgB,EAChB56B,mBAA6C,EACN;IACvC,IAAI46B,OAAO,EAAE;MACX,IAAI,CAAC5a,YAAY,CAAC,gBAAgB,CAAC;IACrC;IACA,MAAM2zC,6BAA6B,GAAG,IAAI,CAAClyD,KAAK,CAACwX,0BAA0B;IAC3E,IAAI,CAACxX,KAAK,CAACwX,0BAA0B,GAAG,KAAK;IAC7C,MAAM5vB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAyC;IACpE,IAAI,CAACuS,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACisB,QAAQ,GAAG,IAAI,CAAC0gD,aAAa,CAChCt7B,KAAK,EACY,CAACE,OAAO,EACzB56B,mBAAmB,EAEnB3W,IACF,CAAC;IACD,IAAI,CAACoY,KAAK,CAACwX,0BAA0B,GAAG06C,6BAA6B;IACrE,OAAO,IAAI,CAACx0D,UAAU,CACpB9V,IAAI,EACJuxC,OAAO,GAAG,iBAAiB,GAAG,iBAChC,CAAC;EACH;EAKAsE,oBAAoBA,CAElB71C,IAAuC,EACvC+T,MAEuC,EACvCL,OAAgB,EAChB87B,gBAAkC,EACP;IAC3B,IAAI,CAAC3lB,KAAK,CAACF,KAAK,CAACL,KAAoC,CAAC;IACtD,IAAIvX,KAAK,GAAG6qB,aAAa,CAAClpB,OAAO,EAAE,KAAK,CAAC;IAIzC,IAAI,CAAC,IAAI,CAACqe,KAAK,CAAU,CAAA,CAAC,IAAI,IAAI,CAACuN,SAAS,CAAC3C,KAAK,EAAE;MAClD5qB,KAAK,KAAsB;IAC7B;IACA,IAAI,CAACutB,SAAS,CAAC3V,KAAK,CAAC5X,KAAK,CAAC;IAC3B,IAAI,CAAC0B,YAAY,CAACzT,IAAI,EAAE0T,OAAO,CAAC;IAChC,MAAMoqD,yBAAyB,GAAG,IAAI,CAAC1lD,KAAK,CAACgX,sBAAsB;IAEnE,IAAIrb,MAAM,EAAE;MACV,IAAI,CAACqE,KAAK,CAACgX,sBAAsB,GAAG,IAAI;MACxC,IAAI,CAAC2lB,0BAA0B,CAAC/0C,IAAI,EAAE+T,MAAM,EAAEy7B,gBAAgB,CAAC;IACjE;IACA,IAAI,CAACp3B,KAAK,CAACgX,sBAAsB,GAAG,KAAK;IACzC,IAAI,CAACla,iBAAiB,CAAClV,IAAI,EAAE,IAAI,CAAC;IAElC,IAAI,CAACs/B,SAAS,CAAC1V,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACxR,KAAK,CAACgX,sBAAsB,GAAG0uC,yBAAyB;IAE7D,OAAO,IAAI,CAAChoD,UAAU,CAAC9V,IAAI,EAAE,yBAAyB,CAAC;EACzD;EAEA+0C,0BAA0BA,CACxB/0C,IAAuC,EACvC+T,MAEuC,EACvCy7B,gBAAkC,EAC5B;IACN,IAAI,CAACD,gBAAgB,CAACx7B,MAAM,EAAEy7B,gBAAgB,EAAE,KAAK,CAAC;IACtDxvC,IAAI,CAAC+T,MAAM,GAAGA,MAA+C;EAC/D;EAEAg6B,0BAA0BA,CAMxB/tC,IAAe,EAAEC,IAAe,EAAEmV,QAAiB,GAAG,KAAK,EAAK;IAEhE,IAAI,CAACF,iBAAiB,CAAClV,IAAI,EAAE,KAAK,EAAEoV,QAAQ,CAAC;IAC7C,OAAO,IAAI,CAACU,UAAU,CAAC9V,IAAI,EAAEC,IAAI,CAAC;EACpC;EAGAiV,iBAAiBA,CAEflV,IAAwB,EACxBmV,eAAgC,EAChCC,QAAiB,GAAG,KAAK,EACnB;IACN,MAAM24D,YAAY,GAAG54D,eAAe,IAAI,CAAC,IAAI,CAAC4c,KAAK,CAAA,CAAU,CAAC;IAC9D,IAAI,CAACyN,eAAe,CAAC7V,KAAK,CAACyS,kBAAkB,CAAE,CAAA,CAAC;IAEhD,IAAI2xC,YAAY,EAAE;MAEf/tE,IAAI,CAAuC0U,IAAI,GAC9C,IAAI,CAACs6B,gBAAgB,EAAE;MACzB,IAAI,CAACS,WAAW,CAACzvC,IAAI,EAAE,KAAK,EAAEmV,eAAe,EAAE,KAAK,CAAC;IACvD,CAAC,MAAM;MACL,MAAM8sD,SAAS,GAAG,IAAI,CAAC7pD,KAAK,CAACgP,MAAM;MAGnC,MAAM2X,SAAS,GAAG,IAAI,CAAC3mB,KAAK,CAACyW,MAAM;MACnC,IAAI,CAACzW,KAAK,CAACyW,MAAM,GAAG,EAAE;MAItB,IAAI,CAACyQ,SAAS,CAAC3V,KAAK,CAClB,IAAI,CAAC2V,SAAS,CAAC/C,YAAY,CAAE,CAAA,IAC/B,CAAC;MACDv8B,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACgwD,UAAU,CACzB,IAAI,EACJ,KAAK,EAEJsJ,sBAA+B,IAAK;QACnC,MAAMC,SAAS,GAAG,CAAC,IAAI,CAACC,iBAAiB,CAACluE,IAAI,CAAC+T,MAAM,CAAC;QAEtD,IAAIi6D,sBAAsB,IAAIC,SAAS,EAAE;UAEvC,IAAI,CAAC12D,KAAK,CACR9H,MAAM,CAACrM,4BAA4B,EAEnC,CAACpD,IAAI,CAACK,IAAI,KAAK,QAAQ,IAAIL,IAAI,CAACK,IAAI,KAAK,aAAa,KAEpD,CAAC,CAACL,IAAI,CAAC6G,GAAG,GAER7G,IAAI,CAAC6G,GAAG,CAACoH,GAAG,CAACpQ,GAAG,GAChBmC,IACN,CAAC;QACH;QAEA,MAAMk1C,iBAAiB,GAAG,CAAC+sB,SAAS,IAAI,IAAI,CAAC7pD,KAAK,CAACgP,MAAM;QAIzD,IAAI,CAACqoB,WAAW,CACdzvC,IAAI,EACJ,CAAC,IAAI,CAACoY,KAAK,CAACgP,MAAM,IAAI,CAACjS,eAAe,IAAI,CAACC,QAAQ,IAAI,CAAC64D,SAAS,EACjE94D,eAAe,EACf+/B,iBACF,CAAC;QAGD,IAAI,IAAI,CAAC98B,KAAK,CAACgP,MAAM,IAAIpnB,IAAI,CAACgV,EAAE,EAAE;UAChC,IAAI,CAACs4C,eAAe,CAClBttD,IAAI,CAACgV,EAAE,MAEPkgC,iBACF,CAAC;QACH;MACF,CACF,CAAC;MACD,IAAI,CAAC5V,SAAS,CAAC1V,IAAI,EAAE;MACrB,IAAI,CAACxR,KAAK,CAACyW,MAAM,GAAGkQ,SAAS;IAC/B;IACA,IAAI,CAACS,eAAe,CAAC5V,IAAI,EAAE;EAC7B;EAEAw0C,iBAAiBA,CAACp+D,IAAuC,EAAW;IAClE,OAAOA,IAAI,CAACC,IAAI,KAAK,YAAY;EACnC;EAEAiuE,iBAAiBA,CACfn6D,MAAwD,EAC/C;IACT,KAAK,IAAI+S,CAAC,GAAG,CAAC,EAAEsL,GAAG,GAAGre,MAAM,CAACyE,MAAM,EAAEsO,CAAC,GAAGsL,GAAG,EAAEtL,CAAC,EAAE,EAAE;MACjD,IAAI,CAAC,IAAI,CAACs3C,iBAAiB,CAACrqD,MAAM,CAAC+S,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;IACtD;IACA,OAAO,IAAI;EACb;EAEA2oB,WAAWA,CACTzvC,IAAwB,EACxBg1C,eAAwB,EACxBC,eAAgC,EAChCC,iBAA0B,GAAG,IAAI,EAC3B;IACN,MAAMiY,YAAY,GAAG,CAACnY,eAAe,IAAI,IAAIjpC,GAAG,CAAA,CAAU;IAO1D,MAAMoiE,gBAAgB,GAAG;MAAEluE,IAAI,EAAE;KAA6B;IAC9D,KAAK,MAAMutC,KAAK,IAAIxtC,IAAI,CAAC+T,MAAM,EAAE;MAC/B,IAAI,CAACm5C,SAAS,CACZ1f,KAAK,EACL2gC,gBAAgB,KAEhBhhB,YAAY,EACZjY,iBACF,CAAC;IACH;EACF;EAQAy3B,aAAaA,CAEXt7B,KAAgB,EAChBob,UAAoB,EACpB91C,mBAA6C,EAC7C0zD,YAA4B,EACH;IACzB,MAAM3d,IAA6B,GAAG,EAAE;IACxC,IAAIhgB,KAAK,GAAG,IAAI;IAEhB,OAAO,CAAC,IAAI,CAACjY,GAAG,CAAC4c,KAAK,CAAC,EAAE;MACvB,IAAI3E,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7O,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAAC9L,KAAK,CAACsf,KAAK,CAAC,EAAE;UACrB,IAAIg5B,YAAY,EAAE;YAChB,IAAI,CAACE,2BAA2B,CAACF,YAAY,CAAC;UAChD;UACA,IAAI,CAACniD,IAAI,CAAA,CAAE;UACX;QACF;MACF;MAEAwkC,IAAI,CAAC7wC,IAAI,CAAC,IAAI,CAAC2uD,iBAAiB,CAAC/d,UAAU,EAAE91C,mBAAmB,CAAC,CAAC;IACpE;IACA,OAAO+1C,IAAI;EACb;EAcA8d,iBAAiBA,CAEf/d,UAA2B,EAC3B91C,mBAA6C,EAC7CyzD,gBAAiC,EAC8B;IAC/D,IAAIpe,GAAG;IACP,IAAI,IAAI,CAACj6B,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,IAAI,CAAC06B,UAAU,EAAE;QACf,IAAI,CAACl1C,KAAK,CAAC9H,MAAM,CAAC7F,eAAe,EAAE,IAAI,CAACwO,KAAK,CAAC4X,WAAW,EAAE,EAAE;UAC3D9qB,UAAU,EAAE;QACd,CAAC,CAAC;MACJ;MACA8mD,GAAG,GAAG,IAAI;IACX,CAAA,MAAM,IAAI,IAAI,CAACj6B,KAAK,CAAA,EAAY,CAAC,EAAE;MAClC,MAAMq6C,kBAAkB,GAAG,IAAI,CAACh0D,KAAK,CAAC1B,QAAQ;MAE9Cs1C,GAAG,GAAG,IAAI,CAACrc,cAAc,CACvB,IAAI,CAACwc,WAAW,CAACx1C,mBAAmB,CAAC,EACrCy1D,kBACF,CAAC;IACF,CAAA,MAAM,IAAI,IAAI,CAACr6C,KAAK,CAAA,EAAY,CAAC,EAAE;MAClC,IAAI,CAAC4E,YAAY,CAAC,oBAAoB,CAAC;MACvC,IAAI,CAACyzC,gBAAgB,EAAE;QACrB,IAAI,CAAC7yD,KAAK,CAAC9H,MAAM,CAAC1G,6BAA6B,EAAE,IAAI,CAACqP,KAAK,CAAC1B,QAAQ,CAAC;MACvE;MACA,MAAM1W,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAyB;MACpD,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX8jC,GAAG,GAAG,IAAI,CAACl2C,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;IACpD,CAAC,MAAM;MACLgsD,GAAG,GAAG,IAAI,CAAC/c,uBAAuB,CAChCt4B,mBAAmB,EACnB,IAAI,CAACg5B,cACP,CAAC;IACH;IACA,OAAOqc,GAAG;EACZ;EAQA5lB,eAAeA,CAAC+C,OAAiB,EAAgB;IAC/C,MAAMnpC,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAgB;IAC3C,MAAMxP,IAAI,GAAG,IAAI,CAACy/D,mBAAmB,CAACz8B,OAAO,CAAC;IAE9C,OAAO,IAAI,CAAC8D,gBAAgB,CAACjtC,IAAI,EAAEmG,IAAI,CAAC;EAC1C;EAEA8mC,gBAAgBA,CACdjtC,IAAgC,EAChCmG,IAAY,EACE;IACdnG,IAAI,CAACmG,IAAI,GAAGA,IAAI;IAChBnG,IAAI,CAACiO,GAAG,CAAClQ,cAAc,GAAGoI,IAAI;IAE9B,OAAO,IAAI,CAAC2P,UAAU,CAAC9V,IAAI,EAAE,YAAY,CAAC;EAC5C;EAEA4lE,mBAAmBA,CAACz8B,OAAiB,EAAU;IAC7C,IAAIhjC,IAAY;IAEhB,MAAM;MAAEuQ,QAAQ;MAAEzW;KAAM,GAAG,IAAI,CAACmY,KAAK;IAErC,IAAI8M,0BAA0B,CAACjlB,IAAI,CAAC,EAAE;MACpCkG,IAAI,GAAG,IAAI,CAACiS,KAAK,CAACpL,KAAK;IACzB,CAAC,MAAM;MACL,IAAI,CAAC9H,UAAU,CAAA,CAAE;IACnB;IAEA,MAAMugB,cAAc,GAAGR,iCAAiC,CAAChlB,IAAI,CAAC;IAE9D,IAAIkpC,OAAO,EAAE;MAGX,IAAI1jB,cAAc,EAAE;QAClB,IAAI,CAAC8Q,YAAY,CAAA,GAAQ,CAAC;MAC5B;IACF,CAAC,MAAM;MACL,IAAI,CAACmd,iBAAiB,CAACvtC,IAAI,EAAEuQ,QAAQ,EAAE+O,cAAc,EAAE,KAAK,CAAC;IAC/D;IAEA,IAAI,CAACyC,IAAI,CAAA,CAAE;IAEX,OAAO/hB,IAAI;EACb;EAEAutC,iBAAiBA,CACfjsB,IAAY,EACZ/Q,QAAkB,EAClB6oD,aAAsB,EACtBvoD,SAAkB,EACZ;IAEN,IAAIyQ,IAAI,CAACjP,MAAM,GAAG,EAAE,EAAE;MACpB;IACF;IAGA,IAAI,CAAC6P,iBAAiB,CAACZ,IAAI,CAAC,EAAE;MAC5B;IACF;IAEA,IAAI83C,aAAa,IAAIx3C,SAAS,CAACN,IAAI,CAAC,EAAE;MACpC,IAAI,CAAClQ,KAAK,CAAC9H,MAAM,CAACtG,iBAAiB,EAAEuN,QAAQ,EAAE;QAC7CtN,OAAO,EAAEqe;MACX,CAAC,CAAC;MACF;IACF;IAEA,MAAM2mD,YAAY,GAAG,CAAC,IAAI,CAACh2D,KAAK,CAACgP,MAAM,GACnCI,cAAc,GACdxQ,SAAS,GACP8Q,wBAAwB,GACxBH,oBAAoB;IAE1B,IAAIymD,YAAY,CAAC3mD,IAAI,EAAE,IAAI,CAACC,QAAQ,CAAC,EAAE;MACrC,IAAI,CAACnQ,KAAK,CAAC9H,MAAM,CAAC/F,sBAAsB,EAAEgN,QAAQ,EAAE;QAClDjS,YAAY,EAAEgjB;MAChB,CAAC,CAAC;MACF;IACF,CAAC,MAAM,IAAIA,IAAI,KAAK,OAAO,EAAE;MAC3B,IAAI,IAAI,CAAC6X,SAAS,CAAC7C,QAAQ,EAAE;QAC3B,IAAI,CAACllB,KAAK,CAAC9H,MAAM,CAACxE,sBAAsB,EAAEyL,QAAQ,CAAC;QACnD;MACF;IACF,CAAC,MAAM,IAAI+Q,IAAI,KAAK,OAAO,EAAE;MAC3B,IAAI,IAAI,CAAC6X,SAAS,CAAC9C,QAAQ,EAAE;QAC3B,IAAI,CAACjlB,KAAK,CAAC9H,MAAM,CAACjP,sBAAsB,EAAEkW,QAAQ,CAAC;QACnD;MACF;MAEA,IAAI,IAAI,CAACmT,KAAK,CAACR,aAAa,EAAE;QAC5B,IAAI,CAAC9R,KAAK,CAAC9H,MAAM,CAAChP,mCAAmC,EAAEiW,QAAQ,CAAC;QAChE;MACF;MAEA,IAAI,CAAC8oB,eAAe,CAACzD,+BAA+B,CAACrlB,QAAQ,CAAC;IAChE,CAAC,MAAM,IAAI+Q,IAAI,KAAK,WAAW,EAAE;MAC/B,IAAI,IAAI,CAACoC,KAAK,CAACT,+BAA+B,EAAE;QAC9C,IAAI,CAAC7R,KAAK,CAAC9H,MAAM,CAACnP,gBAAgB,EAAEoW,QAAQ,CAAC;QAC7C;MACF;IACF;EACF;EAIA2yD,oBAAoBA,CAAAA,EAAY;IAC9B,MAAMgF,cAAc,GAClB,IAAI,CAAC/uC,SAAS,CAAC9C,QAAQ,IACtB,IAAI,CAAC5qB,WAAW,IAAwC,IACvD,CAAC,IAAI,CAACiY,KAAK,CAACd,UAAW;IAE3B,IAAIslD,cAAc,IAAI,CAAC,IAAI,CAACxkD,KAAK,CAACd,UAAU,EAAE;MAC5C,IAAI,CAAC3Q,KAAK,CAAC2X,gBAAgB,GAAG,IAAI;IACpC;IAEA,OAAOs+C,cAAc;EACvB;EAIA/E,UAAUA,CAAe5yD,QAAkB,EAAqB;IAC9D,MAAM1W,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAoBhqB,QAAQ,CAAC;IAE1D,IAAI,CAAC8oB,eAAe,CAAC5D,+BAA+B,CAClDnsB,MAAM,CAAC/O,8BAA8B,EAErCV,IACF,CAAC;IAED,IAAI,IAAI,CAACy0B,GAAG,CAAA,EAAQ,CAAC,EAAE;MACrB,IAAI,CAACld,KAAK,CAAC9H,MAAM,CAAClI,iBAAiB,EAAEvH,IAAI,CAAC;IAC5C;IAEA,IACE,CAAC,IAAI,CAAC6pB,KAAK,CAACd,UAAU,IACtB,EAAE,IAAI,CAACnX,WAAW,IAAwC,CAAC,EAC3D;MACA,IAAI,IAAI,CAAC83D,gBAAgB,EAAE,EAAE;QAC3B,IAAI,CAAC9+C,2BAA2B,GAAG,IAAI;MACzC,CAAC,MAAM;QACL,IAAI,CAACD,iBAAiB,GAAG,IAAI;MAC/B;IACF;IAEA,IAAI,CAAC,IAAI,CAACvS,KAAK,CAACuX,SAAS,EAAE;MACzB3vB,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAACoqD,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;IAClD;IAEA,OAAO,IAAI,CAACpjD,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA0pE,gBAAgBA,CAAAA,EAAY;IAC1B,IAAI,IAAI,CAAClsC,qBAAqB,EAAE,EAAE,OAAO,IAAI;IAC7C,MAAM;MAAEv9B;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,OAGEnY,IAAI,KAAe,EAAA,IACnBA,IAAI,KAAA,EAAc,IAClBA,IAAI,KAAA,CAAgB,IACpBimB,eAAe,CAACjmB,IAAI,CAAC,IACpBA,IAAI,QAAW,IAAI,CAAC,IAAI,CAACmY,KAAK,CAAC0X,WAAY,IAG5C7vB,IAAI,QAAc,IAClBA,IAAI,KAAa,EAAA,IAGhB,IAAI,CAACgrB,SAAS,CAAC,aAAa,CAAC,IAAIhrB,IAAI,KAAA,EAAA;EAE1C;EAIA4nE,UAAUA,CAAAA,EAAkC;IAC1C,MAAM7nE,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;IAEhD,IAAI,CAAC6pB,eAAe,CAAC5D,+BAA+B,CAClDnsB,MAAM,CAACvE,gBAAgB,EAEvBlL,IACF,CAAC;IAED,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAIomD,UAAU,GAAG,KAAK;IACtB,IAAIx/D,QAA6B,GAAG,IAAI;IACxC,IAAI,CAAC,IAAI,CAAC0uB,qBAAqB,EAAE,EAAE;MACjC8wC,UAAU,GAAG,IAAI,CAAC75C,GAAG,GAAQ,CAAC;MAC9B,QAAQ,IAAI,CAACrc,KAAK,CAACnY,IAAI;QACrB,KAAA,EAAA;QACA,KAAA,GAAA;QACA,KAAA,CAAA;QACA,KAAA,EAAA;QACA,KAAA,CAAA;QACA,KAAA,CAAA;QACA,KAAA,EAAA;QACA,KAAA,EAAA;UAIE,IAAI,CAACquE,UAAU,EAAE;QAEnB;UACEx/D,QAAQ,GAAG,IAAI,CAACkgC,gBAAgB,EAAE;MACtC;IACF;IACAhvC,IAAI,CAACuuE,QAAQ,GAAGD,UAAU;IAC1BtuE,IAAI,CAAC8O,QAAQ,GAAGA,QAAQ;IACxB,OAAO,IAAI,CAACgH,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAGA4qE,eAAeA,CAEb5qE,IAAgC,EACZ;IACpB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACXloB,IAAI,CAAC6X,MAAM,GAAG,IAAI,CAACo3B,uBAAuB,EAAE;IAC5CjvC,IAAI,CAACkR,OAAO,GAAG,IAAI;IACnB,IAAI,IAAI,CAACujB,GAAG,CAAA,EAAS,CAAC,EAAE;MACtB,IAAI,CAAC,IAAI,CAAC1C,KAAK,CAAA,EAAU,CAAC,EAAE;QAC1B/xB,IAAI,CAACkR,OAAO,GAAG,IAAI,CAAC+9B,uBAAuB,EAAE;QAE7C,IAAI,IAAI,CAACxa,GAAG,CAAA,EAAS,CAAC,IAAI,CAAC,IAAI,CAAC1C,KAAK,CAAU,EAAA,CAAC,EAAE;UAGhD,GAAG;YACD,IAAI,CAACkd,uBAAuB,CAAA,CAAE;UAChC,CAAC,QAAQ,IAAI,CAACxa,GAAG,CAAS,EAAA,CAAC,IAAI,CAAC,IAAI,CAAC1C,KAAK,CAAA,EAAU,CAAC;UAErD,IAAI,CAACxa,KAAK,CAAC9H,MAAM,CAAChM,eAAe,EAAEzD,IAAI,CAAC;QAC1C;MACF;IACF;IACA,IAAI,CAAC69B,MAAM,CAAA,EAAU,CAAC;IACtB,OAAO,IAAI,CAAC/nB,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAKAooE,4BAA4BA,CAACr3B,IAAkB,EAAEquB,YAAsB,EAAE;IAEvE,IAAI,IAAI,CAACn0C,SAAS,CAAC,CAAC,kBAAkB,EAAE;MAAEoM,QAAQ,EAAE;IAAS,CAAA,CAAC,CAAC,EAAE;MAC/D,IAAI0Z,IAAI,CAAC9wC,IAAI,KAAK,oBAAoB,EAAE;QAGtC,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC/C,8BAA8B,EAAE0yD,YAAY,CAAC;MACjE;IACF;EACF;EAEAwJ,6BAA6BA,CAAC4F,SAAuB,EAAE93D,QAAkB,EAAE;IACzE,IAAI,IAAI,CAAC+3D,iBAAiB,CAACD,SAAS,CAAC,EAAE;MACrC,MAAMhnC,QAAQ,GAAG,IAAI,CAAC9G,WAAW,CAAyBhqB,QAAQ,CAAC;MACnE8wB,QAAQ,CAAC7vB,MAAM,GAAG62D,SAAS;MAC3B,OAAO,IAAI,CAAC14D,UAAU,CAAC0xB,QAAQ,EAAE,sBAAsB,CAAC;IAC1D,CAAC,MAAM;MACL,MAAMA,QAAQ,GAAG,IAAI,CAAC9G,WAAW,CAA4BhqB,QAAQ,CAAC;MACtE,IAAI,CAACg4D,kCAAkC,CAACh4D,QAAQ,CAAC;MACjD8wB,QAAQ,CAACr0B,UAAU,GAAGq7D,SAAS;MAC/B,OAAO,IAAI,CAAC14D,UAAU,CAAC0xB,QAAQ,EAAE,yBAAyB,CAAC;IAC7D;EACF;EAEAinC,iBAAiBA,CAACt7D,UAAwB,EAAW;IACnD,QAAQA,UAAU,CAAClT,IAAI;MACrB,KAAK,kBAAkB;QACrB,OACE,CAACkT,UAAU,CAAC0C,QAAQ,IAAI,IAAI,CAAC44D,iBAAiB,CAACt7D,UAAU,CAAC9B,MAAM,CAAC;MAErE,KAAK,YAAY;QACf,OAAO,IAAI;MACb;QACE,OAAO,KAAK;IAChB;EACF;EAMAq9D,kCAAkCA,CAACh4D,QAAkB,EAAQ;IAO3D,IAAI,IAAI,CAACqb,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,MAAM,IAAI,CAACxa,KAAK,CAAC9H,MAAM,CAACjD,mBAAmB,EAAE,IAAI,CAAC4L,KAAK,CAAC1B,QAAQ,CAAC;IACnE;IAGA,IAAI,CAAC,IAAI,CAACwyD,qCAAqC,EAAE,EAAE;MACjD,IAAI,CAAC3xD,KAAK,CAAC9H,MAAM,CAAC9C,mBAAmB,EAAE+J,QAAQ,CAAC;IAClD;EACF;EAQAgyD,uBAAuBA,CAAIiG,QAAiB,EAAK;IAC/C,MAAMC,sBAAsB,GAAG,IAAI,CAACx2D,KAAK,CAACsW,YAAY;IACtD,IAAI,CAACtW,KAAK,CAACsW,YAAY,GAAG;MAExBC,wBAAwB,EAAE,CAAC;MAE3BC,aAAa,EAAE;KAChB;IAED,IAAI;MACF,OAAO+/C,QAAQ,CAAA,CAAE;IACnB,CAAC,SAAS;MACR,IAAI,CAACv2D,KAAK,CAACsW,YAAY,GAAGkgD,sBAAsB;IAClD;EACF;EAUAC,kCAAkCA,CAAIF,QAAiB,EAAK;IAE1D,IAAI,IAAI,CAAC1jD,SAAS,CAAC,CAAC,kBAAkB,EAAE;MAAEoM,QAAQ,EAAE;IAAS,CAAA,CAAC,CAAC,EAAE;MAE/D,MAAMu3C,sBAAsB,GAAG,IAAI,CAACx2D,KAAK,CAACsW,YAAY;MACtD,IAAI,CAACtW,KAAK,CAACsW,YAAY,GAAG;QAExBC,wBAAwB,EAAE,CAAC;QAE3BC,aAAa,EAAE;OAChB;MAED,IAAI;QACF,OAAO+/C,QAAQ,CAAA,CAAE;MACnB,CAAC,SAAS;QACR,IAAI,CAACv2D,KAAK,CAACsW,YAAY,GAAGkgD,sBAAsB;MAClD;IACF,CAAC,MAAM;MAKL,OAAOD,QAAQ,CAAA,CAAE;IACnB;EACF;EAEA7F,8BAA8BA,CAAI6F,QAAiB,EAAK;IACtD,MAAMG,0BAA0B,GAAG,IAAI,CAAC12D,KAAK,CAACuX,SAAS;IACvD,IAAI,CAACvX,KAAK,CAACuX,SAAS,GAAG,IAAI;IAE3B,IAAI;MACF,OAAOg/C,QAAQ,CAAA,CAAE;IACnB,CAAC,SAAS;MACR,IAAI,CAACv2D,KAAK,CAACuX,SAAS,GAAGm/C,0BAA0B;IACnD;EACF;EAEArH,UAAUA,CAAIkH,QAAiB,EAAK;IAClC,MAAM58D,KAAK,GAAG,IAAI,CAACutB,SAAS,CAAC/C,YAAY,CAAA,CAAE;IAC3C,MAAMwyC,cAAc,GAAGC,IAAqB,CAACj9D,KAAK;IAClD,IAAIg9D,cAAc,EAAE;MAClB,IAAI,CAACzvC,SAAS,CAAC3V,KAAK,CAAC5X,KAAK,IAAqB,CAAC;MAChD,IAAI;QACF,OAAO48D,QAAQ,CAAA,CAAE;MACnB,CAAC,SAAS;QACR,IAAI,CAACrvC,SAAS,CAAC1V,IAAI,EAAE;MACvB;IACF;IACA,OAAO+kD,QAAQ,CAAA,CAAE;EACnB;EAEApH,aAAaA,CAAIoH,QAAiB,EAAK;IACrC,MAAM58D,KAAK,GAAG,IAAI,CAACutB,SAAS,CAAC/C,YAAY,CAAA,CAAE;IAC3C,MAAM0yC,gBAAgB,GAAGD,IAAqBj9D,KAAK;IACnD,IAAIk9D,gBAAgB,EAAE;MACpB,IAAI,CAAC3vC,SAAS,CAAC3V,KAAK,CAAC5X,KAAK,GAAG,EAAmB,CAAC;MACjD,IAAI;QACF,OAAO48D,QAAQ,CAAA,CAAE;MACnB,CAAC,SAAS;QACR,IAAI,CAACrvC,SAAS,CAAC1V,IAAI,EAAE;MACvB;IACF;IACA,OAAO+kD,QAAQ,CAAA,CAAE;EACnB;EAIA/C,sBAAsBA,CAAAA,EAAS;IAC7B,IAAI,CAACxzD,KAAK,CAACsW,YAAY,CAACE,aAAa,GAAG,CAAC;EAC3C;EAEA+8C,uCAAuCA,CAAAA,EAAY;IACjD,OAAO,IAAI,CAACvzD,KAAK,CAACsW,YAAY,CAACC,wBAAwB,IAAI,CAAC;EAC9D;EAEAu6C,qCAAqCA,CAAAA,EAAY;IAC/C,OACE,IAAI,CAAC9wD,KAAK,CAACsW,YAAY,CAACE,aAAa,IAAI,IAAI,IAC7C,IAAI,CAACxW,KAAK,CAACsW,YAAY,CAACE,aAAa,IAAI,CAAC;EAE9C;EAEAm6C,uBAAuBA,CAAeZ,IAAY,EAAgB;IAChE,MAAMzxD,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;IAEpC,IAAI,CAAC0B,KAAK,CAACmW,gBAAgB,GAAG,IAAI,CAACnW,KAAK,CAACxa,KAAK;IAC9C,MAAM0sE,6BAA6B,GAAG,IAAI,CAAClyD,KAAK,CAACwX,0BAA0B;IAC3E,IAAI,CAACxX,KAAK,CAACwX,0BAA0B,GAAG,IAAI;IAE5C,MAAMs/C,GAAG,GAAG,IAAI,CAAC/P,WAAW,CAC1B,IAAI,CAAC8I,wBAAwB,EAAE,EAC/BvxD,QAAQ,EACRyxD,IACF,CAAC;IAED,IAAI,CAAC/vD,KAAK,CAACwX,0BAA0B,GAAG06C,6BAA6B;IAErE,OAAO4E,GAAG;EACZ;EAGA9D,qBAAqBA,CAAAA,EAAmC;IACtD,IAAI,CAACz0C,YAAY,CAAC,cAAc,CAAC;IACjC,MAAM32B,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAsB;IACjD,IAAI,CAACuS,IAAI,CAAA,CAAE;IACX,IAAI,CAAC,IAAI,CAAC6J,KAAK,CAAA,CAAU,CAAC,EAAE;MAC1B,IAAI,CAAC7sB,UAAU,CAAC,IAAI,GAAW,CAAC;IAClC;IAEA,MAAM6wC,OAAO,GAAG,IAAI,CAACrV,WAAW,CAAY,IAAI,CAACtoB,KAAK,CAACoB,MAAM,CAAC;IAC9D,IAAI,CAAC0O,IAAI,CAAA,CAAE;IAEX,MAAMinD,YAAY,GAAG,IAAI,CAACrwC,gBAAgB,CAAiB,IAAI,CAAC;IAChE,IAAI,CAACW,kBAAkB,CAAA,CAAE;IAEzB,IAAI;MACFz/B,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAAC06D,YAAY,CAACr5B,OAAO,EAAa,CAAA,EAAA,QAAQ,CAAC;IAC7D,CAAC,SAAS;MACRo5B,YAAY,EAAE;IAChB;IACA,OAAO,IAAI,CAACr5D,UAAU,CAAqB9V,IAAI,EAAE,kBAAkB,CAAC;EACtE;EAGAoyC,+BAA+BA,CAE7B/7B,IAAmD,EAC7C,CAAC;AACX;ACxlGA,MAAMg5D,SAAS,GAAG;IAAEhvE,IAAI;EAA+B,CAAA;EACrDivE,WAAW,GAAG;IAAEjvE,IAAI;GAAiC;AAkBvD,MAAMkvE,aAAa,GAAG,kBAAkB;AAExC,MAAMC,yBAAyB,GAAG,kBAAkB;AAUpD,SAASC,kBAAkBA,CACzB/+D,MAA6B,EAC7B0c,KAAa,EACbtd,UAAkB,EAClB;EACA,KAAK,IAAIgX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpW,MAAM,CAAC8H,MAAM,EAAEsO,CAAC,EAAE,EAAE;IACtC,MAAMza,KAAK,GAAGqE,MAAM,CAACoW,CAAC,CAAC;IACvB,MAAM;MAAE7mB;IAAM,CAAA,GAAGoM,KAAK;IACtB,IAAI,OAAOpM,IAAI,KAAK,QAAQ,EAAE;MACO;QACjC,IAAIA,IAAI,QAAmB,EAAE;UAC3B,MAAM;YAAEgO,GAAG;YAAErQ,KAAK;YAAEoP,KAAK;YAAEnP;UAAK,CAAA,GAAGwO,KAAK;UACxC,MAAMqjE,UAAU,GAAG9xE,KAAK,GAAG,CAAC;UAC5B,MAAM+xE,UAAU,GAAG3xE,8BAA8B,CAACiQ,GAAG,CAACrQ,KAAK,EAAE,CAAC,CAAC;UAC/D8S,MAAM,CAACuc,MAAM,CACXnG,CAAC,EACD,CAAC,EACD,IAAI+M,KAAK,CAAC;YAER5zB,IAAI,EAAEkmB,gBAAgB,CAAA,EAAQ,CAAC;YAC/BnZ,KAAK,EAAE,GAAG;YACVpP,KAAK,EAAEA,KAAK;YACZC,GAAG,EAAE6xE,UAAU;YACfh5D,QAAQ,EAAEzI,GAAG,CAACrQ,KAAK;YACnB4b,MAAM,EAAEm2D;UACV,CAAC,CAAC,EACF,IAAI97C,KAAK,CAAC;YAER5zB,IAAI,EAAEkmB,gBAAgB,CAAA,GAAQ,CAAC;YAC/BnZ,KAAK,EAAEA,KAAK;YACZpP,KAAK,EAAE8xE,UAAU;YACjB7xE,GAAG,EAAEA,GAAG;YACR6Y,QAAQ,EAAEi5D,UAAU;YACpBn2D,MAAM,EAAEvL,GAAG,CAACpQ;UACb,CAAA,CACH,CAAC;UACDipB,CAAC,EAAE;UACH;QACF;QAEA,IAAIZ,eAAe,CAACjmB,IAAI,CAAC,EAAE;UACzB,MAAM;YAAEgO,GAAG;YAAErQ,KAAK;YAAEoP,KAAK;YAAEnP;UAAK,CAAA,GAAGwO,KAAK;UACxC,MAAMujE,YAAY,GAAGhyE,KAAK,GAAG,CAAC;UAC9B,MAAMiyE,eAAe,GAAG7xE,8BAA8B,CAACiQ,GAAG,CAACrQ,KAAK,EAAE,CAAC,CAAC;UACpE,IAAIkyE,UAAU;UACd,IAAI1iD,KAAK,CAACC,UAAU,CAACzvB,KAAK,GAAGkS,UAAU,CAAC,KAAA,EAA0B,EAAE;YAClEggE,UAAU,GAAG,IAAIj8C,KAAK,CAAC;cAErB5zB,IAAI,EAAEkmB,gBAAgB,CAAA,EAAa,CAAC;cACpCnZ,KAAK,EAAE,GAAG;cACVpP,KAAK,EAAEA,KAAK;cACZC,GAAG,EAAE+xE,YAAY;cACjBl5D,QAAQ,EAAEzI,GAAG,CAACrQ,KAAK;cACnB4b,MAAM,EAAEq2D;YACV,CAAC,CAAC;UACJ,CAAC,MAAM;YACLC,UAAU,GAAG,IAAIj8C,KAAK,CAAC;cAErB5zB,IAAI,EAAEkmB,gBAAgB,CAAA,CAAU,CAAC;cACjCnZ,KAAK,EAAE,GAAG;cACVpP,KAAK,EAAEA,KAAK;cACZC,GAAG,EAAE+xE,YAAY;cACjBl5D,QAAQ,EAAEzI,GAAG,CAACrQ,KAAK;cACnB4b,MAAM,EAAEq2D;YACV,CAAC,CAAC;UACJ;UACA,IAAIE,aAAa,EACfC,kBAAkB,EAClBC,qBAAqB,EACrBC,QAAQ;UACV,IAAIjwE,IAAI,OAAoB,EAAE;YAE5B+vE,kBAAkB,GAAGnyE,GAAG,GAAG,CAAC;YAC5BoyE,qBAAqB,GAAGjyE,8BAA8B,CAACiQ,GAAG,CAACpQ,GAAG,EAAE,CAAC,CAAC,CAAC;YACnEkyE,aAAa,GAAG/iE,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAACijB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1DigD,QAAQ,GAAG,IAAIr8C,KAAK,CAAC;cAEnB5zB,IAAI,EAAEkmB,gBAAgB,CAAA,EAAa,CAAC;cACpCnZ,KAAK,EAAE,GAAG;cACVpP,KAAK,EAAEoyE,kBAAkB;cACzBnyE,GAAG,EAAEA,GAAG;cACR6Y,QAAQ,EAAEu5D,qBAAqB;cAC/Bz2D,MAAM,EAAEvL,GAAG,CAACpQ;YACd,CAAC,CAAC;UACJ,CAAC,MAAM;YAELmyE,kBAAkB,GAAGnyE,GAAG,GAAG,CAAC;YAC5BoyE,qBAAqB,GAAGjyE,8BAA8B,CAACiQ,GAAG,CAACpQ,GAAG,EAAE,CAAC,CAAC,CAAC;YACnEkyE,aAAa,GAAG/iE,KAAK,KAAK,IAAI,GAAG,IAAI,GAAGA,KAAK,CAACijB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1DigD,QAAQ,GAAG,IAAIr8C,KAAK,CAAC;cAEnB5zB,IAAI,EAAEkmB,gBAAgB,CAAA,EAAgB,CAAC;cACvCnZ,KAAK,EAAE,IAAI;cACXpP,KAAK,EAAEoyE,kBAAkB;cACzBnyE,GAAG,EAAEA,GAAG;cACR6Y,QAAQ,EAAEu5D,qBAAqB;cAC/Bz2D,MAAM,EAAEvL,GAAG,CAACpQ;YACd,CAAC,CAAC;UACJ;UACA6S,MAAM,CAACuc,MAAM,CACXnG,CAAC,EACD,CAAC,EACDgpD,UAAU,EACV,IAAIj8C,KAAK,CAAC;YAER5zB,IAAI,EAAEkmB,gBAAgB,CAAA,EAAY,CAAC;YACnCnZ,KAAK,EAAE+iE,aAAa;YACpBnyE,KAAK,EAAEgyE,YAAY;YACnB/xE,GAAG,EAAEmyE,kBAAkB;YACvBt5D,QAAQ,EAAEm5D,eAAe;YACzBr2D,MAAM,EAAEy2D;WACT,CAAC,EACFC,QACF,CAAC;UACDppD,CAAC,IAAI,CAAC;UACN;QACF;MACF;MAEAza,KAAK,CAACpM,IAAI,GAAGkmB,gBAAgB,CAAClmB,IAAI,CAAC;IACrC;EACF;EACA,OAAOyQ,MAAM;AACf;AACe,MAAey/D,eAAe,SAASnJ,gBAAgB,CAAC;EAQrElxB,aAAaA,CAEXnkC,IAAoB,EACpBokC,OAA0B,EAClB;IACRpkC,IAAI,CAACokC,OAAO,GAAG,IAAI,CAACq5B,YAAY,CAACr5B,OAAO,CAAC;IACzCpkC,IAAI,CAAC8Z,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAE7B,IAAI,IAAI,CAAC7Z,WAAW,MAAqB,EAAE;MACzCD,IAAI,CAACjB,MAAM,GAAG++D,kBAAkB,CAC9B,IAAI,CAAC/+D,MAAM,EACX,IAAI,CAAC0c,KAAK,EACV,IAAI,CAACtd,UACP,CAAC;IACH;IAEA,OAAO,IAAI,CAACgG,UAAU,CAACnE,IAAI,EAAE,MAAM,CAAC;EACtC;EAEAy9D,YAAYA,CAEVr5B,OAA0B,EAC1Bl4C,GAAc,GAAS,GAAA,EACvB8R,UAAsB,GAAG,IAAI,CAACuB,OAAO,CAACvB,UAAU,EACrC;IACXomC,OAAO,CAACpmC,UAAU,GAAGA,UAAU;IAC/BomC,OAAO,CAACq6B,WAAW,GAAG,IAAI,CAACC,yBAAyB,EAAE;IACtD,IAAI,CAACl8D,cAAc,CAAC4hC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAEl4C,GAAG,CAAC;IAC7C,IAAI,IAAI,CAAC6pB,QAAQ,EAAE;MACjB,IACE,EAAE,IAAI,CAAC9V,WAAW,KAAqC,CAAC,IACxD,IAAI,CAACiY,KAAK,CAACjB,gBAAgB,CAACiP,IAAI,GAAG,CAAC,EACpC;QACA,KAAK,MAAM,CAACj1B,SAAS,EAAEib,EAAE,CAAC,IAAI9O,KAAK,CAACyrB,IAAI,CAAC,IAAI,CAAC3Q,KAAK,CAACjB,gBAAgB,CAAC,EAAE;UACrE,IAAI,CAACrR,KAAK,CAAC9H,MAAM,CAACxI,qBAAqB,EAAE4W,EAAE,EAAE;YAAEjb;UAAU,CAAC,CAAC;QAC7D;MACF;MACA,IAAI,CAACk6B,QAAQ,CAACiZ,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC39B,KAAK,CAAC2X,gBAAgB,CAAC;IACtE;IACA,IAAIugD,eAA0B;IAC9B,IAAIzyE,GAAG,QAAW,EAAE;MAElByyE,eAAe,GAAG,IAAI,CAACx6D,UAAU,CAACigC,OAAO,EAAE,SAAS,CAAC;IACvD,CAAC,MAAM;MAELu6B,eAAe,GAAG,IAAI,CAAC/2D,YAAY,CACjCw8B,OAAO,EACP,SAAS,EACT/3C,8BAA8B,CAAC,IAAI,CAACoa,KAAK,CAAC1B,QAAQ,EAAE,CAAC,CAAC,CACxD,CAAC;IACH;IACA,OAAO45D,eAAe;EACxB;EAKAC,eAAeA,CAACh9D,IAAiB,EAAe;IAC9C,MAAML,SAAS,GAAGK,IAAW;IAC7BL,SAAS,CAACjT,IAAI,GAAG,WAAW;IAC5BiT,SAAS,CAAClG,KAAK,GAAGkG,SAAS,CAACC,UAAU;IACtC,OAAOD,SAAS,CAACC,UAAU;IAE3B,MAAMq9D,gBAAgB,GAAGt9D,SAAS,CAAClG,KAAK;IACxC,MAAMsG,eAAe,GAAGk9D,gBAAgB,CAACxjE,KAAK;IAC9C,MAAMoG,GAAG,GAAG,IAAI,CAACga,KAAK,CAAC6C,KAAK,CAC1B,IAAI,CAAClF,iBAAiB,CAACylD,gBAAgB,CAAC5yE,KAAK,CAAC,EAC9C,IAAI,CAACmtB,iBAAiB,CAACylD,gBAAgB,CAAC3yE,GAAG,CAC7C,CAAC;IACD,MAAMo1B,GAAG,GAAIu9C,gBAAgB,CAACxjE,KAAK,GAAGoG,GAAG,CAAC6c,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE;IAEvD,IAAI,CAAC6M,QAAQ,CAAC0zC,gBAAgB,EAAE,KAAK,EAAEp9D,GAAG,CAAC;IAC3C,IAAI,CAAC0pB,QAAQ,CAAC0zC,gBAAgB,EAAE,UAAU,EAAEv9C,GAAG,CAAC;IAChD,IAAI,CAAC6J,QAAQ,CAAC0zC,gBAAgB,EAAE,iBAAiB,EAAEl9D,eAAe,CAAC;IAEnEk9D,gBAAgB,CAACvwE,IAAI,GAAG,kBAAkB;IAE1C,OAAOiT,SAAS;EAClB;EAEAm9D,yBAAyBA,CAAAA,EAAkC;IACzD,IAAI,CAAC,IAAI,CAACt+C,KAAK,CAAA,EAAwB,CAAC,EAAE;MACxC,OAAO,IAAI;IACb;IAEA,MAAM/xB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAA0B;IACrD3V,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACoL,KAAK,CAACpL,KAAK;IAC7B,IAAI,CAACkb,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAEA4nC,KAAKA,CAAAA,EAAY;IACf,IAAI,CAAC,IAAI,CAAC7K,YAAY,CAAA,GAAQ,CAAC,EAAE;MAC/B,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAAC0zC,uBAAuB,EAAE;EACvC;EAEApM,yBAAyBA,CAAC7zC,EAAU,EAAEniB,GAAW,EAAE;IACjD,IAAI0Y,iBAAiB,CAACyJ,EAAE,CAAC,EAAE;MACzBg/C,yBAAyB,CAACv6C,SAAS,GAAG5mB,GAAG;MACzC,IAAImhE,yBAAyB,CAACxoD,IAAI,CAAC,IAAI,CAACoG,KAAK,CAAC,EAAE;QAG9C,MAAMsjD,KAAK,GAAG,IAAI,CAACp7C,cAAc,CAACk6C,yBAAyB,CAACv6C,SAAS,CAAC;QACtE,IAAI,CAAC/N,gBAAgB,CAACwpD,KAAK,CAAC,IAAIA,KAAK,OAAwB,EAAE;UAC7D,OAAO,KAAK;QACd;MACF;MACA,OAAO,IAAI;IACb,CAAC,MAAM,IAAIlgD,EAAE,KAAA,EAAwB,EAAE;MACrC,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;EAEAmgD,sBAAsBA,CAACngD,EAAU,EAAE;IACjC,OACEA,EAAE,KAAA,EAAgC,IAAIA,EAAE,KAA6B,GAAA;EAEzE;EAMAigD,uBAAuBA,CAAAA,EAAY;IACjC,MAAMvoD,IAAI,GAAG,IAAI,CAAC6M,cAAc,EAAE;IAClC,MAAMoI,MAAM,GAAG,IAAI,CAAC7H,cAAc,CAACpN,IAAI,CAAC;IACxC,OACE,IAAI,CAACyoD,sBAAsB,CAACxzC,MAAM,CAAC,IACnC,IAAI,CAACknC,yBAAyB,CAAClnC,MAAM,EAAEjV,IAAI,CAAC;EAEhD;EAOA0oD,0CAA0CA,CAAAA,EAAY;IACpD,MAAM1oD,IAAI,GAAG,IAAI,CAACiN,oBAAoB,EAAE;IACxC,MAAMgI,MAAM,GAAG,IAAI,CAAC7H,cAAc,CAACpN,IAAI,CAAC;IACxC,OACEiV,MAAM,KAA6B,GAAA,IACnC,IAAI,CAACknC,yBAAyB,CAAClnC,MAAM,EAAEjV,IAAI,CAAC;EAEhD;EAEA2oD,gBAAgBA,CAAAA,EAAY;IAC1B,MAAM;MAAE5wE,IAAI;MAAE6vB;IAAY,CAAC,GAAG,IAAI,CAAC8E,SAAS,EAAE;IAC9C,IAAI30B,IAAI,KAAA,GAAW,IAAI,CAAC6vB,WAAW,EAAE;MAEnC,OAAO,KAAK;IACd,CAAC,MAAM,IAAI9K,iBAAiB,CAAC/kB,IAAI,CAAC,IAAI,CAAC,IAAI,CAACw9B,qBAAqB,CAAA,CAAE,EAAE;MACnE,IAAI,CAAC9G,YAAY,CAAC,4BAA4B,CAAC;MAC/C,OAAO,IAAI;IACb;EACF;EAEAm6C,gBAAgBA,CAAAA,EAAY;IAC1B,IAAI5oD,IAAI,GAAG,IAAI,CAACiN,oBAAoB,EAAE;IACtC,IAAI,IAAI,CAAC6H,oBAAoB,CAAC9U,IAAI,EAAE,OAAO,CAAC,EAAE;MAC5CA,IAAI,GAAG,IAAI,CAACkN,yBAAyB,CAAClN,IAAI,GAAG,CAAC,CAAC;MAC/C,MAAMiV,MAAM,GAAG,IAAI,CAAC7H,cAAc,CAACpN,IAAI,CAAC;MACxC,IAAI,IAAI,CAACm8C,yBAAyB,CAAClnC,MAAM,EAAEjV,IAAI,CAAC,EAAE;QAChD,IAAI,CAACyO,YAAY,CAAC,4BAA4B,CAAC;QAC/C,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAGAo6C,eAAeA,CAAAA,EAAe;IAC5B,OAAO,IAAI,CAAC/iC,kBAAkB,CAC5BgjC,KACqC,IACQ,IAI/C,CAAC;EACH;EAGAC,sBAAsBA,CAAAA,EAAe;IACnC,OAAO,IAAI,CAACjjC,kBAAkB,CAC5BgjC,KAC6C,IAC1C,CAAC,IAAI,CAAC9/D,OAAO,CAACH,MAAM,IAAI,IAAI,CAACqH,KAAK,CAACgP,MAAM,GACtC,CAAC,IACsC,CAC/C,CAAC;EACH;EAEAo9C,+CAA+CA,CAE7C0M,oBAA6B,GAAG,KAAK,EACrC;IACA,IAAIn/D,KAAyB,IAAmC;IAChE,IAAI,IAAI,CAACb,OAAO,CAACH,MAAM,IAAI,CAAC,IAAI,CAACqH,KAAK,CAACgP,MAAM,EAAE;MAC7CrV,KAAK,KAA+C;MACpD,IAAIm/D,oBAAoB,EAAE;QACxBn/D,KAAK,KAA2C;MAClD;IACF;IACA,OAAO,IAAI,CAACi8B,kBAAkB,CAACj8B,KAAK,CAAC;EACvC;EASAo/D,cAAcA,CAAAA,EAAe;IAC3B,OAAO,IAAI,CAACnjC,kBAAkB,EAAiC,CAAC;EAClE;EAIAA,kBAAkBA,CAEhBj8B,KAAyB,EAOA;IACzB,IAAImG,UAAgC,GAAG,IAAI;IAE3C,IAAI,IAAI,CAAC6Z,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB7Z,UAAU,GAAG,IAAI,CAAC6yD,eAAe,CAAC,IAAI,CAAC;IACzC;IACA,OAAO,IAAI,CAAC7K,qBAAqB,CAACnuD,KAAK,EAAEmG,UAAU,CAAC;EACtD;EAEAgoD,qBAAqBA,CAEnBnuD,KAAyB,EACzBmG,UAAiC,EACpB;IACb,MAAMglD,SAAS,GAAG,IAAI,CAAC9kD,KAAK,CAACnY,IAAI;IACjC,MAAMD,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAE;IAC7B,MAAMy7D,gBAAgB,GAAG,CAAC,EAAEr/D,KAAK,IAAsC,CAAC;IACxE,MAAMs/D,wBAAwB,GAAG,CAAC,EAChCt/D,KAAK,IAA8C,CACpD;IACD,MAAMsC,QAAQ,GAAGtC,KAAK,IAAuC;IAM7D,QAAQmrD,SAAS;MACf,KAAA,EAAA;QACE,OAAO,IAAI,CAACoU,2BAA2B,CAACtxE,IAAI,EAAgB,IAAI,CAAC;MACnE,KAAA,EAAA;QACE,OAAO,IAAI,CAACsxE,2BAA2B,CAACtxE,IAAI,EAAgB,KAAK,CAAC;MACpE,KAAA,EAAA;QACE,OAAO,IAAI,CAACuxE,sBAAsB,CAACvxE,IAAmC,CAAC;MACzE,KAAA,EAAA;QACE,OAAO,IAAI,CAACwxE,qBAAqB,CAACxxE,IAAkC,CAAC;MACvE,KAAA,EAAA;QACE,OAAO,IAAI,CAACyxE,iBAAiB,CAACzxE,IAA8B,CAAC;MAC/D,KAAA,EAAA;QACE,IAAI,IAAI,CAACk1B,iBAAiB,EAAE,OAAkB,EAAE;QAChD,IAAI,CAACm8C,wBAAwB,EAAE;UAC7B,IAAI,CAAC95D,KAAK,CACR,IAAI,CAACa,KAAK,CAACgP,MAAM,GACb3X,MAAM,CAAC/D,cAAc,GACrB,IAAI,CAACwF,OAAO,CAACH,MAAM,GACjBtB,MAAM,CAACnH,oBAAoB,GAC3BmH,MAAM,CAACpH,cAAc,EAC3B,IAAI,CAAC+P,KAAK,CAAC1B,QACb,CAAC;QACH;QACA,OAAO,IAAI,CAAC0mD,sBAAsB,CAChCp9D,IAAI,EACJ,KAAK,EACL,CAACoxE,gBAAgB,IAAIC,wBACvB,CAAC;MACH,KAAA,EAAA;QACE,IAAI,CAACD,gBAAgB,EAAE,IAAI,CAAClsE,UAAU,EAAE;QACxC,OAAO,IAAI,CAACm4D,UAAU,CACpB,IAAI,CAAC8E,mBAAmB,CACtBjqD,UAAU,EACVlY,IACF,CAAC,EACD,IACF,CAAC;MAEH,KAAA,EAAA;QACE,OAAO,IAAI,CAAC0xE,gBAAgB,CAAC1xE,IAA6B,CAAC;MAC7D,KAAA,EAAA;QACE,OAAO,IAAI,CAAC2xE,oBAAoB,CAAC3xE,IAAiC,CAAC;MACrE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC4xE,oBAAoB,CAAC5xE,IAAiC,CAAC;MACrE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC6xE,mBAAmB,CAAC7xE,IAAgC,CAAC;MACnE,KAAA,EAAA;QACE,OAAO,IAAI,CAAC8xE,iBAAiB,CAAC9xE,IAA8B,CAAC;MAE/D,KAAA,EAAA;QAEE,IAAI,CAAC,IAAI,CAACoY,KAAK,CAAC0X,WAAW,IAAI,IAAI,CAACghD,gBAAgB,CAAA,CAAE,EAAE;UACtD,IAAI,CAAC,IAAI,CAACzH,oBAAoB,EAAE,EAAE;YAChC,IAAI,CAAC9xD,KAAK,CAAC9H,MAAM,CAAC9O,2BAA2B,EAAEX,IAAI,CAAC;UACtD,CAAC,MAAM,IAAI,CAACoxE,gBAAgB,EAAE;YAC5B,IAAI,CAAC75D,KAAK,CAAC9H,MAAM,CAACnG,4BAA4B,EAAEtJ,IAAI,CAAC;UACvD;UACA,IAAI,CAACkoB,IAAI,CAAA,CAAE;UACX,OAAO,IAAI,CAACo1C,iBAAiB,CAC3Bt9D,IAAI,EACJ,aACF,CAAC;QACH;QACA;MACF,KAAA,GAAA;QAEE,IACE,IAAI,CAACoY,KAAK,CAAC0X,WAAW,IACtB,CAAC,IAAI,CAAC8gD,0CAA0C,CAAA,CAAE,EAClD;UACA;QACF;QACA,IAAI,CAACj6C,YAAY,CAAC,4BAA4B,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC9M,KAAK,CAACnC,QAAQ,IAAI,IAAI,CAACmC,KAAK,CAAChB,UAAU,EAAE;UACjD,IAAI,CAACtR,KAAK,CAAC9H,MAAM,CAAC1F,0BAA0B,EAAE,IAAI,CAACqO,KAAK,CAAC1B,QAAQ,CAAC;QACpE,CAAC,MAAM,IAAI,CAAC06D,gBAAgB,EAAE;UAC5B,IAAI,CAAC75D,KAAK,CAAC9H,MAAM,CAACnG,4BAA4B,EAAE,IAAI,CAAC8O,KAAK,CAAC1B,QAAQ,CAAC;QACtE;QACA,OAAO,IAAI,CAAC4mD,iBAAiB,CAC3Bt9D,IAAI,EACJ,OACF,CAAC;MACH,KAAA,GAAA;QAAc;UACZ,IAAI,IAAI,CAACoY,KAAK,CAAC0X,WAAW,EAAE;YAC1B;UACF;UAGA,MAAM5H,IAAI,GAAG,IAAI,CAAC6M,cAAc,EAAE;UAClC,MAAMoI,MAAM,GAAG,IAAI,CAAC7H,cAAc,CAACpN,IAAI,CAAC;UACxC,IAAIiV,MAAM,OAAgC,EAAE;YAC1C,IAAI,CAACi0C,gBAAgB,IAAI,IAAI,CAAC3zC,qBAAqB,CAAE,CAAA,EAAE;YACvD,IACE,CAAC,IAAI,CAAC4mC,yBAAyB,CAAClnC,MAAM,EAAEjV,IAAI,CAAC,IAC7CiV,MAAM,KAAA,GAA6B,EACnC;cACA;YACF;UACF;QACF;MAEA,KAAA,EAAA;QAAgB;UACd,IAAI,CAACi0C,gBAAgB,EAAE;YACrB,IAAI,CAAC75D,KAAK,CAAC9H,MAAM,CAACnG,4BAA4B,EAAE,IAAI,CAAC8O,KAAK,CAAC1B,QAAQ,CAAC;UACtE;QACF;MAEA,KAAA,EAAA;QAAc;UACZ,MAAMrW,IAAI,GAAG,IAAI,CAAC+X,KAAK,CAACpL,KAAK;UAC7B,OAAO,IAAI,CAACswD,iBAAiB,CAC3Bt9D,IAAI,EACJK,IACF,CAAC;QACH;MACA,KAAA,EAAA;QACE,OAAO,IAAI,CAAC0xE,mBAAmB,CAAC/xE,IAAgC,CAAC;MACnE,KAAA,EAAA;QACE,OAAO,IAAI,CAACgyE,kBAAkB,CAAChyE,IAA+B,CAAC;MACjE,KAAA,CAAA;QACE,OAAO,IAAI,CAAC0kE,UAAU,EAAE;MAC1B,KAAA,EAAA;QACE,OAAO,IAAI,CAACuN,mBAAmB,CAACjyE,IAAgC,CAAC;MACnE,KAAA,EAAA;QAAiB;UACf,MAAMkyE,iBAAiB,GAAG,IAAI,CAACh9C,iBAAiB,EAAE;UAClD,IACEg9C,iBAAiB,KAAA,EAA8B,IAC/CA,iBAAiB,OAAkB,EACnC;YACA;UACF;QACF;MAEA,KAAA,EAAA;QAAiB;UACf,IACE,EAAE,IAAI,CAACtgE,WAAW,IAA0C,CAAC,IAC7D,CAACyC,QAAQ,EACT;YACA,IAAI,CAACkD,KAAK,CAAC9H,MAAM,CAACvG,sBAAsB,EAAE,IAAI,CAACkP,KAAK,CAAC1B,QAAQ,CAAC;UAChE;UAEA,IAAI,CAACwR,IAAI,CAAA,CAAE;UAEX,IAAIwnB,MAAM;UACV,IAAIwtB,SAAS,OAAe,EAAE;YAC5BxtB,MAAM,GAAG,IAAI,CAACjI,WAAW,CAACznC,IAAmC,CAAC;YAE9D,IACE0vC,MAAM,CAACzvC,IAAI,KAAK,mBAAmB,KAClC,CAACyvC,MAAM,CAACjL,UAAU,IAAIiL,MAAM,CAACjL,UAAU,KAAK,OAAO,CAAC,EACrD;cACA,IAAI,CAAC9Z,iBAAiB,GAAG,IAAI;YAC/B;UACF,CAAC,MAAM;YACL+kB,MAAM,GAAG,IAAI,CAACz3B,WAAW,CACvBjY,IAAI,EAKJkY,UACF,CAAC;YAED,IACGw3B,MAAM,CAACzvC,IAAI,KAAK,wBAAwB,KACtC,CAACyvC,MAAM,CAAC7H,UAAU,IAAI6H,MAAM,CAAC7H,UAAU,KAAK,OAAO,CAAC,IACtD6H,MAAM,CAACzvC,IAAI,KAAK,sBAAsB,KACpC,CAACyvC,MAAM,CAAC7H,UAAU,IAAI6H,MAAM,CAAC7H,UAAU,KAAK,OAAO,CAAE,IACxD6H,MAAM,CAACzvC,IAAI,KAAK,0BAA0B,EAC1C;cACA,IAAI,CAAC0qB,iBAAiB,GAAG,IAAI;YAC/B;UACF;UAEA,IAAI,CAACklB,uBAAuB,CAACH,MAAM,CAAC;UAEpC,OAAOA,MAAM;QACf;MAEA;QAAS;UACP,IAAI,IAAI,CAACyiC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAACf,gBAAgB,EAAE;cACrB,IAAI,CAAC75D,KAAK,CACR9H,MAAM,CAAClP,qCAAqC,EAC5C,IAAI,CAAC6X,KAAK,CAAC1B,QACb,CAAC;YACH;YACA,IAAI,CAACwR,IAAI,CAAA,CAAE;YACX,OAAO,IAAI,CAACk1C,sBAAsB,CAChCp9D,IAAI,EACJ,IAAI,EACJ,CAACoxE,gBAAgB,IAAIC,wBACvB,CAAC;UACH;QACF;IACF;IAOA,MAAMe,SAAS,GAAG,IAAI,CAACh6D,KAAK,CAACpL,KAAK;IAClC,MAAMmhC,IAAI,GAAG,IAAI,CAACrI,eAAe,EAAE;IAEnC,IACE9gB,iBAAiB,CAACk4C,SAAS,CAAC,IAC5B/uB,IAAI,CAACluC,IAAI,KAAK,YAAY,IAC1B,IAAI,CAACw0B,GAAG,CAAA,EAAS,CAAC,EAClB;MACA,OAAO,IAAI,CAAC49C,qBAAqB,CAC/BryE,IAAI,EACJoyE,SAAS,EACTjkC,IAAI,EACJp8B,KACF,CAAC;IACH,CAAC,MAAM;MACL,OAAO,IAAI,CAACm8B,wBAAwB,CAClCluC,IAAI,EACJmuC,IAAI,EACJj2B,UACF,CAAC;IACH;EACF;EAEA23B,uBAAuBA,CAAC7vC,IAAY,EAAQ;IAC1C,IACE,EAAE,IAAI,CAAC4R,WAAW,IAA0C,CAAC,IAC7D,CAAC,IAAI,CAAC8V,QAAQ,EACd;MACA,IAAI,CAACnQ,KAAK,CAAC9H,MAAM,CAAClR,mBAAmB,EAAEyB,IAAI,CAAC;IAC9C;EACF;EAEAsyE,6BAA6BA,CAAAA,EAAY;IACvC,IAAI,IAAI,CAACrnD,SAAS,CAAC,mBAAmB,CAAC,EAAE,OAAO,IAAI;IACpD,OACE,IAAI,CAACA,SAAS,CAAC,YAAY,CAAC,IAC5B,IAAI,CAACpW,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAAK,KAAK;EAE1E;EAQAstD,mBAAmBA,CACjBoQ,eAAqC,EACrCC,SAAY,EACZC,UAA0E,EACvE;IACH,IAAIF,eAAe,EAAE;MAAA,IAAAG,qBAAA;MACnB,IAAAA,CAAAA,qBAAA,GAAIF,SAAS,CAACt6D,UAAU,KAApBw6D,IAAAA,IAAAA,qBAAA,CAAsBl6D,MAAM,EAAE;QAGhC,IACE,OAAO,IAAI,CAAC3D,eAAe,CACzB,YAAY,EACZ,wBACF,CAAC,KAAK,SAAS,EACf;UAIA,IAAI,CAAC0C,KAAK,CACR9H,MAAM,CAAChO,2BAA2B,EAClC+wE,SAAS,CAACt6D,UAAU,CAAC,CAAC,CACxB,CAAC;QACH;QACAs6D,SAAS,CAACt6D,UAAU,CAACyT,OAAO,CAAC,GAAG4mD,eAAe,CAAC;MAClD,CAAC,MAAM;QACLC,SAAS,CAACt6D,UAAU,GAAGq6D,eAAe;MACxC;MACA,IAAI,CAAC5xC,0BAA0B,CAAC6xC,SAAS,EAAED,eAAe,CAAC,CAAC,CAAC,CAAC;MAC9D,IAAIE,UAAU,EAAE,IAAI,CAAC9xC,0BAA0B,CAAC8xC,UAAU,EAAED,SAAS,CAAC;IACxE;IACA,OAAOA,SAAS;EAClB;EAEA9Q,uBAAuBA,CAAAA,EAAY;IACjC,OAAO,IAAI,CAAC3vC,KAAK,CAAA,EAAU,CAAC;EAC9B;EAEAg5C,eAAeA,CAAe4H,WAAqB,EAAiB;IAClE,MAAMz6D,UAAU,GAAG,EAAE;IACrB,GAAG;MACDA,UAAU,CAAC2D,IAAI,CAAC,IAAI,CAAC+wC,cAAc,CAAE,CAAA,CAAC;IACxC,CAAC,QAAQ,IAAI,CAAC76B,KAAK,GAAM,CAAC;IAE1B,IAAI,IAAI,CAACA,KAAK,CAAA,EAAW,CAAC,EAAE;MAC1B,IAAI,CAAC4gD,WAAW,EAAE;QAChB,IAAI,CAACztE,UAAU,CAAA,CAAE;MACnB;MAEA,IAAI,CAAC,IAAI,CAACotE,6BAA6B,EAAE,EAAE;QACzC,IAAI,CAAC/6D,KAAK,CAAC9H,MAAM,CAAC9N,oBAAoB,EAAE,IAAI,CAACyW,KAAK,CAAC1B,QAAQ,CAAC;MAC9D;KACD,MAAM,IAAI,CAAC,IAAI,CAACgrD,uBAAuB,EAAE,EAAE;MAC1C,MAAM,IAAI,CAACnqD,KAAK,CAAC9H,MAAM,CAACpG,0BAA0B,EAAE,IAAI,CAAC+O,KAAK,CAAC1B,QAAQ,CAAC;IAC1E;IAEA,OAAOwB,UAAU;EACnB;EAEA00C,cAAcA,CAAAA,EAA4B;IACxC,IAAI,CAAC9yB,eAAe,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAEzD,MAAM95B,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAe;IAC1C,IAAI,CAACuS,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAAC+C,SAAS,CAAC,YAAY,CAAC,EAAE;MAChC,MAAMvU,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;MACpC,IAAIy3B,IAAkB;MAEtB,IAAI,IAAI,CAACpc,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,MAAMrb,QAAQ,GAAG,IAAI,CAAC0B,KAAK,CAAC1B,QAAQ;QACpC,IAAI,CAACwR,IAAI,CAAA,CAAE;QACXimB,IAAI,GAAG,IAAI,CAACrI,eAAe,EAAE;QAC7B,IAAI,CAACjI,MAAM,CAAA,EAAU,CAAC;QACtBsQ,IAAI,GAAG,IAAI,CAACo+B,eAAe,CAAC71D,QAAQ,EAAEy3B,IAAI,CAAC;QAE3C,MAAMykC,cAAc,GAAG,IAAI,CAACx6D,KAAK,CAAC1B,QAAQ;QAC1C1W,IAAI,CAACmT,UAAU,GAAG,IAAI,CAACsuD,4BAA4B,CAACtzB,IAAI,EAAEz3B,QAAQ,CAAC;QACnE,IACE,IAAI,CAAC7B,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAC1D,KAAK,IACP7U,IAAI,CAACmT,UAAU,KAAKg7B,IAAI,EACxB;UACA,IAAI,CAAC52B,KAAK,CACR9H,MAAM,CAAClO,oCAAoC,EAC3CqxE,cACF,CAAC;QACH;MACF,CAAC,MAAM;QACLzkC,IAAI,GAAG,IAAI,CAAC/H,eAAe,CAAC,KAAK,CAAC;QAElC,OAAO,IAAI,CAAC3R,GAAG,CAAA,EAAO,CAAC,EAAE;UACvB,MAAMz0B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAqBhqB,QAAQ,CAAC;UAC3D1W,IAAI,CAACqR,MAAM,GAAG88B,IAAI;UAClB,IAAI,IAAI,CAACpc,KAAK,CAAA,GAAe,CAAC,EAAE;YAC9B,IAAI,CAAC5a,UAAU,CAACC,cAAc,CAC5B,IAAI,CAACgB,KAAK,CAACpL,KAAK,EAChB,IAAI,CAACoL,KAAK,CAAC1B,QACb,CAAC;YACD1W,IAAI,CAAC6+B,QAAQ,GAAG,IAAI,CAACjqB,gBAAgB,EAAE;UACzC,CAAC,MAAM;YACL5U,IAAI,CAAC6+B,QAAQ,GAAG,IAAI,CAACuH,eAAe,CAAC,IAAI,CAAC;UAC5C;UACApmC,IAAI,CAAC6V,QAAQ,GAAG,KAAK;UACrBs4B,IAAI,GAAG,IAAI,CAACr4B,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;QAClD;QAEAA,IAAI,CAACmT,UAAU,GAAG,IAAI,CAACsuD,4BAA4B,CAACtzB,IAAI,EAAEz3B,QAAQ,CAAC;MACrE;IACF,CAAC,MAAM;MACL1W,IAAI,CAACmT,UAAU,GAAG,IAAI,CAACy2D,mBAAmB,EAAE;IAC9C;IACA,OAAO,IAAI,CAAC9zD,UAAU,CAAC9V,IAAI,EAAE,WAAW,CAAC;EAC3C;EAEAyhE,4BAA4BA,CAE1BtzB,IAAkB,EAClBz3B,QAAkB,EACJ;IACd,IAAI,IAAI,CAAC+d,GAAG,CAAA,EAAU,CAAC,EAAE;MACvB,MAAMz0B,IAAI,GAAG,IAAI,CAAC0gC,WAAW,CAAmBhqB,QAAQ,CAAC;MACzD1W,IAAI,CAAC2X,MAAM,GAAGw2B,IAAI;MAClBnuC,IAAI,CAAC8X,SAAS,GAAG,IAAI,CAACw9B,4BAA4B,GAAU,CAAC;MAC7D,IAAI,CAACrE,gBAAgB,CAACjxC,IAAI,CAAC8X,SAAS,CAAC;MACrC,OAAO,IAAI,CAAChC,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;IAChD;IAEA,OAAOmuC,IAAI;EACb;EAUAmjC,2BAA2BA,CACzBtxE,IAAoD,EACpDukE,OAAgB,EACwB;IACxC,IAAI,CAACr8C,IAAI,CAAA,CAAE;IAEX,IAAI,IAAI,CAACwV,gBAAgB,EAAE,EAAE;MAC3B19B,IAAI,CAACwa,KAAK,GAAG,IAAI;IACnB,CAAC,MAAM;MACLxa,IAAI,CAACwa,KAAK,GAAG,IAAI,CAAC4rB,eAAe,EAAE;MACnC,IAAI,CAACzI,SAAS,CAAA,CAAE;IAClB;IAEA,IAAI,CAAC2mC,mBAAmB,CAACtkE,IAAI,EAAEukE,OAAO,CAAC;IAEvC,OAAO,IAAI,CAACzuD,UAAU,CACpB9V,IAAI,EACJukE,OAAO,GAAG,gBAAgB,GAAG,mBAC/B,CAAC;EACH;EAEAD,mBAAmBA,CACjBtkE,IAAoD,EACpDukE,OAAgB,EAChB;IACA,IAAIz9C,CAAC;IACL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC1O,KAAK,CAACyW,MAAM,CAACrW,MAAM,EAAE,EAAEsO,CAAC,EAAE;MAC7C,MAAM+rD,GAAG,GAAG,IAAI,CAACz6D,KAAK,CAACyW,MAAM,CAAC/H,CAAC,CAAC;MAChC,IAAI9mB,IAAI,CAACwa,KAAK,IAAI,IAAI,IAAIq4D,GAAG,CAAC1sE,IAAI,KAAKnG,IAAI,CAACwa,KAAK,CAACrU,IAAI,EAAE;QACtD,IAAI0sE,GAAG,CAACxyE,IAAI,IAAI,IAAI,KAAKkkE,OAAO,IAAIsO,GAAG,CAACxyE,IAAI,MAAuB,CAAC,EAAE;UACpE;QACF;QACA,IAAIL,IAAI,CAACwa,KAAK,IAAI+pD,OAAO,EAAE;MAC7B;IACF;IACA,IAAIz9C,CAAC,KAAK,IAAI,CAAC1O,KAAK,CAACyW,MAAM,CAACrW,MAAM,EAAE;MAClC,MAAMvY,IAAI,GAAGskE,OAAO,GAAG,gBAAgB,GAAG,mBAAmB;MAC7D,IAAI,CAAChtD,KAAK,CAAC9H,MAAM,CAACtM,oBAAoB,EAAEnD,IAAI,EAAE;QAAEC;MAAK,CAAC,CAAC;IACzD;EACF;EAEAsxE,sBAAsBA,CACpBvxE,IAAiC,EACZ;IACrB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,CAACyV,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEA8yE,qBAAqBA,CAAAA,EAA6B;IAChD,IAAI,CAACj1C,MAAM,CAAA,EAAU,CAAC;IACtB,MAAM5K,GAAG,GAAG,IAAI,CAAC6S,eAAe,EAAE;IAClC,IAAI,CAACjI,MAAM,CAAA,EAAU,CAAC;IACtB,OAAO5K,GAAG;EACZ;EAGAu+C,qBAAqBA,CAEnBxxE,IAAgC,EACZ;IACpB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,CAAC9P,KAAK,CAACyW,MAAM,CAAChT,IAAI,CAACwzD,SAAS,CAAC;IAGjCrvE,IAAI,CAAC0U,IAAI,GAIP,IAAI,CAACm6D,kCAAkC,CAAC,MAEtC,IAAI,CAACsC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAAC/4D,KAAK,CAACyW,MAAM,CAACxI,GAAG,EAAE;IAEvB,IAAI,CAACwX,MAAM,CAAA,EAAU,CAAC;IACtB79B,IAAI,CAACgnB,IAAI,GAAG,IAAI,CAAC8rD,qBAAqB,EAAE;IACxC,IAAI,CAACr+C,GAAG,CAAA,EAAQ,CAAC;IACjB,OAAO,IAAI,CAAC3e,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAUAyxE,iBAAiBA,CAEfzxE,IAAwC,EAC7B;IACX,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,CAAC9P,KAAK,CAACyW,MAAM,CAAChT,IAAI,CAACwzD,SAAS,CAAC;IAEjC,IAAI0D,OAAO,GAAG,IAAI;IAElB,IAAI,IAAI,CAACh2C,YAAY,CAAU,EAAA,CAAC,IAAI,IAAI,CAACssC,oBAAoB,CAAA,CAAE,EAAE;MAC/D0J,OAAO,GAAG,IAAI,CAAC36D,KAAK,CAAC1B,QAAQ;MAC7B,IAAI,CAACwR,IAAI,CAAA,CAAE;IACb;IACA,IAAI,CAAC2B,KAAK,CAACF,KAAK,EAAgB,CAAC;IACjC,IAAI,CAACkU,MAAM,CAAA,EAAU,CAAC;IAEtB,IAAI,IAAI,CAAC9L,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,IAAIghD,OAAO,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC7tE,UAAU,CAAC6tE,OAAO,CAAC;MAC1B;MACA,OAAO,IAAI,CAACC,QAAQ,CAAChzE,IAAI,EAA4B,IAAI,CAAC;IAC5D;IAEA,MAAMizE,aAAa,GAAG,IAAI,CAACl2C,YAAY,IAAQ,CAAC;IAChD;MACE,MAAMm2C,oBAAoB,GACxB,IAAI,CAACn2C,YAAY,CAAA,EAAU,CAAC,IAAI,IAAI,CAAC+zC,gBAAgB,EAAE;MACzD,MAAMqC,yBAAyB,GAC7BD,oBAAoB,IACnB,IAAI,CAACn2C,YAAY,CAAU,GAAA,CAAC,IAAI,IAAI,CAAC8zC,gBAAgB,EAAG;MAC3D,MAAMuC,YAAY,GACfH,aAAa,IAAI,IAAI,CAACxC,uBAAuB,CAAA,CAAE,IAChD0C,yBAAyB;MAE3B,IAAI,IAAI,CAACphD,KAAK,CAAA,EAAQ,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAU,CAAC,IAAIqhD,YAAY,EAAE;QAChE,MAAMC,QAAQ,GAAG,IAAI,CAAC19D,SAAS,EAAyB;QACxD,IAAItV,IAAI;QACR,IAAI6yE,oBAAoB,EAAE;UACxB7yE,IAAI,GAAG,aAAa;UACpB,IAAI,CAAC,IAAI,CAACgpE,oBAAoB,EAAE,EAAE;YAChC,IAAI,CAAC9xD,KAAK,CAAC9H,MAAM,CAAC9O,2BAA2B,EAAE,IAAI,CAACyX,KAAK,CAAC1B,QAAQ,CAAC;UACrE;UACA,IAAI,CAACwR,IAAI,CAAA,CAAE;QACb,CAAC,MAAM;UACL7nB,IAAI,GAAG,IAAI,CAAC+X,KAAK,CAACpL,KAAK;QACzB;QACA,IAAI,CAACkb,IAAI,CAAA,CAAE;QACX,IAAI,CAACorD,QAAQ,CAACD,QAAQ,EAAE,IAAI,EAAEhzE,IAAI,CAAC;QACnC,MAAM8uB,IAAI,GAAG,IAAI,CAACrZ,UAAU,CAACu9D,QAAQ,EAAE,qBAAqB,CAAC;QAE7D,MAAME,OAAO,GAAG,IAAI,CAACxhD,KAAK,GAAO,CAAC;QAClC,IAAIwhD,OAAO,IAAIJ,yBAAyB,EAAE;UACxC,IAAI,CAAC57D,KAAK,CAAC9H,MAAM,CAAC1M,UAAU,EAAEosB,IAAI,CAAC;QACrC;QACA,IACE,CAACokD,OAAO,IAAI,IAAI,CAACx2C,YAAY,CAAO,GAAA,CAAC,KACrC5N,IAAI,CAAC6wC,YAAY,CAACxnD,MAAM,KAAK,CAAC,EAC9B;UACA,OAAO,IAAI,CAACg7D,UAAU,CAACxzE,IAAI,EAAuBmvB,IAAI,EAAE4jD,OAAO,CAAC;QAClE;QACA,IAAIA,OAAO,KAAK,IAAI,EAAE;UACpB,IAAI,CAAC7tE,UAAU,CAAC6tE,OAAO,CAAC;QAC1B;QACA,OAAO,IAAI,CAACC,QAAQ,CAAChzE,IAAI,EAA4BmvB,IAAI,CAAC;MAC5D;IACF;IAIA,MAAMskD,eAAe,GAAG,IAAI,CAAC12C,YAAY,GAAU,CAAC;IAEpD,MAAMpmB,mBAAmB,GAAG,IAAIipB,gBAAgB,EAAE;IAClD,MAAMzQ,IAAI,GAAG,IAAI,CAAC2W,eAAe,CAAC,IAAI,EAAEnvB,mBAAmB,CAAC;IAC5D,MAAM+8D,OAAO,GAAG,IAAI,CAAC32C,YAAY,IAAO,CAAC;IACzC,IAAI22C,OAAO,EAAE;MAEX,IAAIT,aAAa,EAAE;QACjB,IAAI,CAAC17D,KAAK,CAAC9H,MAAM,CAACxM,QAAQ,EAAEksB,IAAI,CAAC;MACnC;MAEA,IAEE4jD,OAAO,KAAK,IAAI,IAChBU,eAAe,IACftkD,IAAI,CAAClvB,IAAI,KAAK,YAAY,EAC1B;QAKA,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAACzM,UAAU,EAAEmsB,IAAI,CAAC;MACrC;IACF;IACA,IAAIukD,OAAO,IAAI,IAAI,CAAC3hD,KAAK,CAAA,EAAO,CAAC,EAAE;MACjC,IAAI,CAAC4N,yBAAyB,CAAChpB,mBAAmB,CAAC;MACnD,IAAI,CAACM,YAAY,CAACkY,IAAI,EAAc,IAAI,CAAC;MACzC,MAAMlvB,IAAI,GAAGyzE,OAAO,GAAG,gBAAgB,GAAG,gBAAgB;MAC1D,IAAI,CAACxmB,SAAS,CAAC/9B,IAAI,EAAE;QAAElvB;MAAK,CAAC,CAAC;MAC9B,OAAO,IAAI,CAACuzE,UAAU,CACpBxzE,IAAI,EAEJmvB,IAAI,EACJ4jD,OACF,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAAC10C,qBAAqB,CAAC1nB,mBAAmB,EAAE,IAAI,CAAC;IACvD;IACA,IAAIo8D,OAAO,KAAK,IAAI,EAAE;MACpB,IAAI,CAAC7tE,UAAU,CAAC6tE,OAAO,CAAC;IAC1B;IACA,OAAO,IAAI,CAACC,QAAQ,CAAChzE,IAAI,EAA4BmvB,IAAI,CAAC;EAC5D;EAGAiuC,sBAAsBA,CAEpBp9D,IAAmC,EACnC0T,OAAgB,EAChBigE,oBAA6B,EACN;IACvB,IAAI,CAACzrD,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAAC6jD,aAAa,CACvB/rE,IAAI,EACJ4zE,KACGD,oBAAoB,OAA0C,CAAC,CAAC,IAChEjgE,OAAO,OAA6B,CAAC,CAC1C,CAAC;EACH;EAGAg+D,gBAAgBA,CAAe1xE,IAA2B,EAAE;IAC1D,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACgnB,IAAI,GAAG,IAAI,CAAC8rD,qBAAqB,EAAE;IAGxC9yE,IAAI,CAAC0uC,UAAU,GAAG,IAAI,CAAC81B,+CAA+C,EAAE;IACxExkE,IAAI,CAAC+uC,SAAS,GAAG,IAAI,CAACta,GAAG,CAAA,EAAS,CAAC,GAC/B,IAAI,CAAC+vC,+CAA+C,CAAE,CAAA,GACtD,IAAI;IACR,OAAO,IAAI,CAAC1uD,UAAU,CAAC9V,IAAI,EAAE,aAAa,CAAC;EAC7C;EAEA2xE,oBAAoBA,CAAe3xE,IAA+B,EAAE;IAClE,IACE,CAAC,IAAI,CAACs/B,SAAS,CAAC5C,SAAS,IACzB,EAAE,IAAI,CAAC9qB,WAAW,IAAyC,CAAC,EAC5D;MACA,IAAI,CAAC2F,KAAK,CAAC9H,MAAM,CAACpM,aAAa,EAAE,IAAI,CAAC+U,KAAK,CAAC1B,QAAQ,CAAC;IACvD;IAEA,IAAI,CAACwR,IAAI,CAAA,CAAE;IAMX,IAAI,IAAI,CAACwV,gBAAgB,EAAE,EAAE;MAC3B19B,IAAI,CAAC8O,QAAQ,GAAG,IAAI;IACtB,CAAC,MAAM;MACL9O,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAACg3B,eAAe,EAAE;MACtC,IAAI,CAACnI,SAAS,CAAA,CAAE;IAClB;IAEA,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAGA4xE,oBAAoBA,CAAe5xE,IAA+B,EAAE;IAClE,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACXloB,IAAI,CAAC6zE,YAAY,GAAG,IAAI,CAACf,qBAAqB,EAAE;IAChD,MAAMgB,KAAiC,GAAI9zE,IAAI,CAAC8zE,KAAK,GAAG,EAAG;IAC3D,IAAI,CAACj2C,MAAM,CAAA,CAAU,CAAC;IACtB,IAAI,CAACzlB,KAAK,CAACyW,MAAM,CAAChT,IAAI,CAACyzD,WAAW,CAAC;IACnC,IAAI,CAACzlD,KAAK,CAACF,KAAK,EAAgB,CAAC;IAMjC,IAAIoqD,GAAG;IACP,KAAK,IAAIC,UAAU,EAAE,CAAC,IAAI,CAACjiD,KAAK,CAAU,CAAA,CAAC,GAAI;MAC7C,IAAI,IAAI,CAACA,KAAK,CAAS,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAY,EAAA,CAAC,EAAE;QACnD,MAAMkiD,MAAM,GAAG,IAAI,CAACliD,KAAK,GAAS,CAAC;QACnC,IAAIgiD,GAAG,EAAE,IAAI,CAACj+D,UAAU,CAACi+D,GAAG,EAAE,YAAY,CAAC;QAE3CD,KAAK,CAACj4D,IAAI,CAAEk4D,GAAG,GAAG,IAAI,CAACp+D,SAAS,CAAiB,CAAA,CAAC;QAClDo+D,GAAG,CAACrlC,UAAU,GAAG,EAAE;QACnB,IAAI,CAACxmB,IAAI,CAAA,CAAE;QACX,IAAI+rD,MAAM,EAAE;UACVF,GAAG,CAAC/sD,IAAI,GAAG,IAAI,CAAC8e,eAAe,EAAE;QACnC,CAAC,MAAM;UACL,IAAIkuC,UAAU,EAAE;YACd,IAAI,CAACz8D,KAAK,CACR9H,MAAM,CAACvI,wBAAwB,EAC/B,IAAI,CAACkR,KAAK,CAACC,eACb,CAAC;UACH;UACA27D,UAAU,GAAG,IAAI;UACjBD,GAAG,CAAC/sD,IAAI,GAAG,IAAI;QACjB;QACA,IAAI,CAAC6W,MAAM,CAAA,EAAS,CAAC;MACvB,CAAC,MAAM;QACL,IAAIk2C,GAAG,EAAE;UACPA,GAAG,CAACrlC,UAAU,CAAC7yB,IAAI,CAAC,IAAI,CAACo1D,sBAAsB,CAAE,CAAA,CAAC;QACpD,CAAC,MAAM;UACL,IAAI,CAAC/rE,UAAU,CAAA,CAAE;QACnB;MACF;IACF;IACA,IAAI,CAAC2kB,KAAK,CAACD,IAAI,EAAE;IACjB,IAAImqD,GAAG,EAAE,IAAI,CAACj+D,UAAU,CAACi+D,GAAG,EAAE,YAAY,CAAC;IAC3C,IAAI,CAAC7rD,IAAI,CAAA,CAAE;IACX,IAAI,CAAC9P,KAAK,CAACyW,MAAM,CAACxI,GAAG,EAAE;IACvB,OAAO,IAAI,CAACvQ,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC;EACjD;EAEA6xE,mBAAmBA,CAAe7xE,IAA8B,EAAE;IAChE,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,IAAI,IAAI,CAACsV,qBAAqB,EAAE,EAAE;MAChC,IAAI,CAACjmB,KAAK,CAAC9H,MAAM,CAACtI,iBAAiB,EAAE,IAAI,CAACiR,KAAK,CAACsB,aAAa,CAAC;IAChE;IACA1Z,IAAI,CAAC8O,QAAQ,GAAG,IAAI,CAACg3B,eAAe,EAAE;IACtC,IAAI,CAACnI,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEA+hE,qBAAqBA,CAAAA,EAA0B;IAC7C,MAAMv0B,KAAK,GAAG,IAAI,CAACmG,gBAAgB,EAAE;IAErC,IAAI,CAAC9pB,KAAK,CAACF,KAAK,CACd,IAAI,CAACzY,OAAO,CAACH,MAAM,IAAIy8B,KAAK,CAACvtC,IAAI,KAAK,YAAY,OAE9C,CACN,CAAC;IACD,IAAI,CAACitD,SAAS,CACZ1f,KAAK,EACL;MAAEvtC,IAAI,EAAE;IAAc,CAAC,GAEzB,CAAC;IAED,OAAOutC,KAAK;EACd;EAEAskC,iBAAiBA,CAEf9xE,IAA4B,EACZ;IAChB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IAEXloB,IAAI,CAACk0E,KAAK,GAAG,IAAI,CAACxP,UAAU,EAAE;IAC9B1kE,IAAI,CAACm0E,OAAO,GAAG,IAAI;IAEnB,IAAI,IAAI,CAACpiD,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,MAAMqiD,MAAM,GAAG,IAAI,CAACz+D,SAAS,EAAiB;MAC9C,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,IAAI,IAAI,CAAC6J,KAAK,CAAA,EAAU,CAAC,EAAE;QACzB,IAAI,CAAC8L,MAAM,CAAA,EAAU,CAAC;QACtBu2C,MAAM,CAAC5mC,KAAK,GAAG,IAAI,CAACu0B,qBAAqB,EAAE;QAC3C,IAAI,CAAClkC,MAAM,CAAA,EAAU,CAAC;MACxB,CAAC,MAAM;QACLu2C,MAAM,CAAC5mC,KAAK,GAAG,IAAI;QACnB,IAAI,CAAC3jB,KAAK,CAACF,KAAK,EAAgB,CAAC;MACnC;MAGAyqD,MAAM,CAAC1/D,IAAI,GAGT,IAAI,CAACm6D,kCAAkC,CAAC,MAEtC,IAAI,CAACnK,UAAU,CAAC,KAAK,EAAE,KAAK,CAC9B,CAAC;MAEH,IAAI,CAAC76C,KAAK,CAACD,IAAI,EAAE;MACjB5pB,IAAI,CAACm0E,OAAO,GAAG,IAAI,CAACr+D,UAAU,CAACs+D,MAAM,EAAE,aAAa,CAAC;IACvD;IAEAp0E,IAAI,CAACq0E,SAAS,GAAG,IAAI,CAAC5/C,GAAG,CAAA,EAAY,CAAC,GAAG,IAAI,CAACiwC,UAAU,CAAE,CAAA,GAAG,IAAI;IAEjE,IAAI,CAAC1kE,IAAI,CAACm0E,OAAO,IAAI,CAACn0E,IAAI,CAACq0E,SAAS,EAAE;MACpC,IAAI,CAAC98D,KAAK,CAAC9H,MAAM,CAACrI,gBAAgB,EAAEpH,IAAI,CAAC;IAC3C;IAEA,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAIAs9D,iBAAiBA,CAEft9D,IAAmC,EACnCK,IAAuD,EACvD0/D,uBAAgC,GAAG,KAAK,EACjB;IACvB,IAAI,CAAC73C,IAAI,CAAA,CAAE;IACX,IAAI,CAACorD,QAAQ,CAACtzE,IAAI,EAAE,KAAK,EAAEK,IAAI,EAAE0/D,uBAAuB,CAAC;IACzD,IAAI,CAACpiC,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAGA+xE,mBAAmBA,CAEjB/xE,IAA8B,EACZ;IAClB,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACgnB,IAAI,GAAG,IAAI,CAAC8rD,qBAAqB,EAAE;IACxC,IAAI,CAAC16D,KAAK,CAACyW,MAAM,CAAChT,IAAI,CAACwzD,SAAS,CAAC;IAGjCrvE,IAAI,CAAC0U,IAAI,GAIP,IAAI,CAACm6D,kCAAkC,CAAC,MAEtC,IAAI,CAACsC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAAC/4D,KAAK,CAACyW,MAAM,CAACxI,GAAG,EAAE;IAEvB,OAAO,IAAI,CAACvQ,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAgyE,kBAAkBA,CAEhBhyE,IAA6B,EACZ;IACjB,IAAI,IAAI,CAACoY,KAAK,CAACgP,MAAM,EAAE;MACrB,IAAI,CAAC7P,KAAK,CAAC9H,MAAM,CAAC5D,UAAU,EAAE,IAAI,CAACuM,KAAK,CAAC1B,QAAQ,CAAC;IACpD;IACA,IAAI,CAACwR,IAAI,CAAA,CAAE;IACXloB,IAAI,CAACqR,MAAM,GAAG,IAAI,CAACyhE,qBAAqB,EAAE;IAG1C9yE,IAAI,CAAC0U,IAAI,GAKP,IAAI,CAACm6D,kCAAkC,CAAC,MAEtC,IAAI,CAACsC,cAAc,CAAA,CACrB,CAAC;IAEH,OAAO,IAAI,CAACr7D,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEAiyE,mBAAmBA,CAACjyE,IAA8B,EAAoB;IACpE,IAAI,CAACkoB,IAAI,CAAA,CAAE;IACX,OAAO,IAAI,CAACpS,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAGAqyE,qBAAqBA,CAEnBryE,IAAgC,EAChCoyE,SAAiB,EACjBjkC,IAAkB,EAClBp8B,KAAyB,EACL;IACpB,KAAK,MAAMyI,KAAK,IAAI,IAAI,CAACpC,KAAK,CAACyW,MAAM,EAAE;MACrC,IAAIrU,KAAK,CAACrU,IAAI,KAAKisE,SAAS,EAAE;QAC5B,IAAI,CAAC76D,KAAK,CAAC9H,MAAM,CAACjK,kBAAkB,EAAE2oC,IAAI,EAAE;UAC1C1oC,SAAS,EAAE2sE;QACb,CAAC,CAAC;MACJ;IACF;IAEA,MAAM/xE,IAAI,GAAGmlB,WAAW,CAAC,IAAI,CAACpN,KAAK,CAACnY,IAAI,CAAC,OAErC,IAAI,CAAC8xB,KAAK,CAAA,EAAW,CAAC,OAEpB,IAAI;IACV,KAAK,IAAIjL,CAAC,GAAG,IAAI,CAAC1O,KAAK,CAACyW,MAAM,CAACrW,MAAM,GAAG,CAAC,EAAEsO,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACtD,MAAMtM,KAAK,GAAG,IAAI,CAACpC,KAAK,CAACyW,MAAM,CAAC/H,CAAC,CAAC;MAClC,IAAItM,KAAK,CAAC85D,cAAc,KAAKt0E,IAAI,CAACpC,KAAK,EAAE;QACvC4c,KAAK,CAAC85D,cAAc,GAAG,IAAI,CAACzpD,iBAAiB,CAAC,IAAI,CAACzS,KAAK,CAACxa,KAAK,CAAC;QAC/D4c,KAAK,CAACna,IAAI,GAAGA,IAAI;MACnB,CAAC,MAAM;QACL;MACF;IACF;IAEA,IAAI,CAAC+X,KAAK,CAACyW,MAAM,CAAChT,IAAI,CAAC;MACrB1V,IAAI,EAAEisE,SAAS;MACf/xE,IAAI,EAAEA,IAAI;MACVi0E,cAAc,EAAE,IAAI,CAACzpD,iBAAiB,CAAC,IAAI,CAACzS,KAAK,CAACxa,KAAK;IACzD,CAAC,CAAC;IAEFoC,IAAI,CAAC0U,IAAI,GACP3C,KAAK,IAA0C,GAC3C,IAAI,CAACyyD,+CAA+C,CAAC,IAAI,CAAC,GAC1D,IAAI,CAAC2M,cAAc,CAAA,CAAE;IAE3B,IAAI,CAAC/4D,KAAK,CAACyW,MAAM,CAACxI,GAAG,EAAE;IACvBrmB,IAAI,CAACwa,KAAK,GAAG2zB,IAAI;IACjB,OAAO,IAAI,CAACr4B,UAAU,CAAC9V,IAAI,EAAE,kBAAkB,CAAC;EAClD;EAEAkuC,wBAAwBA,CACtBluC,IAAmC,EACnCmuC,IAAkB,EAElBj2B,UAAgC,EAChC;IACAlY,IAAI,CAACmT,UAAU,GAAGg7B,IAAI;IACtB,IAAI,CAACxQ,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,qBAAqB,CAAC;EACrD;EAMA0kE,UAAUA,CAERtwD,eAAwB,GAAG,KAAK,EAChCuwD,qBAA8B,GAAG,IAAI,EACrCrwD,eAA2D,EACzC;IAClB,MAAMtU,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAoB;IAC/C,IAAIvB,eAAe,EAAE;MACnB,IAAI,CAACgE,KAAK,CAAC4W,YAAY,CAAC4G,KAAK,EAAE;IACjC;IACA,IAAI,CAACiI,MAAM,CAAA,CAAU,CAAC;IACtB,IAAI8mC,qBAAqB,EAAE;MACzB,IAAI,CAAC96C,KAAK,CAACF,KAAK,EAAgB,CAAC;IACnC;IACA,IAAI,CAACxV,cAAc,CACjBnU,IAAI,EACJoU,eAAe,EACf,KAAK,EAELE,CAAAA,EAAAA,eACF,CAAC;IACD,IAAIqwD,qBAAqB,EAAE;MACzB,IAAI,CAAC96C,KAAK,CAACD,IAAI,EAAE;IACnB;IACA,OAAO,IAAI,CAAC9T,UAAU,CAAC9V,IAAI,EAAE,gBAAgB,CAAC;EAChD;EAEAgU,gBAAgBA,CAACT,IAAiB,EAAW;IAC3C,OACEA,IAAI,CAACtT,IAAI,KAAK,qBAAqB,IACnCsT,IAAI,CAACJ,UAAU,CAAClT,IAAI,KAAK,eAAe,IACxC,CAACsT,IAAI,CAACJ,UAAU,CAACE,KAAK,CAACa,aAAa;EAExC;EAEAC,cAAcA,CAEZnU,IAAkC,EAClCoU,eAA2C,EAC3CC,QAAiB,EACjBxW,GAAc,EACdyW,eAA2D,EACrD;IACN,MAAMI,IAAkC,GAAI1U,IAAI,CAAC0U,IAAI,GAAG,EAAG;IAC3D,MAAMF,UAA8C,GAAIxU,IAAI,CAACwU,UAAU,GACrE,EAAG;IACL,IAAI,CAAC0nD,2BAA2B,CAC9BxnD,IAAI,EACJN,eAAe,GAAGI,UAAU,GAAG3E,SAAS,EACxCwE,QAAQ,EACRxW,GAAG,EACHyW,eACF,CAAC;EACH;EAKA4nD,2BAA2BA,CAEzBxnD,IAAmB,EACnBF,UAA4C,EAC5CH,QAAiB,EACjBxW,GAAc,EACdyW,eAA2D,EACrD;IACN,MAAM2tD,SAAS,GAAG,IAAI,CAAC7pD,KAAK,CAACgP,MAAM;IACnC,IAAI4mD,sBAAsB,GAAG,KAAK;IAClC,IAAIuG,kBAAkB,GAAG,KAAK;IAE9B,OAAO,CAAC,IAAI,CAACxiD,KAAK,CAACl0B,GAAG,CAAC,EAAE;MACvB,MAAM0V,IAAI,GAAGc,QAAQ,GACjB,IAAI,CAAC08D,eAAe,CAAA,CAAE,GACtB,IAAI,CAACE,sBAAsB,EAAE;MAEjC,IAAIz8D,UAAU,IAAI,CAAC+/D,kBAAkB,EAAE;QACrC,IAAI,IAAI,CAACvgE,gBAAgB,CAACT,IAAI,CAAC,EAAE;UAC/B,MAAML,SAAS,GAAG,IAAI,CAACq9D,eAAe,CAACh9D,IAAI,CAAC;UAC5CiB,UAAU,CAACqH,IAAI,CAAC3I,SAAS,CAAC;UAE1B,IACE,CAAC86D,sBAAsB,IACvB96D,SAAS,CAAClG,KAAK,CAACA,KAAK,KAAK,YAAY,EACtC;YACAghE,sBAAsB,GAAG,IAAI;YAC7B,IAAI,CAACv4C,SAAS,CAAC,IAAI,CAAC;UACtB;UAEA;QACF;QACA8+C,kBAAkB,GAAG,IAAI;QAEzB,IAAI,CAACn8D,KAAK,CAAC4W,YAAY,CAAC4G,KAAK,EAAE;MACjC;MACAlhB,IAAI,CAACmH,IAAI,CAACtI,IAAI,CAAC;IACjB;IAEAe,eAAe,IAAA,IAAA,IAAfA,eAAe,CAAE0/B,IAAI,CAAC,IAAI,EAAEg6B,sBAAsB,CAAC;IAEnD,IAAI,CAAC/L,SAAS,EAAE;MACd,IAAI,CAACxsC,SAAS,CAAC,KAAK,CAAC;IACvB;IAEA,IAAI,CAACvN,IAAI,CAAA,CAAE;EACb;EAMA8qD,QAAQA,CAENhzE,IAA4B,EAC5BmvB,IAAkD,EAClC;IAChBnvB,IAAI,CAACmvB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACwO,SAAS,CAAgB,KAAK,CAAC;IACpC39B,IAAI,CAACgnB,IAAI,GAAG,IAAI,CAAC+K,KAAK,CAAA,EAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC+T,eAAe,EAAE;IAC/D,IAAI,CAACnI,SAAS,CAAgB,KAAK,CAAC;IACpC39B,IAAI,CAACupE,MAAM,GAAG,IAAI,CAACx3C,KAAK,CAAA,EAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC+T,eAAe,EAAE;IACnE,IAAI,CAACjI,MAAM,CAAA,EAAU,CAAC;IAGtB79B,IAAI,CAAC0U,IAAI,GAIP,IAAI,CAACm6D,kCAAkC,CAAC,MAEtC,IAAI,CAACsC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAACtnD,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACxR,KAAK,CAACyW,MAAM,CAACxI,GAAG,EAAE;IAEvB,OAAO,IAAI,CAACvQ,UAAU,CAAC9V,IAAI,EAAE,cAAc,CAAC;EAC9C;EAKAwzE,UAAUA,CAERxzE,IAAuB,EACvBmvB,IAAiD,EACjD4jD,OAAyB,EACd;IACX,MAAMQ,OAAO,GAAG,IAAI,CAACxhD,KAAK,GAAO,CAAC;IAClC,IAAI,CAAC7J,IAAI,CAAA,CAAE;IAEX,IAAIqrD,OAAO,EAAE;MACX,IAAIR,OAAO,KAAK,IAAI,EAAE,IAAI,CAAC7tE,UAAU,CAAC6tE,OAAO,CAAC;IAChD,CAAC,MAAM;MACL/yE,IAAI,CAACw0E,KAAK,GAAGzB,OAAO,KAAK,IAAI;IAC/B;IAEA,IACE5jD,IAAI,CAAClvB,IAAI,KAAK,qBAAqB,IACnCkvB,IAAI,CAAC6wC,YAAY,CAAC,CAAC,CAAC,CAAC7wC,IAAI,IAAI,IAAI,KAChC,CAACokD,OAAO,IACP,CAAC,IAAI,CAACriE,OAAO,CAACH,MAAM,IACpB,IAAI,CAACqH,KAAK,CAACgP,MAAM,IACjB+H,IAAI,CAAC9uB,IAAI,KAAK,KAAK,IACnB8uB,IAAI,CAAC6wC,YAAY,CAAC,CAAC,CAAC,CAAChrD,EAAE,CAAC/U,IAAI,KAAK,YAAY,CAAC,EAChD;MACA,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC3M,sBAAsB,EAAEqsB,IAAI,EAAE;QAC9ClvB,IAAI,EAAEszE,OAAO,GAAG,gBAAgB,GAAG;MACrC,CAAC,CAAC;IACJ;IAEA,IAAIpkD,IAAI,CAAClvB,IAAI,KAAK,mBAAmB,EAAE;MACrC,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC9K,UAAU,EAAEwqB,IAAI,EAAE;QAClCvqB,QAAQ,EAAE;UAAE3E,IAAI,EAAE;QAAe;MACnC,CAAC,CAAC;IACJ;IAEAD,IAAI,CAAC+wC,IAAI,GAAG5hB,IAAI;IAChBnvB,IAAI,CAACopC,KAAK,GAAGmqC,OAAO,GAChB,IAAI,CAACztC,eAAe,EAAE,GACtB,IAAI,CAACmJ,uBAAuB,EAAE;IAClC,IAAI,CAACpR,MAAM,CAAA,EAAU,CAAC;IAGtB79B,IAAI,CAAC0U,IAAI,GAIP,IAAI,CAACm6D,kCAAkC,CAAC,MAEtC,IAAI,CAACsC,cAAc,CAAA,CACrB,CAAC;IAEH,IAAI,CAACtnD,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACxR,KAAK,CAACyW,MAAM,CAACxI,GAAG,EAAE;IAEvB,OAAO,IAAI,CAACvQ,UAAU,CAAC9V,IAAI,EAAEuzE,OAAO,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;EAC7E;EAIAD,QAAQA,CAENtzE,IAAmC,EACnCy0E,KAAc,EACdp0E,IAAuD,EACvD0/D,uBAAgC,GAAG,KAAK,EACT;IAC/B,MAAMC,YAAoC,GAAIhgE,IAAI,CAACggE,YAAY,GAAG,EAAG;IACrEhgE,IAAI,CAACK,IAAI,GAAGA,IAAI;IAChB,SAAS;MACP,MAAMyzC,IAAI,GAAG,IAAI,CAACn+B,SAAS,EAAwB;MACnD,IAAI,CAACk+B,UAAU,CAACC,IAAI,EAAEzzC,IAAI,CAAC;MAC3ByzC,IAAI,CAAC3kB,IAAI,GAAG,CAAC,IAAI,CAACsF,GAAG,CAAA,EAAM,CAAC,GACxB,IAAI,GACJggD,KAAK,GACH,IAAI,CAAC/M,0BAA0B,CAAE,CAAA,GACjC,IAAI,CAACz4B,uBAAuB,CAAA,CAAE;MAEpC,IAAI6E,IAAI,CAAC3kB,IAAI,KAAK,IAAI,IAAI,CAAC4wC,uBAAuB,EAAE;QAClD,IACEjsB,IAAI,CAAC9+B,EAAE,CAAC/U,IAAI,KAAK,YAAY,IAC7B,EAAEw0E,KAAK,KAAK,IAAI,CAAC1iD,KAAK,CAAA,EAAO,CAAC,IAAI,IAAI,CAACgL,YAAY,CAAO,GAAA,CAAC,CAAC,CAAC,EAC7D;UACA,IAAI,CAACxlB,KAAK,CACR9H,MAAM,CAACnO,6BAA6B,EACpC,IAAI,CAAC8W,KAAK,CAACsB,aAAa,EACxB;YACErZ,IAAI,EAAE;UACR,CACF,CAAC;QACH,CAAC,MAAM,IACL,CAACA,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,aAAa,KAC/D,EAAE,IAAI,CAAC0xB,KAAK,CAAA,EAAO,CAAC,IAAI,IAAI,CAACgL,YAAY,CAAA,GAAO,CAAC,CAAC,EAClD;UACA,IAAI,CAACxlB,KAAK,CACR9H,MAAM,CAACnO,6BAA6B,EACpC,IAAI,CAAC8W,KAAK,CAACsB,aAAa,EACxB;YAAErZ;UAAK,CACT,CAAC;QACH;MACF;MACA2/D,YAAY,CAACnkD,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAACg+B,IAAI,EAAE,oBAAoB,CAAC,CAAC;MAC9D,IAAI,CAAC,IAAI,CAACrf,GAAG,CAAA,EAAS,CAAC,EAAE;IAC3B;IACA,OAAOz0B,IAAI;EACb;EAEA6zC,UAAUA,CAERC,IAAkC,EAClCzzC,IAAuD,EACjD;IACN,MAAM2U,EAAE,GAAG,IAAI,CAAC2+B,gBAAgB,EAAE;IAClC,IAAItzC,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,aAAa,EAAE;MAC9C,IAAI2U,EAAE,CAAC/U,IAAI,KAAK,cAAc,IAAI+U,EAAE,CAAC/U,IAAI,KAAK,eAAe,EAAE;QAC7D,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC1E,iCAAiC,EAAEiK,EAAE,CAAC/G,GAAG,CAACrQ,KAAK,CAAC;MACpE;IACF;IACA,IAAI,CAACsvD,SAAS,CACZl4C,EAAE,EACF;MAAE/U,IAAI,EAAE;IAAqB,CAAC,EAC9BI,IAAI,KAAK,KAAK,WAChB,CAAC;IACDyzC,IAAI,CAAC9+B,EAAE,GAAGA,EAAE;EACd;EAGAq2D,4BAA4BA,CAE1BrrE,IAAkC,EACZ;IACtB,OAAO,IAAI,CAAC+rE,aAAa,CAAC/rE,IAAI,GAAyB,CAAC;EAC1D;EAKA+rE,aAAaA,CAEX/rE,IAAe,EACf+R,KAAwB,IAA+B,EACpD;IACH,MAAM2iE,kBAAkB,GAAG3iE,KAAK,IAAuC;IACvE,MAAM4iE,aAAa,GAAG,CAAC,EAAE5iE,KAAK,IAAgC,CAAC;IAC/D,MAAM8yD,SAAS,GAAG8P,aAAa,IAAI,EAAE5iE,KAAK,IAA+B,CAAC;IAC1E,MAAM2B,OAAO,GAAG,CAAC,EAAE3B,KAAK,IAA0B,CAAC;IAEnD,IAAI,CAAC0B,YAAY,CAACzT,IAAI,EAAE0T,OAAO,CAAC;IAEhC,IAAI,IAAI,CAACqe,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,IAAI2iD,kBAAkB,EAAE;QACtB,IAAI,CAACn9D,KAAK,CACR9H,MAAM,CAACvM,iCAAiC,EACxC,IAAI,CAACkV,KAAK,CAAC1B,QACb,CAAC;MACH;MACA,IAAI,CAACwR,IAAI,CAAA,CAAE;MACXloB,IAAI,CAAC8tE,SAAS,GAAG,IAAI;IACvB;IAEA,IAAI6G,aAAa,EAAE;MACjB30E,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC4vD,eAAe,CAACC,SAAS,CAAC;IAC3C;IAEA,MAAM/G,yBAAyB,GAAG,IAAI,CAAC1lD,KAAK,CAACgX,sBAAsB;IACnE,IAAI,CAAChX,KAAK,CAACgX,sBAAsB,GAAG,KAAK;IACzC,IAAI,CAACvF,KAAK,CAACF,KAAK,EAAmB,CAAC;IACpC,IAAI,CAAC2V,SAAS,CAAC3V,KAAK,CAACiT,aAAa,CAAClpB,OAAO,EAAE1T,IAAI,CAAC8tE,SAAS,CAAC,CAAC;IAE5D,IAAI,CAAC6G,aAAa,EAAE;MAClB30E,IAAI,CAACgV,EAAE,GAAG,IAAI,CAAC4vD,eAAe,EAAE;IAClC;IAEA,IAAI,CAAChxB,mBAAmB,CAAC5zC,IAAI,EAAsB,KAAK,CAAC;IAKzD,IAAI,CAAC6uE,kCAAkC,CAAC,MAAM;MAE5C,IAAI,CAAC9gC,0BAA0B,CAC7B/tC,IAAI,EACJ20E,aAAa,GAAG,qBAAqB,GAAG,oBAC1C,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAACr1C,SAAS,CAAC1V,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IAEjB,IAAI+qD,aAAa,IAAI,CAACD,kBAAkB,EAAE;MAIxC,IAAI,CAACnW,2BAA2B,CAACv+D,IAAS,CAAC;IAC7C;IAEA,IAAI,CAACoY,KAAK,CAACgX,sBAAsB,GAAG0uC,yBAAyB;IAC7D,OAAO99D,IAAI;EACb;EAEA4kE,eAAeA,CAACC,SAAmB,EAAmC;IACpE,OAAOA,SAAS,IAAI7/C,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,GAClD,IAAI,CAACmmC,eAAe,CAAE,CAAA,GACtB,IAAI;EACV;EAEAwN,mBAAmBA,CAEjB5zC,IAAwB,EACxBuV,aAAuB,EACjB;IACN,IAAI,CAACsoB,MAAM,CAAA,EAAU,CAAC;IACtB,IAAI,CAAC2B,eAAe,CAAC7V,KAAK,CAACsS,4BAA4B,CAAE,CAAA,CAAC;IAC1Dj8B,IAAI,CAAC+T,MAAM,GAAG,IAAI,CAACs4C,gBAAgB,SAGjCC,KACG/2C,aAAa,OAAiD,CAAC,CACpE,CAAC;IAED,IAAI,CAACiqB,eAAe,CAAC5V,IAAI,EAAE;EAC7B;EAEA20C,2BAA2BA,CAACv+D,IAAgB,EAAQ;IAClD,IAAI,CAACA,IAAI,CAACgV,EAAE,EAAE;IAMd,IAAI,CAAC6U,KAAK,CAACC,WAAW,CACpB9pB,IAAI,CAACgV,EAAE,CAAC7O,IAAI,EACZ,CAAC,IAAI,CAAC+K,OAAO,CAACH,MAAM,IAAI,IAAI,CAACqH,KAAK,CAACgP,MAAM,IAAIpnB,IAAI,CAAC8tE,SAAS,IAAI9tE,IAAI,CAAC40C,KAAK,GACrE,IAAI,CAAC/qB,KAAK,CAACL,mBAAmB,WAEJ,KACD,EAC7BxpB,IAAI,CAACgV,EAAE,CAAC/G,GAAG,CAACrQ,KACd,CAAC;EACH;EAKAy/D,UAAUA,CAERr9D,IAAe,EACfswC,WAAiD,EACjDC,UAAoB,EACjB;IACH,IAAI,CAACroB,IAAI,CAAA,CAAE;IAGX,MAAM+5C,SAAS,GAAG,IAAI,CAAC7pD,KAAK,CAACgP,MAAM;IACnC,IAAI,CAAChP,KAAK,CAACgP,MAAM,GAAG,IAAI;IAExB,IAAI,CAACipB,YAAY,CAACrwC,IAAI,EAAEswC,WAAW,EAAEC,UAAU,CAAC;IAChD,IAAI,CAACyB,eAAe,CAAChyC,IAAI,CAAC;IAE1BA,IAAI,CAAC0U,IAAI,GAAG,IAAI,CAACowD,cAAc,CAAC,CAAC,CAAC9kE,IAAI,CAACwR,UAAU,EAAEywD,SAAS,CAAC;IAE7D,OAAO,IAAI,CAACnsD,UAAU,CACpB9V,IAAI,EACJswC,WAAW,GAAG,kBAAkB,GAAG,iBACrC,CAAC;EACH;EAEAoB,eAAeA,CAAAA,EAAY;IACzB,OAAO,IAAI,CAAC3f,KAAK,CAAM,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IAAI,IAAI,CAACA,KAAK,EAAU,CAAC;EAC1E;EAEA0f,aAAaA,CAAAA,EAAY;IACvB,OAAO,IAAI,CAAC1f,KAAK,CAAA,EAAU,CAAC;EAC9B;EAEAhc,iBAAiBA,CAAClP,GAAiC,EAAW;IAC5D,OACGA,GAAG,CAAC5G,IAAI,KAAK,YAAY,IAAI4G,GAAG,CAACV,IAAI,KAAK,aAAa,IACvDU,GAAG,CAAC5G,IAAI,KAAK,eAAe,IAAI4G,GAAG,CAACmG,KAAK,KAAK,aAAc;EAEjE;EAEA2kC,sBAAsBA,CAAC79B,MAAuC,EAAW;IACvE,OACE,CAACA,MAAM,CAAC+B,QAAQ,IAAI,CAAC/B,MAAM,CAACg3B,MAAM,IAAI,IAAI,CAAC/0B,iBAAiB,CAACjC,MAAM,CAACjN,GAAG,CAAC;EAE5E;EAGAi+D,cAAcA,CAEZtE,aAAsB,EACtByB,SAAkB,EACL;IACb,IAAI,CAAC9qD,UAAU,CAACwS,KAAK,EAAE;IAEvB,MAAMvR,KAA8B,GAAG;MACrCw8D,cAAc,EAAE,KAAK;MACrBpU;KACD;IACD,IAAItoD,UAAyB,GAAG,EAAE;IAClC,MAAMu4B,SAAS,GAAG,IAAI,CAAC96B,SAAS,EAAe;IAC/C86B,SAAS,CAAC/7B,IAAI,GAAG,EAAE;IAEnB,IAAI,CAACmpB,MAAM,CAAA,CAAU,CAAC;IAItB,IAAI,CAACgxC,kCAAkC,CAAC,MAAM;MAE5C,OAAO,CAAC,IAAI,CAAC98C,KAAK,CAAA,CAAU,CAAC,EAAE;QAC7B,IAAI,IAAI,CAAC0C,GAAG,CAAA,EAAQ,CAAC,EAAE;UACrB,IAAIvc,UAAU,CAACM,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,CAACjB,KAAK,CACd9H,MAAM,CAAC7N,kBAAkB,EACzB,IAAI,CAACwW,KAAK,CAACsB,aACb,CAAC;UACH;UACA;QACF;QAEA,IAAI,IAAI,CAACqY,KAAK,CAAA,EAAM,CAAC,EAAE;UACrB7Z,UAAU,CAAC2D,IAAI,CAAC,IAAI,CAAC+wC,cAAc,CAAE,CAAA,CAAC;UACtC;QACF;QAEA,MAAMlc,MAAM,GAAG,IAAI,CAAC/6B,SAAS,EAAiB;QAG9C,IAAIuC,UAAU,CAACM,MAAM,EAAE;UAErBk4B,MAAM,CAACx4B,UAAU,GAAGA,UAAU;UAC9B,IAAI,CAACyoB,0BAA0B,CAAC+P,MAAM,EAAEx4B,UAAU,CAAC,CAAC,CAAC,CAAC;UACtDA,UAAU,GAAG,EAAE;QACjB;QAEA,IAAI,CAACs4B,gBAAgB,CAACC,SAAS,EAAEC,MAAM,EAAEt4B,KAAK,CAAC;QAE/C,IAEEs4B,MAAM,CAACrwC,IAAI,KAAK,aAAa,IAE7BqwC,MAAM,CAACx4B,UAAU,IAEjBw4B,MAAM,CAACx4B,UAAU,CAACM,MAAM,GAAG,CAAC,EAC5B;UACA,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAC/N,oBAAoB,EAAEgvC,MAAM,CAAC;QACjD;MACF;IACF,CAAC,CAAC;IAEF,IAAI,CAACt4B,KAAK,CAACgP,MAAM,GAAG66C,SAAS;IAE7B,IAAI,CAAC/5C,IAAI,CAAA,CAAE;IAEX,IAAIhQ,UAAU,CAACM,MAAM,EAAE;MACrB,MAAM,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAC9G,iBAAiB,EAAE,IAAI,CAACyP,KAAK,CAAC1B,QAAQ,CAAC;IACjE;IAEA,IAAI,CAACS,UAAU,CAACyS,IAAI,EAAE;IAEtB,OAAO,IAAI,CAAC9T,UAAU,CAAC26B,SAAS,EAAE,WAAW,CAAC;EAChD;EAIAE,4BAA4BA,CAE1BF,SAA8B,EAC9BC,MAA6B,EACpB;IACT,MAAM7pC,GAAG,GAAG,IAAI,CAACu/B,eAAe,CAAC,IAAI,CAAC;IAEtC,IAAI,IAAI,CAACqL,aAAa,EAAE,EAAE;MACxB,MAAM39B,MAAqB,GAAG48B,MAAa;MAG3C58B,MAAM,CAACzT,IAAI,GAAG,QAAQ;MACtByT,MAAM,CAAC+B,QAAQ,GAAG,KAAK;MACvB/B,MAAM,CAACjN,GAAG,GAAGA,GAAG;MAChBiN,MAAM,CAACg3B,MAAM,GAAG,KAAK;MACrB,IAAI,CAAC8G,eAAe,CAClBnB,SAAS,EACT38B,MAAM,EACN,KAAK,EACL,KAAK,EACe,KAAK,EACzB,KACF,CAAC;MACD,OAAO,IAAI;IACb,CAAC,MAAM,IAAI,IAAI,CAAC49B,eAAe,EAAE,EAAE;MACjC,MAAMr7B,IAAqB,GAAGq6B,MAAa;MAG3Cr6B,IAAI,CAACR,QAAQ,GAAG,KAAK;MACrBQ,IAAI,CAACxP,GAAG,GAAGA,GAAG;MACdwP,IAAI,CAACy0B,MAAM,GAAG,KAAK;MACnB2F,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAAC,IAAI,CAAC7F,kBAAkB,CAACK,IAAI,CAAC,CAAC;MAClD,OAAO,IAAI;IACb;IACA,IAAI,CAACoX,iCAAiC,CAAC5mB,GAAG,CAAC;IAC3C,OAAO,KAAK;EACd;EAEA2pC,gBAAgBA,CAEdC,SAA8B,EAC9BC,MAA6B,EAC7Bt4B,KAA8B,EACxB;IACN,MAAMyyB,QAAQ,GAAG,IAAI,CAAC9N,YAAY,IAAW,CAAC;IAE9C,IAAI8N,QAAQ,EAAE;MACZ,IAAI,IAAI,CAAC8F,4BAA4B,CAACF,SAAS,EAAEC,MAAM,CAAC,EAAE;QAExD;MACF;MACA,IAAI,IAAI,CAACjc,GAAG,CAAA,CAAU,CAAC,EAAE;QACvB,IAAI,CAAC6rC,qBAAqB,CAAC7vB,SAAS,EAAEC,MAA8B,CAAC;QACrE;MACF;IACF;IAEA,IAAI,CAAC6vB,4BAA4B,CAAC9vB,SAAS,EAAEC,MAAM,EAAEt4B,KAAK,EAAEyyB,QAAQ,CAAC;EACvE;EAEA01B,4BAA4BA,CAE1B9vB,SAA8B,EAC9BC,MAA6B,EAC7Bt4B,KAA8B,EAC9ByyB,QAAiB,EACjB;IACA,MAAMgqC,YAAY,GAAGnkC,MAAuB;IAC5C,MAAMokC,aAAa,GAAGpkC,MAA8B;IACpD,MAAMqkC,UAAU,GAAGrkC,MAAyB;IAC5C,MAAMskC,WAAW,GAAGtkC,MAAgC;IACpD,MAAMukC,YAAY,GAAGvkC,MAAiC;IAEtD,MAAM58B,MAAkD,GAAG+gE,YAAY;IACvE,MAAMK,YAAqD,GAAGL,YAAY;IAE1EnkC,MAAM,CAAC5F,MAAM,GAAGD,QAAQ;IACxB,IAAI,CAACuH,+BAA+B,CAAC1B,MAAM,CAAC;IAE5C,IAAI,IAAI,CAACjc,GAAG,CAAA,EAAQ,CAAC,EAAE;MAErB3gB,MAAM,CAACzT,IAAI,GAAG,QAAQ;MACtB,MAAM4U,aAAa,GAAG,IAAI,CAAC8c,KAAK,IAAe,CAAC;MAChD,IAAI,CAACojD,qBAAqB,CAACrhE,MAAM,CAAC;MAElC,IAAImB,aAAa,EAAE;QAEjB,IAAI,CAAC88B,sBAAsB,CAACtB,SAAS,EAAEqkC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;QAClE;MACF;MAEA,IAAI,IAAI,CAACnjC,sBAAsB,CAACkjC,YAAY,CAAC,EAAE;QAC7C,IAAI,CAACt9D,KAAK,CAAC9H,MAAM,CAACpO,sBAAsB,EAAEwzE,YAAY,CAAChuE,GAAG,CAAC;MAC7D;MAEA,IAAI,CAAC+qC,eAAe,CAClBnB,SAAS,EACTokC,YAAY,EACZ,IAAI,EACJ,KAAK,EACe,KAAK,EACzB,KACF,CAAC;MAED;IACF;IAEA,MAAM93C,YAAY,GAChB,CAAC,IAAI,CAAC3kB,KAAK,CAAC0X,WAAW,IAAI9K,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC;IAC/D,MAAM4G,GAAG,GAAG,IAAI,CAACsuE,qBAAqB,CAACzkC,MAAM,CAAC;IAC9C,MAAM0kC,iBAAiB,GAAGr4C,YAAY,GAAIl2B,GAAG,CAAkBV,IAAI,GAAG,IAAI;IAC1E,MAAMkvE,SAAS,GAAG,IAAI,CAACpgE,aAAa,CAACpO,GAAG,CAAC;IACzC,MAAMyuE,0BAA0B,GAAG,IAAI,CAACl9D,KAAK,CAAC1B,QAAQ;IAEtD,IAAI,CAAC+pD,4BAA4B,CAACyU,YAAY,CAAC;IAE/C,IAAI,IAAI,CAACzjC,aAAa,EAAE,EAAE;MACxB39B,MAAM,CAACzT,IAAI,GAAG,QAAQ;MAEtB,IAAIg1E,SAAS,EAAE;QACb,IAAI,CAACtjC,sBAAsB,CAACtB,SAAS,EAAEqkC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC;QACnE;MACF;MAGA,MAAMv/D,aAAa,GAAG,IAAI,CAACo8B,sBAAsB,CAACkjC,YAAY,CAAC;MAC/D,IAAIhjC,iBAAiB,GAAG,KAAK;MAC7B,IAAIt8B,aAAa,EAAE;QACjBs/D,YAAY,CAACx0E,IAAI,GAAG,aAAa;QAGjC,IAAI+X,KAAK,CAACw8D,cAAc,IAAI,CAAC,IAAI,CAAC3pD,SAAS,CAAC,YAAY,CAAC,EAAE;UACzD,IAAI,CAAC1T,KAAK,CAAC9H,MAAM,CAACxN,oBAAoB,EAAE4E,GAAG,CAAC;QAC9C;QACA,IAAI0O,aAAa,IAAI,IAAI,CAAC0V,SAAS,CAAC,YAAY,CAAC,IAAIylB,MAAM,CAACutB,QAAQ,EAAE;UACpE,IAAI,CAAC1mD,KAAK,CAAC9H,MAAM,CAAC/H,qBAAqB,EAAEb,GAAG,CAAC;QAC/C;QACAuR,KAAK,CAACw8D,cAAc,GAAG,IAAI;QAC3B/iC,iBAAiB,GAAGz5B,KAAK,CAACooD,aAAa;MACzC;MAEA,IAAI,CAAC5uB,eAAe,CAClBnB,SAAS,EACTokC,YAAY,EACZ,KAAK,EACL,KAAK,EACLt/D,aAAa,EACbs8B,iBACF,CAAC;IACH,CAAC,MAAM,IAAI,IAAI,CAACH,eAAe,EAAE,EAAE;MACjC,IAAI2jC,SAAS,EAAE;QACb,IAAI,CAACE,wBAAwB,CAAC9kC,SAAS,EAAEukC,WAAW,CAAC;MACvD,CAAC,MAAM;QACL,IAAI,CAACQ,iBAAiB,CAAC/kC,SAAS,EAAEskC,UAAU,CAAC;MAC/C;IACD,CAAA,MAAM,IAAIK,iBAAiB,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC13C,gBAAgB,CAAA,CAAE,EAAE;MAEpE,IAAI,CAACjQ,iCAAiC,CAAC5mB,GAAG,CAAC;MAC3C,MAAMyO,WAAW,GAAG,IAAI,CAACmf,GAAG,GAAQ,CAAC;MAErC,IAAIygD,YAAY,CAACx9D,QAAQ,EAAE;QACzB,IAAI,CAACxS,UAAU,CAACowE,0BAA0B,CAAC;MAC7C;MAEAxhE,MAAM,CAACzT,IAAI,GAAG,QAAQ;MAEtB,MAAMg1E,SAAS,GAAG,IAAI,CAACtjD,KAAK,IAAe,CAAC;MAC5C,IAAI,CAACojD,qBAAqB,CAACrhE,MAAM,CAAC;MAClC,IAAI,CAAC2sD,4BAA4B,CAACyU,YAAY,CAAC;MAE/C,IAAIG,SAAS,EAAE;QAEb,IAAI,CAACtjC,sBAAsB,CACzBtB,SAAS,EACTqkC,aAAa,EACbx/D,WAAW,EACX,IACF,CAAC;MACH,CAAC,MAAM;QACL,IAAI,IAAI,CAACq8B,sBAAsB,CAACkjC,YAAY,CAAC,EAAE;UAC7C,IAAI,CAACt9D,KAAK,CAAC9H,MAAM,CAACrO,kBAAkB,EAAEyzE,YAAY,CAAChuE,GAAG,CAAC;QACzD;QAEA,IAAI,CAAC+qC,eAAe,CAClBnB,SAAS,EACTokC,YAAY,EACZv/D,WAAW,EACX,IAAI,EACgB,KAAK,EACzB,KACF,CAAC;MACH;IACD,CAAA,MAAM,IACL,CAAC8/D,iBAAiB,KAAK,KAAK,IAAIA,iBAAiB,KAAK,KAAK,KAC3D,EAAE,IAAI,CAACrjD,KAAK,CAAQ,EAAA,CAAC,IAAI,IAAI,CAAC2L,gBAAgB,CAAE,CAAA,CAAC,EACjD;MAGA,IAAI,CAACjQ,iCAAiC,CAAC5mB,GAAG,CAAC;MAC3CiN,MAAM,CAACzT,IAAI,GAAG+0E,iBAAiB;MAE/B,MAAMC,SAAS,GAAG,IAAI,CAACtjD,KAAK,IAAe,CAAC;MAC5C,IAAI,CAACojD,qBAAqB,CAACN,YAAY,CAAC;MAExC,IAAIQ,SAAS,EAAE;QAEb,IAAI,CAACtjC,sBAAsB,CAACtB,SAAS,EAAEqkC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC;MACrE,CAAC,MAAM;QACL,IAAI,IAAI,CAACnjC,sBAAsB,CAACkjC,YAAY,CAAC,EAAE;UAC7C,IAAI,CAACt9D,KAAK,CAAC9H,MAAM,CAACtO,qBAAqB,EAAE0zE,YAAY,CAAChuE,GAAG,CAAC;QAC5D;QACA,IAAI,CAAC+qC,eAAe,CAClBnB,SAAS,EACTokC,YAAY,EACZ,KAAK,EACL,KAAK,EACe,KAAK,EACzB,KACF,CAAC;MACH;MAEA,IAAI,CAAC1iC,uBAAuB,CAAC0iC,YAAY,CAAC;IAC3C,CAAA,MAAM,IAAIO,iBAAiB,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC13C,gBAAgB,CAAA,CAAE,EAAE;MACvE,IAAI,CAAC/G,YAAY,CAAC,wBAAwB,CAAC;MAC3C,IAAI,CAAClJ,iCAAiC,CAAC5mB,GAAG,CAAC;MAG3C,MAAMwuE,SAAS,GAAG,IAAI,CAACtjD,KAAK,IAAe,CAAC;MAC5C,IAAI,CAACojD,qBAAqB,CAACJ,UAAU,CAAC;MACtC,IAAI,CAACU,yBAAyB,CAAChlC,SAAS,EAAEwkC,YAAY,EAAEI,SAAS,CAAC;IACpE,CAAC,MAAM,IAAI,IAAI,CAAC33C,gBAAgB,EAAE,EAAE;MAElC,IAAI23C,SAAS,EAAE;QACb,IAAI,CAACE,wBAAwB,CAAC9kC,SAAS,EAAEukC,WAAW,CAAC;MACvD,CAAC,MAAM;QACL,IAAI,CAACQ,iBAAiB,CAAC/kC,SAAS,EAAEskC,UAAU,CAAC;MAC/C;IACF,CAAC,MAAM;MACL,IAAI,CAAC7vE,UAAU,CAAA,CAAE;IACnB;EACF;EAGAiwE,qBAAqBA,CAEnBzkC,MAA6B,EACgB;IAC7C,MAAM;MAAEzwC,IAAI;MAAE+M;KAAO,GAAG,IAAI,CAACoL,KAAK;IAClC,IACE,CAACnY,IAAI,KAAY,GAAA,IAAIA,IAAI,KAAc,GAAA,KACvCywC,MAAM,CAAC5F,MAAM,IACb99B,KAAK,KAAK,WAAW,EACrB;MACA,IAAI,CAACuK,KAAK,CAAC9H,MAAM,CAACjH,eAAe,EAAE,IAAI,CAAC4P,KAAK,CAAC1B,QAAQ,CAAC;IACzD;IAEA,IAAIzW,IAAI,QAAmB,EAAE;MAC3B,IAAI+M,KAAK,KAAK,aAAa,EAAE;QAC3B,IAAI,CAACuK,KAAK,CAAC9H,MAAM,CAACvO,4BAA4B,EAAE,IAAI,CAACkX,KAAK,CAAC1B,QAAQ,CAAC;MACtE;MACA,MAAM7P,GAAG,GAAG,IAAI,CAAC+N,gBAAgB,EAAE;MACnC87B,MAAM,CAAC7pC,GAAG,GAAGA,GAAG;MAChB,OAAOA,GAAG;IACZ;IAEA,IAAI,CAACmmD,iBAAiB,CAACtc,MAAM,CAAC;IAC9B,OAAOA,MAAM,CAAC7pC,GAAG;EACnB;EAEAy5D,qBAAqBA,CAEnB7vB,SAA8B,EAC9BC,MAIC,EACD;IAAA,IAAAglC,kBAAA;IAEA,IAAI,CAAC7rD,KAAK,CAACF,KAAK,CACdL,QAAwC,KAC1C,CAAC;IAED,MAAMyV,SAAS,GAAG,IAAI,CAAC3mB,KAAK,CAACyW,MAAM;IACnC,IAAI,CAACzW,KAAK,CAACyW,MAAM,GAAG,EAAE;IAGtB,IAAI,CAACyQ,SAAS,CAAC3V,KAAK,EAAgB,CAAC;IACrC,MAAMjV,IAAmB,GAAIg8B,MAAM,CAACh8B,IAAI,GAAG,EAAG;IAC9C,IAAI,CAACwnD,2BAA2B,CAACxnD,IAAI,EAAE7E,SAAS,EAAE,KAAK,EAAA,CAAW,CAAC;IACnE,IAAI,CAACyvB,SAAS,CAAC1V,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;IACjB,IAAI,CAACxR,KAAK,CAACyW,MAAM,GAAGkQ,SAAS;IAC7B0R,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAAgB46B,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1E,IAAAglC,CAAAA,kBAAA,GAAIhlC,MAAM,CAACx4B,UAAU,KAAjBw9D,IAAAA,IAAAA,kBAAA,CAAmBl9D,MAAM,EAAE;MAC7B,IAAI,CAACjB,KAAK,CAAC9H,MAAM,CAAC5N,oBAAoB,EAAE6uC,MAAM,CAAC;IACjD;EACF;EAEA8kC,iBAAiBA,CAEf/kC,SAA8B,EAC9Bp6B,IAAqB,EACrB;IACA,IAAI,CAACA,IAAI,CAACR,QAAQ,IAAI,IAAI,CAACE,iBAAiB,CAACM,IAAI,CAACxP,GAAG,CAAC,EAAE;MAGtD,IAAI,CAAC0Q,KAAK,CAAC9H,MAAM,CAACxO,qBAAqB,EAAEoV,IAAI,CAACxP,GAAG,CAAC;IACpD;IAEA4pC,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAAC,IAAI,CAAC7F,kBAAkB,CAACK,IAAI,CAAC,CAAC;EACpD;EAEAk/D,wBAAwBA,CAEtB9kC,SAA8B,EAC9Bp6B,IAAoC,EACpC;IACA,MAAMrW,IAAI,GAAG,IAAI,CAACmW,yBAAyB,CAACE,IAAI,CAAC;IACjDo6B,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAAC7b,IAAI,CAAC;IAEzB,IAAI,CAACmX,UAAU,CAACsjB,kBAAkB,CAChC,IAAI,CAAC1lB,gBAAgB,CAAC/U,IAAI,CAAC6G,GAAG,CAAC,KAE/B7G,IAAI,CAAC6G,GAAG,CAACoH,GAAG,CAACrQ,KACf,CAAC;EACH;EAEA63E,yBAAyBA,CAEvBhlC,SAA8B,EAC9Bp6B,IAA6B,EAC7Bg/D,SAAkB,EAClB;IACA,IAAI,CAACA,SAAS,IAAI,CAACh/D,IAAI,CAACR,QAAQ,IAAI,IAAI,CAACE,iBAAiB,CAACM,IAAI,CAACxP,GAAG,CAAC,EAAE;MAGpE,IAAI,CAAC0Q,KAAK,CAAC9H,MAAM,CAACxO,qBAAqB,EAAEoV,IAAI,CAACxP,GAAG,CAAC;IACpD;IAEA,MAAM7G,IAAI,GAAG,IAAI,CAAC+gE,0BAA0B,CAAC1qD,IAAI,CAAC;IAClDo6B,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAAC7b,IAAI,CAAC;IAEzB,IAAIq1E,SAAS,EAAE;MACb,IAAI,CAACl+D,UAAU,CAACsjB,kBAAkB,CAChC,IAAI,CAAC1lB,gBAAgB,CAAC/U,IAAI,CAAC6G,GAAoB,CAAC,KAEhD7G,IAAI,CAAC6G,GAAG,CAACoH,GAAG,CAACrQ,KACf,CAAC;IACH;EACF;EAEAg0C,eAAeA,CAEbnB,SAA8B,EAC9B38B,MAA6B,EAC7BwB,WAAoB,EACpB5B,OAAgB,EAChB6B,aAAsB,EACtBs8B,iBAA0B,EACpB;IACNpB,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CACjB,IAAI,CAACxG,WAAW,CACdvB,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACP6B,aAAa,EACbs8B,iBAAiB,EACjB,aAAa,EACb,IACF,CACF,CAAC;EACH;EAEAE,sBAAsBA,CAEpBtB,SAA8B,EAC9B38B,MAAoC,EACpCwB,WAAoB,EACpB5B,OAAgB,EACV;IACN,MAAM1T,IAAI,GAAG,IAAI,CAACqV,WAAW,CAC3BvB,MAAM,EACNwB,WAAW,EACX5B,OAAO,EACa,KAAK,EACzB,KAAK,EACL,oBAAoB,EACpB,IACF,CAAC;IACD+8B,SAAS,CAAC/7B,IAAI,CAACmH,IAAI,CAAC7b,IAAI,CAAC;IAEzB,MAAMK,IAAI,GACRL,IAAI,CAACK,IAAI,KAAK,KAAK,GACfL,IAAI,CAAC8qC,MAAM,QAEuB,GAClC9qC,IAAI,CAACK,IAAI,KAAK,KAAK,GACjBL,IAAI,CAAC8qC,MAAM,QAEuB,IACZ;IAC9B,IAAI,CAACk2B,gCAAgC,CAAChhE,IAAI,EAAEK,IAAI,CAAC;EACnD;EAEA2gE,gCAAgCA,CAC9BhhE,IAAsD,EACtDK,IAAY,EACZ;IACA,IAAI,CAAC8W,UAAU,CAACsjB,kBAAkB,CAChC,IAAI,CAAC1lB,gBAAgB,CAAC/U,IAAI,CAAC6G,GAAoB,CAAC,EAChDxG,IAAI,EACJL,IAAI,CAAC6G,GAAG,CAACoH,GAAG,CAACrQ,KACf,CAAC;EACH;EAGA6iE,4BAA4BA,CAE1BC,YAAqD,EAC/C,CAAC;EAGTvqD,yBAAyBA,CAEvBnW,IAAoC,EACZ;IACxB,IAAI,CAAC21E,gBAAgB,CAAC31E,IAAI,CAAC;IAC3B,IAAI,CAAC29B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;EACtD;EAGAgW,kBAAkBA,CAAehW,IAAqB,EAAmB;IACvE,IAAI,CAAC21E,gBAAgB,CAAC31E,IAAI,CAAC;IAC3B,IAAI,CAAC29B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,eAAe,CAAC;EAC/C;EAEA+gE,0BAA0BA,CAExB/gE,IAA6B,EACJ;IACzB,IAAI,CAAC21E,gBAAgB,CAAC31E,IAAI,CAAC;IAC3B,IAAI,CAAC29B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,uBAAuB,CAAC;EACvD;EAGA21E,gBAAgBA,CAEd31E,IAEC,EACK;IACN,IAAI,CAAC6pB,KAAK,CAACF,KAAK,CAACL,OAAiC,CAAC;IACnD,IAAI,CAACkW,eAAe,CAAC7V,KAAK,CAACyS,kBAAkB,CAAE,CAAA,CAAC;IAChD,IAAI,CAACkD,SAAS,CAAC3V,KAAK,EAAgB,CAAC;IACrC3pB,IAAI,CAACgN,KAAK,GAAG,IAAI,CAACynB,GAAG,CAAA,EAAM,CAAC,GAAG,IAAI,CAACwa,uBAAuB,CAAE,CAAA,GAAG,IAAI;IACpE,IAAI,CAACzP,eAAe,CAAC5V,IAAI,EAAE;IAC3B,IAAI,CAAC0V,SAAS,CAAC1V,IAAI,EAAE;IACrB,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;EACnB;EAEAymB,YAAYA,CACVrwC,IAAqB,EACrBswC,WAAoB,EACpBC,UAA2B,EAC3BxmB,WAAwB,OAAyB,EAC3C;IACN,IAAI/E,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,EAAE;MACtCD,IAAI,CAACgV,EAAE,GAAG,IAAI,CAACoxB,eAAe,EAAE;MAChC,IAAIkK,WAAW,EAAE;QACf,IAAI,CAACsd,yBAAyB,CAAC5tD,IAAI,CAACgV,EAAE,EAAE+U,WAAW,CAAC;MACtD;IACF,CAAC,MAAM;MACL,IAAIwmB,UAAU,IAAI,CAACD,WAAW,EAAE;QAC9BtwC,IAAI,CAACgV,EAAE,GAAG,IAAI;MAChB,CAAC,MAAM;QACL,MAAM,IAAI,CAACuC,KAAK,CAAC9H,MAAM,CAAC5J,gBAAgB,EAAE,IAAI,CAACuS,KAAK,CAAC1B,QAAQ,CAAC;MAChE;IACF;EACF;EAGAs7B,eAAeA,CAAehyC,IAAqB,EAAQ;IACzDA,IAAI,CAACwR,UAAU,GAAG,IAAI,CAACijB,GAAG,CAAA,EAAY,CAAC,GAAG,IAAI,CAACm1C,mBAAmB,CAAE,CAAA,GAAG,IAAI;EAC7E;EAKA3xD,WAAWA,CAETjY,IAIC,EACDkY,UAAgC,EACnB;IACb,MAAMukD,sBAAsB,GAAG,IAAI,CAACiD,qBAAqB,CACvD1/D,IAAI,EACW,IACjB,CAAC;IACD,MAAM41E,UAAU,GAAG,IAAI,CAAC5Q,gCAAgC,CACtDhlE,IAAI,EACJy8D,sBACF,CAAC;IACD,MAAMoZ,iBAAiB,GAAG,CAACD,UAAU,IAAI,IAAI,CAACnhD,GAAG,CAAA,EAAS,CAAC;IAC3D,MAAMqhD,OAAO,GAAGD,iBAAiB,IAAI,IAAI,CAAC3lC,aAAa,CAAClwC,IAAI,CAAC;IAC7D,MAAMowC,YAAY,GAChB0lC,OAAO,IAAI,IAAI,CAAC3lC,kCAAkC,CAACnwC,IAAI,CAAC;IAC1D,MAAM+1E,mBAAmB,GACvBF,iBAAiB,KAAK,CAACzlC,YAAY,IAAI,IAAI,CAAC3b,GAAG,CAAS,EAAA,CAAC,CAAC;IAC5D,MAAMuhD,cAAc,GAAGJ,UAAU,IAAIE,OAAO;IAE5C,IAAIA,OAAO,IAAI,CAAC1lC,YAAY,EAAE;MAC5B,IAAIwlC,UAAU,EAAE,IAAI,CAAC1wE,UAAU,EAAE;MACjC,IAAIgT,UAAU,EAAE;QACd,MAAM,IAAI,CAACX,KAAK,CAAC9H,MAAM,CAACxF,0BAA0B,EAAEjK,IAAI,CAAC;MAC3D;MACA,IAAI,CAACiwC,eAAe,CAACjwC,IAAI,EAAE,IAAI,CAAC;MAEhC,OAAO,IAAI,CAAC8V,UAAU,CAAC9V,IAAI,EAAE,sBAAsB,CAAC;IACtD;IAEA,MAAMi2E,aAAa,GAAG,IAAI,CAACC,+BAA+B,CAACl2E,IAAI,CAAC;IAEhE,IAAI41E,UAAU,IAAIC,iBAAiB,IAAI,CAACC,OAAO,IAAI,CAACG,aAAa,EAAE;MACjE,IAAI,CAAC/wE,UAAU,CAAC,IAAI,GAAW,CAAC;IAClC;IAEA,IAAIkrC,YAAY,IAAI2lC,mBAAmB,EAAE;MACvC,IAAI,CAAC7wE,UAAU,CAAC,IAAI,IAAU,CAAC;IACjC;IAEA,IAAIixE,cAAc;IAClB,IAAIH,cAAc,IAAIC,aAAa,EAAE;MACnCE,cAAc,GAAG,KAAK;MACtB,IAAIj+D,UAAU,EAAE;QACd,MAAM,IAAI,CAACX,KAAK,CAAC9H,MAAM,CAACxF,0BAA0B,EAAEjK,IAAI,CAAC;MAC3D;MACA,IAAI,CAACiwC,eAAe,CAClBjwC,IAAI,EACJg2E,cACF,CAAC;IACH,CAAC,MAAM;MACLG,cAAc,GAAG,IAAI,CAACC,2BAA2B,CAC/Cp2E,IACF,CAAC;IACH;IAEA,IAAIg2E,cAAc,IAAIC,aAAa,IAAIE,cAAc,EAAE;MAAA,IAAAE,kBAAA;MACrD,MAAMjqC,KAAK,GAAGpsC,IAAwC;MACtD,IAAI,CAACklE,WAAW,CAAC94B,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAACA,KAAK,CAACv0B,MAAM,CAAC;MACpD,IAAI,CAAAw+D,CAAAA,kBAAA,GAAAjqC,KAAK,CAAC1zB,WAAW,KAAjB29D,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAmBp2E,IAAI,MAAK,kBAAkB,EAAE;QAClD,IAAI,CAACkiE,mBAAmB,CAACjqD,UAAU,EAAEk0B,KAAK,CAAC1zB,WAAW,EAAE0zB,KAAK,CAAC;MAC/D,CAAA,MAAM,IAAIl0B,UAAU,EAAE;QACrB,MAAM,IAAI,CAACX,KAAK,CAAC9H,MAAM,CAACxF,0BAA0B,EAAEjK,IAAI,CAAC;MAC3D;MACA,OAAO,IAAI,CAAC8V,UAAU,CAACs2B,KAAK,EAAE,wBAAwB,CAAC;IACzD;IAEA,IAAI,IAAI,CAAC3X,GAAG,CAAA,EAAY,CAAC,EAAE;MACzB,MAAM2X,KAAK,GAAGpsC,IAA0C;MAExD,MAAM8zC,IAAI,GAAG,IAAI,CAACxF,4BAA4B,EAAE;MAChDlC,KAAK,CAAC1zB,WAAW,GAAGo7B,IAAI;MAExB,IAAIA,IAAI,CAAC7zC,IAAI,KAAK,kBAAkB,EAAE;QACpC,IAAI,CAACkiE,mBAAmB,CAACjqD,UAAU,EAAE47B,IAAI,EAAwB1H,KAAK,CAAC;MACxE,CAAA,MAAM,IAAIl0B,UAAU,EAAE;QACrB,MAAM,IAAI,CAACX,KAAK,CAAC9H,MAAM,CAACxF,0BAA0B,EAAEjK,IAAI,CAAC;MAC3D;MAEA,IAAI,CAACklE,WAAW,CAAC94B,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;MAEnC,OAAO,IAAI,CAACt2B,UAAU,CAACs2B,KAAK,EAAE,0BAA0B,CAAC;IAC3D;IAEA,IAAI,CAAClnC,UAAU,CAAC,IAAI,GAAW,CAAC;EAClC;EAEAgrC,aAAaA,CACXlwC,IAAoB,EAC+C;IACnE,OAAO,IAAI,CAACy0B,GAAG,CAAA,EAAQ,CAAC;EAC1B;EAEAuwC,gCAAgCA,CAC9BhlE,IAIC,EACDy8D,sBAA2C,EACD;IAC1C,IAAIA,sBAAsB,IAAI,IAAI,CAACpuB,wBAAwB,EAAE,EAAE;MAE7D,IAAI,CAAC1X,YAAY,CAAC,mBAAmB,EAAE8lC,sBAAsB,IAAtBA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAsB,CAAExuD,GAAG,CAACrQ,KAAK,CAAC;MACzE,MAAMoX,EAAE,GAAGynD,sBAAsB,IAAI,IAAI,CAACr2B,eAAe,CAAC,IAAI,CAAC;MAC/D,MAAMuM,SAAS,GAAG,IAAI,CAACx5B,eAAe,CAA2BnE,EAAE,CAAC;MACpE29B,SAAS,CAACr6B,QAAQ,GAAGtD,EAAE;MACtBhV,IAAI,CAAsCuY,UAAU,GAAG,CACtD,IAAI,CAACzC,UAAU,CAAC68B,SAAS,EAAE,wBAAwB,CAAC,CACrD;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAxC,kCAAkCA,CAChCnwC,IAA+D,EACrB;IAC1C,IAAI,IAAI,CAAC+8B,YAAY,CAAA,EAAO,CAAC,EAAE;MAAA,IAAA1tB,IAAA,EAAAinE,eAAA;MAC7B,CAAAA,eAAA,GAAA,CAAAjnE,IAAA,GAACrP,IAAI,EAAsCuY,UAAU,KAAA+9D,IAAAA,GAAAA,eAAA,GAArDjnE,IAAA,CAA2CkJ,UAAU,GAAK,EAAE;MAE5D,MAAMo6B,SAAS,GAAG,IAAI,CAACjS,WAAW,CAChC,IAAI,CAACtoB,KAAK,CAACC,eACb,CAAC;MAED,IAAI,CAAC6P,IAAI,CAAA,CAAE;MAEXyqB,SAAS,CAACr6B,QAAQ,GAAG,IAAI,CAACgrD,qBAAqB,EAAE;MAChDtjE,IAAI,CAAsCuY,UAAU,CAACsD,IAAI,CACxD,IAAI,CAAC/F,UAAU,CAAC68B,SAAS,EAAE,0BAA0B,CACvD,CAAC;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAujC,+BAA+BA,CAC7Bl2E,IAAoB,EACsB;IAC1C,IAAI,IAAI,CAAC+xB,KAAK,CAAA,CAAU,CAAC,EAAE;MACzB,MAAMqa,KAAK,GAAGpsC,IAAwC;MAEtD,IAAI,CAACosC,KAAK,CAAC7zB,UAAU,EAAE6zB,KAAK,CAAC7zB,UAAU,GAAG,EAAE;MAC5C,MAAMg+D,YAAY,GAAGnqC,KAAK,CAACvE,UAAU,KAAK,MAAM;MAChDuE,KAAK,CAAC7zB,UAAU,CAACsD,IAAI,CAAC,GAAG,IAAI,CAACm0B,qBAAqB,CAACumC,YAAY,CAAC,CAAC;MAElEnqC,KAAK,CAACv0B,MAAM,GAAG,IAAI;MACnBu0B,KAAK,CAAC1zB,WAAW,GAAG,IAAI;MACxB,IAAqC,IAAI,CAACuS,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvEmhB,KAAK,CAACoqC,UAAU,GAAG,EAAE;MACvB;MAEA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAJ,2BAA2BA,CAEzBp2E,IAAsC,EAC7B;IACT,IAAI,IAAI,CAACouC,4BAA4B,EAAE,EAAE;MACvCpuC,IAAI,CAACuY,UAAU,GAAG,EAAE;MACpBvY,IAAI,CAAC6X,MAAM,GAAG,IAAI;MAClB,IAAqC,IAAI,CAACoT,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvEjrB,IAAI,CAACw2E,UAAU,GAAG,EAAE;MACtB;MACAx2E,IAAI,CAAC0Y,WAAW,GAAG,IAAI,CAACo3B,sBAAsB,CAAC9vC,IAAI,CAAC;MACpD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEAmyE,eAAeA,CAAAA,EAAY;IACzB,IAAI,CAAC,IAAI,CAACp1C,YAAY,GAAU,CAAC,EAAE,OAAO,KAAK;IAC/C,MAAM7U,IAAI,GAAG,IAAI,CAACiN,oBAAoB,EAAE;IACxC,OAAO,IAAI,CAAC6H,oBAAoB,CAAC9U,IAAI,EAAE,UAAU,CAAC;EACpD;EAEAomB,4BAA4BA,CAAAA,EAEiB;IAC3C,MAAMH,IAAI,GAAG,IAAI,CAACx4B,SAAS,EAAE;IAE7B,IAAI,IAAI,CAACoc,KAAK,CAAA,EAAa,CAAC,EAAE;MAC5B,IAAI,CAAC7J,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC6jD,aAAa,CACvB59B,IAAI,EACJylC,KACF,CAAC;IACH,CAAC,MAAM,IAAI,IAAI,CAACzB,eAAe,EAAE,EAAE;MACjC,IAAI,CAACjqD,IAAI,CAAA,CAAE;MACX,IAAI,CAACA,IAAI,CAAA,CAAE;MACX,OAAO,IAAI,CAAC6jD,aAAa,CACvB59B,IAAI,EACJylC,KAC8B,IAEhC,CAAC;IACH;IAEA,IAAI,IAAI,CAAC7hD,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,OAAO,IAAI,CAACsrC,UAAU,CAAClvB,IAAI,EAA+B,IAAI,EAAE,IAAI,CAAC;IACvE;IAEA,IAAI,IAAI,CAACpc,KAAK,CAAA,EAAM,CAAC,EAAE;MACrB,IACE,IAAI,CAAC9G,SAAS,CAAC,YAAY,CAAC,IAC5B,IAAI,CAACpW,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAAK,IAAI,EACrE;QACA,IAAI,CAAC0C,KAAK,CAAC9H,MAAM,CAACjO,qBAAqB,EAAE,IAAI,CAAC4W,KAAK,CAAC1B,QAAQ,CAAC;MAC/D;MACA,OAAO,IAAI,CAAC2mD,UAAU,CACpB,IAAI,CAAC8E,mBAAmB,CACtB,IAAI,CAAC4I,eAAe,CAAC,KAAK,CAAC,EAC3B,IAAI,CAACp1D,SAAS,CAAA,CAChB,CAAC,EACD,IAAI,EACJ,IACF,CAAC;IACH;IAEA,IAAI,IAAI,CAACoc,KAAK,CAAU,EAAA,CAAC,IAAI,IAAI,CAACA,KAAK,CAAA,EAAQ,CAAC,IAAI,IAAI,CAAC6V,KAAK,EAAE,EAAE;MAChE,MAAM,IAAI,CAACrwB,KAAK,CAAC9H,MAAM,CAACvF,wBAAwB,EAAE,IAAI,CAACkO,KAAK,CAAC1B,QAAQ,CAAC;IACxE;IAEA,MAAM0a,GAAG,GAAG,IAAI,CAAC6d,uBAAuB,EAAE;IAC1C,IAAI,CAACtR,SAAS,CAAA,CAAE;IAChB,OAAOvM,GAAG;EACZ;EAGA0e,sBAAsBA,CAGpB9vC,IAAsC,EACJ;IAClC,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAU,CAAC,EAAE;MACzB,MAAM/xB,IAAI,GAAG,IAAI,CAACq9D,UAAU,CAC1B,IAAI,CAAC1nD,SAAS,EAAsB,EACpC,IAAI,EACJ,KACF,CAAC;MACD,OAAO3V,IAAI;IACb;IACA,OAAO,IAAI,CAACixE,sBAAsB,EAAE;EACtC;EAEA5iC,wBAAwBA,CAAAA,EAAY;IAClC,MAAM;MAAEpuC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAI4M,iBAAiB,CAAC/kB,IAAI,CAAC,EAAE;MAC3B,IAAKA,IAAI,KAAA,EAAc,IAAI,CAAC,IAAI,CAACmY,KAAK,CAAC0X,WAAW,IAAK7vB,IAAI,KAAA,GAAY,EAAE;QACvE,OAAO,KAAK;MACd;MACA,IACE,CAACA,IAAI,KAAa,GAAA,IAAIA,IAAI,KAAA,GAAkB,KAC5C,CAAC,IAAI,CAACmY,KAAK,CAAC0X,WAAW,EACvB;QACA,MAAM;UAAE7vB,IAAI,EAAEw2E;QAAS,CAAC,GAAG,IAAI,CAAC7hD,SAAS,EAAE;QAK3C,IACG5P,iBAAiB,CAACyxD,QAAQ,CAAC,IAAIA,QAAQ,KAAa,EAAA,IACrDA,QAAQ,KAAA,CAAc,EACtB;UACA,IAAI,CAAC38C,eAAe,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;UAC5C,OAAO,KAAK;QACd;MACF;IACD,CAAA,MAAM,IAAI,CAAC,IAAI,CAAC/H,KAAK,CAAA,EAAY,CAAC,EAAE;MACnC,OAAO,KAAK;IACd;IAEA,MAAM7J,IAAI,GAAG,IAAI,CAAC6M,cAAc,EAAE;IAClC,MAAM2hD,OAAO,GAAG,IAAI,CAAC15C,oBAAoB,CAAC9U,IAAI,EAAE,MAAM,CAAC;IACvD,IACE,IAAI,CAACkF,KAAK,CAACC,UAAU,CAACnF,IAAI,CAAC,KAAoB,EAAA,IAC9ClD,iBAAiB,CAAC,IAAI,CAAC5M,KAAK,CAACnY,IAAI,CAAC,IAAIy2E,OAAQ,EAC/C;MACA,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAC3kD,KAAK,GAAY,CAAC,IAAI2kD,OAAO,EAAE;MACtC,MAAMC,aAAa,GAAG,IAAI,CAACvpD,KAAK,CAACC,UAAU,CACzC,IAAI,CAAC2H,mBAAmB,CAAC9M,IAAI,GAAG,CAAC,CACnC,CAAC;MACD,OACEyuD,aAAa,KAAA,EAA4B,IACzCA,aAAa,KAAyB,EAAA;IAE1C;IACA,OAAO,KAAK;EACd;EAEA1mC,eAAeA,CAEbjwC,IAA+D,EAC/D69B,MAAgB,EACV;IACN,IAAI,IAAI,CAACR,aAAa,CAAA,EAAS,CAAC,EAAE;MAChCr9B,IAAI,CAAC6X,MAAM,GAAG,IAAI,CAAC0tD,iBAAiB,EAAE;MACtC,IAAI,CAACL,WAAW,CAACllE,IAAI,CAAC;MACtB,IAAI,CAAC42E,0BAA0B,CAAC52E,IAAI,CAAC;MACrC,IAAI,CAAC62E,qBAAqB,CAAC72E,IAAI,CAAC;IACjC,CAAA,MAAM,IAAI69B,MAAM,EAAE;MACjB,IAAI,CAAC34B,UAAU,CAAA,CAAE;IACnB;IAEA,IAAI,CAACy4B,SAAS,CAAA,CAAE;EAClB;EAEAyQ,4BAA4BA,CAAAA,EAAY;IACtC,MAAM;MAAEnuC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,IAAInY,IAAI,OAAU,EAAE;MAClB,IAAI,CAAC65B,eAAe,CAAC,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;MACzD,IAAI,IAAI,CAAC7O,SAAS,CAAC,YAAY,CAAC,EAAE;QAChC,IACE,IAAI,CAACpW,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,KAAK,IAAI,EACrE;UACA,IAAI,CAAC0C,KAAK,CAAC9H,MAAM,CAACjO,qBAAqB,EAAE,IAAI,CAAC4W,KAAK,CAAC1B,QAAQ,CAAC;QAC/D;QAEA,OAAO,IAAI;MACb;IACF;IAEA,IAAI,IAAI,CAACqmB,YAAY,CAAA,GAAU,CAAC,EAAE;MAChC,IAAI,CAACxlB,KAAK,CAAC9H,MAAM,CAAC3E,sBAAsB,EAAE,IAAI,CAACsN,KAAK,CAAC1B,QAAQ,CAAC;MAC9D,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAACqmB,YAAY,CAAU,EAAA,CAAC,IAAI,IAAI,CAAC+zC,gBAAgB,CAAA,CAAE,EAAE;MAC3D,IAAI,CAACv5D,KAAK,CAAC9H,MAAM,CAAC3E,sBAAsB,EAAE,IAAI,CAACsN,KAAK,CAAC1B,QAAQ,CAAC;MAC9D,OAAO,IAAI;IACb;IAEA,OACEzW,IAAI,OAAY,IAChBA,IAAI,OAAc,IAClBA,IAAI,KAAiB,EAAA,IACrBA,IAAI,KAAA,EAAc,IAClB,IAAI,CAAC2nC,KAAK,CAAE,CAAA,IACZ,IAAI,CAACuqC,eAAe,CAAA,CAAE;EAE1B;EAEAjN,WAAWA,CACTllE,IAIC,EACD82E,UAAoB,EACpBC,SAAmB,EACnBC,MAAgB,EACV;IACN,IAAIF,UAAU,EAAE;MAAA,IAAAG,gBAAA;MAEd,IAAIF,SAAS,EAAE;QAEb,IAAI,CAACvX,qBAAqB,CAACx/D,IAAI,EAAE,SAAS,CAAC;QAC3C,IAAI,IAAI,CAACirB,SAAS,CAAC,mBAAmB,CAAC,EAAE;UAAA,IAAAisD,kBAAA;UACvC,MAAMx+D,WAAW,GAAI1Y,IAAI,CACtB0Y,WAAW;UACd,IACEA,WAAW,CAACzY,IAAI,KAAK,YAAY,IACjCyY,WAAW,CAACvS,IAAI,KAAK,MAAM,IAC3BuS,WAAW,CAAC7a,GAAG,GAAG6a,WAAW,CAAC9a,KAAK,KAAK,CAAC,IACzC,GAAAs5E,kBAAA,GAACx+D,WAAW,CAACrF,KAAK,KAAA,IAAA,IAAjB6jE,kBAAA,CAAmBhjE,aAAa,CACjC,EAAA;YACA,IAAI,CAACqD,KAAK,CAAC9H,MAAM,CAAC5M,6BAA6B,EAAE6V,WAAW,CAAC;UAC/D;QACF;OAED,MAAM,IAAAu+D,CAAAA,gBAAA,GAAIj3E,IAAI,CAACuY,UAAU,KAAf0+D,IAAAA,IAAAA,gBAAA,CAAiBz+D,MAAM,EAAE;QAGlC,KAAK,MAAMm6B,SAAS,IAAI3yC,IAAI,CAACuY,UAAU,EAAE;UACvC,MAAM;YAAED;UAAU,CAAA,GAAGq6B,SAAS;UAC9B,MAAMvwC,UAAU,GACdkW,QAAQ,CAACrY,IAAI,KAAK,YAAY,GAAGqY,QAAQ,CAACnS,IAAI,GAAGmS,QAAQ,CAACtL,KAAK;UACjE,IAAI,CAACwyD,qBAAqB,CAAC7sB,SAAS,EAAEvwC,UAAU,CAAC;UACjD,IAAI,CAAC40E,MAAM,IAAIrkC,SAAS,CAACC,KAAK,EAAE;YAC9B,MAAM;cAAEA;YAAO,CAAA,GAAGD,SAAS;YAC3B,IAAIC,KAAK,CAAC3yC,IAAI,KAAK,YAAY,EAAE;cAC/B,IAAI,CAACsX,KAAK,CAAC9H,MAAM,CAAC9M,qBAAqB,EAAEgwC,SAAS,EAAE;gBAClD/vC,SAAS,EAAEgwC,KAAK,CAAC5lC,KAAK;gBACtB5K;cACF,CAAC,CAAC;YACJ,CAAC,MAAM;cAEL,IAAI,CAACsxC,iBAAiB,CAACd,KAAK,CAACzsC,IAAI,EAAEysC,KAAK,CAAC3kC,GAAG,CAACrQ,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;cAEhE,IAAI,CAACisB,KAAK,CAACO,gBAAgB,CAACwoB,KAAK,CAAC;YACpC;UACF;QACF;MACF,CAAC,MAAM,IAAK5yC,IAAI,CAAsC0Y,WAAW,EAAE;QACjE,MAAMo7B,IAAI,GAAI9zC,IAAI,CAAsC0Y,WAAW;QAEnE,IACEo7B,IAAI,CAAC7zC,IAAI,KAAK,qBAAqB,IACnC6zC,IAAI,CAAC7zC,IAAI,KAAK,kBAAkB,EAChC;UACA,MAAM;YAAE+U;UAAI,CAAA,GAAG8+B,IAAI;UACnB,IAAI,CAAC9+B,EAAE,EAAE,MAAM,IAAI7D,KAAK,CAAC,mBAAmB,CAAC;UAE7C,IAAI,CAACquD,qBAAqB,CAACx/D,IAAI,EAAEgV,EAAE,CAAC7O,IAAI,CAAC;QAC3C,CAAC,MAAM,IAAI2tC,IAAI,CAAC7zC,IAAI,KAAK,qBAAqB,EAAE;UAC9C,KAAK,MAAMyY,WAAW,IAAIo7B,IAAI,CAACksB,YAAY,EAAE;YAC3C,IAAI,CAACrsD,gBAAgB,CAAC+E,WAAW,CAAC1D,EAAE,CAAC;UACvC;QACF;MACF;IACF;EACF;EAEArB,gBAAgBA,CAAC3T,IAAkC,EAAQ;IACzD,IAAIA,IAAI,CAACC,IAAI,KAAK,YAAY,EAAE;MAC9B,IAAI,CAACu/D,qBAAqB,CAACx/D,IAAI,EAAEA,IAAI,CAACmG,IAAI,CAAC;IAC7C,CAAC,MAAM,IAAInG,IAAI,CAACC,IAAI,KAAK,eAAe,EAAE;MACxC,KAAK,MAAMoW,IAAI,IAAIrW,IAAI,CAACstB,UAAU,EAAE;QAClC,IAAI,CAAC3Z,gBAAgB,CAAC0C,IAAI,CAAC;MAC7B;IACF,CAAC,MAAM,IAAIrW,IAAI,CAACC,IAAI,KAAK,cAAc,EAAE;MACvC,KAAK,MAAM8sE,IAAI,IAAI/sE,IAAI,CAACisB,QAAQ,EAAE;QAChC,IAAI8gD,IAAI,EAAE;UACR,IAAI,CAACp5D,gBAAgB,CAACo5D,IAAI,CAAC;QAC7B;MACF;IACF,CAAC,MAAM,IAAI/sE,IAAI,CAACC,IAAI,KAAK,gBAAgB,EAAE;MAEzC,IAAI,CAAC0T,gBAAgB,CAAC3T,IAAI,CAACgN,KAAK,CAAC;IACnC,CAAC,MAAM,IAAIhN,IAAI,CAACC,IAAI,KAAK,aAAa,EAAE;MACtC,IAAI,CAAC0T,gBAAgB,CAAC3T,IAAI,CAAC8O,QAAQ,CAAC;IACtC,CAAC,MAAM,IAAI9O,IAAI,CAACC,IAAI,KAAK,mBAAmB,EAAE;MAC5C,IAAI,CAAC0T,gBAAgB,CAAC3T,IAAI,CAAC+wC,IAAI,CAAC;IAClC;EACF;EAEAyuB,qBAAqBA,CACnBx/D,IAMC,EACDoC,UAAkB,EACZ;IACN,IAAI,IAAI,CAAC68B,mBAAmB,CAACrX,GAAG,CAACxlB,UAAU,CAAC,EAAE;MAC5C,IAAIA,UAAU,KAAK,SAAS,EAAE;QAC5B,IAAI,CAACmV,KAAK,CAAC9H,MAAM,CAACvN,sBAAsB,EAAElC,IAAI,CAAC;MACjD,CAAC,MAAM;QACL,IAAI,CAACuX,KAAK,CAAC9H,MAAM,CAACtN,eAAe,EAAEnC,IAAI,EAAE;UAAEoC;QAAW,CAAC,CAAC;MAC1D;IACF;IACA,IAAI,CAAC68B,mBAAmB,CAACxU,GAAG,CAACroB,UAAU,CAAC;EAC1C;EAIA4tC,qBAAqBA,CAAC0yB,cAAuB,EAA4B;IACvE,MAAMyU,KAAK,GAAG,EAAE;IAChB,IAAIzqC,KAAK,GAAG,IAAI;IAGhB,IAAI,CAAC7O,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAO,CAAC,IAAI,CAACpJ,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B,IAAIiY,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QACL,IAAI,CAAC7O,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACpJ,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B;MACA,MAAM2e,eAAe,GAAG,IAAI,CAACrW,YAAY,IAAS,CAAC;MACnD,MAAM0lC,QAAQ,GAAG,IAAI,CAAC1wC,KAAK,IAAU,CAAC;MACtC,MAAM/xB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;MAChD3V,IAAI,CAAC4yC,KAAK,GAAG,IAAI,CAAC0wB,qBAAqB,EAAkB;MACzD6T,KAAK,CAACt7D,IAAI,CACR,IAAI,CAAC2mD,oBAAoB,CACvBxiE,IAAI,EACJyiE,QAAQ,EACRC,cAAc,EACdtvB,eACF,CACF,CAAC;IACH;IAEA,OAAO+jC,KAAK;EACd;EAEA3U,oBAAoBA,CAClBxiE,IAAS,EACTyiE,QAAiB,EAEjBC,cAAuB,EACvBtvB,eAAwB,EAEL;IACnB,IAAI,IAAI,CAAC/V,aAAa,CAAA,EAAO,CAAC,EAAE;MAC9Br9B,IAAI,CAACsY,QAAQ,GAAG,IAAI,CAACgrD,qBAAqB,EAAE;IAC7C,CAAA,MAAM,IAAIb,QAAQ,EAAE;MACnBziE,IAAI,CAACsY,QAAQ,GAAGkoB,kBAAkB,CAACxgC,IAAI,CAAC4yC,KAAK,CAAC;IAChD,CAAC,MAAM,IAAI,CAAC5yC,IAAI,CAACsY,QAAQ,EAAE;MACzBtY,IAAI,CAACsY,QAAQ,GAAG8nB,eAAe,CAACpgC,IAAI,CAAC4yC,KAAK,CAAC;IAC7C;IACA,OAAO,IAAI,CAAC98B,UAAU,CAAoB9V,IAAI,EAAE,iBAAiB,CAAC;EACpE;EAGAsjE,qBAAqBA,CAAAA,EAAmC;IACtD,IAAI,IAAI,CAACvxC,KAAK,CAAA,GAAU,CAAC,EAAE;MACzB,MAAM2d,MAAM,GAAG,IAAI,CAAC78B,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;MACxD,MAAMoqE,SAAS,GAAG7H,aAAa,CAACv9C,IAAI,CAAC0d,MAAM,CAAC1iC,KAAK,CAAC;MAClD,IAAIoqE,SAAS,EAAE;QACb,IAAI,CAAC7/D,KAAK,CAAC9H,MAAM,CAAC3I,gCAAgC,EAAE4oC,MAAM,EAAE;UAC1D3oC,iBAAiB,EAAEqwE,SAAS,CAAC,CAAC,CAAC,CAAC/pD,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC;MACJ;MACA,OAAOqiB,MAAM;IACf;IACA,OAAO,IAAI,CAACtJ,eAAe,CAAC,IAAI,CAAC;EACnC;EAEAixC,kBAAkBA,CAChBr3E,IAEC,EACQ;IACT,IAAIA,IAAI,CAACw2E,UAAU,IAAI,IAAI,EAAE;MAC3B,OAAOx2E,IAAI,CAACw2E,UAAU,CAACx8C,IAAI,CAAC,CAAC;QAAEnzB,GAAG;QAAEmG;MAAM,CAAC,KAAK;QAC9C,OACEA,KAAK,CAACA,KAAK,KAAK,MAAM,KACrBnG,GAAG,CAAC5G,IAAI,KAAK,YAAY,GACtB4G,GAAG,CAACV,IAAI,KAAK,MAAM,GACnBU,GAAG,CAACmG,KAAK,KAAK,MAAM,CAAC;MAE7B,CAAC,CAAC;IACJ;IACA,OAAO,KAAK;EACd;EAEAwlC,qBAAqBA,CAACxyC,IAAiC,EAAE;IACvD,MAAM;MAAEuY;IAAY,CAAA,GAAGvY,IAAI;IAC3B,MAAMs3E,iBAAiB,GACrB/+D,UAAU,CAACC,MAAM,KAAK,CAAC,GAAGD,UAAU,CAAC,CAAC,CAAC,CAACtY,IAAI,GAAG,IAAI;IAErD,IAAID,IAAI,CAACwC,KAAK,KAAK,QAAQ,EAAE;MAC3B,IAAI80E,iBAAiB,KAAK,wBAAwB,EAAE;QAClD,IAAI,CAAC//D,KAAK,CACR9H,MAAM,CAAClH,gCAAgC,EACvCgQ,UAAU,CAAC,CAAC,CAAC,CAACtK,GAAG,CAACrQ,KACpB,CAAC;MACH;IACF,CAAC,MAAM,IAAIoC,IAAI,CAACwC,KAAK,KAAK,OAAO,EAAE;MACjC,IAAI80E,iBAAiB,KAAK,0BAA0B,EAAE;QACpD,IAAI,CAAC//D,KAAK,CACR9H,MAAM,CAAC3N,4BAA4B,EACnCyW,UAAU,CAAC,CAAC,CAAC,CAACtK,GAAG,CAACrQ,KACpB,CAAC;MACH;IACF,CAAC,MAAM,IAAIoC,IAAI,CAACyyC,MAAM,EAAE;MAAA,IAAA8kC,gBAAA;MACtB,IAAID,iBAAiB,KAAK,wBAAwB,EAAE;QAClD,IAAI,CAAC//D,KAAK,CAAC9H,MAAM,CAAC3L,0BAA0B,EAAEyU,UAAU,CAAC,CAAC,CAAC,CAACtK,GAAG,CAACrQ,KAAK,CAAC;MACxE;MACA,IAAI,CAAA25E,CAAAA,gBAAA,GAAAv3E,IAAI,CAACw2E,UAAU,KAAfe,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAiB/+D,MAAM,IAAG,CAAC,EAAE;QAC/B,IAAI,CAACjB,KAAK,CACR9H,MAAM,CAAC5L,4BAA4B,EACnC0U,UAAU,CAAC,CAAC,CAAC,CAACtK,GAAG,CAACrQ,KACpB,CAAC;MACH;IACF;EACF;EAEAi5E,qBAAqBA,CACnB72E,IAEC,EACD;IAEA,IAAI,IAAI,CAACq3E,kBAAkB,CAACr3E,IAAI,CAAC,IAAIA,IAAI,CAACC,IAAI,KAAK,sBAAsB,EAAE;MAEzE,MAAM;QAAEsY;MAAY,CAAA,GAAGvY,IAAI;MAC3B,IAAIuY,UAAU,IAAI,IAAI,EAAE;QAEtB,MAAMi/D,wBAAwB,GAAGj/D,UAAU,CAACk/D,IAAI,CAAC9kC,SAAS,IAAI;UAC5D,IAAIW,QAAQ;UACZ,IAAIX,SAAS,CAAC1yC,IAAI,KAAK,iBAAiB,EAAE;YACxCqzC,QAAQ,GAAGX,SAAS,CAACC,KAAK;UAC5B,CAAC,MAAM,IAAID,SAAS,CAAC1yC,IAAI,KAAK,iBAAiB,EAAE;YAC/CqzC,QAAQ,GAAGX,SAAS,CAACW,QAAQ;UAC/B;UACA,IAAIA,QAAQ,KAAKzjC,SAAS,EAAE;YAC1B,OAAOyjC,QAAQ,CAACrzC,IAAI,KAAK,YAAY,GACjCqzC,QAAQ,CAACntC,IAAI,KAAK,SAAS,GAC3BmtC,QAAQ,CAACtmC,KAAK,KAAK,SAAS;UAClC;QACF,CAAC,CAAC;QACF,IAAIwqE,wBAAwB,KAAK3nE,SAAS,EAAE;UAC1C,IAAI,CAAC0H,KAAK,CACR9H,MAAM,CAAC7L,2BAA2B,EAClC4zE,wBAAwB,CAACvpE,GAAG,CAACrQ,KAC/B,CAAC;QACH;MACF;IACF;EACF;EAEAk1C,sBAAsBA,CAACC,QAAiB,EAAW;IACjD,IAAIA,QAAQ,EAAE,OAAO,KAAK;IAC1B,OACE,IAAI,CAAChW,YAAY,CAAW,GAAA,CAAC,IAC7B,IAAI,CAACA,YAAY,CAAA,EAAU,CAAC,IACM,IAAI,CAACA,YAAY,IAAW,CAAC;EAEnE;EAEAiW,gBAAgBA,CACdhzC,IAA4D,EAC5D+yC,QAAiB,EACjBvwC,KAAoB,EACpByL,GAAc,EACR;IACN,IAAI8kC,QAAQ,EAAE;MAWZ;IACF;IAEA,IAAqCvwC,KAAK,KAAK,QAAQ,EAAE;MACvD,IAAI,CAACm0B,YAAY,CAAC,kBAAkB,EAAE1oB,GAAG,CAAC;MACzCjO,IAAI,CAAyByyC,MAAM,GAAG,IAAI;IAC5C,CAAA,MAAM,IAAI,IAAI,CAACxnB,SAAS,CAAC,kBAAkB,CAAC,EAAE;MAC5CjrB,IAAI,CAAyByyC,MAAM,GAAG,KAAK;IAC9C;IAEA,IAAIjwC,KAAK,KAAK,QAAQ,EAAE;MACtB,IAAI,CAACm0B,YAAY,CAAC,oBAAoB,EAAE1oB,GAAG,CAAC;MAC3CjO,IAAI,CAAyBwC,KAAK,GAAG,QAAQ;IAChD,CAAC,MAAM,IAAIA,KAAK,KAAK,OAAO,EAAE;MAC5B,IAAI,CAACm0B,YAAY,CAAC,0BAA0B,EAAE1oB,GAAG,CAAC;MACjDjO,IAAI,CAAyBwC,KAAK,GAAG,OAAO;IAC9C,CAAA,MAAM,IAAI,IAAI,CAACyoB,SAAS,CAAC,oBAAoB,CAAC,EAAE;MAC9CjrB,IAAI,CAAyBwC,KAAK,GAAG,IAAI;IAC5C;EACF;EAaAk9D,qBAAqBA,CACnB1/D,IAA+D,EAC/D+yC,QAAiB,EACI;IACrB,IAAI,CAAC,IAAI,CAACD,sBAAsB,CAACC,QAAQ,CAAC,EAAE;MAC1C,IAAI,CAACC,gBAAgB,CACnBhzC,IAAI,EACJ+yC,QAAQ,EACR,IACF,CAAC;MACD,OAAO,IAAI;IACb;IAEA,MAAM2kC,eAAe,GAAG,IAAI,CAACtxC,eAAe,CAAC,IAAI,CAAC;IAElD,MAAM;MAAEnmC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,MAAMu/D,aAAa,GAAGzyD,0BAA0B,CAACjlB,IAAI,CAAC,GAOlDA,IAAI,KAAA,EAAa,IAAI,IAAI,CAACi1B,iBAAiB,CAAE,CAAA,KAAyB,GAAA,GAQtEj1B,IAAI,KAAa,EAAA;IAErB,IAAI03E,aAAa,EAAE;MACjB,IAAI,CAACjqD,sCAAsC,CAACgqD,eAAe,CAAC;MAC5D,IAAI,CAAC1kC,gBAAgB,CACnBhzC,IAAI,EACJ+yC,QAAQ,EACR2kC,eAAe,CAACvxE,IAAI,EACpBuxE,eAAe,CAACzpE,GAAG,CAACrQ,KACtB,CAAC;MACD,OAAO,IAAI;IACb,CAAC,MAAM;MACL,IAAI,CAACo1C,gBAAgB,CACnBhzC,IAAI,EACJ+yC,QAAQ,EACR,IACF,CAAC;MAED,OAAO2kC,eAAe;IACxB;EACF;EAEAE,wBAAwBA,CAEtBp1E,KAAa,EACb;IACA,MAAM;MAAEvC;KAAM,GAAG,IAAI,CAACmY,KAAK;IAC3B,OAAO4M,iBAAiB,CAAC/kB,IAAI,CAAC,GAO1BA,IAAI,KAAa,EAAA,IAAI,IAAI,CAACi1B,iBAAiB,EAAE,KAAyB,GAAA,GAQtEj1B,IAAI,KAAa,EAAA;EACvB;EAKAwnC,WAAWA,CAAeznC,IAAiC,EAAe;IACxE,IAAI,IAAI,CAAC+xB,KAAK,CAAA,GAAU,CAAC,EAAE;MAEzB,OAAO,IAAI,CAAC8lD,8BAA8B,CAAC73E,IAAI,CAAC;IAClD;IAEA,OAAO,IAAI,CAAC2/D,6BAA6B,CACvC3/D,IAAI,EACJ,IAAI,CAAC0/D,qBAAqB,CAAC1/D,IAAI,EAAiB,KAAK,CACvD,CAAC;EACH;EAEA2/D,6BAA6BA,CAE3B3/D,IAAiC,EACjCy8D,sBAA2C,EAC9B;IACbz8D,IAAI,CAACuY,UAAU,GAAG,EAAE;IAIpB,MAAMq9D,UAAU,GAAG,IAAI,CAACkC,gCAAgC,CACtD93E,IAAI,EACJy8D,sBACF,CAAC;IAOD,MAAMsb,SAAS,GAAG,CAACnC,UAAU,IAAI,IAAI,CAACnhD,GAAG,CAAA,EAAS,CAAC;IAGnD,MAAMqhD,OAAO,GAAGiC,SAAS,IAAI,IAAI,CAAC1S,6BAA6B,CAACrlE,IAAI,CAAC;IAGrE,IAAI+3E,SAAS,IAAI,CAACjC,OAAO,EAAE,IAAI,CAACxQ,0BAA0B,CAACtlE,IAAI,CAAC;IAChE,IAAI,CAACs9B,gBAAgB,CAAA,EAAS,CAAC;IAE/B,OAAO,IAAI,CAACu6C,8BAA8B,CAAC73E,IAAI,CAAC;EAClD;EAEA63E,8BAA8BA,CAE5B73E,IAAiC,EACpB;IAAA,IAAAg4E,iBAAA;IACb,CAAAA,iBAAA,GAAAh4E,IAAI,CAACuY,UAAU,KAAA,IAAA,GAAAy/D,iBAAA,GAAfh4E,IAAI,CAACuY,UAAU,GAAK,EAAE;IACtBvY,IAAI,CAAC6X,MAAM,GAAG,IAAI,CAAC0tD,iBAAiB,EAAE;IACtC,IAAI,CAACqR,0BAA0B,CAAC52E,IAAI,CAAC;IACrC,IAAI,CAACwyC,qBAAqB,CAACxyC,IAAI,CAAC;IAChC,IAAI,CAAC62E,qBAAqB,CAAC72E,IAAI,CAAC;IAEhC,IAAI,CAAC29B,SAAS,CAAA,CAAE;IAChB,OAAO,IAAI,CAAC7nB,UAAU,CAAC9V,IAAI,EAAE,mBAAmB,CAAC;EACnD;EAEAulE,iBAAiBA,CAAAA,EAAgC;IAC/C,IAAI,CAAC,IAAI,CAACxzC,KAAK,CAAA,GAAU,CAAC,EAAE,IAAI,CAAC7sB,UAAU,EAAE;IAC7C,OAAO,IAAI,CAACqiC,aAAa,EAAE;EAC7B;EAEAmL,yBAAyBA,CAMvB1yC,IAAiC,EACjC2yC,SAAoB,EACpB1yC,IAAe,EACT;IACN0yC,SAAS,CAACC,KAAK,GAAG,IAAI,CAACxM,eAAe,EAAE;IACxCpmC,IAAI,CAACuY,UAAU,CAACsD,IAAI,CAAC,IAAI,CAACg3B,qBAAqB,CAACF,SAAS,EAAE1yC,IAAI,CAAC,CAAC;EACnE;EAEA4yC,qBAAqBA,CAMnBF,SAAoB,EACpB1yC,IAAe,EACf8pB,WAAwB,OAA2B,EACnD;IACA,IAAI,CAACmjC,SAAS,CAACva,SAAS,CAACC,KAAK,EAAE;MAAE3yC;IAAM,CAAA,EAAE8pB,WAAW,CAAC;IACtD,OAAO,IAAI,CAACjU,UAAU,CAAC68B,SAAS,EAAE1yC,IAAI,CAAC;EACzC;EAOAg4E,qBAAqBA,CAAAA,EAAwB;IAC3C,IAAI,CAACp6C,MAAM,CAAA,CAAU,CAAC;IAEtB,MAAMq6C,KAAK,GAAG,EAAE;IAChB,MAAMC,SAAS,GAAG,IAAIpsE,GAAG,EAAE;IAE3B,GAAG;MACD,IAAI,IAAI,CAACgmB,KAAK,CAAA,CAAU,CAAC,EAAE;QACzB;MACF;MAEA,MAAM/xB,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;MAGhD,MAAMg4D,OAAO,GAAG,IAAI,CAACv1D,KAAK,CAACpL,KAAK;MAIhC,IAAImrE,SAAS,CAACvwD,GAAG,CAAC+lD,OAAO,CAAC,EAAE;QAC1B,IAAI,CAACp2D,KAAK,CACR9H,MAAM,CAAC7I,iCAAiC,EACxC,IAAI,CAACwR,KAAK,CAAC1B,QAAQ,EACnB;UACE7P,GAAG,EAAE8mE;QACP,CACF,CAAC;MACH;MACAwK,SAAS,CAAC1tD,GAAG,CAACkjD,OAAO,CAAC;MACtB,IAAI,IAAI,CAAC57C,KAAK,CAAA,GAAU,CAAC,EAAE;QACzB/xB,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAACgM,kBAAkB,CAAC86D,OAAO,CAAC;MAC7C,CAAC,MAAM;QACL3tE,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAACu/B,eAAe,CAAC,IAAI,CAAC;MACvC;MACA,IAAI,CAACvI,MAAM,CAAA,EAAS,CAAC;MAErB,IAAI,CAAC,IAAI,CAAC9L,KAAK,CAAA,GAAU,CAAC,EAAE;QAC1B,MAAM,IAAI,CAACxa,KAAK,CACd9H,MAAM,CAAC9I,2BAA2B,EAClC,IAAI,CAACyR,KAAK,CAAC1B,QACb,CAAC;MACH;MACA1W,IAAI,CAACgN,KAAK,GAAG,IAAI,CAAC6F,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;MACtDkrE,KAAK,CAACr8D,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,QAAQ,IAAI,CAACy0B,GAAG,GAAS,CAAC;IAE3B,IAAI,CAACoJ,MAAM,CAAA,CAAU,CAAC;IAEtB,OAAOq6C,KAAK;EACd;EAMAE,qBAAqBA,CAAAA,EAAG;IACtB,MAAMF,KAA0B,GAAG,EAAE;IACrC,MAAMngE,UAAU,GAAG,IAAIhM,GAAG,EAAE;IAC5B,GAAG;MACD,MAAM/L,IAAI,GAAG,IAAI,CAAC2V,SAAS,EAAqB;MAChD3V,IAAI,CAAC6G,GAAG,GAAG,IAAI,CAACu/B,eAAe,CAAC,IAAI,CAAC;MAErC,IAAIpmC,IAAI,CAAC6G,GAAG,CAACV,IAAI,KAAK,MAAM,EAAE;QAC5B,IAAI,CAACoR,KAAK,CAAC9H,MAAM,CAAC/I,gCAAgC,EAAE1G,IAAI,CAAC6G,GAAG,CAAC;MAC/D;MAEA,IAAIkR,UAAU,CAAC6P,GAAG,CAAC5nB,IAAI,CAAC6G,GAAG,CAACV,IAAI,CAAC,EAAE;QACjC,IAAI,CAACoR,KAAK,CAAC9H,MAAM,CAAC7I,iCAAiC,EAAE5G,IAAI,CAAC6G,GAAG,EAAE;UAC7DA,GAAG,EAAE7G,IAAI,CAAC6G,GAAG,CAACV;QAChB,CAAC,CAAC;MACJ;MACA4R,UAAU,CAAC0S,GAAG,CAACzqB,IAAI,CAAC6G,GAAG,CAACV,IAAI,CAAC;MAC7B,IAAI,CAAC03B,MAAM,CAAA,EAAS,CAAC;MACrB,IAAI,CAAC,IAAI,CAAC9L,KAAK,CAAA,GAAU,CAAC,EAAE;QAC1B,MAAM,IAAI,CAACxa,KAAK,CACd9H,MAAM,CAAC9I,2BAA2B,EAClC,IAAI,CAACyR,KAAK,CAAC1B,QACb,CAAC;MACH;MACA1W,IAAI,CAACgN,KAAK,GAAG,IAAI,CAAC6F,kBAAkB,CAAC,IAAI,CAACuF,KAAK,CAACpL,KAAK,CAAC;MACtDkrE,KAAK,CAACr8D,IAAI,CAAC,IAAI,CAAC/F,UAAU,CAAC9V,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACtD,CAAC,QAAQ,IAAI,CAACy0B,GAAG,GAAS,CAAC;IAE3B,OAAOyjD,KAAK;EACd;EAEAtB,0BAA0BA,CACxB52E,IAEC,EACD;IACA,IAAI+X,UAA+B;IACA;MAEjC,IAAIsgE,OAAO,GAAG,KAAK;IACrB;IAGA,IAAI,IAAI,CAACtmD,KAAK,CAAA,EAAS,CAAC,EAAE;MACxB,IACE,IAAI,CAACyL,qBAAqB,CAAE,CAAA,IAC5B,IAAI,CAACtI,iBAAiB,CAAA,CAAE,KAAA,EAA8B,EACtD;QAGA;MACF;MAEA,IAAI,CAAChN,IAAI,CAAA,CAAE;MAEX,IAAqC,IAAI,CAAC+C,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvElT,UAAU,GAAG,IAAI,CAACqgE,qBAAqB,EAAE;MAC3C,CAAC,MAAM;QACLrgE,UAAU,GAAG,IAAI,CAACkgE,qBAAqB,EAAE;MAC3C;MACmC;QACjCI,OAAO,GAAG,IAAI;MAChB;IACF,CAAC,MAAM,IAAI,IAAI,CAACt7C,YAAY,CAAW,EAAA,CAAC,IAAI,CAAC,IAAI,CAACS,qBAAqB,EAAE,EAAE;MACzE,IACE,CAAC,IAAI,CAACvS,SAAS,CAAC,wBAAwB,CAAC,IACR,CAAC,IAAI,CAACA,SAAS,CAAC,kBAAkB,CAAC,EACpE;QACA,IAAI,CAAC1T,KAAK,CAAC9H,MAAM,CAACnM,yBAAyB,EAAE,IAAI,CAAC8U,KAAK,CAAC1B,QAAQ,CAAC;MACnE;MACA,IAAoC,CAAC,IAAI,CAACuU,SAAS,CAAC,kBAAkB,CAAC,EAAE;QACvE,IAAI,CAAC6R,QAAQ,CAAC98B,IAAI,EAAE,wBAAwB,EAAE,IAAI,CAAC;MACrD;MACA,IAAI,CAACkoB,IAAI,CAAA,CAAE;MACXnQ,UAAU,GAAG,IAAI,CAACkgE,qBAAqB,EAAE;IAC3C,CAAC,MAAM;MACLlgE,UAAU,GAAG,EAAE;IACjB;IAEA,IAEE,CAACsgE,OAAO,IACR,IAAI,CAACptD,SAAS,CAAC,kBAAkB,CAAC,EAClC;MACAjrB,IAAI,CAACw2E,UAAU,GAAGz+D,UAAU;IAC9B,CAAC,MAAM;MACL/X,IAAI,CAAC+X,UAAU,GAAGA,UAAU;IAC9B;EACF;EAEA+/D,gCAAgCA,CAC9B93E,IAAiC,EACjCy8D,sBAA2C,EAClC;IAET,IAAIA,sBAAsB,EAAE;MAC1B,MAAM9pB,SAAS,GAAG,IAAI,CAACx5B,eAAe,CACpCsjD,sBACF,CAAC;MACD9pB,SAAS,CAACC,KAAK,GAAG6pB,sBAAsB;MACxCz8D,IAAI,CAACuY,UAAU,CAACsD,IAAI,CAClB,IAAI,CAACg3B,qBAAqB,CAACF,SAAS,EAAE,wBAAwB,CAChE,CAAC;MACD,OAAO,IAAI;IACZ,CAAA,MAAM,IAELztB,0BAA0B,CAAC,IAAI,CAAC9M,KAAK,CAACnY,IAAI,CAAC,EAC3C;MACA,IAAI,CAACyyC,yBAAyB,CAC5B1yC,IAAI,EACJ,IAAI,CAAC2V,SAAS,CAAA,CAA4B,EAC1C,wBACF,CAAC;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA0vD,6BAA6BA,CAACrlE,IAAiC,EAAW;IACxE,IAAI,IAAI,CAAC+xB,KAAK,CAAA,EAAQ,CAAC,EAAE;MACvB,MAAM4gB,SAAS,GAAG,IAAI,CAACh9B,SAAS,EAA8B;MAC9D,IAAI,CAACuS,IAAI,CAAA,CAAE;MACX,IAAI,CAACoV,gBAAgB,CAAA,EAAO,CAAC;MAE7B,IAAI,CAACoV,yBAAyB,CAC5B1yC,IAAI,EACJ2yC,SAAS,EACT,0BACF,CAAC;MACD,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;EAEA2yB,0BAA0BA,CAACtlE,IAAiC,EAAE;IAC5D,IAAI0sC,KAAK,GAAG,IAAI;IAChB,IAAI,CAAC7O,MAAM,CAAA,CAAU,CAAC;IACtB,OAAO,CAAC,IAAI,CAACpJ,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B,IAAIiY,KAAK,EAAE;QACTA,KAAK,GAAG,KAAK;MACf,CAAC,MAAM;QAEL,IAAI,IAAI,CAACjY,GAAG,CAAA,EAAS,CAAC,EAAE;UACtB,MAAM,IAAI,CAACld,KAAK,CAAC9H,MAAM,CAACzN,sBAAsB,EAAE,IAAI,CAACoW,KAAK,CAAC1B,QAAQ,CAAC;QACtE;QAEA,IAAI,CAACmnB,MAAM,CAAA,EAAS,CAAC;QACrB,IAAI,IAAI,CAACpJ,GAAG,CAAA,CAAU,CAAC,EAAE;MAC3B;MAEA,MAAMke,SAAS,GAAG,IAAI,CAACh9B,SAAS,EAAqB;MACrD,MAAMu9B,gBAAgB,GAAG,IAAI,CAACnhB,KAAK,IAAU,CAAC;MAC9C,MAAMqhB,eAAe,GAAG,IAAI,CAACrW,YAAY,IAAS,CAAC;MACnD4V,SAAS,CAACW,QAAQ,GAAG,IAAI,CAACgwB,qBAAqB,EAAE;MACjD,MAAMgV,eAAe,GAAG,IAAI,CAACrlC,oBAAoB,CAC/CN,SAAS,EACTO,gBAAgB,EAChBlzC,IAAI,CAACykC,UAAU,KAAK,MAAM,IAAIzkC,IAAI,CAACykC,UAAU,KAAK,QAAQ,EAC1D2O,eAAe,EACfvjC,SACF,CAAC;MACD7P,IAAI,CAACuY,UAAU,CAACsD,IAAI,CAACy8D,eAAe,CAAC;IACvC;EACF;EAGArlC,oBAAoBA,CAClBN,SAAoC,EACpCO,gBAAyB,EAEzBC,kBAA2B,EAC3BC,eAAwB,EACxBrpB,WAAoC,EACjB;IACnB,IAAI,IAAI,CAACsT,aAAa,CAAA,EAAO,CAAC,EAAE;MAC9BsV,SAAS,CAACC,KAAK,GAAG,IAAI,CAACxM,eAAe,EAAE;IAC1C,CAAC,MAAM;MACL,MAAM;QAAEkN;MAAU,CAAA,GAAGX,SAAS;MAC9B,IAAIO,gBAAgB,EAAE;QACpB,MAAM,IAAI,CAAC37B,KAAK,CAAC9H,MAAM,CAAClM,qBAAqB,EAAEovC,SAAS,EAAE;UACxDnvC,UAAU,EAAG8vC,QAAQ,CAAqBtmC;QAC5C,CAAC,CAAC;MACJ;MACA,IAAI,CAAC0mC,iBAAiB,CACnBJ,QAAQ,CAAkBntC,IAAI,EAC/BwsC,SAAS,CAAC1kC,GAAG,CAACrQ,KAAK,EACnB,IAAI,EACJ,IACF,CAAC;MACD,IAAI,CAAC+0C,SAAS,CAACC,KAAK,EAAE;QACpBD,SAAS,CAACC,KAAK,GAAGxS,eAAe,CAACkT,QAAQ,CAAC;MAC7C;IACF;IACA,OAAO,IAAI,CAACT,qBAAqB,CAC/BF,SAAS,EACT,iBAAiB,EACjB5oB,WACF,CAAC;EACH;EAIA+nB,WAAWA,CACTtE,KAAuD,EAC9C;IACT,OAAOA,KAAK,CAACvtC,IAAI,KAAK,YAAY,IAAIutC,KAAK,CAACrnC,IAAI,KAAK,MAAM;EAC7D;AACF;ACj3Ge,MAAMoyE,MAAM,SAASpI,eAAe,CAAC;EAOlD7yE,WAAWA,CACT4T,OAAmC,EACnCkc,KAAa,EACb44C,UAAsB,EACtB;IACA90D,OAAO,GAAGF,UAAU,CAACE,OAAO,CAAC;IAC7B,KAAK,CAACA,OAAO,EAAEkc,KAAK,CAAC;IAErB,IAAI,CAAClc,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC4tB,gBAAgB,CAAA,CAAE;IACvB,IAAI,CAACvuB,OAAO,GAAGy1D,UAAU;IACzB,IAAI,CAACloE,QAAQ,GAAGoT,OAAO,CAACtB,cAAc;IACtC,IAAI,CAACE,UAAU,GAAGoB,OAAO,CAACpB,UAAU;IAEpC,IAAI8B,WAAW,GAAG,CAAC;IACnB,IAAIV,OAAO,CAACjB,yBAAyB,EAAE;MACrC2B,WAAW,KAAyC;IACtD;IACA,IAAIV,OAAO,CAAChB,0BAA0B,EAAE;MACtC0B,WAAW,KAA0C;IACvD;IACA,IAAIV,OAAO,CAACd,2BAA2B,EAAE;MACvCwB,WAAW,KAA2C;IACxD;IACA,IAAIV,OAAO,CAACb,uBAAuB,EAAE;MACnCuB,WAAW,MAAuC;IACpD;IACA,IAAIV,OAAO,CAACZ,sBAAsB,EAAE;MAClCsB,WAAW,MAAsC;IACnD;IACA,IAAIV,OAAO,CAACf,6BAA6B,EAAE;MACzCyB,WAAW,KAA6C;IAC1D;IACA,IAAIV,OAAO,CAACT,MAAM,EAAE;MAClBmB,WAAW,MAAsB;IACnC;IACA,IAAIV,OAAO,CAACR,MAAM,EAAE;MAClBkB,WAAW,OAAsB;IACnC;IACA,IAAIV,OAAO,CAACP,uBAAuB,EAAE;MACnCiB,WAAW,OAAuC;IACpD;IACA,IAAIV,OAAO,CAACN,8BAA8B,EAAE;MAC1CgB,WAAW,OAA8C;IAC3D;IACA,IAAIV,OAAO,CAACL,aAAa,EAAE;MACzBe,WAAW,QAA6B;IAC1C;IACA,IAAIV,OAAO,CAACJ,aAAa,EAAE;MACzBc,WAAW,QAA6B;IAC1C;IACA,IAAIV,OAAO,CAACH,MAAM,EAAE;MAClBa,WAAW,QAAsB;IACnC;IAEA,IAAI,CAACA,WAAW,GAAGA,WAAW;EAChC;EAGAwtB,eAAeA,CAAAA,EAAuC;IACpD,OAAO3W,YAAY;EACrB;EAEA/W,KAAKA,CAAAA,EAAW;IACd,IAAI,CAAC+tB,kBAAkB,CAAA,CAAE;IACzB,MAAM9tB,IAAI,GAAG,IAAI,CAACgE,SAAS,EAAU;IACrC,MAAMogC,OAAO,GAAG,IAAI,CAACpgC,SAAS,EAAa;IAC3C,IAAI,CAAC6e,SAAS,CAAA,CAAE;IAChB7iB,IAAI,CAAC2c,MAAM,GAAG,IAAI;IAClB,IAAI,CAACwnB,aAAa,CAACnkC,IAAI,EAAEokC,OAAO,CAAC;IACjCpkC,IAAI,CAAC2c,MAAM,GAAG,IAAI,CAAClW,KAAK,CAACkW,MAAM;IAC/B3c,IAAI,CAAC8Z,QAAQ,CAACjT,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACmU,WAAW;IAC7C,OAAO5a,IAAI;EACb;AACF;ACrEO,SAASD,KAAKA,CAAC0b,KAAa,EAAElc,OAAiB,EAAQ;EAAA,IAAAsnE,QAAA;EAC5D,IAAI,CAAA,CAAAA,QAAA,GAAAtnE,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAPsnE,QAAA,CAAS7oE,UAAU,MAAK,aAAa,EAAE;IACzCuB,OAAO,GAAAjE,MAAA,CAAAwB,MAAA,CAAA,CAAA,CAAA,EACFyC,OAAO,CACX;IACD,IAAI;MACFA,OAAO,CAACvB,UAAU,GAAG,QAAQ;MAC7B,MAAM+Y,MAAM,GAAG+vD,SAAS,CAACvnE,OAAO,EAAEkc,KAAK,CAAC;MACxC,MAAMsrD,GAAG,GAAGhwD,MAAM,CAAChX,KAAK,EAAE;MAE1B,IAAIgX,MAAM,CAACiC,iBAAiB,EAAE;QAC5B,OAAO+tD,GAAG;MACZ;MAEA,IAAIhwD,MAAM,CAACkC,2BAA2B,EAAE;QAMtC,IAAI;UACF1Z,OAAO,CAACvB,UAAU,GAAG,QAAQ;UAC7B,OAAO8oE,SAAS,CAACvnE,OAAO,EAAEkc,KAAK,CAAC,CAAC1b,KAAK,CAAA,CAAE;QAC1C,CAAC,CAAC,OAAAa,OAAA,EAAM,CAAC;MACX,CAAC,MAAM;QAGLmmE,GAAG,CAAC3iC,OAAO,CAACpmC,UAAU,GAAG,QAAQ;MACnC;MAEA,OAAO+oE,GAAG;IACX,CAAA,CAAC,OAAOC,WAAW,EAAE;MACpB,IAAI;QACFznE,OAAO,CAACvB,UAAU,GAAG,QAAQ;QAC7B,OAAO8oE,SAAS,CAACvnE,OAAO,EAAEkc,KAAK,CAAC,CAAC1b,KAAK,CAAA,CAAE;MAC1C,CAAC,CAAC,OAAA2oD,QAAA,EAAM,CAAC;MAET,MAAMse,WAAW;IACnB;EACF,CAAC,MAAM;IACL,OAAOF,SAAS,CAACvnE,OAAO,EAAEkc,KAAK,CAAC,CAAC1b,KAAK,CAAA,CAAE;EAC1C;AACF;AAEO,SAASo0B,eAAeA,CAAC1Y,KAAa,EAAElc,OAAiB,EAAc;EAC5E,MAAMwX,MAAM,GAAG+vD,SAAS,CAACvnE,OAAO,EAAEkc,KAAK,CAAC;EACxC,IAAI1E,MAAM,CAACxX,OAAO,CAACV,UAAU,EAAE;IAC7BkY,MAAM,CAACtQ,KAAK,CAACgP,MAAM,GAAG,IAAI;EAC5B;EACA,OAAOsB,MAAM,CAAC65C,aAAa,EAAE;AAC/B;AAEA,SAASqW,0BAA0BA,CACjCC,kBAAsC,EACH;EACnC,MAAM19D,UAA6C,GAAG,CAAA,CAAE;EACxD,KAAK,MAAM05C,QAAQ,IAAI5nD,MAAM,CAACkC,IAAI,CAChC0pE,kBACF,CAAC,EAAkC;IACjC19D,UAAU,CAAC05C,QAAQ,CAAC,GAAG1uC,gBAAgB,CAAC0yD,kBAAkB,CAAChkB,QAAQ,CAAC,CAAC;EACvE;EACA,OAAO15C,UAAU;AACnB;MAEa29D,QAAQ,GAAGF,0BAA0B,CAACC,EAAkB,CAAC;AAEtE,SAASJ,SAASA,CAACvnE,OAAmC,EAAEkc,KAAa,EAAU;EAC7E,IAAI0yC,GAAG,GAAGyY,MAAM;EAChB,MAAMvS,UAAsB,GAAG,IAAIlrD,GAAG,EAAE;EACxC,IAAI5J,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEX,OAAO,EAAE;IACpB,KAAK,MAAM+a,MAAM,IAAIpa,OAAO,CAACX,OAAO,EAAE;MACpC,IAAIpK,IAAI,EAAE8K,IAAI;MACd,IAAI,OAAOqa,MAAM,KAAK,QAAQ,EAAE;QAC9BnlB,IAAI,GAAGmlB,MAAM;MACf,CAAC,MAAM;QACL,CAACnlB,IAAI,EAAE8K,IAAI,CAAC,GAAGqa,MAAM;MACvB;MACA,IAAI,CAAC06C,UAAU,CAACp+C,GAAG,CAACzhB,IAAI,CAAC,EAAE;QACzB6/D,UAAU,CAACr3D,GAAG,CAACxI,IAAI,EAAE8K,IAAI,IAAI,CAAE,CAAA,CAAC;MAClC;IACF;IACA80D,eAAe,CAACC,UAAU,CAAC;IAC3BlG,GAAG,GAAGiZ,cAAc,CAAC/S,UAAU,CAAC;EAClC;EAEA,OAAO,IAAIlG,GAAG,CAAC5uD,OAAO,EAAEkc,KAAK,EAAE44C,UAAU,CAAC;AAC5C;AAEA,MAAMgT,gBAAgB,GAAG,IAAIl+D,GAAG,EAAwC;AAGxE,SAASi+D,cAAcA,CACrB/S,UAA4B,EACE;EAC9B,MAAMiT,UAAU,GAAG,EAAE;EACrB,KAAK,MAAM9yE,IAAI,IAAI4gE,gBAAgB,EAAE;IACnC,IAAIf,UAAU,CAACp+C,GAAG,CAACzhB,IAAI,CAAC,EAAE;MACxB8yE,UAAU,CAACp9D,IAAI,CAAC1V,IAAI,CAAC;IACvB;EACF;EACA,MAAMU,GAAG,GAAGoyE,UAAU,CAAC3yE,IAAI,CAAC,GAAG,CAAC;EAChC,IAAIw5D,GAAG,GAAGkZ,gBAAgB,CAACtqE,GAAG,CAAC7H,GAAG,CAAC;EACnC,IAAI,CAACi5D,GAAG,EAAE;IACRA,GAAG,GAAGyY,MAAM;IACZ,KAAK,MAAMjtD,MAAM,IAAI2tD,UAAU,EAAE;MAE/BnZ,GAAG,GAAGgH,YAAY,CAACx7C,MAAM,CAAC,CAACw0C,GAAG,CAAC;IACjC;IACAkZ,gBAAgB,CAACrqE,GAAG,CAAC9H,GAAG,EAAEi5D,GAAG,CAAC;EAChC;EACA,OAAOA,GAAG;AACZ;;;"}
Index: imaps-frontend/node_modules/@babel/parser/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/parser/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/parser/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,5 @@
 {
   "name": "@babel/parser",
-  "version": "7.26.2",
+  "version": "7.26.5",
   "description": "A JavaScript parser",
   "author": "The Babel Team (https://babel.dev/team)",
@@ -36,5 +36,5 @@
   "# dependencies": "This package doesn't actually have runtime dependencies. @babel/types is only needed for type definitions.",
   "dependencies": {
-    "@babel/types": "^7.26.0"
+    "@babel/types": "^7.26.5"
   },
   "devDependencies": {
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-bugfix-firefox-class-in-computed-class-key
+
+> Wraps classes defined in computed keys of other classes affected by https://bugzilla.mozilla.org/show_bug.cgi?id=1887677
+
+See our website [@babel/plugin-bugfix-firefox-class-in-computed-class-key](https://babeljs.io/docs/babel-plugin-bugfix-firefox-class-in-computed-class-key) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-bugfix-firefox-class-in-computed-class-key
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-bugfix-firefox-class-in-computed-class-key --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _traverse = require("@babel/traverse");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(({
+  types: t,
+  assertVersion
+}) => {
+  assertVersion(7);
+  const containsClassExpressionVisitor = {
+    ClassExpression(path, state) {
+      state.found = true;
+      path.stop();
+    },
+    Function(path) {
+      path.skip();
+    }
+  };
+  const containsYieldOrAwaitVisitor = _traverse.visitors.environmentVisitor({
+    YieldExpression(path, state) {
+      state.yield = true;
+      if (state.await) path.stop();
+    },
+    AwaitExpression(path, state) {
+      state.await = true;
+      if (state.yield) path.stop();
+    }
+  });
+  function containsClassExpression(path) {
+    if (t.isClassExpression(path.node)) return true;
+    if (t.isFunction(path.node)) return false;
+    const state = {
+      found: false
+    };
+    path.traverse(containsClassExpressionVisitor, state);
+    return state.found;
+  }
+  function wrap(path) {
+    const context = {
+      yield: t.isYieldExpression(path.node),
+      await: t.isAwaitExpression(path.node)
+    };
+    path.traverse(containsYieldOrAwaitVisitor, context);
+    let replacement;
+    if (context.yield) {
+      const fn = t.functionExpression(null, [], t.blockStatement([t.returnStatement(path.node)]), true, context.await);
+      replacement = t.yieldExpression(t.callExpression(t.memberExpression(fn, t.identifier("call")), [t.thisExpression(), t.identifier("arguments")]), true);
+    } else {
+      const fn = t.arrowFunctionExpression([], path.node, context.await);
+      replacement = t.callExpression(fn, []);
+      if (context.await) replacement = t.awaitExpression(replacement);
+    }
+    path.replaceWith(replacement);
+  }
+  return {
+    name: "bugfix-firefox-class-in-computed-class-key",
+    visitor: {
+      Class(path) {
+        const hasPrivateElement = path.node.body.body.some(node => t.isPrivate(node));
+        if (!hasPrivateElement) return;
+        for (const elem of path.get("body.body")) {
+          if ("computed" in elem.node && elem.node.computed && containsClassExpression(elem.get("key"))) {
+            wrap(elem.get("key"));
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_traverse","require","_helperPluginUtils","_default","exports","default","declare","types","t","assertVersion","containsClassExpressionVisitor","ClassExpression","path","state","found","stop","Function","skip","containsYieldOrAwaitVisitor","visitors","environmentVisitor","YieldExpression","yield","await","AwaitExpression","containsClassExpression","isClassExpression","node","isFunction","traverse","wrap","context","isYieldExpression","isAwaitExpression","replacement","fn","functionExpression","blockStatement","returnStatement","yieldExpression","callExpression","memberExpression","identifier","thisExpression","arrowFunctionExpression","awaitExpression","replaceWith","name","visitor","Class","hasPrivateElement","body","some","isPrivate","elem","get","computed"],"sources":["../src/index.ts"],"sourcesContent":["import type { types as t, NodePath, Visitor } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(({ types: t, assertVersion }) => {\n  assertVersion(REQUIRED_VERSION(7));\n\n  const containsClassExpressionVisitor: Visitor<{ found: boolean }> = {\n    ClassExpression(path, state) {\n      state.found = true;\n      path.stop();\n    },\n    Function(path) {\n      path.skip();\n    },\n  };\n\n  const containsYieldOrAwaitVisitor = visitors.environmentVisitor<{\n    yield: boolean;\n    await: boolean;\n  }>({\n    YieldExpression(path, state) {\n      state.yield = true;\n      if (state.await) path.stop();\n    },\n    AwaitExpression(path, state) {\n      state.await = true;\n      if (state.yield) path.stop();\n    },\n  });\n\n  function containsClassExpression(path: NodePath<t.Node>) {\n    if (t.isClassExpression(path.node)) return true;\n    if (t.isFunction(path.node)) return false;\n    const state = { found: false };\n    path.traverse(containsClassExpressionVisitor, state);\n    return state.found;\n  }\n\n  function wrap(path: NodePath<t.Expression>) {\n    const context = {\n      yield: t.isYieldExpression(path.node),\n      await: t.isAwaitExpression(path.node),\n    };\n    path.traverse(containsYieldOrAwaitVisitor, context);\n\n    let replacement;\n\n    if (context.yield) {\n      const fn = t.functionExpression(\n        null,\n        [],\n        t.blockStatement([t.returnStatement(path.node)]),\n        /* generator */ true,\n        /* async */ context.await,\n      );\n\n      replacement = t.yieldExpression(\n        t.callExpression(t.memberExpression(fn, t.identifier(\"call\")), [\n          t.thisExpression(),\n          // NOTE: In some context arguments is invalid (it might not be defined\n          // in the top-level scope, or it's a syntax error in static class blocks).\n          // However, `yield` is also invalid in those contexts, so we can safely\n          // inject a reference to arguments.\n          t.identifier(\"arguments\"),\n        ]),\n        true,\n      );\n    } else {\n      const fn = t.arrowFunctionExpression([], path.node, context.await);\n\n      replacement = t.callExpression(fn, []);\n      if (context.await) replacement = t.awaitExpression(replacement);\n    }\n\n    path.replaceWith(replacement);\n  }\n\n  return {\n    name: \"bugfix-firefox-class-in-computed-class-key\",\n\n    visitor: {\n      Class(path) {\n        const hasPrivateElement = path.node.body.body.some(node =>\n          t.isPrivate(node),\n        );\n        if (!hasPrivateElement) return;\n\n        for (const elem of path.get(\"body.body\")) {\n          if (\n            \"computed\" in elem.node &&\n            elem.node.computed &&\n            containsClassExpression(elem.get(\"key\"))\n          ) {\n            wrap(\n              // @ts-expect-error .key also includes t.PrivateName\n              elem.get(\"key\") satisfies NodePath<t.Expression>,\n            );\n          }\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAAC,CAAC;EAAEC,KAAK,EAAEC,CAAC;EAAEC;AAAc,CAAC,KAAK;EACtDA,aAAa,CAAkB,CAAE,CAAC;EAElC,MAAMC,8BAA2D,GAAG;IAClEC,eAAeA,CAACC,IAAI,EAAEC,KAAK,EAAE;MAC3BA,KAAK,CAACC,KAAK,GAAG,IAAI;MAClBF,IAAI,CAACG,IAAI,CAAC,CAAC;IACb,CAAC;IACDC,QAAQA,CAACJ,IAAI,EAAE;MACbA,IAAI,CAACK,IAAI,CAAC,CAAC;IACb;EACF,CAAC;EAED,MAAMC,2BAA2B,GAAGC,kBAAQ,CAACC,kBAAkB,CAG5D;IACDC,eAAeA,CAACT,IAAI,EAAEC,KAAK,EAAE;MAC3BA,KAAK,CAACS,KAAK,GAAG,IAAI;MAClB,IAAIT,KAAK,CAACU,KAAK,EAAEX,IAAI,CAACG,IAAI,CAAC,CAAC;IAC9B,CAAC;IACDS,eAAeA,CAACZ,IAAI,EAAEC,KAAK,EAAE;MAC3BA,KAAK,CAACU,KAAK,GAAG,IAAI;MAClB,IAAIV,KAAK,CAACS,KAAK,EAAEV,IAAI,CAACG,IAAI,CAAC,CAAC;IAC9B;EACF,CAAC,CAAC;EAEF,SAASU,uBAAuBA,CAACb,IAAsB,EAAE;IACvD,IAAIJ,CAAC,CAACkB,iBAAiB,CAACd,IAAI,CAACe,IAAI,CAAC,EAAE,OAAO,IAAI;IAC/C,IAAInB,CAAC,CAACoB,UAAU,CAAChB,IAAI,CAACe,IAAI,CAAC,EAAE,OAAO,KAAK;IACzC,MAAMd,KAAK,GAAG;MAAEC,KAAK,EAAE;IAAM,CAAC;IAC9BF,IAAI,CAACiB,QAAQ,CAACnB,8BAA8B,EAAEG,KAAK,CAAC;IACpD,OAAOA,KAAK,CAACC,KAAK;EACpB;EAEA,SAASgB,IAAIA,CAAClB,IAA4B,EAAE;IAC1C,MAAMmB,OAAO,GAAG;MACdT,KAAK,EAAEd,CAAC,CAACwB,iBAAiB,CAACpB,IAAI,CAACe,IAAI,CAAC;MACrCJ,KAAK,EAAEf,CAAC,CAACyB,iBAAiB,CAACrB,IAAI,CAACe,IAAI;IACtC,CAAC;IACDf,IAAI,CAACiB,QAAQ,CAACX,2BAA2B,EAAEa,OAAO,CAAC;IAEnD,IAAIG,WAAW;IAEf,IAAIH,OAAO,CAACT,KAAK,EAAE;MACjB,MAAMa,EAAE,GAAG3B,CAAC,CAAC4B,kBAAkB,CAC7B,IAAI,EACJ,EAAE,EACF5B,CAAC,CAAC6B,cAAc,CAAC,CAAC7B,CAAC,CAAC8B,eAAe,CAAC1B,IAAI,CAACe,IAAI,CAAC,CAAC,CAAC,EAChC,IAAI,EACRI,OAAO,CAACR,KACtB,CAAC;MAEDW,WAAW,GAAG1B,CAAC,CAAC+B,eAAe,CAC7B/B,CAAC,CAACgC,cAAc,CAAChC,CAAC,CAACiC,gBAAgB,CAACN,EAAE,EAAE3B,CAAC,CAACkC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAC7DlC,CAAC,CAACmC,cAAc,CAAC,CAAC,EAKlBnC,CAAC,CAACkC,UAAU,CAAC,WAAW,CAAC,CAC1B,CAAC,EACF,IACF,CAAC;IACH,CAAC,MAAM;MACL,MAAMP,EAAE,GAAG3B,CAAC,CAACoC,uBAAuB,CAAC,EAAE,EAAEhC,IAAI,CAACe,IAAI,EAAEI,OAAO,CAACR,KAAK,CAAC;MAElEW,WAAW,GAAG1B,CAAC,CAACgC,cAAc,CAACL,EAAE,EAAE,EAAE,CAAC;MACtC,IAAIJ,OAAO,CAACR,KAAK,EAAEW,WAAW,GAAG1B,CAAC,CAACqC,eAAe,CAACX,WAAW,CAAC;IACjE;IAEAtB,IAAI,CAACkC,WAAW,CAACZ,WAAW,CAAC;EAC/B;EAEA,OAAO;IACLa,IAAI,EAAE,4CAA4C;IAElDC,OAAO,EAAE;MACPC,KAAKA,CAACrC,IAAI,EAAE;QACV,MAAMsC,iBAAiB,GAAGtC,IAAI,CAACe,IAAI,CAACwB,IAAI,CAACA,IAAI,CAACC,IAAI,CAACzB,IAAI,IACrDnB,CAAC,CAAC6C,SAAS,CAAC1B,IAAI,CAClB,CAAC;QACD,IAAI,CAACuB,iBAAiB,EAAE;QAExB,KAAK,MAAMI,IAAI,IAAI1C,IAAI,CAAC2C,GAAG,CAAC,WAAW,CAAC,EAAE;UACxC,IACE,UAAU,IAAID,IAAI,CAAC3B,IAAI,IACvB2B,IAAI,CAAC3B,IAAI,CAAC6B,QAAQ,IAClB/B,uBAAuB,CAAC6B,IAAI,CAACC,GAAG,CAAC,KAAK,CAAC,CAAC,EACxC;YACAzB,IAAI,CAEFwB,IAAI,CAACC,GAAG,CAAC,KAAK,CAChB,CAAC;UACH;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,43 @@
+{
+  "name": "@babel/plugin-bugfix-firefox-class-in-computed-class-key",
+  "version": "7.25.9",
+  "description": "Wraps classes defined in computed keys of other classes affected by https://bugzilla.mozilla.org/show_bug.cgi?id=1887677",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-bugfix-firefox-class-in-computed-class-key"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-firefox-class-in-computed-class-key",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "keywords": [
+    "babel-plugin",
+    "bugfix"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-bugfix-safari-class-field-initializer-scope
+
+> Wrap class field initializers with IIFE to workaround https://webkit.org/b/236843
+
+See our website [@babel/plugin-bugfix-safari-class-field-initializer-scope](https://babeljs.io/docs/babel-plugin-bugfix-safari-class-field-initializer-scope) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-bugfix-safari-class-field-initializer-scope
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-bugfix-safari-class-field-initializer-scope --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,73 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+var core = require('@babel/core');
+
+function needsWrapping(node) {
+  if (core.types.isLiteral(node) && !core.types.isTemplateLiteral(node)) {
+    return false;
+  }
+  if (core.types.isCallExpression(node) || core.types.isOptionalCallExpression(node) || core.types.isNewExpression(node)) {
+    return needsWrapping(node.callee) || node.arguments.some(needsWrapping);
+  }
+  if (core.types.isTemplateLiteral(node)) {
+    return node.expressions.some(needsWrapping);
+  }
+  if (core.types.isTaggedTemplateExpression(node)) {
+    return needsWrapping(node.tag) || needsWrapping(node.quasi);
+  }
+  if (core.types.isArrayExpression(node)) {
+    return node.elements.some(needsWrapping);
+  }
+  if (core.types.isObjectExpression(node)) {
+    return node.properties.some(prop => {
+      if (core.types.isObjectProperty(prop)) {
+        return needsWrapping(prop.value) || prop.computed && needsWrapping(prop.key);
+      }
+      if (core.types.isObjectMethod(prop)) {
+        return false;
+      }
+      return false;
+    });
+  }
+  if (core.types.isMemberExpression(node) || core.types.isOptionalMemberExpression(node)) {
+    return needsWrapping(node.object) || node.computed && needsWrapping(node.property);
+  }
+  if (core.types.isFunctionExpression(node) || core.types.isArrowFunctionExpression(node) || core.types.isClassExpression(node)) {
+    return false;
+  }
+  if (core.types.isThisExpression(node)) {
+    return false;
+  }
+  if (core.types.isSequenceExpression(node)) {
+    return node.expressions.some(needsWrapping);
+  }
+  return true;
+}
+function wrapInitializer(path) {
+  const {
+    value
+  } = path.node;
+  if (value && needsWrapping(value)) {
+    path.node.value = core.types.callExpression(core.types.arrowFunctionExpression([], value), []);
+  }
+}
+var index = helperPluginUtils.declare(api => {
+  api.assertVersion("^7.16.0");
+  return {
+    name: "plugin-bugfix-safari-class-field-initializer-scope",
+    visitor: {
+      ClassProperty(path) {
+        wrapInitializer(path);
+      },
+      ClassPrivateProperty(path) {
+        wrapInitializer(path);
+      }
+    }
+  };
+});
+
+exports.default = index;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/core\";\n\nfunction needsWrapping(node: t.Node): boolean {\n  if (t.isLiteral(node) && !t.isTemplateLiteral(node)) {\n    return false;\n  }\n\n  if (\n    t.isCallExpression(node) ||\n    t.isOptionalCallExpression(node) ||\n    t.isNewExpression(node)\n  ) {\n    return needsWrapping(node.callee) || node.arguments.some(needsWrapping);\n  }\n\n  if (t.isTemplateLiteral(node)) {\n    return node.expressions.some(needsWrapping);\n  }\n\n  if (t.isTaggedTemplateExpression(node)) {\n    return needsWrapping(node.tag) || needsWrapping(node.quasi);\n  }\n\n  if (t.isArrayExpression(node)) {\n    return node.elements.some(needsWrapping);\n  }\n\n  if (t.isObjectExpression(node)) {\n    return node.properties.some(prop => {\n      if (t.isObjectProperty(prop)) {\n        return (\n          needsWrapping(prop.value) ||\n          (prop.computed && needsWrapping(prop.key))\n        );\n      }\n      if (t.isObjectMethod(prop)) {\n        return false;\n      }\n      return false;\n    });\n  }\n\n  if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {\n    return (\n      needsWrapping(node.object) ||\n      (node.computed && needsWrapping(node.property))\n    );\n  }\n\n  if (\n    t.isFunctionExpression(node) ||\n    t.isArrowFunctionExpression(node) ||\n    t.isClassExpression(node)\n  ) {\n    return false;\n  }\n\n  if (t.isThisExpression(node)) {\n    return false;\n  }\n\n  if (t.isSequenceExpression(node)) {\n    return node.expressions.some(needsWrapping);\n  }\n\n  // Is an identifier, or anything else not covered above\n  return true;\n}\n\nfunction wrapInitializer(\n  path: NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n) {\n  const { value } = path.node;\n\n  if (value && needsWrapping(value)) {\n    path.node.value = t.callExpression(\n      t.arrowFunctionExpression([], value),\n      [],\n    );\n  }\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.16.0\"));\n\n  return {\n    name: \"plugin-bugfix-safari-class-field-initializer-scope\",\n\n    visitor: {\n      ClassProperty(path) {\n        wrapInitializer(path);\n      },\n      ClassPrivateProperty(path) {\n        wrapInitializer(path);\n      },\n    },\n  };\n});\n"],"names":["needsWrapping","node","t","isLiteral","isTemplateLiteral","isCallExpression","isOptionalCallExpression","isNewExpression","callee","arguments","some","expressions","isTaggedTemplateExpression","tag","quasi","isArrayExpression","elements","isObjectExpression","properties","prop","isObjectProperty","value","computed","key","isObjectMethod","isMemberExpression","isOptionalMemberExpression","object","property","isFunctionExpression","isArrowFunctionExpression","isClassExpression","isThisExpression","isSequenceExpression","wrapInitializer","path","callExpression","arrowFunctionExpression","declare","api","assertVersion","name","visitor","ClassProperty","ClassPrivateProperty"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,43 @@
+{
+  "name": "@babel/plugin-bugfix-safari-class-field-initializer-scope",
+  "version": "7.25.9",
+  "description": "Wrap class field initializers with IIFE to workaround https://webkit.org/b/236843",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-bugfix-safari-class-field-initializer-scope"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-safari-class-field-initializer-scope",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "keywords": [
+    "babel-plugin",
+    "bugfix"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression
+
+> Rename destructuring parameter to workaround https://bugs.webkit.org/show_bug.cgi?id=220517
+
+See our website [@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression](https://babeljs.io/docs/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,47 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+
+function shouldTransform(path) {
+  const {
+    node
+  } = path;
+  const functionId = node.id;
+  if (!functionId) return false;
+  const name = functionId.name;
+  const paramNameBinding = path.scope.getOwnBinding(name);
+  if (paramNameBinding === undefined) {
+    return false;
+  }
+  if (paramNameBinding.kind !== "param") {
+    return false;
+  }
+  if (paramNameBinding.identifier === paramNameBinding.path.node) {
+    return false;
+  }
+  return name;
+}
+
+var index = helperPluginUtils.declare(api => {
+  api.assertVersion("^7.16.0");
+  return {
+    name: "plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
+    visitor: {
+      FunctionExpression(path) {
+        const name = shouldTransform(path);
+        if (name) {
+          const {
+            scope
+          } = path;
+          const newParamName = scope.generateUid(name);
+          scope.rename(name, newParamName);
+        }
+      }
+    }
+  };
+});
+
+exports.default = index;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import type { NodePath, types as t } from \"@babel/core\";\n\n/**\n * Check whether a function expression can be affected by\n * https://bugs.webkit.org/show_bug.cgi?id=220517\n * @param path The function expression NodePath\n * @returns the name of function id if it should be transformed, otherwise returns false\n */\nexport function shouldTransform(\n  path: NodePath<t.FunctionExpression>,\n): string | false {\n  const { node } = path;\n  const functionId = node.id;\n  if (!functionId) return false;\n\n  const name = functionId.name;\n  // On collision, `getOwnBinding` returns the param binding\n  // with the id binding be registered as constant violation\n  const paramNameBinding = path.scope.getOwnBinding(name);\n  if (paramNameBinding === undefined) {\n    // Case 1: the function id is injected by babel-helper-name-function, which\n    // assigns `NOT_LOCAL_BINDING` to the `functionId` and thus not registering id\n    // in scope tracking\n    // Case 2: the function id is injected by a third party plugin which does not update the\n    // scope info\n    return false;\n  }\n  if (paramNameBinding.kind !== \"param\") {\n    // the function id does not reproduce in params\n    return false;\n  }\n\n  if (paramNameBinding.identifier === paramNameBinding.path.node) {\n    // the param binding is a simple parameter\n    // e.g. (function a(a) {})\n    return false;\n  }\n\n  return name;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { shouldTransform } from \"./util.ts\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.16.0\"));\n\n  return {\n    name: \"plugin-bugfix-safari-id-destructuring-collision-in-function-expression\",\n\n    visitor: {\n      FunctionExpression(path) {\n        const name = shouldTransform(path);\n        if (name) {\n          // Now we have (function a([a]) {})\n          const { scope } = path;\n          // invariant: path.node.id is always an Identifier here\n          const newParamName = scope.generateUid(name);\n          scope.rename(name, newParamName);\n        }\n      },\n    },\n  };\n});\n"],"names":["shouldTransform","path","node","functionId","id","name","paramNameBinding","scope","getOwnBinding","undefined","kind","identifier","declare","api","assertVersion","visitor","FunctionExpression","newParamName","generateUid","rename"],"mappings":";;;;;;AAQO,SAASA,eAAeA,CAC7BC,IAAoC,EACpB;EAChB,MAAM;AAAEC,IAAAA,IAAAA;AAAK,GAAC,GAAGD,IAAI,CAAA;AACrB,EAAA,MAAME,UAAU,GAAGD,IAAI,CAACE,EAAE,CAAA;AAC1B,EAAA,IAAI,CAACD,UAAU,EAAE,OAAO,KAAK,CAAA;AAE7B,EAAA,MAAME,IAAI,GAAGF,UAAU,CAACE,IAAI,CAAA;EAG5B,MAAMC,gBAAgB,GAAGL,IAAI,CAACM,KAAK,CAACC,aAAa,CAACH,IAAI,CAAC,CAAA;EACvD,IAAIC,gBAAgB,KAAKG,SAAS,EAAE;AAMlC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AACA,EAAA,IAAIH,gBAAgB,CAACI,IAAI,KAAK,OAAO,EAAE;AAErC,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;EAEA,IAAIJ,gBAAgB,CAACK,UAAU,KAAKL,gBAAgB,CAACL,IAAI,CAACC,IAAI,EAAE;AAG9D,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,OAAOG,IAAI,CAAA;AACb;;ACpCA,YAAeO,yBAAO,CAACC,GAAG,IAAI;AAC5BA,EAAAA,GAAG,CAACC,aAAa,CAAkB,SAAU,CAAC,CAAA;EAE9C,OAAO;AACLT,IAAAA,IAAI,EAAE,wEAAwE;AAE9EU,IAAAA,OAAO,EAAE;MACPC,kBAAkBA,CAACf,IAAI,EAAE;AACvB,QAAA,MAAMI,IAAI,GAAGL,eAAe,CAACC,IAAI,CAAC,CAAA;AAClC,QAAA,IAAII,IAAI,EAAE;UAER,MAAM;AAAEE,YAAAA,KAAAA;AAAM,WAAC,GAAGN,IAAI,CAAA;AAEtB,UAAA,MAAMgB,YAAY,GAAGV,KAAK,CAACW,WAAW,CAACb,IAAI,CAAC,CAAA;AAC5CE,UAAAA,KAAK,CAACY,MAAM,CAACd,IAAI,EAAEY,YAAY,CAAC,CAAA;AAClC,SAAA;AACF,OAAA;AACF,KAAA;GACD,CAAA;AACH,CAAC,CAAC;;;;"}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,43 @@
+{
+  "name": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
+  "version": "7.25.9",
+  "description": "Rename destructuring parameter to workaround https://bugs.webkit.org/show_bug.cgi?id=220517",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "keywords": [
+    "babel-plugin",
+    "bugfix"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining
+
+> Transform optional chaining operators to workaround https://crbug.com/v8/11558
+
+See our website [@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining](https://babeljs.io/docs/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,66 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+var pluginTransformOptionalChaining = require('@babel/plugin-transform-optional-chaining');
+var helperSkipTransparentExpressionWrappers = require('@babel/helper-skip-transparent-expression-wrappers');
+var core = require('@babel/core');
+
+function matchAffectedArguments(argumentNodes) {
+  const spreadIndex = argumentNodes.findIndex(node => core.types.isSpreadElement(node));
+  return spreadIndex >= 0 && spreadIndex !== argumentNodes.length - 1;
+}
+function shouldTransform(path) {
+  let optionalPath = path;
+  const chains = [];
+  for (;;) {
+    if (optionalPath.isOptionalMemberExpression()) {
+      chains.push(optionalPath.node);
+      optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("object"));
+    } else if (optionalPath.isOptionalCallExpression()) {
+      chains.push(optionalPath.node);
+      optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("callee"));
+    } else {
+      break;
+    }
+  }
+  for (let i = 0; i < chains.length; i++) {
+    const node = chains[i];
+    if (core.types.isOptionalCallExpression(node) && matchAffectedArguments(node.arguments)) {
+      if (node.optional) {
+        return true;
+      }
+      const callee = chains[i + 1];
+      if (core.types.isOptionalMemberExpression(callee, {
+        optional: true
+      })) {
+        return true;
+      }
+    }
+  }
+  return false;
+}
+
+var index = helperPluginUtils.declare(api => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion(7);
+  const noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : false;
+  const pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : false;
+  return {
+    name: "bugfix-v8-spread-parameters-in-optional-chaining",
+    visitor: {
+      "OptionalCallExpression|OptionalMemberExpression"(path) {
+        if (shouldTransform(path)) {
+          pluginTransformOptionalChaining.transform(path, {
+            noDocumentAll,
+            pureGetters
+          });
+        }
+      }
+    }
+  };
+});
+
+exports.default = index;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport { types as t, type NodePath } from \"@babel/core\";\n// https://crbug.com/v8/11558\n\n// check if there is a spread element followed by another argument.\n// (...[], 0) or (...[], ...[])\n\nfunction matchAffectedArguments(argumentNodes: t.CallExpression[\"arguments\"]) {\n  const spreadIndex = argumentNodes.findIndex(node => t.isSpreadElement(node));\n  return spreadIndex >= 0 && spreadIndex !== argumentNodes.length - 1;\n}\n\n/**\n * Check whether the optional chain is affected by https://crbug.com/v8/11558.\n * This routine MUST not manipulate NodePath\n *\n * @export\n * @param {(NodePath<t.OptionalMemberExpression | t.OptionalCallExpression>)} path\n * @returns {boolean}\n */\nexport function shouldTransform(\n  path: NodePath<t.OptionalMemberExpression | t.OptionalCallExpression>,\n): boolean {\n  let optionalPath: NodePath<t.Expression> = path;\n  const chains: (t.OptionalCallExpression | t.OptionalMemberExpression)[] = [];\n  for (;;) {\n    if (optionalPath.isOptionalMemberExpression()) {\n      chains.push(optionalPath.node);\n      optionalPath = skipTransparentExprWrappers(optionalPath.get(\"object\"));\n    } else if (optionalPath.isOptionalCallExpression()) {\n      chains.push(optionalPath.node);\n      optionalPath = skipTransparentExprWrappers(optionalPath.get(\"callee\"));\n    } else {\n      break;\n    }\n  }\n  for (let i = 0; i < chains.length; i++) {\n    const node = chains[i];\n    if (\n      t.isOptionalCallExpression(node) &&\n      matchAffectedArguments(node.arguments)\n    ) {\n      // f?.(...[], 0)\n      if (node.optional) {\n        return true;\n      }\n      // o?.m(...[], 0)\n      // when node.optional is false, chains[i + 1] is always well defined\n      const callee = chains[i + 1];\n      if (t.isOptionalMemberExpression(callee, { optional: true })) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { transform } from \"@babel/plugin-transform-optional-chaining\";\nimport { shouldTransform } from \"./util.ts\";\nimport type { NodePath, types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const noDocumentAll = api.assumption(\"noDocumentAll\") ?? false;\n  const pureGetters = api.assumption(\"pureGetters\") ?? false;\n\n  return {\n    name: \"bugfix-v8-spread-parameters-in-optional-chaining\",\n\n    visitor: {\n      \"OptionalCallExpression|OptionalMemberExpression\"(\n        path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n      ) {\n        if (shouldTransform(path)) {\n          transform(path, { noDocumentAll, pureGetters });\n        }\n      },\n    },\n  };\n});\n"],"names":["matchAffectedArguments","argumentNodes","spreadIndex","findIndex","node","t","isSpreadElement","length","shouldTransform","path","optionalPath","chains","isOptionalMemberExpression","push","skipTransparentExprWrappers","get","isOptionalCallExpression","i","arguments","optional","callee","declare","api","_api$assumption","_api$assumption2","assertVersion","noDocumentAll","assumption","pureGetters","name","visitor","OptionalCallExpression|OptionalMemberExpression","transform"],"mappings":";;;;;;;;;AAOA,SAASA,sBAAsBA,CAACC,aAA4C,EAAE;AAC5E,EAAA,MAAMC,WAAW,GAAGD,aAAa,CAACE,SAAS,CAACC,IAAI,IAAIC,UAAC,CAACC,eAAe,CAACF,IAAI,CAAC,CAAC,CAAA;EAC5E,OAAOF,WAAW,IAAI,CAAC,IAAIA,WAAW,KAAKD,aAAa,CAACM,MAAM,GAAG,CAAC,CAAA;AACrE,CAAA;AAUO,SAASC,eAAeA,CAC7BC,IAAqE,EAC5D;EACT,IAAIC,YAAoC,GAAGD,IAAI,CAAA;EAC/C,MAAME,MAAiE,GAAG,EAAE,CAAA;EAC5E,SAAS;AACP,IAAA,IAAID,YAAY,CAACE,0BAA0B,EAAE,EAAE;AAC7CD,MAAAA,MAAM,CAACE,IAAI,CAACH,YAAY,CAACN,IAAI,CAAC,CAAA;MAC9BM,YAAY,GAAGI,mEAA2B,CAACJ,YAAY,CAACK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,KAAC,MAAM,IAAIL,YAAY,CAACM,wBAAwB,EAAE,EAAE;AAClDL,MAAAA,MAAM,CAACE,IAAI,CAACH,YAAY,CAACN,IAAI,CAAC,CAAA;MAC9BM,YAAY,GAAGI,mEAA2B,CAACJ,YAAY,CAACK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,KAAC,MAAM;AACL,MAAA,MAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,MAAM,CAACJ,MAAM,EAAEU,CAAC,EAAE,EAAE;AACtC,IAAA,MAAMb,IAAI,GAAGO,MAAM,CAACM,CAAC,CAAC,CAAA;AACtB,IAAA,IACEZ,UAAC,CAACW,wBAAwB,CAACZ,IAAI,CAAC,IAChCJ,sBAAsB,CAACI,IAAI,CAACc,SAAS,CAAC,EACtC;MAEA,IAAId,IAAI,CAACe,QAAQ,EAAE;AACjB,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;AAGA,MAAA,MAAMC,MAAM,GAAGT,MAAM,CAACM,CAAC,GAAG,CAAC,CAAC,CAAA;AAC5B,MAAA,IAAIZ,UAAC,CAACO,0BAA0B,CAACQ,MAAM,EAAE;AAAED,QAAAA,QAAQ,EAAE,IAAA;AAAK,OAAC,CAAC,EAAE;AAC5D,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;AACF,KAAA;AACF,GAAA;AACA,EAAA,OAAO,KAAK,CAAA;AACd;;AClDA,YAAeE,yBAAO,CAACC,GAAG,IAAI;EAAA,IAAAC,eAAA,EAAAC,gBAAA,CAAA;AAC5BF,EAAAA,GAAG,CAACG,aAAa,CAAkB,CAAE,CAAC,CAAA;AAEtC,EAAA,MAAMC,aAAa,GAAA,CAAAH,eAAA,GAAGD,GAAG,CAACK,UAAU,CAAC,eAAe,CAAC,KAAAJ,IAAAA,GAAAA,eAAA,GAAI,KAAK,CAAA;AAC9D,EAAA,MAAMK,WAAW,GAAA,CAAAJ,gBAAA,GAAGF,GAAG,CAACK,UAAU,CAAC,aAAa,CAAC,KAAAH,IAAAA,GAAAA,gBAAA,GAAI,KAAK,CAAA;EAE1D,OAAO;AACLK,IAAAA,IAAI,EAAE,kDAAkD;AAExDC,IAAAA,OAAO,EAAE;MACP,iDAAiDC,CAC/CtB,IAAqE,EACrE;AACA,QAAA,IAAID,eAAe,CAACC,IAAI,CAAC,EAAE;UACzBuB,yCAAS,CAACvB,IAAI,EAAE;YAAEiB,aAAa;AAAEE,YAAAA,WAAAA;AAAY,WAAC,CAAC,CAAA;AACjD,SAAA;AACF,OAAA;AACF,KAAA;GACD,CAAA;AACH,CAAC,CAAC;;;;"}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,45 @@
+{
+  "name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+  "version": "7.25.9",
+  "description": "Transform optional chaining operators to workaround https://crbug.com/v8/11558",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "keywords": [
+    "babel-plugin",
+    "bugfix"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+    "@babel/plugin-transform-optional-chaining": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.13.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly
+
+> Transform static class fields assignments that are affected by https://crbug.com/v8/12421
+
+See our website [@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly](https://babeljs.io/docs/babel-plugin-bugfix-v8-static-class-fields-redefine-readonly) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-bugfix-v8-static-class-fields-redefine-readonly --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,175 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var core = require('@babel/core');
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+
+function isNameOrLength(key) {
+  if (core.types.isIdentifier(key)) {
+    return key.name === "name" || key.name === "length";
+  }
+  if (core.types.isStringLiteral(key)) {
+    return key.value === "name" || key.value === "length";
+  }
+  return false;
+}
+function isStaticFieldWithValue(node) {
+  return (core.types.isClassProperty(node) || core.types.isClassPrivateProperty(node)) && node.static && !!node.value;
+}
+const hasReferenceVisitor = {
+  ReferencedIdentifier(path, state) {
+    if (path.node.name === state.name) {
+      state.ref();
+      path.stop();
+    }
+  },
+  Scope(path, {
+    name
+  }) {
+    if (path.scope.hasOwnBinding(name)) {
+      path.skip();
+    }
+  }
+};
+function isReferenceOrThis(node, name) {
+  return core.types.isThisExpression(node) || name && core.types.isIdentifier(node, {
+    name
+  });
+}
+const hasReferenceOrThisVisitor = {
+  "ThisExpression|ReferencedIdentifier"(path, state) {
+    if (isReferenceOrThis(path.node, state.name)) {
+      state.ref();
+      path.stop();
+    }
+  },
+  FunctionParent(path, state) {
+    if (path.isArrowFunctionExpression()) return;
+    if (state.name && !path.scope.hasOwnBinding(state.name)) {
+      path.traverse(hasReferenceVisitor, state);
+    }
+    path.skip();
+    if (path.isMethod()) {
+      if (path.requeueComputedKeyAndDecorators) {
+        path.requeueComputedKeyAndDecorators();
+      } else {
+        require("@babel/traverse").NodePath.prototype.requeueComputedKeyAndDecorators.call(path);
+      }
+    }
+  }
+};
+function getPotentiallyBuggyFieldsIndexes(path) {
+  var _path$node$id;
+  const buggyPublicStaticFieldsIndexes = [];
+  let classReferenced = false;
+  const className = (_path$node$id = path.node.id) == null ? void 0 : _path$node$id.name;
+  const hasReferenceState = {
+    name: className,
+    ref: () => classReferenced = true
+  };
+  if (className) {
+    for (const el of path.get("body.body")) {
+      if (el.node.computed) {
+        el.get("key").traverse(hasReferenceVisitor, hasReferenceState);
+        if (classReferenced) break;
+      }
+    }
+  }
+  let nextPotentiallyBuggy = false;
+  const {
+    body
+  } = path.node.body;
+  for (let i = 0; i < body.length; i++) {
+    const node = body[i];
+    if (!nextPotentiallyBuggy) {
+      if (core.types.isStaticBlock(node)) {
+        classReferenced = true;
+        nextPotentiallyBuggy = true;
+      } else if (isStaticFieldWithValue(node)) {
+        if (!classReferenced) {
+          if (isReferenceOrThis(node.value, className)) {
+            classReferenced = true;
+          } else {
+            path.get(`body.body.${i}.value`).traverse(hasReferenceOrThisVisitor, hasReferenceState);
+          }
+        }
+        if (classReferenced) {
+          nextPotentiallyBuggy = !path.scope.isPure(node.value);
+        }
+      }
+    }
+    if (core.types.isClassProperty(node, {
+      static: true
+    }) && (nextPotentiallyBuggy || node.computed || isNameOrLength(node.key))) {
+      buggyPublicStaticFieldsIndexes.push(i);
+    }
+  }
+  return buggyPublicStaticFieldsIndexes;
+}
+function getNameOrLengthStaticFieldsIndexes(path) {
+  const indexes = [];
+  const {
+    body
+  } = path.node.body;
+  for (let i = 0; i < body.length; i++) {
+    const node = body[i];
+    if (core.types.isClassProperty(node, {
+      static: true,
+      computed: false
+    }) && isNameOrLength(node.key)) {
+      indexes.push(i);
+    }
+  }
+  return indexes;
+}
+function toRanges(nums) {
+  const ranges = [];
+  if (nums.length === 0) return ranges;
+  let start = nums[0];
+  let end = start + 1;
+  for (let i = 1; i < nums.length; i++) {
+    if (nums[i] <= nums[i - 1]) {
+      throw new Error("Internal Babel error: nums must be in ascending order");
+    }
+    if (nums[i] === end) {
+      end++;
+    } else {
+      ranges.push([start, end]);
+      start = nums[i];
+      end = start + 1;
+    }
+  }
+  ranges.push([start, end]);
+  return ranges;
+}
+
+function buildFieldsReplacement(fields, scope, file) {
+  return core.types.staticBlock(fields.map(field => {
+    const key = field.computed || !core.types.isIdentifier(field.key) ? field.key : core.types.stringLiteral(field.key.name);
+    return core.types.expressionStatement(core.types.callExpression(file.addHelper("defineProperty"), [core.types.thisExpression(), key, field.value || scope.buildUndefinedNode()]));
+  }));
+}
+var index = helperPluginUtils.declare(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const setPublicClassFields = api.assumption("setPublicClassFields");
+  return {
+    name: "bugfix-v8-static-class-fields-redefine-readonly",
+    visitor: {
+      Class(path) {
+        const ranges = toRanges(setPublicClassFields ? getNameOrLengthStaticFieldsIndexes(path) : getPotentiallyBuggyFieldsIndexes(path));
+        for (let i = ranges.length - 1; i >= 0; i--) {
+          const [start, end] = ranges[i];
+          const startPath = path.get("body.body")[start];
+          startPath.replaceWith(buildFieldsReplacement(path.node.body.body.slice(start, end), path.scope, this.file));
+          for (let j = end - 1; j > start; j--) {
+            path.get("body.body")[j].remove();
+          }
+        }
+      }
+    }
+  };
+});
+
+exports.default = index;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import { types as t, type NodePath, type Visitor } from \"@babel/core\";\n\nfunction isNameOrLength(key: t.Node): boolean {\n  if (t.isIdentifier(key)) {\n    return key.name === \"name\" || key.name === \"length\";\n  }\n  if (t.isStringLiteral(key)) {\n    return key.value === \"name\" || key.value === \"length\";\n  }\n  return false;\n}\n\nfunction isStaticFieldWithValue(\n  node: t.Node,\n): node is t.ClassProperty | t.ClassPrivateProperty {\n  return (\n    (t.isClassProperty(node) || t.isClassPrivateProperty(node)) &&\n    node.static &&\n    !!node.value\n  );\n}\n\nconst hasReferenceVisitor: Visitor<{ name: string; ref: () => void }> = {\n  ReferencedIdentifier(path, state) {\n    if (path.node.name === state.name) {\n      state.ref();\n      path.stop();\n    }\n  },\n  Scope(path, { name }) {\n    if (path.scope.hasOwnBinding(name)) {\n      path.skip();\n    }\n  },\n};\n\nfunction isReferenceOrThis(node: t.Node, name?: string) {\n  return t.isThisExpression(node) || (name && t.isIdentifier(node, { name }));\n}\n\nconst hasReferenceOrThisVisitor: Visitor<{ name?: string; ref: () => void }> = {\n  \"ThisExpression|ReferencedIdentifier\"(path, state) {\n    if (isReferenceOrThis(path.node, state.name)) {\n      state.ref();\n      path.stop();\n    }\n  },\n  FunctionParent(path, state) {\n    if (path.isArrowFunctionExpression()) return;\n    if (state.name && !path.scope.hasOwnBinding(state.name)) {\n      path.traverse(hasReferenceVisitor, state);\n    }\n    path.skip();\n    if (path.isMethod()) {\n      if (\n        process.env.BABEL_8_BREAKING ||\n        USE_ESM ||\n        IS_STANDALONE ||\n        path.requeueComputedKeyAndDecorators\n      ) {\n        path.requeueComputedKeyAndDecorators();\n      } else {\n        // eslint-disable-next-line no-restricted-globals\n        require(\"@babel/traverse\").NodePath.prototype.requeueComputedKeyAndDecorators.call(\n          path,\n        );\n      }\n    }\n  },\n};\n\ntype ClassElementWithComputedKeySupport = Extract<\n  t.ClassBody[\"body\"][number],\n  { computed?: boolean }\n>;\n\n/**\n * This function returns an array containing the indexes of class elements\n * that might be affected by https://crbug.com/v8/12421 bug.\n *\n * This bug affects public static class fields that have the same name as an\n * existing non-writable property with the same name. This usually happens when\n * the static field is named 'length' or 'name', since it clashes with the\n * predefined fn.length and fn.name properties. We must also compile static\n * fields with computed key, because they might end up being named 'length' or\n * 'name'.\n *\n * However, this bug can potentially affect public static fields with any name.\n * Consider this example:\n *\n *     class A {\n *       static {\n *         Object.defineProperty(A, \"readonly\", {\n *           value: 1,\n *           writable: false,\n *           configurable: true\n *         })\n *       }\n *\n *       static readonly = 2;\n *     }\n *\n * When initializing the 'static readonly' field, the class already has a\n * non-writable property named 'readonly' and thus V8 9.7 incorrectly throws.\n *\n * To avoid unconditionally compiling every public static field, we track how\n * the class is referenced during definition & static evaluation: any side\n * effect after a reference to the class can potentially define a non-writable\n * conficting property, so subsequent public static fields must be compiled.\n * The class could be referenced using the class name in computed keys, which\n * run before static fields, or using either the class name or 'this' in static\n * fields (both public and private) and static blocks.\n *\n * We don't need to check if computed keys referencing the class have any side\n * effect, because during the computed keys evaluation the internal class\n * binding is in TDZ. However, the first side effect in a static field/block\n * could have access to a function defined in a computed key that modifies the\n * class.\n *\n * This logic is already quite complex, so we assume that static blocks always\n * have side effects and reference the class (the reason to use them is to\n * perform additional initialization logic on the class anyway), so that we do\n * not have to check their contents.\n */\nexport function getPotentiallyBuggyFieldsIndexes(path: NodePath<t.Class>) {\n  const buggyPublicStaticFieldsIndexes: number[] = [];\n\n  let classReferenced = false;\n  const className = path.node.id?.name;\n\n  const hasReferenceState = {\n    name: className,\n    ref: () => (classReferenced = true),\n  };\n\n  if (className) {\n    for (const el of path.get(\"body.body\")) {\n      if ((el.node as ClassElementWithComputedKeySupport).computed) {\n        // Since .traverse skips the top-level node, it doesn't detect\n        // a reference happening immediately:\n        //     class A { [A]() {} }\n        // However, it's a TDZ error so it's ok not to consider this case.\n        (el as NodePath<ClassElementWithComputedKeySupport>)\n          .get(\"key\")\n          .traverse(hasReferenceVisitor, hasReferenceState);\n\n        if (classReferenced) break;\n      }\n    }\n  }\n\n  let nextPotentiallyBuggy = false;\n\n  const { body } = path.node.body;\n  for (let i = 0; i < body.length; i++) {\n    const node = body[i];\n\n    if (!nextPotentiallyBuggy) {\n      if (t.isStaticBlock(node)) {\n        classReferenced = true;\n        nextPotentiallyBuggy = true;\n      } else if (isStaticFieldWithValue(node)) {\n        if (!classReferenced) {\n          if (isReferenceOrThis(node.value, className)) {\n            classReferenced = true;\n          } else {\n            (\n              path.get(`body.body.${i}.value`) as NodePath<t.Expression>\n            ).traverse(hasReferenceOrThisVisitor, hasReferenceState);\n          }\n        }\n\n        if (classReferenced) {\n          nextPotentiallyBuggy = !path.scope.isPure(node.value);\n        }\n      }\n    }\n\n    if (\n      t.isClassProperty(node, { static: true }) &&\n      (nextPotentiallyBuggy || node.computed || isNameOrLength(node.key))\n    ) {\n      buggyPublicStaticFieldsIndexes.push(i);\n    }\n  }\n\n  return buggyPublicStaticFieldsIndexes;\n}\n\nexport function getNameOrLengthStaticFieldsIndexes(path: NodePath<t.Class>) {\n  const indexes: number[] = [];\n\n  const { body } = path.node.body;\n  for (let i = 0; i < body.length; i++) {\n    const node = body[i];\n    if (\n      t.isClassProperty(node, { static: true, computed: false }) &&\n      isNameOrLength(node.key)\n    ) {\n      indexes.push(i);\n    }\n  }\n\n  return indexes;\n}\n\ntype Range = [start: number, end: number];\n\n/**\n * Converts a sorted list of numbers into a list of (inclusive-exclusive)\n * ranges representing the same numbers.\n *\n * @example toRanges([1, 3, 4, 5, 8, 9]) -> [[1, 2], [3, 6], [8, 10]]\n */\nexport function toRanges(nums: number[]): Range[] {\n  const ranges: Range[] = [];\n\n  if (nums.length === 0) return ranges;\n\n  let start = nums[0];\n  let end = start + 1;\n  for (let i = 1; i < nums.length; i++) {\n    if (nums[i] <= nums[i - 1]) {\n      throw new Error(\"Internal Babel error: nums must be in ascending order\");\n    }\n    if (nums[i] === end) {\n      end++;\n    } else {\n      ranges.push([start, end]);\n      start = nums[i];\n      end = start + 1;\n    }\n  }\n  ranges.push([start, end]);\n\n  return ranges;\n}\n","import type { NodePath, Scope, PluginPass, File } from \"@babel/core\";\nimport { types as t } from \"@babel/core\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nimport {\n  getPotentiallyBuggyFieldsIndexes,\n  getNameOrLengthStaticFieldsIndexes,\n  toRanges,\n} from \"./util.ts\";\n\nfunction buildFieldsReplacement(\n  fields: t.ClassProperty[],\n  scope: Scope,\n  file: File,\n) {\n  return t.staticBlock(\n    fields.map(field => {\n      const key =\n        field.computed || !t.isIdentifier(field.key)\n          ? field.key\n          : t.stringLiteral(field.key.name);\n\n      return t.expressionStatement(\n        t.callExpression(file.addHelper(\"defineProperty\"), [\n          t.thisExpression(),\n          key,\n          field.value || scope.buildUndefinedNode(),\n        ]),\n      );\n    }),\n  );\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const setPublicClassFields = api.assumption(\"setPublicClassFields\");\n\n  return {\n    name: \"bugfix-v8-static-class-fields-redefine-readonly\",\n\n    visitor: {\n      Class(this: PluginPass, path: NodePath<t.Class>) {\n        const ranges = toRanges(\n          setPublicClassFields\n            ? getNameOrLengthStaticFieldsIndexes(path)\n            : getPotentiallyBuggyFieldsIndexes(path),\n        );\n\n        for (let i = ranges.length - 1; i >= 0; i--) {\n          const [start, end] = ranges[i];\n\n          const startPath = path.get(\"body.body\")[start];\n\n          startPath.replaceWith(\n            buildFieldsReplacement(\n              path.node.body.body.slice(start, end) as t.ClassProperty[],\n              path.scope,\n              this.file,\n            ),\n          );\n\n          for (let j = end - 1; j > start; j--) {\n            path.get(\"body.body\")[j].remove();\n          }\n        }\n      },\n    },\n  };\n});\n"],"names":["isNameOrLength","key","t","isIdentifier","name","isStringLiteral","value","isStaticFieldWithValue","node","isClassProperty","isClassPrivateProperty","static","hasReferenceVisitor","ReferencedIdentifier","path","state","ref","stop","Scope","scope","hasOwnBinding","skip","isReferenceOrThis","isThisExpression","hasReferenceOrThisVisitor","ThisExpression|ReferencedIdentifier","FunctionParent","isArrowFunctionExpression","traverse","isMethod","requeueComputedKeyAndDecorators","require","NodePath","prototype","call","getPotentiallyBuggyFieldsIndexes","_path$node$id","buggyPublicStaticFieldsIndexes","classReferenced","className","id","hasReferenceState","el","get","computed","nextPotentiallyBuggy","body","i","length","isStaticBlock","isPure","push","getNameOrLengthStaticFieldsIndexes","indexes","toRanges","nums","ranges","start","end","Error","buildFieldsReplacement","fields","file","staticBlock","map","field","stringLiteral","expressionStatement","callExpression","addHelper","thisExpression","buildUndefinedNode","declare","api","assertVersion","setPublicClassFields","assumption","visitor","Class","startPath","replaceWith","slice","j","remove"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,44 @@
+{
+  "name": "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly",
+  "version": "7.25.9",
+  "description": "Transform static class fields assignments that are affected by https://crbug.com/v8/12421",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-bugfix-v8-static-class-fields-redefine-readonly"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-v8-static-class-fields-redefine-readonly",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "keywords": [
+    "babel-plugin",
+    "bugfix"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+# @babel/plugin-proposal-private-property-in-object
+
+> ⚠️ This version of the package (`v7.21.0-placeholder-for-preset-env.1`) is not meant to
+> be imported. Use any other version of this plugin or, even better, the
+> [@babel/plugin-transform-private-property-in-object](https://babeljs.io/docs/en/babel-plugin-transform-private-property-in-object) package.
+
+> This plugin transforms checks for a private property in an object
+
+See our website [@babel/plugin-proposal-private-property-in-object](https://babeljs.io/docs/en/babel-plugin-proposal-private-property-in-object) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-proposal-private-property-in-object
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-proposal-private-property-in-object --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+maybeWarn: try {
+  var stackTraceLimit = Error.stackTraceLimit;
+  Error.stackTraceLimit = Infinity;
+  var stack = new Error().stack;
+  Error.stackTraceLimit = stackTraceLimit;
+  if (!stack.includes("babel-preset-react-app")) break maybeWarn;
+
+  // Try this as a fallback, in case it's available in node_modules
+  module.exports = require("@babel/plugin-transform-private-property-in-object");
+
+  setTimeout(console.warn, 2500, `\
+\x1B[0;33mOne of your dependencies, babel-preset-react-app, is importing the
+"@babel/plugin-proposal-private-property-in-object" package without
+declaring it in its dependencies. This is currently working because
+"@babel/plugin-proposal-private-property-in-object" is already in your
+node_modules folder for unrelated reasons, but it \x1B[1mmay break at any time\x1B[0;33m.
+
+babel-preset-react-app is part of the create-react-app project, \x1B[1mwhich
+is not maintianed anymore\x1B[0;33m. It is thus unlikely that this bug will
+ever be fixed. Add "@babel/plugin-proposal-private-property-in-object" to
+your devDependencies to work around this error. This will make this message
+go away.\x1B[0m
+  `);
+
+  return;
+} catch (e) {}
+
+throw new Error(`\
+--- PLACEHOLDER PACKAGE ---
+This @babel/plugin-proposal-private-property-in-object version is not meant to
+be imported. Something is importing
+@babel/plugin-proposal-private-property-in-object without declaring it in its
+dependencies (or devDependencies) in the package.json file.
+Add "@babel/plugin-proposal-private-property-in-object" to your devDependencies
+to work around this error. This will make this message go away.
+`);
Index: imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["declare","api","opt","assertVersion","types","t","template","loose","classWeakSets","WeakMap","fieldsWeakSets","unshadow","name","targetScope","scope","hasOwnBinding","rename","parent","injectToFieldInit","fieldPath","expr","before","node","value","get","insertBefore","insertAfter","set","unaryExpression","injectInitialization","classPath","init","firstFieldPath","constructorPath","el","isClassProperty","isClassPrivateProperty","static","isClassMethod","kind","injectConstructorInit","expressionStatement","getWeakSetId","weakSets","outerClass","reference","inject","id","generateUidIdentifier","expression","ast","cloneNode","newExpr","newExpression","identifier","annotateAsPure","inherits","syntaxPlugin","default","pre","enableFeature","file","FEATURES","privateIn","visitor","BinaryExpression","path","state","operator","isPrivateName","left","privateElement","findParent","isClass","find","isPrivate","key","parentPath","isPattern","replaceWith","type","buildCheckInRHS","right"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxPlugin from \"@babel/plugin-syntax-private-property-in-object\";\nimport {\n  enableFeature,\n  FEATURES,\n  injectInitialization as injectConstructorInit,\n  buildCheckInRHS,\n} from \"@babel/helper-create-class-features-plugin\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport type * as t from \"@babel/types\";\nimport type { NodePath, Scope } from \"@babel/traverse\";\n\nexport interface Options {\n  loose?: boolean;\n}\nexport default declare((api, opt: Options) => {\n  api.assertVersion(7);\n  const { types: t, template } = api;\n  const { loose } = opt;\n\n  // NOTE: When using the class fields or private methods plugins,\n  // they will also take care of '#priv in obj' checks when visiting\n  // the ClassExpression or ClassDeclaration nodes.\n  // The visitor of this plugin is only effective when not compiling\n  // private fields and methods.\n\n  const classWeakSets: WeakMap<t.Class, t.Identifier> = new WeakMap();\n  const fieldsWeakSets: WeakMap<\n    t.ClassPrivateProperty | t.ClassPrivateMethod,\n    t.Identifier\n  > = new WeakMap();\n\n  function unshadow(name: string, targetScope: Scope, scope: Scope) {\n    while (scope !== targetScope) {\n      if (scope.hasOwnBinding(name)) scope.rename(name);\n      scope = scope.parent;\n    }\n  }\n\n  function injectToFieldInit(\n    fieldPath: NodePath<t.ClassPrivateProperty | t.ClassProperty>,\n    expr: t.Expression,\n    before = false,\n  ) {\n    if (fieldPath.node.value) {\n      const value = fieldPath.get(\"value\");\n      if (before) {\n        value.insertBefore(expr);\n      } else {\n        value.insertAfter(expr);\n      }\n    } else {\n      fieldPath.set(\"value\", t.unaryExpression(\"void\", expr));\n    }\n  }\n\n  function injectInitialization(\n    classPath: NodePath<t.Class>,\n    init: t.Expression,\n  ) {\n    let firstFieldPath;\n    let constructorPath;\n\n    for (const el of classPath.get(\"body.body\")) {\n      if (\n        (el.isClassProperty() || el.isClassPrivateProperty()) &&\n        !el.node.static\n      ) {\n        firstFieldPath = el;\n        break;\n      }\n      if (!constructorPath && el.isClassMethod({ kind: \"constructor\" })) {\n        constructorPath = el;\n      }\n    }\n\n    if (firstFieldPath) {\n      injectToFieldInit(firstFieldPath, init, true);\n    } else {\n      injectConstructorInit(classPath, constructorPath, [\n        t.expressionStatement(init),\n      ]);\n    }\n  }\n\n  function getWeakSetId<Ref extends t.Node>(\n    weakSets: WeakMap<Ref, t.Identifier>,\n    outerClass: NodePath<t.Class>,\n    reference: NodePath<Ref>,\n    name = \"\",\n    inject: (\n      reference: NodePath<Ref>,\n      expression: t.Expression,\n      before?: boolean,\n    ) => void,\n  ) {\n    let id = weakSets.get(reference.node);\n\n    if (!id) {\n      id = outerClass.scope.generateUidIdentifier(`${name || \"\"} brandCheck`);\n      weakSets.set(reference.node, id);\n\n      inject(reference, template.expression.ast`${t.cloneNode(id)}.add(this)`);\n\n      const newExpr = t.newExpression(t.identifier(\"WeakSet\"), []);\n      annotateAsPure(newExpr);\n\n      outerClass.insertBefore(template.ast`var ${id} = ${newExpr}`);\n    }\n\n    return t.cloneNode(id);\n  }\n\n  return {\n    name: \"proposal-private-property-in-object\",\n    inherits: syntaxPlugin.default,\n    pre() {\n      // Enable this in @babel/helper-create-class-features-plugin, so that it\n      // can be handled by the private fields and methods transform.\n      enableFeature(this.file, FEATURES.privateIn, loose);\n    },\n    visitor: {\n      BinaryExpression(path, state) {\n        const { node } = path;\n        const { file } = state;\n        if (node.operator !== \"in\") return;\n        if (!t.isPrivateName(node.left)) return;\n\n        const { name } = node.left.id;\n\n        let privateElement: NodePath<\n          t.ClassPrivateMethod | t.ClassPrivateProperty\n        >;\n        const outerClass = path.findParent(path => {\n          if (!path.isClass()) return false;\n\n          privateElement = path.get(\"body.body\").find(\n            ({ node }) =>\n              // fixme: Support class accessor property\n              t.isPrivate(node) && node.key.id.name === name,\n          ) as NodePath<t.ClassPrivateMethod | t.ClassPrivateProperty>;\n\n          return !!privateElement;\n        }) as NodePath<t.Class>;\n\n        if (outerClass.parentPath.scope.path.isPattern()) {\n          outerClass.replaceWith(\n            template.ast`(() => ${outerClass.node})()` as t.Statement,\n          );\n          // The injected class will be queued and eventually transformed when visited\n          return;\n        }\n\n        if (privateElement.node.type === \"ClassPrivateMethod\") {\n          if (privateElement.node.static) {\n            if (outerClass.node.id) {\n              unshadow(outerClass.node.id.name, outerClass.scope, path.scope);\n            } else {\n              outerClass.set(\"id\", path.scope.generateUidIdentifier(\"class\"));\n            }\n            path.replaceWith(\n              template.expression.ast`\n                ${t.cloneNode(outerClass.node.id)} === ${buildCheckInRHS(\n                node.right,\n                file,\n              )}\n              `,\n            );\n          } else {\n            const id = getWeakSetId(\n              classWeakSets,\n              outerClass,\n              outerClass,\n              outerClass.node.id?.name,\n              injectInitialization,\n            );\n\n            path.replaceWith(\n              template.expression.ast`${id}.has(${buildCheckInRHS(\n                node.right,\n                file,\n              )})`,\n            );\n          }\n        } else {\n          // Private fields might not all be initialized: see the 'halfConstructed'\n          // example at https://v8.dev/features/private-brand-checks.\n\n          const id = getWeakSetId<t.ClassPrivateProperty>(\n            fieldsWeakSets,\n            outerClass,\n            privateElement as NodePath<t.ClassPrivateProperty>,\n            privateElement.node.key.id.name,\n            injectToFieldInit,\n          );\n\n          path.replaceWith(\n            template.expression.ast`${id}.has(${buildCheckInRHS(\n              node.right,\n              file,\n            )})`,\n          );\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-proposal-private-property-in-object/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,27 @@
+{
+  "name": "@babel/plugin-proposal-private-property-in-object",
+  "version": "7.21.0-placeholder-for-preset-env.2",
+  "description": "This plugin transforms checks for a private property in an object",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel-plugin-proposal-private-property-in-object.git"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-proposal-private-property-in-object",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {},
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-syntax-import-assertions
+
+> Allow parsing of the module assertion attributes in the import statement
+
+See our website [@babel/plugin-syntax-import-assertions](https://babeljs.io/docs/babel-plugin-syntax-import-assertions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-syntax-import-assertions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-syntax-import-assertions --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  const isPlugin = (plugin, name) => name === "plugin" || Array.isArray(plugin) && plugin[0] === "plugin";
+  const options = plugin => Array.isArray(plugin) && plugin.length > 1 ? plugin[1] : {};
+  return {
+    name: "syntax-import-assertions",
+    manipulateOptions(opts, {
+      plugins
+    }) {
+      for (let i = 0; i < plugins.length; i++) {
+        const plugin = plugins[i];
+        if (isPlugin(plugin, "deprecatedImportAssert")) return;
+        if (isPlugin(plugin, "importAttributes")) {
+          plugins.splice(i, 1, "deprecatedImportAssert", ["importAttributes", Object.assign({}, options(plugin), {
+            deprecatedAssertSyntax: true
+          })]);
+          return;
+        }
+      }
+      plugins.push("importAssertions");
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","assertVersion","isPlugin","plugin","name","Array","isArray","options","length","manipulateOptions","opts","plugins","i","splice","Object","assign","deprecatedAssertSyntax","push"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const isPlugin = (plugin: string | [string, object], name: string) =>\n    name === \"plugin\" || (Array.isArray(plugin) && plugin[0] === \"plugin\");\n  const options = (plugin: string | [string, object]) =>\n    Array.isArray(plugin) && plugin.length > 1 ? plugin[1] : {};\n\n  return {\n    name: \"syntax-import-assertions\",\n\n    manipulateOptions(opts, { plugins }) {\n      for (let i = 0; i < plugins.length; i++) {\n        const plugin = plugins[i];\n\n        if (isPlugin(plugin, \"deprecatedImportAssert\")) return;\n\n        if (isPlugin(plugin, \"importAttributes\")) {\n          plugins.splice(i, 1, \"deprecatedImportAssert\", [\n            \"importAttributes\",\n            { ...options(plugin), deprecatedAssertSyntax: true },\n          ]);\n          return;\n        }\n      }\n\n      plugins.push(\"importAssertions\");\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,MAAMC,QAAQ,GAAGA,CAACC,MAAiC,EAAEC,IAAY,KAC/DA,IAAI,KAAK,QAAQ,IAAKC,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,QAAS;EACxE,MAAMI,OAAO,GAAIJ,MAAiC,IAChDE,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,IAAIA,MAAM,CAACK,MAAM,GAAG,CAAC,GAAGL,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAE7D,OAAO;IACLC,IAAI,EAAE,0BAA0B;IAEhCK,iBAAiBA,CAACC,IAAI,EAAE;MAAEC;IAAQ,CAAC,EAAE;MACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,OAAO,CAACH,MAAM,EAAEI,CAAC,EAAE,EAAE;QACvC,MAAMT,MAAM,GAAGQ,OAAO,CAACC,CAAC,CAAC;QAEzB,IAAIV,QAAQ,CAACC,MAAM,EAAE,wBAAwB,CAAC,EAAE;QAEhD,IAAID,QAAQ,CAACC,MAAM,EAAE,kBAAkB,CAAC,EAAE;UACxCQ,OAAO,CAACE,MAAM,CAACD,CAAC,EAAE,CAAC,EAAE,wBAAwB,EAAE,CAC7C,kBAAkB,EAAAE,MAAA,CAAAC,MAAA,KACbR,OAAO,CAACJ,MAAM,CAAC;YAAEa,sBAAsB,EAAE;UAAI,GACnD,CAAC;UACF;QACF;MACF;MAEAL,OAAO,CAACM,IAAI,CAAC,kBAAkB,CAAC;IAClC;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-assertions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,32 @@
+{
+  "name": "@babel/plugin-syntax-import-assertions",
+  "version": "7.26.0",
+  "description": "Allow parsing of the module assertion attributes in the import statement",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-import-assertions"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-syntax-import-attributes
+
+> Allow parsing of the module attributes in the import statement
+
+See our website [@babel/plugin-syntax-import-attributes](https://babeljs.io/docs/babel-plugin-syntax-import-attributes) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-syntax-import-attributes
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-syntax-import-attributes --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,39 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, {
+  deprecatedAssertSyntax
+}) => {
+  api.assertVersion("^7.22.0 || >8.0.0-alpha <8.0.0-beta");
+  if (deprecatedAssertSyntax != null && typeof deprecatedAssertSyntax !== "boolean") {
+    throw new Error("'deprecatedAssertSyntax' must be a boolean, if specified.");
+  }
+  return {
+    name: "syntax-import-attributes",
+    manipulateOptions({
+      parserOpts,
+      generatorOpts
+    }) {
+      var _generatorOpts$import;
+      (_generatorOpts$import = generatorOpts.importAttributesKeyword) != null ? _generatorOpts$import : generatorOpts.importAttributesKeyword = "with";
+      const importAssertionsPluginIndex = parserOpts.plugins.indexOf("importAssertions");
+      if (importAssertionsPluginIndex !== -1) {
+        parserOpts.plugins.splice(importAssertionsPluginIndex, 1);
+        deprecatedAssertSyntax = true;
+      }
+      if (deprecatedAssertSyntax) {
+        parserOpts.plugins.push("deprecatedImportAssert", ["importAttributes", {
+          deprecatedAssertSyntax: true
+        }]);
+      } else {
+        parserOpts.plugins.push("importAttributes");
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","deprecatedAssertSyntax","assertVersion","Error","name","manipulateOptions","parserOpts","generatorOpts","_generatorOpts$import","importAttributesKeyword","importAssertionsPluginIndex","plugins","indexOf","splice","push"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  deprecatedAssertSyntax?: boolean;\n}\n\nexport default declare((api, { deprecatedAssertSyntax }: Options) => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.22.0\"));\n\n  if (\n    deprecatedAssertSyntax != null &&\n    typeof deprecatedAssertSyntax !== \"boolean\"\n  ) {\n    throw new Error(\n      \"'deprecatedAssertSyntax' must be a boolean, if specified.\",\n    );\n  }\n\n  return {\n    name: \"syntax-import-attributes\",\n\n    manipulateOptions({ parserOpts, generatorOpts }) {\n      generatorOpts.importAttributesKeyword ??= \"with\";\n\n      const importAssertionsPluginIndex =\n        parserOpts.plugins.indexOf(\"importAssertions\");\n      if (importAssertionsPluginIndex !== -1) {\n        parserOpts.plugins.splice(importAssertionsPluginIndex, 1);\n        deprecatedAssertSyntax = true;\n      }\n\n      if (deprecatedAssertSyntax) {\n        parserOpts.plugins.push(\"deprecatedImportAssert\", [\n          \"importAttributes\",\n          { deprecatedAssertSyntax: true },\n        ]);\n      } else {\n        parserOpts.plugins.push(\"importAttributes\");\n      }\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMtC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAE;EAAEC;AAAgC,CAAC,KAAK;EACnED,GAAG,CAACE,aAAa,sCAA4B,CAAC;EAE9C,IACED,sBAAsB,IAAI,IAAI,IAC9B,OAAOA,sBAAsB,KAAK,SAAS,EAC3C;IACA,MAAM,IAAIE,KAAK,CACb,2DACF,CAAC;EACH;EAEA,OAAO;IACLC,IAAI,EAAE,0BAA0B;IAEhCC,iBAAiBA,CAAC;MAAEC,UAAU;MAAEC;IAAc,CAAC,EAAE;MAAA,IAAAC,qBAAA;MAC/C,CAAAA,qBAAA,GAAAD,aAAa,CAACE,uBAAuB,YAAAD,qBAAA,GAArCD,aAAa,CAACE,uBAAuB,GAAK,MAAM;MAEhD,MAAMC,2BAA2B,GAC/BJ,UAAU,CAACK,OAAO,CAACC,OAAO,CAAC,kBAAkB,CAAC;MAChD,IAAIF,2BAA2B,KAAK,CAAC,CAAC,EAAE;QACtCJ,UAAU,CAACK,OAAO,CAACE,MAAM,CAACH,2BAA2B,EAAE,CAAC,CAAC;QACzDT,sBAAsB,GAAG,IAAI;MAC/B;MAEA,IAAIA,sBAAsB,EAAE;QAC1BK,UAAU,CAACK,OAAO,CAACG,IAAI,CAAC,wBAAwB,EAAE,CAChD,kBAAkB,EAClB;UAAEb,sBAAsB,EAAE;QAAK,CAAC,CACjC,CAAC;MACJ,CAAC,MAAM;QACLK,UAAU,CAACK,OAAO,CAACG,IAAI,CAAC,kBAAkB,CAAC;MAC7C;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-import-attributes/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,40 @@
+{
+  "name": "@babel/plugin-syntax-import-attributes",
+  "version": "7.26.0",
+  "description": "Allow parsing of the module attributes in the import statement",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-import-attributes"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-jsx/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-jsx/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-jsx/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-syntax-jsx/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-jsx/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-jsx/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-syntax-jsx
+
+> Allow parsing of jsx
+
+See our website [@babel/plugin-syntax-jsx](https://babeljs.io/docs/babel-plugin-syntax-jsx) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-syntax-jsx
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-syntax-jsx --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-syntax-jsx/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-jsx/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-jsx/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "syntax-jsx",
+    manipulateOptions(opts, parserOpts) {
+      {
+        if (parserOpts.plugins.some(p => (Array.isArray(p) ? p[0] : p) === "typescript")) {
+          return;
+        }
+      }
+      parserOpts.plugins.push("jsx");
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-syntax-jsx/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-jsx/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-jsx/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","assertVersion","name","manipulateOptions","opts","parserOpts","plugins","some","p","Array","isArray","push"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"syntax-jsx\",\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // If the Typescript plugin already ran, it will have decided whether\n        // or not this is a TSX file.\n        if (\n          parserOpts.plugins.some(\n            p => (Array.isArray(p) ? p[0] : p) === \"typescript\",\n          )\n        ) {\n          return;\n        }\n      }\n\n      parserOpts.plugins.push(\"jsx\");\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,YAAY;IAElBC,iBAAiBA,CAACC,IAAI,EAAEC,UAAU,EAAE;MACC;QAGjC,IACEA,UAAU,CAACC,OAAO,CAACC,IAAI,CACrBC,CAAC,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,MAAM,YACzC,CAAC,EACD;UACA;QACF;MACF;MAEAH,UAAU,CAACC,OAAO,CAACK,IAAI,CAAC,KAAK,CAAC;IAChC;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-jsx/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-jsx/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-jsx/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,33 @@
+{
+  "name": "@babel/plugin-syntax-jsx",
+  "version": "7.25.9",
+  "description": "Allow parsing of jsx",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-jsx"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-jsx",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-syntax-unicode-sets-regex
+
+> Parse regular expressions' unicodeSets (v) flag.
+
+See our website [@babel/plugin-syntax-unicode-sets-regex](https://babeljs.io/docs/en/babel-plugin-syntax-unicode-sets-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-syntax-unicode-sets-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-syntax-unicode-sets-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+
+var _default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "syntax-unicode-sets-regex",
+    feature: "unicodeSetsFlag_syntax",
+
+    manipulateOptions(opts, parserOpts) {
+      parserOpts.plugins.push("regexpUnicodeSets");
+    }
+
+  });
+});
+
+exports.default = _default;
Index: imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-syntax-unicode-sets-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,49 @@
+{
+  "name": "@babel/plugin-syntax-unicode-sets-regex",
+  "version": "7.18.6",
+  "description": "Parse regular expressions' unicodeSets (v) flag.",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-syntax-unicode-sets-regex",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "unicode",
+    "sets",
+    "properties",
+    "property",
+    "string",
+    "strings",
+    "regular expressions"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-syntax-unicode-sets-regex"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+    "@babel/helper-plugin-utils": "^7.18.6"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.18.6",
+    "@babel/helper-plugin-test-runner": "^7.18.6"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "exports": {
+    ".": "./lib/index.js",
+    "./package.json": "./package.json"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-arrow-functions
+
+> Compile ES2015 arrow functions to ES5
+
+See our website [@babel/plugin-transform-arrow-functions](https://babeljs.io/docs/babel-plugin-transform-arrow-functions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-arrow-functions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-arrow-functions --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption;
+  api.assertVersion(7);
+  const noNewArrows = (_api$assumption = api.assumption("noNewArrows")) != null ? _api$assumption : !options.spec;
+  return {
+    name: "transform-arrow-functions",
+    visitor: {
+      ArrowFunctionExpression(path) {
+        if (!path.isArrowFunctionExpression()) return;
+        {
+          path.arrowFunctionToExpression({
+            allowInsertArrow: false,
+            noNewArrows,
+            specCompliant: !noNewArrows
+          });
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","options","_api$assumption","assertVersion","noNewArrows","assumption","spec","name","visitor","ArrowFunctionExpression","path","isArrowFunctionExpression","arrowFunctionToExpression","allowInsertArrow","specCompliant"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  spec?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const noNewArrows = api.assumption(\"noNewArrows\") ?? !options.spec;\n\n  return {\n    name: \"transform-arrow-functions\",\n\n    visitor: {\n      ArrowFunctionExpression(path) {\n        // In some conversion cases, it may have already been converted to a function while this callback\n        // was queued up.\n        if (!path.isArrowFunctionExpression()) return;\n\n        if (process.env.BABEL_8_BREAKING) {\n          path.arrowFunctionToExpression({\n            // While other utils may be fine inserting other arrows to make more transforms possible,\n            // the arrow transform itself absolutely cannot insert new arrow functions.\n            allowInsertArrow: false,\n            noNewArrows,\n          });\n        } else {\n          path.arrowFunctionToExpression({\n            allowInsertArrow: false,\n            noNewArrows,\n\n            // This is only needed for backward compat with @babel/traverse <7.13.0\n            // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n            specCompliant: !noNewArrows,\n          });\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMtC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAAA,IAAAC,eAAA;EAChDF,GAAG,CAACG,aAAa,CAAkB,CAAE,CAAC;EAEtC,MAAMC,WAAW,IAAAF,eAAA,GAAGF,GAAG,CAACK,UAAU,CAAC,aAAa,CAAC,YAAAH,eAAA,GAAI,CAACD,OAAO,CAACK,IAAI;EAElE,OAAO;IACLC,IAAI,EAAE,2BAA2B;IAEjCC,OAAO,EAAE;MACPC,uBAAuBA,CAACC,IAAI,EAAE;QAG5B,IAAI,CAACA,IAAI,CAACC,yBAAyB,CAAC,CAAC,EAAE;QAShC;UACLD,IAAI,CAACE,yBAAyB,CAAC;YAC7BC,gBAAgB,EAAE,KAAK;YACvBT,WAAW;YAIXU,aAAa,EAAE,CAACV;UAClB,CAAC,CAAC;QACJ;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-arrow-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-arrow-functions",
+  "version": "7.25.9",
+  "description": "Compile ES2015 arrow functions to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-arrow-functions"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-arrow-functions",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-async-generator-functions
+
+> Turn async generator functions into ES2015 generators
+
+See our website [@babel/plugin-transform-async-generator-functions](https://babeljs.io/docs/babel-plugin-transform-async-generator-functions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-async-generator-functions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-async-generator-functions --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,77 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = _default;
+var _core = require("@babel/core");
+const buildForAwait = (0, _core.template)(`
+  async function wrapper() {
+    var ITERATOR_ABRUPT_COMPLETION = false;
+    var ITERATOR_HAD_ERROR_KEY = false;
+    var ITERATOR_ERROR_KEY;
+    try {
+      for (
+        var ITERATOR_KEY = GET_ITERATOR(OBJECT), STEP_KEY;
+        ITERATOR_ABRUPT_COMPLETION = !(STEP_KEY = await ITERATOR_KEY.next()).done;
+        ITERATOR_ABRUPT_COMPLETION = false
+      ) {
+      }
+    } catch (err) {
+      ITERATOR_HAD_ERROR_KEY = true;
+      ITERATOR_ERROR_KEY = err;
+    } finally {
+      try {
+        if (ITERATOR_ABRUPT_COMPLETION && ITERATOR_KEY.return != null) {
+          await ITERATOR_KEY.return();
+        }
+      } finally {
+        if (ITERATOR_HAD_ERROR_KEY) {
+          throw ITERATOR_ERROR_KEY;
+        }
+      }
+    }
+  }
+`);
+function _default(path, {
+  getAsyncIterator
+}) {
+  const {
+    node,
+    scope,
+    parent
+  } = path;
+  const stepKey = scope.generateUidIdentifier("step");
+  const stepValue = _core.types.memberExpression(stepKey, _core.types.identifier("value"));
+  const left = node.left;
+  let declar;
+  if (_core.types.isIdentifier(left) || _core.types.isPattern(left) || _core.types.isMemberExpression(left)) {
+    declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, stepValue));
+  } else if (_core.types.isVariableDeclaration(left)) {
+    declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, stepValue)]);
+  }
+  let template = buildForAwait({
+    ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
+    ITERATOR_ABRUPT_COMPLETION: scope.generateUidIdentifier("iteratorAbruptCompletion"),
+    ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
+    ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
+    GET_ITERATOR: getAsyncIterator,
+    OBJECT: node.right,
+    STEP_KEY: _core.types.cloneNode(stepKey)
+  });
+  template = template.body.body;
+  const isLabeledParent = _core.types.isLabeledStatement(parent);
+  const tryBody = template[3].block.body;
+  const loop = tryBody[0];
+  if (isLabeledParent) {
+    tryBody[0] = _core.types.labeledStatement(parent.label, loop);
+  }
+  return {
+    replaceParent: isLabeledParent,
+    node: template,
+    declar,
+    loop
+  };
+}
+
+//# sourceMappingURL=for-await.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/for-await.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","buildForAwait","template","_default","path","getAsyncIterator","node","scope","parent","stepKey","generateUidIdentifier","stepValue","t","memberExpression","identifier","left","declar","isIdentifier","isPattern","isMemberExpression","expressionStatement","assignmentExpression","isVariableDeclaration","variableDeclaration","kind","variableDeclarator","declarations","id","ITERATOR_HAD_ERROR_KEY","ITERATOR_ABRUPT_COMPLETION","ITERATOR_ERROR_KEY","ITERATOR_KEY","GET_ITERATOR","OBJECT","right","STEP_KEY","cloneNode","body","isLabeledParent","isLabeledStatement","tryBody","block","loop","labeledStatement","label","replaceParent"],"sources":["../src/for-await.ts"],"sourcesContent":["import { types as t, template, type NodePath } from \"@babel/core\";\n\nconst buildForAwait = template(`\n  async function wrapper() {\n    var ITERATOR_ABRUPT_COMPLETION = false;\n    var ITERATOR_HAD_ERROR_KEY = false;\n    var ITERATOR_ERROR_KEY;\n    try {\n      for (\n        var ITERATOR_KEY = GET_ITERATOR(OBJECT), STEP_KEY;\n        ITERATOR_ABRUPT_COMPLETION = !(STEP_KEY = await ITERATOR_KEY.next()).done;\n        ITERATOR_ABRUPT_COMPLETION = false\n      ) {\n      }\n    } catch (err) {\n      ITERATOR_HAD_ERROR_KEY = true;\n      ITERATOR_ERROR_KEY = err;\n    } finally {\n      try {\n        if (ITERATOR_ABRUPT_COMPLETION && ITERATOR_KEY.return != null) {\n          await ITERATOR_KEY.return();\n        }\n      } finally {\n        if (ITERATOR_HAD_ERROR_KEY) {\n          throw ITERATOR_ERROR_KEY;\n        }\n      }\n    }\n  }\n`);\n\nexport default function (\n  path: NodePath<t.ForOfStatement>,\n  { getAsyncIterator }: { getAsyncIterator: t.Identifier },\n) {\n  const { node, scope, parent } = path;\n\n  const stepKey = scope.generateUidIdentifier(\"step\");\n  const stepValue = t.memberExpression(stepKey, t.identifier(\"value\"));\n  const left = node.left;\n  let declar;\n\n  if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n    // for await (i of test), for await ({ i } of test)\n    declar = t.expressionStatement(\n      t.assignmentExpression(\"=\", left, stepValue),\n    );\n  } else if (t.isVariableDeclaration(left)) {\n    // for await (let i of test)\n    declar = t.variableDeclaration(left.kind, [\n      t.variableDeclarator(left.declarations[0].id, stepValue),\n    ]);\n  }\n  let template = buildForAwait({\n    ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier(\"didIteratorError\"),\n    ITERATOR_ABRUPT_COMPLETION: scope.generateUidIdentifier(\n      \"iteratorAbruptCompletion\",\n    ),\n    ITERATOR_ERROR_KEY: scope.generateUidIdentifier(\"iteratorError\"),\n    ITERATOR_KEY: scope.generateUidIdentifier(\"iterator\"),\n    GET_ITERATOR: getAsyncIterator,\n    OBJECT: node.right,\n    STEP_KEY: t.cloneNode(stepKey),\n  });\n\n  // remove async function wrapper\n  // @ts-expect-error todo(flow->ts) improve type annotation for buildForAwait\n  template = template.body.body as t.Statement[];\n\n  const isLabeledParent = t.isLabeledStatement(parent);\n  const tryBody = (template[3] as t.TryStatement).block.body;\n  const loop = tryBody[0] as t.ForStatement;\n\n  if (isLabeledParent) {\n    tryBody[0] = t.labeledStatement(parent.label, loop);\n  }\n\n  return {\n    replaceParent: isLabeledParent,\n    node: template,\n    declar,\n    loop,\n  };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAAG,IAAAC,cAAQ,EAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AAEa,SAAAC,SACbC,IAAgC,EAChC;EAAEC;AAAqD,CAAC,EACxD;EACA,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGJ,IAAI;EAEpC,MAAMK,OAAO,GAAGF,KAAK,CAACG,qBAAqB,CAAC,MAAM,CAAC;EACnD,MAAMC,SAAS,GAAGC,WAAC,CAACC,gBAAgB,CAACJ,OAAO,EAAEG,WAAC,CAACE,UAAU,CAAC,OAAO,CAAC,CAAC;EACpE,MAAMC,IAAI,GAAGT,IAAI,CAACS,IAAI;EACtB,IAAIC,MAAM;EAEV,IAAIJ,WAAC,CAACK,YAAY,CAACF,IAAI,CAAC,IAAIH,WAAC,CAACM,SAAS,CAACH,IAAI,CAAC,IAAIH,WAAC,CAACO,kBAAkB,CAACJ,IAAI,CAAC,EAAE;IAE3EC,MAAM,GAAGJ,WAAC,CAACQ,mBAAmB,CAC5BR,WAAC,CAACS,oBAAoB,CAAC,GAAG,EAAEN,IAAI,EAAEJ,SAAS,CAC7C,CAAC;EACH,CAAC,MAAM,IAAIC,WAAC,CAACU,qBAAqB,CAACP,IAAI,CAAC,EAAE;IAExCC,MAAM,GAAGJ,WAAC,CAACW,mBAAmB,CAACR,IAAI,CAACS,IAAI,EAAE,CACxCZ,WAAC,CAACa,kBAAkB,CAACV,IAAI,CAACW,YAAY,CAAC,CAAC,CAAC,CAACC,EAAE,EAAEhB,SAAS,CAAC,CACzD,CAAC;EACJ;EACA,IAAIT,QAAQ,GAAGD,aAAa,CAAC;IAC3B2B,sBAAsB,EAAErB,KAAK,CAACG,qBAAqB,CAAC,kBAAkB,CAAC;IACvEmB,0BAA0B,EAAEtB,KAAK,CAACG,qBAAqB,CACrD,0BACF,CAAC;IACDoB,kBAAkB,EAAEvB,KAAK,CAACG,qBAAqB,CAAC,eAAe,CAAC;IAChEqB,YAAY,EAAExB,KAAK,CAACG,qBAAqB,CAAC,UAAU,CAAC;IACrDsB,YAAY,EAAE3B,gBAAgB;IAC9B4B,MAAM,EAAE3B,IAAI,CAAC4B,KAAK;IAClBC,QAAQ,EAAEvB,WAAC,CAACwB,SAAS,CAAC3B,OAAO;EAC/B,CAAC,CAAC;EAIFP,QAAQ,GAAGA,QAAQ,CAACmC,IAAI,CAACA,IAAqB;EAE9C,MAAMC,eAAe,GAAG1B,WAAC,CAAC2B,kBAAkB,CAAC/B,MAAM,CAAC;EACpD,MAAMgC,OAAO,GAAItC,QAAQ,CAAC,CAAC,CAAC,CAAoBuC,KAAK,CAACJ,IAAI;EAC1D,MAAMK,IAAI,GAAGF,OAAO,CAAC,CAAC,CAAmB;EAEzC,IAAIF,eAAe,EAAE;IACnBE,OAAO,CAAC,CAAC,CAAC,GAAG5B,WAAC,CAAC+B,gBAAgB,CAACnC,MAAM,CAACoC,KAAK,EAAEF,IAAI,CAAC;EACrD;EAEA,OAAO;IACLG,aAAa,EAAEP,eAAe;IAC9BhC,IAAI,EAAEJ,QAAQ;IACdc,MAAM;IACN0B;EACF,CAAC;AACH","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,85 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperRemapAsyncToGenerator = require("@babel/helper-remap-async-to-generator");
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+var _forAwait = require("./for-await.js");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const yieldStarVisitor = _traverse.visitors.environmentVisitor({
+    ArrowFunctionExpression(path) {
+      path.skip();
+    },
+    YieldExpression({
+      node
+    }, state) {
+      if (!node.delegate) return;
+      const asyncIter = _core.types.callExpression(state.addHelper("asyncIterator"), [node.argument]);
+      node.argument = _core.types.callExpression(state.addHelper("asyncGeneratorDelegate"), [asyncIter, state.addHelper("awaitAsyncGenerator")]);
+    }
+  });
+  const forAwaitVisitor = _traverse.visitors.environmentVisitor({
+    ArrowFunctionExpression(path) {
+      path.skip();
+    },
+    ForOfStatement(path, {
+      file
+    }) {
+      const {
+        node
+      } = path;
+      if (!node.await) return;
+      const build = (0, _forAwait.default)(path, {
+        getAsyncIterator: file.addHelper("asyncIterator")
+      });
+      const {
+        declar,
+        loop
+      } = build;
+      const block = loop.body;
+      path.ensureBlock();
+      if (declar) {
+        block.body.push(declar);
+        if (path.node.body.body.length) {
+          block.body.push(_core.types.blockStatement(path.node.body.body));
+        }
+      } else {
+        block.body.push(...path.node.body.body);
+      }
+      _core.types.inherits(loop, node);
+      _core.types.inherits(loop.body, node.body);
+      const p = build.replaceParent ? path.parentPath : path;
+      p.replaceWithMultiple(build.node);
+      p.scope.parent.crawl();
+    }
+  });
+  const visitor = {
+    Function(path, state) {
+      if (!path.node.async) return;
+      path.traverse(forAwaitVisitor, state);
+      if (!path.node.generator) return;
+      path.traverse(yieldStarVisitor, state);
+      path.setData("@babel/plugin-transform-async-generator-functions/async_generator_function", true);
+      (0, _helperRemapAsyncToGenerator.default)(path, {
+        wrapAsync: state.addHelper("wrapAsyncGenerator"),
+        wrapAwait: state.addHelper("awaitAsyncGenerator")
+      });
+    }
+  };
+  return {
+    name: "transform-async-generator-functions",
+    manipulateOptions: (_, parser) => parser.plugins.push("asyncGenerators"),
+    visitor: {
+      Program(path, state) {
+        path.traverse(visitor, state);
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperRemapAsyncToGenerator","_core","_traverse","_forAwait","_default","exports","default","declare","api","assertVersion","yieldStarVisitor","visitors","environmentVisitor","ArrowFunctionExpression","path","skip","YieldExpression","node","state","delegate","asyncIter","t","callExpression","addHelper","argument","forAwaitVisitor","ForOfStatement","file","await","build","rewriteForAwait","getAsyncIterator","declar","loop","block","body","ensureBlock","push","length","blockStatement","inherits","p","replaceParent","parentPath","replaceWithMultiple","scope","parent","crawl","visitor","Function","async","traverse","generator","setData","remapAsyncToGenerator","wrapAsync","wrapAwait","name","manipulateOptions","_","parser","plugins","Program"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport remapAsyncToGenerator from \"@babel/helper-remap-async-to-generator\";\nimport type { NodePath, Visitor, PluginPass } from \"@babel/core\";\nimport { types as t } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nimport rewriteForAwait from \"./for-await.ts\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const yieldStarVisitor = visitors.environmentVisitor<PluginPass>({\n    ArrowFunctionExpression(path) {\n      path.skip();\n    },\n\n    YieldExpression({ node }, state) {\n      if (!node.delegate) return;\n      const asyncIter = t.callExpression(state.addHelper(\"asyncIterator\"), [\n        node.argument,\n      ]);\n      node.argument = t.callExpression(\n        state.addHelper(\"asyncGeneratorDelegate\"),\n        process.env.BABEL_8_BREAKING\n          ? [asyncIter]\n          : [asyncIter, state.addHelper(\"awaitAsyncGenerator\")],\n      );\n    },\n  });\n\n  const forAwaitVisitor = visitors.environmentVisitor<PluginPass>({\n    ArrowFunctionExpression(path) {\n      path.skip();\n    },\n\n    ForOfStatement(path: NodePath<t.ForOfStatement>, { file }) {\n      const { node } = path;\n      if (!node.await) return;\n\n      const build = rewriteForAwait(path, {\n        getAsyncIterator: file.addHelper(\"asyncIterator\"),\n      });\n\n      const { declar, loop } = build;\n      const block = loop.body as t.BlockStatement;\n\n      // ensure that it's a block so we can take all its statements\n      path.ensureBlock();\n\n      // add the value declaration to the new loop body\n      if (declar) {\n        block.body.push(declar);\n        if (path.node.body.body.length) {\n          block.body.push(t.blockStatement(path.node.body.body));\n        }\n      } else {\n        block.body.push(...path.node.body.body);\n      }\n\n      t.inherits(loop, node);\n      t.inherits(loop.body, node.body);\n\n      const p = build.replaceParent ? path.parentPath : path;\n      p.replaceWithMultiple(build.node);\n\n      // TODO: Avoid crawl\n      p.scope.parent.crawl();\n    },\n  });\n\n  const visitor: Visitor<PluginPass> = {\n    Function(path, state) {\n      if (!path.node.async) return;\n\n      path.traverse(forAwaitVisitor, state);\n\n      if (!path.node.generator) return;\n\n      path.traverse(yieldStarVisitor, state);\n\n      path.setData(\n        \"@babel/plugin-transform-async-generator-functions/async_generator_function\",\n        true,\n      );\n\n      // We don't need to pass the noNewArrows assumption, since\n      // async generators are never arrow functions.\n      remapAsyncToGenerator(path, {\n        wrapAsync: state.addHelper(\"wrapAsyncGenerator\"),\n        wrapAwait: state.addHelper(\"awaitAsyncGenerator\"),\n      });\n    },\n  };\n\n  return {\n    name: \"transform-async-generator-functions\",\n\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"asyncGenerators\"),\n\n    visitor: {\n      Program(path, state) {\n        // We need to traverse the ast here (instead of just vising Function\n        // in the top level visitor) because for-await needs to run before the\n        // async-to-generator plugin. This is because for-await is transpiled\n        // using \"await\" expressions, which are then converted to \"yield\".\n        //\n        // This is bad for performance, but plugin ordering will allow as to\n        // directly visit Function in the top level visitor.\n        path.traverse(visitor, state);\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-generator-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,38 @@
+{
+  "name": "@babel/plugin-transform-async-generator-functions",
+  "version": "7.25.9",
+  "description": "Turn async generator functions into ES2015 generators",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-async-generator-functions"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-async-generator-functions",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-remap-async-to-generator": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "babel-plugin-polyfill-corejs3": "^0.10.6",
+    "core-js-pure": "^3.30.2"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-async-to-generator
+
+> Turn async functions into ES2015 generators
+
+See our website [@babel/plugin-transform-async-to-generator](https://babeljs.io/docs/babel-plugin-transform-async-to-generator) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-async-to-generator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-async-to-generator --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,52 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperRemapAsyncToGenerator = require("@babel/helper-remap-async-to-generator");
+var _helperModuleImports = require("@babel/helper-module-imports");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const {
+    method,
+    module
+  } = options;
+  const noNewArrows = (_api$assumption = api.assumption("noNewArrows")) != null ? _api$assumption : true;
+  const ignoreFunctionLength = (_api$assumption2 = api.assumption("ignoreFunctionLength")) != null ? _api$assumption2 : false;
+  if (method && module) {
+    return {
+      name: "transform-async-to-generator",
+      visitor: {
+        Function(path, state) {
+          if (!path.node.async || path.node.generator) return;
+          let wrapAsync = state.methodWrapper;
+          if (wrapAsync) {
+            wrapAsync = _core.types.cloneNode(wrapAsync);
+          } else {
+            wrapAsync = state.methodWrapper = (0, _helperModuleImports.addNamed)(path, method, module);
+          }
+          (0, _helperRemapAsyncToGenerator.default)(path, {
+            wrapAsync
+          }, noNewArrows, ignoreFunctionLength);
+        }
+      }
+    };
+  }
+  return {
+    name: "transform-async-to-generator",
+    visitor: {
+      Function(path, state) {
+        if (!path.node.async || path.node.generator) return;
+        (0, _helperRemapAsyncToGenerator.default)(path, {
+          wrapAsync: state.addHelper("asyncToGenerator")
+        }, noNewArrows, ignoreFunctionLength);
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperRemapAsyncToGenerator","_helperModuleImports","_core","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","assertVersion","method","module","noNewArrows","assumption","ignoreFunctionLength","name","visitor","Function","path","state","node","async","generator","wrapAsync","methodWrapper","t","cloneNode","addNamed","remapAsyncToGenerator","addHelper"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport remapAsyncToGenerator from \"@babel/helper-remap-async-to-generator\";\nimport { addNamed } from \"@babel/helper-module-imports\";\nimport { types as t } from \"@babel/core\";\n\nexport interface Options {\n  method?: string;\n  module?: string;\n}\n\ntype State = {\n  methodWrapper?: t.Identifier | t.SequenceExpression;\n};\n\nexport default declare<State>((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { method, module } = options;\n  // Todo(BABEL 8): Consider default it to false\n  const noNewArrows = api.assumption(\"noNewArrows\") ?? true;\n  const ignoreFunctionLength = api.assumption(\"ignoreFunctionLength\") ?? false;\n\n  if (method && module) {\n    return {\n      name: \"transform-async-to-generator\",\n\n      visitor: {\n        Function(path, state) {\n          if (!path.node.async || path.node.generator) return;\n\n          let wrapAsync = state.methodWrapper;\n          if (wrapAsync) {\n            wrapAsync = t.cloneNode(wrapAsync);\n          } else {\n            wrapAsync = state.methodWrapper = addNamed(path, method, module);\n          }\n\n          remapAsyncToGenerator(\n            path,\n            { wrapAsync },\n            noNewArrows,\n            ignoreFunctionLength,\n          );\n        },\n      },\n    };\n  }\n\n  return {\n    name: \"transform-async-to-generator\",\n\n    visitor: {\n      Function(path, state) {\n        if (!path.node.async || path.node.generator) return;\n\n        remapAsyncToGenerator(\n          path,\n          { wrapAsync: state.addHelper(\"asyncToGenerator\") },\n          noNewArrows,\n          ignoreFunctionLength,\n        );\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,4BAAA,GAAAD,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAAyC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAW1B,IAAAC,0BAAO,EAAQ,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAAA,IAAAC,eAAA,EAAAC,gBAAA;EACvDH,GAAG,CAACI,aAAa,uCAAoB,CAAC;EAEtC,MAAM;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGL,OAAO;EAElC,MAAMM,WAAW,IAAAL,eAAA,GAAGF,GAAG,CAACQ,UAAU,CAAC,aAAa,CAAC,YAAAN,eAAA,GAAI,IAAI;EACzD,MAAMO,oBAAoB,IAAAN,gBAAA,GAAGH,GAAG,CAACQ,UAAU,CAAC,sBAAsB,CAAC,YAAAL,gBAAA,GAAI,KAAK;EAE5E,IAAIE,MAAM,IAAIC,MAAM,EAAE;IACpB,OAAO;MACLI,IAAI,EAAE,8BAA8B;MAEpCC,OAAO,EAAE;QACPC,QAAQA,CAACC,IAAI,EAAEC,KAAK,EAAE;UACpB,IAAI,CAACD,IAAI,CAACE,IAAI,CAACC,KAAK,IAAIH,IAAI,CAACE,IAAI,CAACE,SAAS,EAAE;UAE7C,IAAIC,SAAS,GAAGJ,KAAK,CAACK,aAAa;UACnC,IAAID,SAAS,EAAE;YACbA,SAAS,GAAGE,WAAC,CAACC,SAAS,CAACH,SAAS,CAAC;UACpC,CAAC,MAAM;YACLA,SAAS,GAAGJ,KAAK,CAACK,aAAa,GAAG,IAAAG,6BAAQ,EAACT,IAAI,EAAER,MAAM,EAAEC,MAAM,CAAC;UAClE;UAEA,IAAAiB,oCAAqB,EACnBV,IAAI,EACJ;YAAEK;UAAU,CAAC,EACbX,WAAW,EACXE,oBACF,CAAC;QACH;MACF;IACF,CAAC;EACH;EAEA,OAAO;IACLC,IAAI,EAAE,8BAA8B;IAEpCC,OAAO,EAAE;MACPC,QAAQA,CAACC,IAAI,EAAEC,KAAK,EAAE;QACpB,IAAI,CAACD,IAAI,CAACE,IAAI,CAACC,KAAK,IAAIH,IAAI,CAACE,IAAI,CAACE,SAAS,EAAE;QAE7C,IAAAM,oCAAqB,EACnBV,IAAI,EACJ;UAAEK,SAAS,EAAEJ,KAAK,CAACU,SAAS,CAAC,kBAAkB;QAAE,CAAC,EAClDjB,WAAW,EACXE,oBACF,CAAC;MACH;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-async-to-generator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-async-to-generator",
+  "version": "7.25.9",
+  "description": "Turn async functions into ES2015 generators",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-async-to-generator"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-async-to-generator",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-module-imports": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-remap-async-to-generator": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-block-scoped-functions
+
+> Babel plugin to ensure function declarations at the block level are block scoped
+
+See our website [@babel/plugin-transform-block-scoped-functions](https://babeljs.io/docs/babel-plugin-transform-block-scoped-functions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-block-scoped-functions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-block-scoped-functions --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,45 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  function transformStatementList(parentPath, paths) {
+    ;
+    for (const path of paths) {
+      if (!path.isFunctionDeclaration()) continue;
+      ;
+      const func = path.node;
+      const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(func.id, _core.types.toExpression(func))]);
+      declar._blockHoist = 2;
+      func.id = null;
+      path.replaceWith(declar);
+    }
+  }
+  return {
+    name: "transform-block-scoped-functions",
+    visitor: {
+      BlockStatement(path) {
+        const {
+          node,
+          parent
+        } = path;
+        if (_core.types.isFunction(parent, {
+          body: node
+        }) || _core.types.isExportDeclaration(parent)) {
+          return;
+        }
+        transformStatementList(path, path.get("body"));
+      },
+      SwitchCase(path) {
+        transformStatementList(path, path.get("consequent"));
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","transformStatementList","parentPath","paths","path","isFunctionDeclaration","func","node","declar","t","variableDeclaration","variableDeclarator","id","toExpression","_blockHoist","replaceWith","name","visitor","BlockStatement","parent","isFunction","body","isExportDeclaration","get","SwitchCase"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  function transformStatementList(\n    parentPath: NodePath,\n    paths: NodePath<t.Statement>[],\n  ) {\n    if (process.env.BABEL_8_BREAKING) {\n      // eslint-disable-next-line no-var\n      var isInStrictMode = parentPath.isInStrictMode();\n    }\n\n    for (const path of paths) {\n      if (!path.isFunctionDeclaration()) continue;\n\n      if (\n        process.env.BABEL_8_BREAKING &&\n        !isInStrictMode &&\n        !(\n          path.node.async ||\n          path.node.generator ||\n          path.getData(\n            \"@babel/plugin-transform-async-generator-functions/async_generator_function\",\n          )\n        )\n      ) {\n        continue;\n      }\n\n      const func = path.node;\n      const declar = t.variableDeclaration(\"let\", [\n        t.variableDeclarator(func.id, t.toExpression(func)),\n      ]);\n\n      // hoist it up above everything else\n      // @ts-expect-error todo(flow->ts): avoid mutations\n      declar._blockHoist = 2;\n\n      // todo: name this\n      func.id = null;\n\n      path.replaceWith(declar);\n    }\n  }\n\n  return {\n    name: \"transform-block-scoped-functions\",\n\n    visitor: {\n      BlockStatement(path) {\n        const { node, parent } = path;\n        if (\n          t.isFunction(parent, { body: node }) ||\n          t.isExportDeclaration(parent)\n        ) {\n          return;\n        }\n\n        transformStatementList(path, path.get(\"body\"));\n      },\n\n      SwitchCase(path) {\n        transformStatementList(path, path.get(\"consequent\"));\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAwD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEzC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,SAASC,sBAAsBA,CAC7BC,UAAoB,EACpBC,KAA8B,EAC9B;IAAA;IAMA,KAAK,MAAMC,IAAI,IAAID,KAAK,EAAE;MACxB,IAAI,CAACC,IAAI,CAACC,qBAAqB,CAAC,CAAC,EAAE;MAAS;MAgB5C,MAAMC,IAAI,GAAGF,IAAI,CAACG,IAAI;MACtB,MAAMC,MAAM,GAAGC,WAAC,CAACC,mBAAmB,CAAC,KAAK,EAAE,CAC1CD,WAAC,CAACE,kBAAkB,CAACL,IAAI,CAACM,EAAE,EAAEH,WAAC,CAACI,YAAY,CAACP,IAAI,CAAC,CAAC,CACpD,CAAC;MAIFE,MAAM,CAACM,WAAW,GAAG,CAAC;MAGtBR,IAAI,CAACM,EAAE,GAAG,IAAI;MAEdR,IAAI,CAACW,WAAW,CAACP,MAAM,CAAC;IAC1B;EACF;EAEA,OAAO;IACLQ,IAAI,EAAE,kCAAkC;IAExCC,OAAO,EAAE;MACPC,cAAcA,CAACd,IAAI,EAAE;QACnB,MAAM;UAAEG,IAAI;UAAEY;QAAO,CAAC,GAAGf,IAAI;QAC7B,IACEK,WAAC,CAACW,UAAU,CAACD,MAAM,EAAE;UAAEE,IAAI,EAAEd;QAAK,CAAC,CAAC,IACpCE,WAAC,CAACa,mBAAmB,CAACH,MAAM,CAAC,EAC7B;UACA;QACF;QAEAlB,sBAAsB,CAACG,IAAI,EAAEA,IAAI,CAACmB,GAAG,CAAC,MAAM,CAAC,CAAC;MAChD,CAAC;MAEDC,UAAUA,CAACpB,IAAI,EAAE;QACfH,sBAAsB,CAACG,IAAI,EAAEA,IAAI,CAACmB,GAAG,CAAC,YAAY,CAAC,CAAC;MACtD;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoped-functions/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-block-scoped-functions",
+  "version": "7.26.5",
+  "description": "Babel plugin to ensure function declarations at the block level are block scoped",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-block-scoped-functions"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-block-scoped-functions",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.26.5"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-block-scoping
+
+> Compile ES2015 block scoping (const and let) to ES5
+
+See our website [@babel/plugin-transform-block-scoping](https://babeljs.io/docs/babel-plugin-transform-block-scoping) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-block-scoping
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-block-scoping --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,101 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.annexB33FunctionsVisitor = void 0;
+exports.isVarScope = isVarScope;
+var _core = require("@babel/core");
+const annexB33FunctionsVisitor = exports.annexB33FunctionsVisitor = Object.assign({
+  VariableDeclaration(path) {
+    if (isStrict(path)) return;
+    if (path.node.kind !== "var") return;
+    const varScope = path.scope.getFunctionParent() || path.scope.getProgramParent();
+    varScope.path.traverse(functionsToVarVisitor, {
+      names: Object.keys(path.getBindingIdentifiers())
+    });
+  }
+}, {
+  BlockStatement(path) {
+    if (isStrict(path)) return;
+    if (_core.types.isFunction(path.parent, {
+      body: path.node
+    })) return;
+    transformStatementList(path.get("body"));
+  },
+  SwitchCase(path) {
+    if (isStrict(path)) return;
+    transformStatementList(path.get("consequent"));
+  }
+});
+function transformStatementList(paths) {
+  outer: for (const path of paths) {
+    if (!path.isFunctionDeclaration()) continue;
+    if (path.node.async || path.node.generator) return;
+    const {
+      scope
+    } = path.parentPath;
+    if (isVarScope(scope)) return;
+    const {
+      name
+    } = path.node.id;
+    let currScope = scope;
+    do {
+      if (currScope.parent.hasOwnBinding(name)) continue outer;
+      currScope = currScope.parent;
+    } while (!isVarScope(currScope));
+    maybeTransformBlockScopedFunction(path);
+  }
+}
+function maybeTransformBlockScopedFunction(path) {
+  const {
+    node,
+    parentPath: {
+      scope
+    }
+  } = path;
+  const {
+    id
+  } = node;
+  scope.removeOwnBinding(id.name);
+  node.id = null;
+  const varNode = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(id, _core.types.toExpression(node))]);
+  varNode._blockHoist = 2;
+  const [varPath] = path.replaceWith(varNode);
+  scope.registerDeclaration(varPath);
+}
+const functionsToVarVisitor = {
+  Scope(path, {
+    names
+  }) {
+    for (const name of names) {
+      const binding = path.scope.getOwnBinding(name);
+      if (binding && binding.kind === "hoisted") {
+        maybeTransformBlockScopedFunction(binding.path);
+      }
+    }
+  },
+  "Expression|Declaration"(path) {
+    path.skip();
+  }
+};
+function isVarScope(scope) {
+  return scope.path.isFunctionParent() || scope.path.isProgram();
+}
+function isStrict(path) {
+  return !!path.find(({
+    node
+  }) => {
+    var _node$directives;
+    if (_core.types.isProgram(node)) {
+      if (node.sourceType === "module") return true;
+    } else if (_core.types.isClass(node)) {
+      return true;
+    } else if (!_core.types.isBlockStatement(node)) {
+      return false;
+    }
+    return (_node$directives = node.directives) == null ? void 0 : _node$directives.some(directive => directive.value.value === "use strict");
+  });
+}
+
+//# sourceMappingURL=annex-B_3_3.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","annexB33FunctionsVisitor","exports","Object","assign","VariableDeclaration","path","isStrict","node","kind","varScope","scope","getFunctionParent","getProgramParent","traverse","functionsToVarVisitor","names","keys","getBindingIdentifiers","BlockStatement","t","isFunction","parent","body","transformStatementList","get","SwitchCase","paths","outer","isFunctionDeclaration","async","generator","parentPath","isVarScope","name","id","currScope","hasOwnBinding","maybeTransformBlockScopedFunction","removeOwnBinding","varNode","variableDeclaration","variableDeclarator","toExpression","_blockHoist","varPath","replaceWith","registerDeclaration","Scope","binding","getOwnBinding","Expression|Declaration","skip","isFunctionParent","isProgram","find","_node$directives","sourceType","isClass","isBlockStatement","directives","some","directive","value"],"sources":["../src/annex-B_3_3.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { NodePath, Visitor, Scope } from \"@babel/core\";\n\n// Whenever a function declaration in a nested block scope\n// doesn't conflict with a block-scoped binding from an outer\n// scope, we transform it to a variable declaration.\n//\n// This implements the Annex B.3.3 behavior.\n//\n// TODO(Babel 8): Figure out how this should interact with\n// the transform-block-scoped functions plugin (it feels\n// wrong to handle this transform here), and what we want\n// to do with Annex B behavior in general.\n\n// To avoid confusing block-scoped variables transformed to\n// var with original vars, this transformation happens in two\n// different places:\n//   1. For functions that \"conflict\" with var-variables, in\n//      the VariableDeclaration visitor.\n//   2. For functions that don't conflict with any variable,\n//      in the FunctionDeclaration visitor.\n\nexport const annexB33FunctionsVisitor: Visitor = {\n  VariableDeclaration(path) {\n    if (isStrict(path)) return;\n    if (path.node.kind !== \"var\") return;\n\n    const varScope =\n      path.scope.getFunctionParent() || path.scope.getProgramParent();\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    varScope.path.traverse(functionsToVarVisitor, {\n      names: Object.keys(path.getBindingIdentifiers()),\n    });\n  },\n  ...(process.env.BABEL_8_BREAKING\n    ? {}\n    : {\n        // NOTE: These two visitors target the same nodes as the\n        // block-scoped-functions plugin\n        BlockStatement(path) {\n          if (isStrict(path)) return;\n          if (t.isFunction(path.parent, { body: path.node })) return;\n          transformStatementList(path.get(\"body\"));\n        },\n        SwitchCase(path) {\n          if (isStrict(path)) return;\n          transformStatementList(path.get(\"consequent\"));\n        },\n      }),\n};\n\nfunction transformStatementList(paths: NodePath<t.Statement>[]) {\n  outer: for (const path of paths) {\n    if (!path.isFunctionDeclaration()) continue;\n    // Annex B.3.3 only applies to plain functions.\n    if (path.node.async || path.node.generator) return;\n\n    const { scope } = path.parentPath;\n    if (isVarScope(scope)) return;\n\n    const { name } = path.node.id;\n    let currScope = scope;\n    do {\n      if (currScope.parent.hasOwnBinding(name)) continue outer;\n      currScope = currScope.parent;\n    } while (!isVarScope(currScope));\n\n    maybeTransformBlockScopedFunction(path);\n  }\n}\n\nfunction maybeTransformBlockScopedFunction(\n  path: NodePath<t.FunctionDeclaration>,\n) {\n  const {\n    node,\n    parentPath: { scope },\n  } = path;\n\n  const { id } = node;\n  scope.removeOwnBinding(id.name);\n  node.id = null;\n\n  const varNode = t.variableDeclaration(\"var\", [\n    t.variableDeclarator(id, t.toExpression(node)),\n  ]);\n  // @ts-expect-error undocumented property\n  varNode._blockHoist = 2;\n\n  const [varPath] = path.replaceWith(varNode);\n  scope.registerDeclaration(varPath);\n}\n\nconst functionsToVarVisitor: Visitor<{ names: string[] }> = {\n  Scope(path, { names }) {\n    for (const name of names) {\n      const binding = path.scope.getOwnBinding(name);\n      if (binding && binding.kind === \"hoisted\") {\n        maybeTransformBlockScopedFunction(\n          binding.path as NodePath<t.FunctionDeclaration>,\n        );\n      }\n    }\n  },\n  \"Expression|Declaration\"(path) {\n    path.skip();\n  },\n};\n\nexport function isVarScope(scope: Scope) {\n  return scope.path.isFunctionParent() || scope.path.isProgram();\n}\n\nfunction isStrict(path: NodePath) {\n  return !!path.find(({ node }) => {\n    if (t.isProgram(node)) {\n      if (node.sourceType === \"module\") return true;\n    } else if (t.isClass(node)) {\n      return true;\n    } else if (!t.isBlockStatement(node)) {\n      return false;\n    }\n\n    return node.directives?.some(\n      directive => directive.value.value === \"use strict\",\n    );\n  });\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,184 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _loop = require("./loop.js");
+var _validation = require("./validation.js");
+var _annexB_3_ = require("./annex-B_3_3.js");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, opts) => {
+  api.assertVersion(7);
+  const {
+    throwIfClosureRequired = false,
+    tdz: tdzEnabled = false
+  } = opts;
+  if (typeof throwIfClosureRequired !== "boolean") {
+    throw new Error(`.throwIfClosureRequired must be a boolean, or undefined`);
+  }
+  if (typeof tdzEnabled !== "boolean") {
+    throw new Error(`.tdz must be a boolean, or undefined`);
+  }
+  return {
+    name: "transform-block-scoping",
+    visitor: _core.traverse.visitors.merge([_annexB_3_.annexB33FunctionsVisitor, {
+      Loop(path, state) {
+        const isForStatement = path.isForStatement();
+        const headPath = isForStatement ? path.get("init") : path.isForXStatement() ? path.get("left") : null;
+        let needsBodyWrap = false;
+        const markNeedsBodyWrap = () => {
+          if (throwIfClosureRequired) {
+            throw path.buildCodeFrameError("Compiling let/const in this block would add a closure " + "(throwIfClosureRequired).");
+          }
+          needsBodyWrap = true;
+        };
+        const body = path.get("body");
+        let bodyScope;
+        if (body.isBlockStatement()) {
+          bodyScope = body.scope;
+        }
+        const bindings = (0, _loop.getLoopBodyBindings)(path);
+        for (const binding of bindings) {
+          const {
+            capturedInClosure
+          } = (0, _loop.getUsageInBody)(binding, path);
+          if (capturedInClosure) markNeedsBodyWrap();
+        }
+        const captured = [];
+        const updatedBindingsUsages = new Map();
+        if (headPath && isBlockScoped(headPath.node)) {
+          const names = Object.keys(headPath.getBindingIdentifiers());
+          const headScope = headPath.scope;
+          for (let name of names) {
+            var _bodyScope;
+            if ((_bodyScope = bodyScope) != null && _bodyScope.hasOwnBinding(name)) continue;
+            let binding = headScope.getOwnBinding(name);
+            if (!binding) {
+              headScope.crawl();
+              binding = headScope.getOwnBinding(name);
+            }
+            const {
+              usages,
+              capturedInClosure,
+              hasConstantViolations
+            } = (0, _loop.getUsageInBody)(binding, path);
+            if (headScope.parent.hasBinding(name) || headScope.parent.hasGlobal(name)) {
+              const newName = headScope.generateUid(name);
+              headScope.rename(name, newName);
+              name = newName;
+            }
+            if (capturedInClosure) {
+              markNeedsBodyWrap();
+              captured.push(name);
+            }
+            if (isForStatement && hasConstantViolations) {
+              updatedBindingsUsages.set(name, usages);
+            }
+          }
+        }
+        if (needsBodyWrap) {
+          const varPath = (0, _loop.wrapLoopBody)(path, captured, updatedBindingsUsages);
+          if (headPath != null && headPath.isVariableDeclaration()) {
+            transformBlockScopedVariable(headPath, state, tdzEnabled);
+          }
+          varPath.get("declarations.0.init").unwrapFunctionEnvironment();
+        }
+      },
+      VariableDeclaration(path, state) {
+        transformBlockScopedVariable(path, state, tdzEnabled);
+      },
+      ClassDeclaration(path) {
+        const {
+          id
+        } = path.node;
+        if (!id) return;
+        const {
+          scope
+        } = path.parentPath;
+        if (!(0, _annexB_3_.isVarScope)(scope) && scope.parent.hasBinding(id.name, {
+          noUids: true
+        })) {
+          path.scope.rename(id.name);
+        }
+      }
+    }])
+  };
+});
+const conflictingFunctionsVisitor = {
+  Scope(path, {
+    names
+  }) {
+    for (const name of names) {
+      const binding = path.scope.getOwnBinding(name);
+      if (binding && binding.kind === "hoisted") {
+        path.scope.rename(name);
+      }
+    }
+  },
+  "Expression|Declaration"(path) {
+    path.skip();
+  }
+};
+function transformBlockScopedVariable(path, state, tdzEnabled) {
+  if (!isBlockScoped(path.node)) return;
+  const dynamicTDZNames = (0, _validation.validateUsage)(path, state, tdzEnabled);
+  path.node.kind = "var";
+  const bindingNames = Object.keys(path.getBindingIdentifiers());
+  for (const name of bindingNames) {
+    const binding = path.scope.getOwnBinding(name);
+    if (!binding) continue;
+    binding.kind = "var";
+  }
+  if (isInLoop(path) && !(0, _loop.isVarInLoopHead)(path) || dynamicTDZNames.length > 0) {
+    for (const decl of path.node.declarations) {
+      var _decl$init;
+      (_decl$init = decl.init) != null ? _decl$init : decl.init = path.scope.buildUndefinedNode();
+    }
+  }
+  const blockScope = path.scope;
+  const varScope = blockScope.getFunctionParent() || blockScope.getProgramParent();
+  if (varScope !== blockScope) {
+    for (const name of bindingNames) {
+      let newName = name;
+      if (blockScope.parent.hasBinding(name, {
+        noUids: true
+      }) || blockScope.parent.hasGlobal(name)) {
+        newName = blockScope.generateUid(name);
+        blockScope.rename(name, newName);
+      }
+      blockScope.moveBindingTo(newName, varScope);
+    }
+  }
+  blockScope.path.traverse(conflictingFunctionsVisitor, {
+    names: bindingNames
+  });
+  for (const name of dynamicTDZNames) {
+    path.scope.push({
+      id: _core.types.identifier(name),
+      init: state.addHelper("temporalUndefined")
+    });
+  }
+}
+function isLetOrConst(kind) {
+  return kind === "let" || kind === "const";
+}
+function isInLoop(path) {
+  if (!path.parentPath) return false;
+  if (path.parentPath.isLoop()) return true;
+  if (path.parentPath.isFunctionParent()) return false;
+  return isInLoop(path.parentPath);
+}
+function isBlockScoped(node) {
+  if (!_core.types.isVariableDeclaration(node)) return false;
+  if (node[_core.types.BLOCK_SCOPED_SYMBOL]) {
+    return true;
+  }
+  if (!isLetOrConst(node.kind) && node.kind !== "using") {
+    return false;
+  }
+  return true;
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_loop","_validation","_annexB_3_","_default","exports","default","declare","api","opts","assertVersion","throwIfClosureRequired","tdz","tdzEnabled","Error","name","visitor","traverse","visitors","merge","annexB33FunctionsVisitor","Loop","path","state","isForStatement","headPath","get","isForXStatement","needsBodyWrap","markNeedsBodyWrap","buildCodeFrameError","body","bodyScope","isBlockStatement","scope","bindings","getLoopBodyBindings","binding","capturedInClosure","getUsageInBody","captured","updatedBindingsUsages","Map","isBlockScoped","node","names","Object","keys","getBindingIdentifiers","headScope","_bodyScope","hasOwnBinding","getOwnBinding","crawl","usages","hasConstantViolations","parent","hasBinding","hasGlobal","newName","generateUid","rename","push","set","varPath","wrapLoopBody","isVariableDeclaration","transformBlockScopedVariable","unwrapFunctionEnvironment","VariableDeclaration","ClassDeclaration","id","parentPath","isVarScope","noUids","conflictingFunctionsVisitor","Scope","kind","Expression|Declaration","skip","dynamicTDZNames","validateUsage","bindingNames","isInLoop","isVarInLoopHead","length","decl","declarations","_decl$init","init","buildUndefinedNode","blockScope","varScope","getFunctionParent","getProgramParent","moveBindingTo","t","identifier","addHelper","isLetOrConst","isLoop","isFunctionParent","BLOCK_SCOPED_SYMBOL"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { NodePath, Scope, Visitor, PluginPass } from \"@babel/core\";\nimport { types as t, traverse } from \"@babel/core\";\n\nimport {\n  getLoopBodyBindings,\n  getUsageInBody,\n  isVarInLoopHead,\n  wrapLoopBody,\n} from \"./loop.ts\";\nimport { validateUsage } from \"./validation.ts\";\nimport { annexB33FunctionsVisitor, isVarScope } from \"./annex-B_3_3.ts\";\n\nexport interface Options {\n  tdz?: boolean;\n  throwIfClosureRequired?: boolean;\n}\n\nexport default declare((api, opts: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { throwIfClosureRequired = false, tdz: tdzEnabled = false } = opts;\n  if (typeof throwIfClosureRequired !== \"boolean\") {\n    throw new Error(`.throwIfClosureRequired must be a boolean, or undefined`);\n  }\n  if (typeof tdzEnabled !== \"boolean\") {\n    throw new Error(`.tdz must be a boolean, or undefined`);\n  }\n\n  return {\n    name: \"transform-block-scoping\",\n\n    visitor: traverse.visitors.merge<PluginPass>([\n      // TODO: Consider adding an option to control Annex B behavior.\n      annexB33FunctionsVisitor,\n      {\n        Loop(path: NodePath<t.Loop>, state) {\n          const isForStatement = path.isForStatement();\n          const headPath = isForStatement\n            ? path.get(\"init\")\n            : path.isForXStatement()\n              ? path.get(\"left\")\n              : null;\n\n          let needsBodyWrap = false;\n          const markNeedsBodyWrap = () => {\n            if (throwIfClosureRequired) {\n              throw path.buildCodeFrameError(\n                \"Compiling let/const in this block would add a closure \" +\n                  \"(throwIfClosureRequired).\",\n              );\n            }\n            needsBodyWrap = true;\n          };\n\n          const body = path.get(\"body\");\n          let bodyScope: Scope | null;\n          if (body.isBlockStatement()) {\n            bodyScope = body.scope;\n          }\n          const bindings = getLoopBodyBindings(path);\n          for (const binding of bindings) {\n            const { capturedInClosure } = getUsageInBody(binding, path);\n            if (capturedInClosure) markNeedsBodyWrap();\n          }\n\n          const captured: string[] = [];\n          const updatedBindingsUsages: Map<string, NodePath<t.Identifier>[]> =\n            new Map();\n\n          if (headPath && isBlockScoped(headPath.node)) {\n            const names = Object.keys(headPath.getBindingIdentifiers());\n            const headScope = headPath.scope;\n\n            for (let name of names) {\n              if (bodyScope?.hasOwnBinding(name)) continue; // shadowed\n\n              let binding = headScope.getOwnBinding(name);\n              if (!binding) {\n                headScope.crawl();\n                binding = headScope.getOwnBinding(name);\n              }\n              const { usages, capturedInClosure, hasConstantViolations } =\n                getUsageInBody(binding, path);\n\n              if (\n                headScope.parent.hasBinding(name) ||\n                headScope.parent.hasGlobal(name)\n              ) {\n                // If the binding is not captured, there is no need\n                // of adding it to the closure param. However, rename\n                // it if it shadows an outer binding, because the\n                // closure will be moved to an outer level.\n                const newName = headScope.generateUid(name);\n                headScope.rename(name, newName);\n                name = newName;\n              }\n\n              if (capturedInClosure) {\n                markNeedsBodyWrap();\n                captured.push(name);\n              }\n\n              if (isForStatement && hasConstantViolations) {\n                updatedBindingsUsages.set(name, usages);\n              }\n            }\n          }\n\n          if (needsBodyWrap) {\n            const varPath = wrapLoopBody(path, captured, updatedBindingsUsages);\n\n            if (headPath?.isVariableDeclaration()) {\n              // If we wrap the loop body, we transform the var\n              // declaration in the loop head now, to avoid\n              // invalid references that break other plugins:\n              //\n              //  for (let head of x) {\n              //    let i = head;\n              //    setTimeout(() => i);\n              //  }\n              //\n              // would become\n              //\n              //  function _loop() {\n              //    let i = head;\n              //    setTimeout(() => i);\n              //  }\n              //  for (let head of x) _loop();\n              //\n              // which references `head` in a scope where it's not visible.\n              transformBlockScopedVariable(headPath, state, tdzEnabled);\n            }\n\n            varPath.get(\"declarations.0.init\").unwrapFunctionEnvironment();\n          }\n        },\n\n        VariableDeclaration(path, state) {\n          transformBlockScopedVariable(path, state, tdzEnabled);\n        },\n\n        // Class declarations are block-scoped: if there is\n        // a class declaration in a nested block that conflicts\n        // with an outer block-scoped binding, rename it.\n        // TODO: Should this be moved to the classes plugin?\n        ClassDeclaration(path) {\n          const { id } = path.node;\n          if (!id) return;\n\n          const { scope } = path.parentPath;\n          if (\n            !isVarScope(scope) &&\n            scope.parent.hasBinding(id.name, { noUids: true })\n          ) {\n            path.scope.rename(id.name);\n          }\n        },\n      },\n    ]),\n  };\n});\n\nconst conflictingFunctionsVisitor: Visitor<{ names: string[] }> = {\n  Scope(path, { names }) {\n    for (const name of names) {\n      const binding = path.scope.getOwnBinding(name);\n      if (binding && binding.kind === \"hoisted\") {\n        path.scope.rename(name);\n      }\n    }\n  },\n  \"Expression|Declaration\"(path) {\n    path.skip();\n  },\n};\n\nfunction transformBlockScopedVariable(\n  path: NodePath<t.VariableDeclaration>,\n  state: PluginPass,\n  tdzEnabled: boolean,\n) {\n  if (!isBlockScoped(path.node)) return;\n\n  const dynamicTDZNames = validateUsage(path, state, tdzEnabled);\n\n  path.node.kind = \"var\";\n\n  const bindingNames = Object.keys(path.getBindingIdentifiers());\n  for (const name of bindingNames) {\n    const binding = path.scope.getOwnBinding(name);\n    if (!binding) continue;\n    binding.kind = \"var\";\n  }\n\n  if (\n    (isInLoop(path) && !isVarInLoopHead(path)) ||\n    dynamicTDZNames.length > 0\n  ) {\n    for (const decl of path.node.declarations) {\n      // We explicitly add `void 0` to cases like\n      //  for (;;) { let a; }\n      // to make sure that `a` doesn't keep the value from\n      // the previous iteration.\n      decl.init ??= path.scope.buildUndefinedNode();\n    }\n  }\n\n  const blockScope = path.scope;\n  const varScope =\n    blockScope.getFunctionParent() || blockScope.getProgramParent();\n\n  if (varScope !== blockScope) {\n    for (const name of bindingNames) {\n      let newName = name;\n      if (\n        // We pass `noUids` true because, if `name` was a generated\n        // UID, it has been used to declare the current variable in\n        // a nested scope and thus we don't need to assume that it\n        // may be declared (but not registered yet) in an upper one.\n        blockScope.parent.hasBinding(name, { noUids: true }) ||\n        blockScope.parent.hasGlobal(name)\n      ) {\n        newName = blockScope.generateUid(name);\n        blockScope.rename(name, newName);\n      }\n\n      blockScope.moveBindingTo(newName, varScope);\n    }\n  }\n\n  blockScope.path.traverse(conflictingFunctionsVisitor, {\n    names: bindingNames,\n  });\n\n  for (const name of dynamicTDZNames) {\n    path.scope.push({\n      id: t.identifier(name),\n      init: state.addHelper(\"temporalUndefined\"),\n    });\n  }\n}\n\nfunction isLetOrConst(kind: string): kind is \"let\" | \"const\" {\n  return kind === \"let\" || kind === \"const\";\n}\n\nfunction isInLoop(path: NodePath<t.Node>): boolean {\n  if (!path.parentPath) return false;\n  if (path.parentPath.isLoop()) return true;\n  if (path.parentPath.isFunctionParent()) return false;\n  return isInLoop(path.parentPath);\n}\n\nfunction isBlockScoped(node: t.Node): node is t.VariableDeclaration {\n  if (!t.isVariableDeclaration(node)) return false;\n  if (\n    // @ts-expect-error Fixme: document symbol properties\n    node[t.BLOCK_SCOPED_SYMBOL]\n  ) {\n    return true;\n  }\n\n  if (!isLetOrConst(node.kind) && node.kind !== \"using\") {\n    return false;\n  }\n\n  return true;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/loop.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/loop.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/loop.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,291 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.getLoopBodyBindings = getLoopBodyBindings;
+exports.getUsageInBody = getUsageInBody;
+exports.isVarInLoopHead = isVarInLoopHead;
+exports.wrapLoopBody = wrapLoopBody;
+var _core = require("@babel/core");
+const collectLoopBodyBindingsVisitor = {
+  "Expression|Declaration|Loop"(path) {
+    path.skip();
+  },
+  Scope(path, state) {
+    if (path.isFunctionParent()) path.skip();
+    const {
+      bindings
+    } = path.scope;
+    for (const name of Object.keys(bindings)) {
+      const binding = bindings[name];
+      if (binding.kind === "let" || binding.kind === "const" || binding.kind === "hoisted") {
+        state.blockScoped.push(binding);
+      }
+    }
+  }
+};
+function getLoopBodyBindings(loopPath) {
+  const state = {
+    blockScoped: []
+  };
+  loopPath.traverse(collectLoopBodyBindingsVisitor, state);
+  return state.blockScoped;
+}
+function getUsageInBody(binding, loopPath) {
+  const seen = new WeakSet();
+  let capturedInClosure = false;
+  const constantViolations = filterMap(binding.constantViolations, path => {
+    const {
+      inBody,
+      inClosure
+    } = relativeLoopLocation(path, loopPath);
+    if (!inBody) return null;
+    capturedInClosure || (capturedInClosure = inClosure);
+    const id = path.isUpdateExpression() ? path.get("argument") : path.isAssignmentExpression() ? path.get("left") : null;
+    if (id) seen.add(id.node);
+    return id;
+  });
+  const references = filterMap(binding.referencePaths, path => {
+    if (seen.has(path.node)) return null;
+    const {
+      inBody,
+      inClosure
+    } = relativeLoopLocation(path, loopPath);
+    if (!inBody) return null;
+    capturedInClosure || (capturedInClosure = inClosure);
+    return path;
+  });
+  return {
+    capturedInClosure,
+    hasConstantViolations: constantViolations.length > 0,
+    usages: references.concat(constantViolations)
+  };
+}
+function relativeLoopLocation(path, loopPath) {
+  const bodyPath = loopPath.get("body");
+  let inClosure = false;
+  for (let currPath = path; currPath; currPath = currPath.parentPath) {
+    if (currPath.isFunction() || currPath.isClass() || currPath.isMethod()) {
+      inClosure = true;
+    }
+    if (currPath === bodyPath) {
+      return {
+        inBody: true,
+        inClosure
+      };
+    } else if (currPath === loopPath) {
+      return {
+        inBody: false,
+        inClosure
+      };
+    }
+  }
+  throw new Error("Internal Babel error: path is not in loop. Please report this as a bug.");
+}
+const collectCompletionsAndVarsVisitor = {
+  Function(path) {
+    path.skip();
+  },
+  LabeledStatement: {
+    enter({
+      node
+    }, state) {
+      state.labelsStack.push(node.label.name);
+    },
+    exit({
+      node
+    }, state) {
+      const popped = state.labelsStack.pop();
+      if (popped !== node.label.name) {
+        throw new Error("Assertion failure. Please report this bug to Babel.");
+      }
+    }
+  },
+  Loop: {
+    enter(_, state) {
+      state.labellessContinueTargets++;
+      state.labellessBreakTargets++;
+    },
+    exit(_, state) {
+      state.labellessContinueTargets--;
+      state.labellessBreakTargets--;
+    }
+  },
+  SwitchStatement: {
+    enter(_, state) {
+      state.labellessBreakTargets++;
+    },
+    exit(_, state) {
+      state.labellessBreakTargets--;
+    }
+  },
+  "BreakStatement|ContinueStatement"(path, state) {
+    const {
+      label
+    } = path.node;
+    if (label) {
+      if (state.labelsStack.includes(label.name)) return;
+    } else if (path.isBreakStatement() ? state.labellessBreakTargets > 0 : state.labellessContinueTargets > 0) {
+      return;
+    }
+    state.breaksContinues.push(path);
+  },
+  ReturnStatement(path, state) {
+    state.returns.push(path);
+  },
+  VariableDeclaration(path, state) {
+    if (path.parent === state.loopNode && isVarInLoopHead(path)) return;
+    if (path.node.kind === "var") state.vars.push(path);
+  }
+};
+function wrapLoopBody(loopPath, captured, updatedBindingsUsages) {
+  const loopNode = loopPath.node;
+  const state = {
+    breaksContinues: [],
+    returns: [],
+    labelsStack: [],
+    labellessBreakTargets: 0,
+    labellessContinueTargets: 0,
+    vars: [],
+    loopNode
+  };
+  loopPath.traverse(collectCompletionsAndVarsVisitor, state);
+  const callArgs = [];
+  const closureParams = [];
+  const updater = [];
+  for (const [name, updatedUsage] of updatedBindingsUsages) {
+    callArgs.push(_core.types.identifier(name));
+    const innerName = loopPath.scope.generateUid(name);
+    closureParams.push(_core.types.identifier(innerName));
+    updater.push(_core.types.assignmentExpression("=", _core.types.identifier(name), _core.types.identifier(innerName)));
+    for (const path of updatedUsage) path.replaceWith(_core.types.identifier(innerName));
+  }
+  for (const name of captured) {
+    if (updatedBindingsUsages.has(name)) continue;
+    callArgs.push(_core.types.identifier(name));
+    closureParams.push(_core.types.identifier(name));
+  }
+  const id = loopPath.scope.generateUid("loop");
+  const fn = _core.types.functionExpression(null, closureParams, _core.types.toBlock(loopNode.body));
+  let call = _core.types.callExpression(_core.types.identifier(id), callArgs);
+  const fnParent = loopPath.findParent(p => p.isFunction());
+  if (fnParent) {
+    const {
+      async,
+      generator
+    } = fnParent.node;
+    fn.async = async;
+    fn.generator = generator;
+    if (generator) call = _core.types.yieldExpression(call, true);else if (async) call = _core.types.awaitExpression(call);
+  }
+  const updaterNode = updater.length > 0 ? _core.types.expressionStatement(_core.types.sequenceExpression(updater)) : null;
+  if (updaterNode) fn.body.body.push(updaterNode);
+  const [varPath] = loopPath.insertBefore(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(id), fn)]));
+  const bodyStmts = [];
+  const varNames = [];
+  for (const varPath of state.vars) {
+    const assign = [];
+    for (const decl of varPath.node.declarations) {
+      varNames.push(...Object.keys(_core.types.getBindingIdentifiers(decl.id)));
+      if (decl.init) {
+        assign.push(_core.types.assignmentExpression("=", decl.id, decl.init));
+      } else if (_core.types.isForXStatement(varPath.parent, {
+        left: varPath.node
+      })) {
+        assign.push(decl.id);
+      }
+    }
+    if (assign.length > 0) {
+      const replacement = assign.length === 1 ? assign[0] : _core.types.sequenceExpression(assign);
+      varPath.replaceWith(replacement);
+    } else {
+      varPath.remove();
+    }
+  }
+  if (varNames.length) {
+    varPath.pushContainer("declarations", varNames.map(name => _core.types.variableDeclarator(_core.types.identifier(name))));
+  }
+  const labelNum = state.breaksContinues.length;
+  const returnNum = state.returns.length;
+  if (labelNum + returnNum === 0) {
+    bodyStmts.push(_core.types.expressionStatement(call));
+  } else if (labelNum === 1 && returnNum === 0) {
+    for (const path of state.breaksContinues) {
+      const {
+        node
+      } = path;
+      const {
+        type,
+        label
+      } = node;
+      let name = type === "BreakStatement" ? "break" : "continue";
+      if (label) name += " " + label.name;
+      path.replaceWith(_core.types.addComment(_core.types.returnStatement(_core.types.numericLiteral(1)), "trailing", " " + name, true));
+      if (updaterNode) path.insertBefore(_core.types.cloneNode(updaterNode));
+      bodyStmts.push(_core.template.statement.ast`
+        if (${call}) ${node}
+      `);
+    }
+  } else {
+    const completionId = loopPath.scope.generateUid("ret");
+    if (varPath.isVariableDeclaration()) {
+      varPath.pushContainer("declarations", [_core.types.variableDeclarator(_core.types.identifier(completionId))]);
+      bodyStmts.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.identifier(completionId), call)));
+    } else {
+      bodyStmts.push(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(completionId), call)]));
+    }
+    const injected = [];
+    for (const path of state.breaksContinues) {
+      const {
+        node
+      } = path;
+      const {
+        type,
+        label
+      } = node;
+      let name = type === "BreakStatement" ? "break" : "continue";
+      if (label) name += " " + label.name;
+      let i = injected.indexOf(name);
+      const hasInjected = i !== -1;
+      if (!hasInjected) {
+        injected.push(name);
+        i = injected.length - 1;
+      }
+      path.replaceWith(_core.types.addComment(_core.types.returnStatement(_core.types.numericLiteral(i)), "trailing", " " + name, true));
+      if (updaterNode) path.insertBefore(_core.types.cloneNode(updaterNode));
+      if (hasInjected) continue;
+      bodyStmts.push(_core.template.statement.ast`
+        if (${_core.types.identifier(completionId)} === ${_core.types.numericLiteral(i)}) ${node}
+      `);
+    }
+    if (returnNum) {
+      for (const path of state.returns) {
+        const arg = path.node.argument || path.scope.buildUndefinedNode();
+        path.replaceWith(_core.template.statement.ast`
+          return { v: ${arg} };
+        `);
+      }
+      bodyStmts.push(_core.template.statement.ast`
+          if (${_core.types.identifier(completionId)}) return ${_core.types.identifier(completionId)}.v;
+        `);
+    }
+  }
+  loopNode.body = _core.types.blockStatement(bodyStmts);
+  return varPath;
+}
+function isVarInLoopHead(path) {
+  if (_core.types.isForStatement(path.parent)) return path.key === "init";
+  if (_core.types.isForXStatement(path.parent)) return path.key === "left";
+  return false;
+}
+function filterMap(list, fn) {
+  const result = [];
+  for (const item of list) {
+    const mapped = fn(item);
+    if (mapped) result.push(mapped);
+  }
+  return result;
+}
+
+//# sourceMappingURL=loop.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/loop.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/loop.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/loop.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","collectLoopBodyBindingsVisitor","Expression|Declaration|Loop","path","skip","Scope","state","isFunctionParent","bindings","scope","name","Object","keys","binding","kind","blockScoped","push","getLoopBodyBindings","loopPath","traverse","getUsageInBody","seen","WeakSet","capturedInClosure","constantViolations","filterMap","inBody","inClosure","relativeLoopLocation","id","isUpdateExpression","get","isAssignmentExpression","add","node","references","referencePaths","has","hasConstantViolations","length","usages","concat","bodyPath","currPath","parentPath","isFunction","isClass","isMethod","Error","collectCompletionsAndVarsVisitor","Function","LabeledStatement","enter","labelsStack","label","exit","popped","pop","Loop","_","labellessContinueTargets","labellessBreakTargets","SwitchStatement","BreakStatement|ContinueStatement","includes","isBreakStatement","breaksContinues","ReturnStatement","returns","VariableDeclaration","parent","loopNode","isVarInLoopHead","vars","wrapLoopBody","captured","updatedBindingsUsages","callArgs","closureParams","updater","updatedUsage","t","identifier","innerName","generateUid","assignmentExpression","replaceWith","fn","functionExpression","toBlock","body","call","callExpression","fnParent","findParent","p","async","generator","yieldExpression","awaitExpression","updaterNode","expressionStatement","sequenceExpression","varPath","insertBefore","variableDeclaration","variableDeclarator","bodyStmts","varNames","assign","decl","declarations","getBindingIdentifiers","init","isForXStatement","left","replacement","remove","pushContainer","map","labelNum","returnNum","type","addComment","returnStatement","numericLiteral","cloneNode","template","statement","ast","completionId","isVariableDeclaration","injected","i","indexOf","hasInjected","arg","argument","buildUndefinedNode","blockStatement","isForStatement","key","list","result","item","mapped"],"sources":["../src/loop.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { NodePath, Visitor, Scope } from \"@babel/core\";\n\ninterface LoopBodyBindingsState {\n  blockScoped: Scope.Binding[];\n}\n\nconst collectLoopBodyBindingsVisitor: Visitor<LoopBodyBindingsState> = {\n  \"Expression|Declaration|Loop\"(path) {\n    path.skip();\n  },\n  Scope(path, state) {\n    if (path.isFunctionParent()) path.skip();\n\n    const { bindings } = path.scope;\n    for (const name of Object.keys(bindings)) {\n      const binding = bindings[name];\n      if (\n        binding.kind === \"let\" ||\n        binding.kind === \"const\" ||\n        binding.kind === \"hoisted\"\n      ) {\n        state.blockScoped.push(binding);\n      }\n    }\n  },\n};\n\nexport function getLoopBodyBindings(loopPath: NodePath<t.Loop>) {\n  const state: LoopBodyBindingsState = { blockScoped: [] };\n  loopPath.traverse(collectLoopBodyBindingsVisitor, state);\n  return state.blockScoped;\n}\n\nexport function getUsageInBody(\n  binding: Scope.Binding,\n  loopPath: NodePath<t.Loop>,\n) {\n  // UpdateExpressions are counted both as a reference and a mutation,\n  // so we need to de-duplicate them.\n  const seen = new WeakSet<t.Node>();\n\n  let capturedInClosure = false;\n\n  const constantViolations = filterMap(binding.constantViolations, path => {\n    const { inBody, inClosure } = relativeLoopLocation(path, loopPath);\n    if (!inBody) return null;\n    capturedInClosure ||= inClosure;\n\n    const id = path.isUpdateExpression()\n      ? path.get(\"argument\")\n      : path.isAssignmentExpression()\n        ? path.get(\"left\")\n        : null;\n    if (id) seen.add(id.node);\n    return id as NodePath<t.Identifier> | null;\n  });\n\n  const references = filterMap(binding.referencePaths, path => {\n    if (seen.has(path.node)) return null;\n\n    const { inBody, inClosure } = relativeLoopLocation(path, loopPath);\n    if (!inBody) return null;\n    capturedInClosure ||= inClosure;\n\n    return path as NodePath<t.Identifier>;\n  });\n\n  return {\n    capturedInClosure,\n    hasConstantViolations: constantViolations.length > 0,\n    usages: references.concat(constantViolations),\n  };\n}\n\nfunction relativeLoopLocation(path: NodePath, loopPath: NodePath<t.Loop>) {\n  const bodyPath = loopPath.get(\"body\");\n  let inClosure = false;\n\n  for (let currPath = path; currPath; currPath = currPath.parentPath) {\n    if (currPath.isFunction() || currPath.isClass() || currPath.isMethod()) {\n      inClosure = true;\n    }\n    if (currPath === bodyPath) {\n      return { inBody: true, inClosure };\n    } else if (currPath === loopPath) {\n      return { inBody: false, inClosure };\n    }\n  }\n\n  throw new Error(\n    \"Internal Babel error: path is not in loop. Please report this as a bug.\",\n  );\n}\n\ninterface CompletionsAndVarsState {\n  breaksContinues: NodePath<t.BreakStatement | t.ContinueStatement>[];\n  returns: NodePath<t.ReturnStatement>[];\n  labelsStack: string[];\n  labellessContinueTargets: number;\n  labellessBreakTargets: number;\n\n  vars: NodePath<t.VariableDeclaration>[];\n  loopNode: t.Loop;\n}\n\nconst collectCompletionsAndVarsVisitor: Visitor<CompletionsAndVarsState> = {\n  Function(path) {\n    path.skip();\n  },\n  LabeledStatement: {\n    enter({ node }, state) {\n      state.labelsStack.push(node.label.name);\n    },\n    exit({ node }, state) {\n      const popped = state.labelsStack.pop();\n      if (popped !== node.label.name) {\n        throw new Error(\"Assertion failure. Please report this bug to Babel.\");\n      }\n    },\n  },\n  Loop: {\n    enter(_, state) {\n      state.labellessContinueTargets++;\n      state.labellessBreakTargets++;\n    },\n    exit(_, state) {\n      state.labellessContinueTargets--;\n      state.labellessBreakTargets--;\n    },\n  },\n  SwitchStatement: {\n    enter(_, state) {\n      state.labellessBreakTargets++;\n    },\n    exit(_, state) {\n      state.labellessBreakTargets--;\n    },\n  },\n  \"BreakStatement|ContinueStatement\"(\n    path: NodePath<t.BreakStatement | t.ContinueStatement>,\n    state,\n  ) {\n    const { label } = path.node;\n    if (label) {\n      if (state.labelsStack.includes(label.name)) return;\n    } else if (\n      path.isBreakStatement()\n        ? state.labellessBreakTargets > 0\n        : state.labellessContinueTargets > 0\n    ) {\n      return;\n    }\n    state.breaksContinues.push(path);\n  },\n  ReturnStatement(path, state) {\n    state.returns.push(path);\n  },\n  VariableDeclaration(path, state) {\n    if (path.parent === state.loopNode && isVarInLoopHead(path)) return;\n    if (path.node.kind === \"var\") state.vars.push(path);\n  },\n};\n\nexport function wrapLoopBody(\n  loopPath: NodePath<t.Loop>,\n  captured: string[],\n  updatedBindingsUsages: Map<string, NodePath<t.Identifier>[]>,\n) {\n  const loopNode = loopPath.node;\n  const state: CompletionsAndVarsState = {\n    breaksContinues: [],\n    returns: [],\n    labelsStack: [],\n    labellessBreakTargets: 0,\n    labellessContinueTargets: 0,\n    vars: [],\n    loopNode,\n  };\n  loopPath.traverse(collectCompletionsAndVarsVisitor, state);\n\n  const callArgs = [];\n  const closureParams = [];\n  const updater = [];\n  for (const [name, updatedUsage] of updatedBindingsUsages) {\n    callArgs.push(t.identifier(name));\n\n    const innerName = loopPath.scope.generateUid(name);\n    closureParams.push(t.identifier(innerName));\n    updater.push(\n      t.assignmentExpression(\"=\", t.identifier(name), t.identifier(innerName)),\n    );\n    for (const path of updatedUsage) path.replaceWith(t.identifier(innerName));\n  }\n  for (const name of captured) {\n    if (updatedBindingsUsages.has(name)) continue; // already injected\n    callArgs.push(t.identifier(name));\n    closureParams.push(t.identifier(name));\n  }\n\n  const id = loopPath.scope.generateUid(\"loop\");\n  const fn = t.functionExpression(\n    null,\n    closureParams,\n    t.toBlock(loopNode.body),\n  );\n  let call: t.Expression = t.callExpression(t.identifier(id), callArgs);\n\n  const fnParent = loopPath.findParent(p => p.isFunction());\n  if (fnParent) {\n    const { async, generator } = fnParent.node as t.Function;\n    fn.async = async;\n    fn.generator = generator;\n    if (generator) call = t.yieldExpression(call, true);\n    else if (async) call = t.awaitExpression(call);\n  }\n\n  const updaterNode =\n    updater.length > 0\n      ? t.expressionStatement(t.sequenceExpression(updater))\n      : null;\n  if (updaterNode) fn.body.body.push(updaterNode);\n\n  // NOTE: Calling .insertBefore on the loop path might cause the\n  // loop to be moved in the AST. For example, in\n  //   if (true) for (let x of y) ...\n  // .insertBefore will replace the loop with a block:\n  //   if (true) { var _loop = ...; for (let x of y) ... }\n  // All subsequent operations in this function on the loop node\n  // must not assume that loopPath still represents the loop.\n  // TODO: Consider using a function declaration\n  const [varPath] = loopPath.insertBefore(\n    t.variableDeclaration(\"var\", [t.variableDeclarator(t.identifier(id), fn)]),\n  ) as [NodePath<t.VariableDeclaration>];\n\n  const bodyStmts: t.Statement[] = [];\n\n  const varNames: string[] = [];\n  for (const varPath of state.vars) {\n    const assign = [];\n    for (const decl of varPath.node.declarations) {\n      varNames.push(...Object.keys(t.getBindingIdentifiers(decl.id)));\n      if (decl.init) {\n        assign.push(t.assignmentExpression(\"=\", decl.id, decl.init));\n      } else if (t.isForXStatement(varPath.parent, { left: varPath.node })) {\n        assign.push(decl.id as t.Identifier);\n      }\n    }\n    if (assign.length > 0) {\n      const replacement: t.Node =\n        assign.length === 1 ? assign[0] : t.sequenceExpression(assign);\n      varPath.replaceWith(replacement);\n    } else {\n      varPath.remove();\n    }\n  }\n  if (varNames.length) {\n    varPath.pushContainer(\n      \"declarations\",\n      varNames.map(name => t.variableDeclarator(t.identifier(name))),\n    );\n  }\n\n  const labelNum = state.breaksContinues.length;\n  const returnNum = state.returns.length;\n  if (labelNum + returnNum === 0) {\n    bodyStmts.push(t.expressionStatement(call));\n  } else if (labelNum === 1 && returnNum === 0) {\n    for (const path of state.breaksContinues) {\n      const { node } = path;\n      const { type, label } = node;\n      let name = type === \"BreakStatement\" ? \"break\" : \"continue\";\n      if (label) name += \" \" + label.name;\n      path.replaceWith(\n        t.addComment(\n          t.returnStatement(t.numericLiteral(1)),\n          \"trailing\",\n          \" \" + name,\n          true,\n        ),\n      );\n      if (updaterNode) path.insertBefore(t.cloneNode(updaterNode));\n\n      bodyStmts.push(\n        template.statement.ast`\n        if (${call}) ${node}\n      `,\n      );\n    }\n  } else {\n    const completionId = loopPath.scope.generateUid(\"ret\");\n\n    if (varPath.isVariableDeclaration()) {\n      varPath.pushContainer(\"declarations\", [\n        t.variableDeclarator(t.identifier(completionId)),\n      ]);\n      bodyStmts.push(\n        t.expressionStatement(\n          t.assignmentExpression(\"=\", t.identifier(completionId), call),\n        ),\n      );\n    } else {\n      bodyStmts.push(\n        t.variableDeclaration(\"var\", [\n          t.variableDeclarator(t.identifier(completionId), call),\n        ]),\n      );\n    }\n\n    const injected: string[] = [];\n    for (const path of state.breaksContinues) {\n      const { node } = path;\n      const { type, label } = node;\n      let name = type === \"BreakStatement\" ? \"break\" : \"continue\";\n      if (label) name += \" \" + label.name;\n\n      let i = injected.indexOf(name);\n      const hasInjected = i !== -1;\n      if (!hasInjected) {\n        injected.push(name);\n        i = injected.length - 1;\n      }\n\n      path.replaceWith(\n        t.addComment(\n          t.returnStatement(t.numericLiteral(i)),\n          \"trailing\",\n          \" \" + name,\n          true,\n        ),\n      );\n      if (updaterNode) path.insertBefore(t.cloneNode(updaterNode));\n\n      if (hasInjected) continue;\n\n      bodyStmts.push(\n        template.statement.ast`\n        if (${t.identifier(completionId)} === ${t.numericLiteral(i)}) ${node}\n      `,\n      );\n    }\n\n    if (returnNum) {\n      for (const path of state.returns) {\n        const arg = path.node.argument || path.scope.buildUndefinedNode();\n        path.replaceWith(\n          template.statement.ast`\n          return { v: ${arg} };\n        `,\n        );\n      }\n\n      bodyStmts.push(\n        template.statement.ast`\n          if (${t.identifier(completionId)}) return ${t.identifier(\n            completionId,\n          )}.v;\n        `,\n      );\n    }\n  }\n\n  loopNode.body = t.blockStatement(bodyStmts);\n\n  return varPath;\n}\n\nexport function isVarInLoopHead(path: NodePath<t.VariableDeclaration>) {\n  if (t.isForStatement(path.parent)) return path.key === \"init\";\n  if (t.isForXStatement(path.parent)) return path.key === \"left\";\n  return false;\n}\n\nfunction filterMap<T, U extends object>(list: T[], fn: (item: T) => U | null) {\n  const result: U[] = [];\n  for (const item of list) {\n    const mapped = fn(item);\n    if (mapped) result.push(mapped);\n  }\n  return result;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/validation.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/validation.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/validation.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,133 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.validateUsage = validateUsage;
+var _core = require("@babel/core");
+function validateUsage(path, state, tdzEnabled) {
+  const dynamicTDZNames = [];
+  for (const name of Object.keys(path.getBindingIdentifiers())) {
+    const binding = path.scope.getBinding(name);
+    if (!binding) continue;
+    if (tdzEnabled) {
+      if (injectTDZChecks(binding, state)) dynamicTDZNames.push(name);
+    }
+    if (path.node.kind === "const") {
+      disallowConstantViolations(name, binding, state);
+    }
+  }
+  return dynamicTDZNames;
+}
+function disallowConstantViolations(name, binding, state) {
+  for (const violation of binding.constantViolations) {
+    const readOnlyError = state.addHelper("readOnlyError");
+    const throwNode = _core.types.callExpression(readOnlyError, [_core.types.stringLiteral(name)]);
+    if (violation.isAssignmentExpression()) {
+      const {
+        operator,
+        left,
+        right
+      } = violation.node;
+      if (operator === "=") {
+        const exprs = [right];
+        exprs.push(throwNode);
+        violation.replaceWith(_core.types.sequenceExpression(exprs));
+      } else if (["&&=", "||=", "??="].includes(operator)) {
+        violation.replaceWith(_core.types.logicalExpression(operator.slice(0, -1), left, _core.types.sequenceExpression([right, throwNode])));
+      } else {
+        violation.replaceWith(_core.types.sequenceExpression([_core.types.binaryExpression(operator.slice(0, -1), left, right), throwNode]));
+      }
+    } else if (violation.isUpdateExpression()) {
+      violation.replaceWith(_core.types.sequenceExpression([_core.types.unaryExpression("+", violation.get("argument").node), throwNode]));
+    } else if (violation.isForXStatement()) {
+      violation.ensureBlock();
+      violation.get("left").replaceWith(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(violation.scope.generateUidIdentifier(name))]));
+      violation.node.body.body.unshift(_core.types.expressionStatement(throwNode));
+    }
+  }
+}
+function getTDZStatus(refPath, bindingPath) {
+  const executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);
+  if (executionStatus === "before") {
+    return "outside";
+  } else if (executionStatus === "after") {
+    return "inside";
+  } else {
+    return "maybe";
+  }
+}
+const skipTDZChecks = new WeakSet();
+function buildTDZAssert(status, node, state) {
+  if (status === "maybe") {
+    const clone = _core.types.cloneNode(node);
+    skipTDZChecks.add(clone);
+    return _core.types.callExpression(state.addHelper("temporalRef"), [clone, _core.types.stringLiteral(node.name)]);
+  } else {
+    return _core.types.callExpression(state.addHelper("tdz"), [_core.types.stringLiteral(node.name)]);
+  }
+}
+function getTDZReplacement(path, state, id = path.node) {
+  var _path$scope$getBindin;
+  if (skipTDZChecks.has(id)) return;
+  skipTDZChecks.add(id);
+  const bindingPath = (_path$scope$getBindin = path.scope.getBinding(id.name)) == null ? void 0 : _path$scope$getBindin.path;
+  if (!bindingPath || bindingPath.isFunctionDeclaration()) return;
+  const status = getTDZStatus(path, bindingPath);
+  if (status === "outside") return;
+  if (status === "maybe") {
+    bindingPath.parent._tdzThis = true;
+  }
+  return {
+    status,
+    node: buildTDZAssert(status, id, state)
+  };
+}
+function injectTDZChecks(binding, state) {
+  const allUsages = new Set(binding.referencePaths);
+  binding.constantViolations.forEach(allUsages.add, allUsages);
+  let dynamicTdz = false;
+  for (const path of binding.constantViolations) {
+    const {
+      node
+    } = path;
+    if (skipTDZChecks.has(node)) continue;
+    skipTDZChecks.add(node);
+    if (path.isUpdateExpression()) {
+      const arg = path.get("argument");
+      const replacement = getTDZReplacement(path, state, arg.node);
+      if (!replacement) continue;
+      if (replacement.status === "maybe") {
+        dynamicTdz = true;
+        path.insertBefore(replacement.node);
+      } else {
+        path.replaceWith(replacement.node);
+      }
+    } else if (path.isAssignmentExpression()) {
+      const nodes = [];
+      const ids = path.getBindingIdentifiers();
+      for (const name of Object.keys(ids)) {
+        const replacement = getTDZReplacement(path, state, ids[name]);
+        if (replacement) {
+          nodes.push(_core.types.expressionStatement(replacement.node));
+          if (replacement.status === "inside") break;
+          if (replacement.status === "maybe") dynamicTdz = true;
+        }
+      }
+      if (nodes.length > 0) path.insertBefore(nodes);
+    }
+  }
+  for (const path of binding.referencePaths) {
+    if (path.parentPath.isUpdateExpression()) continue;
+    if (path.parentPath.isFor({
+      left: path.node
+    })) continue;
+    const replacement = getTDZReplacement(path, state);
+    if (!replacement) continue;
+    if (replacement.status === "maybe") dynamicTdz = true;
+    path.replaceWith(replacement.node);
+  }
+  return dynamicTdz;
+}
+
+//# sourceMappingURL=validation.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/validation.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/validation.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/lib/validation.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","validateUsage","path","state","tdzEnabled","dynamicTDZNames","name","Object","keys","getBindingIdentifiers","binding","scope","getBinding","injectTDZChecks","push","node","kind","disallowConstantViolations","violation","constantViolations","readOnlyError","addHelper","throwNode","t","callExpression","stringLiteral","isAssignmentExpression","operator","left","right","exprs","replaceWith","sequenceExpression","includes","logicalExpression","slice","binaryExpression","isUpdateExpression","unaryExpression","get","isForXStatement","ensureBlock","variableDeclaration","variableDeclarator","generateUidIdentifier","body","unshift","expressionStatement","getTDZStatus","refPath","bindingPath","executionStatus","_guessExecutionStatusRelativeTo","skipTDZChecks","WeakSet","buildTDZAssert","status","clone","cloneNode","add","getTDZReplacement","id","_path$scope$getBindin","has","isFunctionDeclaration","parent","_tdzThis","allUsages","Set","referencePaths","forEach","dynamicTdz","arg","replacement","insertBefore","nodes","ids","length","parentPath","isFor"],"sources":["../src/validation.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { Scope, NodePath, PluginPass } from \"@babel/core\";\n\nexport function validateUsage(\n  path: NodePath<t.VariableDeclaration>,\n  state: PluginPass,\n  tdzEnabled: boolean,\n) {\n  const dynamicTDZNames = [];\n\n  for (const name of Object.keys(path.getBindingIdentifiers())) {\n    const binding = path.scope.getBinding(name);\n    // binding may be null. ref: https://github.com/babel/babel/issues/15300\n    if (!binding) continue;\n    if (tdzEnabled) {\n      if (injectTDZChecks(binding, state)) dynamicTDZNames.push(name);\n    }\n    if (path.node.kind === \"const\") {\n      disallowConstantViolations(name, binding, state);\n    }\n  }\n\n  return dynamicTDZNames;\n}\n\nfunction disallowConstantViolations(\n  name: string,\n  binding: Scope.Binding,\n  state: PluginPass,\n) {\n  for (const violation of binding.constantViolations) {\n    const readOnlyError = state.addHelper(\"readOnlyError\");\n    const throwNode = t.callExpression(readOnlyError, [t.stringLiteral(name)]);\n\n    if (violation.isAssignmentExpression()) {\n      const { operator, left, right } = violation.node;\n      if (operator === \"=\") {\n        const exprs = [right];\n        exprs.push(throwNode);\n        violation.replaceWith(t.sequenceExpression(exprs));\n      } else if ([\"&&=\", \"||=\", \"??=\"].includes(operator)) {\n        violation.replaceWith(\n          t.logicalExpression(\n            // @ts-expect-error todo: give a better type to operator\n            operator.slice(0, -1),\n            left,\n            t.sequenceExpression([right, throwNode]),\n          ),\n        );\n      } else {\n        violation.replaceWith(\n          t.sequenceExpression([\n            t.binaryExpression(\n              // @ts-expect-error todo: give a better type to operator\n              operator.slice(0, -1),\n              left,\n              right,\n            ),\n            throwNode,\n          ]),\n        );\n      }\n    } else if (violation.isUpdateExpression()) {\n      violation.replaceWith(\n        t.sequenceExpression([\n          t.unaryExpression(\"+\", violation.get(\"argument\").node),\n          throwNode,\n        ]),\n      );\n    } else if (violation.isForXStatement()) {\n      violation.ensureBlock();\n      violation\n        .get(\"left\")\n        .replaceWith(\n          t.variableDeclaration(\"var\", [\n            t.variableDeclarator(violation.scope.generateUidIdentifier(name)),\n          ]),\n        );\n      (violation.node.body as t.BlockStatement).body.unshift(\n        t.expressionStatement(throwNode),\n      );\n    }\n  }\n}\n\nfunction getTDZStatus(refPath: NodePath, bindingPath: NodePath) {\n  const executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);\n\n  if (executionStatus === \"before\") {\n    return \"outside\";\n  } else if (executionStatus === \"after\") {\n    return \"inside\";\n  } else {\n    return \"maybe\";\n  }\n}\n\nconst skipTDZChecks = new WeakSet();\n\nfunction buildTDZAssert(\n  status: \"maybe\" | \"inside\",\n  node: t.Identifier | t.JSXIdentifier,\n  state: PluginPass,\n) {\n  if (status === \"maybe\") {\n    const clone = t.cloneNode(node);\n    skipTDZChecks.add(clone);\n    return t.callExpression(state.addHelper(\"temporalRef\"), [\n      // @ts-expect-error Fixme: we may need to handle JSXIdentifier\n      clone,\n      t.stringLiteral(node.name),\n    ]);\n  } else {\n    return t.callExpression(state.addHelper(\"tdz\"), [\n      t.stringLiteral(node.name),\n    ]);\n  }\n}\n\ntype TDZReplacement = { status: \"maybe\" | \"inside\"; node: t.Expression };\nfunction getTDZReplacement(\n  path: NodePath<t.Identifier | t.JSXIdentifier>,\n  state: PluginPass,\n): TDZReplacement | undefined;\nfunction getTDZReplacement(\n  path: NodePath,\n  state: PluginPass,\n  id: t.Identifier | t.JSXIdentifier,\n): TDZReplacement | undefined;\nfunction getTDZReplacement(\n  path: NodePath,\n  state: PluginPass,\n  id: t.Identifier | t.JSXIdentifier = path.node as any,\n): TDZReplacement | undefined {\n  if (skipTDZChecks.has(id)) return;\n  skipTDZChecks.add(id);\n\n  const bindingPath = path.scope.getBinding(id.name)?.path;\n\n  if (!bindingPath || bindingPath.isFunctionDeclaration()) return;\n\n  const status = getTDZStatus(path, bindingPath);\n  if (status === \"outside\") return;\n\n  if (status === \"maybe\") {\n    // add tdzThis to parent variable declarator so it's exploded\n    // @ts-expect-error todo(flow->ts): avoid mutations\n    bindingPath.parent._tdzThis = true;\n  }\n\n  return { status, node: buildTDZAssert(status, id, state) };\n}\n\nfunction injectTDZChecks(binding: Scope.Binding, state: PluginPass) {\n  const allUsages = new Set(binding.referencePaths);\n  binding.constantViolations.forEach(allUsages.add, allUsages);\n\n  let dynamicTdz = false;\n\n  for (const path of binding.constantViolations) {\n    const { node } = path;\n    if (skipTDZChecks.has(node)) continue;\n    skipTDZChecks.add(node);\n\n    if (path.isUpdateExpression()) {\n      // arg is an identifier referencing the current binding\n      const arg = path.get(\"argument\") as NodePath<t.Identifier>;\n\n      const replacement = getTDZReplacement(path, state, arg.node);\n      if (!replacement) continue;\n\n      if (replacement.status === \"maybe\") {\n        dynamicTdz = true;\n        path.insertBefore(replacement.node);\n      } else {\n        path.replaceWith(replacement.node);\n      }\n    } else if (path.isAssignmentExpression()) {\n      const nodes = [];\n      const ids = process.env.BABEL_8_BREAKING\n        ? path.getAssignmentIdentifiers()\n        : path.getBindingIdentifiers();\n\n      for (const name of Object.keys(ids)) {\n        const replacement = getTDZReplacement(path, state, ids[name]);\n        if (replacement) {\n          nodes.push(t.expressionStatement(replacement.node));\n          if (replacement.status === \"inside\") break;\n          if (replacement.status === \"maybe\") dynamicTdz = true;\n        }\n      }\n\n      if (nodes.length > 0) path.insertBefore(nodes);\n    }\n  }\n\n  for (const path of binding.referencePaths as NodePath<t.Identifier>[]) {\n    if (path.parentPath.isUpdateExpression()) continue;\n    // It will be handled after transforming the loop\n    if (path.parentPath.isFor({ left: path.node })) continue;\n\n    const replacement = getTDZReplacement(path, state);\n    if (!replacement) continue;\n    if (replacement.status === \"maybe\") dynamicTdz = true;\n\n    path.replaceWith(replacement.node);\n  }\n\n  return dynamicTdz;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-block-scoping/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-block-scoping",
+  "version": "7.25.9",
+  "description": "Compile ES2015 block scoping (const and let) to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-block-scoping"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-block-scoping",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-properties/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-properties/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-properties/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-properties/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-properties/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-properties/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-class-properties
+
+> This plugin transforms static class properties as well as properties declared with the property initializer syntax
+
+See our website [@babel/plugin-transform-class-properties](https://babeljs.io/docs/babel-plugin-transform-class-properties) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-class-properties
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-class-properties --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-properties/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-properties/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-properties/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  api.assertVersion(7);
+  return (0, _helperCreateClassFeaturesPlugin.createClassFeaturePlugin)({
+    name: "transform-class-properties",
+    api,
+    feature: _helperCreateClassFeaturesPlugin.FEATURES.fields,
+    loose: options.loose,
+    manipulateOptions(opts, parserOpts) {
+      {
+        parserOpts.plugins.push("classProperties", "classPrivateProperties");
+      }
+    }
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-properties/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-properties/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-properties/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperCreateClassFeaturesPlugin","_default","exports","default","declare","api","options","assertVersion","createClassFeaturePlugin","name","feature","FEATURES","fields","loose","manipulateOptions","opts","parserOpts","plugins","push"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  createClassFeaturePlugin,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createClassFeaturePlugin({\n    name: \"transform-class-properties\",\n\n    api,\n    feature: FEATURES.fields,\n    loose: options.loose,\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-ignore(Babel 7 vs Babel 8) These plugins have been removed\n        parserOpts.plugins.push(\"classProperties\", \"classPrivateProperties\");\n      }\n    },\n  });\n});\n"],"mappings":";;;;;;AAEA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,gCAAA,GAAAD,OAAA;AAGoD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMrC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAChDD,GAAG,CAACE,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO,IAAAC,yDAAwB,EAAC;IAC9BC,IAAI,EAAE,4BAA4B;IAElCJ,GAAG;IACHK,OAAO,EAAEC,yCAAQ,CAACC,MAAM;IACxBC,KAAK,EAAEP,OAAO,CAACO,KAAK;IAEpBC,iBAAiBA,CAACC,IAAI,EAAEC,UAAU,EAAE;MACC;QAEjCA,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;MACtE;IACF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-properties/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-properties/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-properties/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-class-properties",
+  "version": "7.25.9",
+  "description": "This plugin transforms static class properties as well as properties declared with the property initializer syntax",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-class-properties"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-class-properties",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-create-class-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-class-static-block
+
+> Transform class static blocks
+
+See our website [@babel/plugin-transform-class-static-block](https://babeljs.io/docs/babel-plugin-transform-class-static-block) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-class-static-block
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-class-static-block --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,63 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");
+function generateUid(scope, denyList) {
+  const name = "";
+  let uid;
+  let i = 1;
+  do {
+    uid = `_${name}`;
+    if (i > 1) uid += i;
+    i++;
+  } while (denyList.has(uid));
+  return uid;
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)(({
+  types: t,
+  template,
+  assertVersion
+}) => {
+  assertVersion("^7.12.0 || >8.0.0-alpha <8.0.0-beta");
+  return {
+    name: "transform-class-static-block",
+    manipulateOptions: (_, parser) => parser.plugins.push("classStaticBlock"),
+    pre() {
+      (0, _helperCreateClassFeaturesPlugin.enableFeature)(this.file, _helperCreateClassFeaturesPlugin.FEATURES.staticBlocks, false);
+    },
+    visitor: {
+      ClassBody(classBody) {
+        const {
+          scope
+        } = classBody;
+        const privateNames = new Set();
+        const body = classBody.get("body");
+        for (const path of body) {
+          if (path.isPrivate()) {
+            privateNames.add(path.get("key.id").node.name);
+          }
+        }
+        for (const path of body) {
+          if (!path.isStaticBlock()) continue;
+          const staticBlockPrivateId = generateUid(scope, privateNames);
+          privateNames.add(staticBlockPrivateId);
+          const staticBlockRef = t.privateName(t.identifier(staticBlockPrivateId));
+          let replacement;
+          const blockBody = path.node.body;
+          if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {
+            replacement = t.inheritsComments(blockBody[0].expression, blockBody[0]);
+          } else {
+            replacement = template.expression.ast`(() => { ${blockBody} })()`;
+          }
+          path.replaceWith(t.classPrivateProperty(staticBlockRef, replacement, [], true));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperCreateClassFeaturesPlugin","generateUid","scope","denyList","name","uid","i","has","_default","exports","default","declare","types","t","template","assertVersion","manipulateOptions","_","parser","plugins","push","pre","enableFeature","file","FEATURES","staticBlocks","visitor","ClassBody","classBody","privateNames","Set","body","get","path","isPrivate","add","node","isStaticBlock","staticBlockPrivateId","staticBlockRef","privateName","identifier","replacement","blockBody","length","isExpressionStatement","inheritsComments","expression","ast","replaceWith","classPrivateProperty"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { Scope } from \"@babel/core\";\n\nimport {\n  enableFeature,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\n\n/**\n * Generate a uid that is not in `denyList`\n *\n * @param {Scope} scope\n * @param {Set<string>} denyList a deny list that the generated uid should avoid\n * @returns\n */\nfunction generateUid(scope: Scope, denyList: Set<string>) {\n  const name = \"\";\n  let uid;\n  let i = 1;\n  do {\n    uid = `_${name}`;\n    if (i > 1) uid += i;\n    i++;\n  } while (denyList.has(uid));\n  return uid;\n}\n\nexport default declare(({ types: t, template, assertVersion }) => {\n  assertVersion(REQUIRED_VERSION(\"^7.12.0\"));\n\n  return {\n    name: \"transform-class-static-block\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"classStaticBlock\"),\n\n    pre() {\n      // Enable this in @babel/helper-create-class-features-plugin, so that it\n      // can be handled by the private fields and methods transform.\n      enableFeature(this.file, FEATURES.staticBlocks, /* loose */ false);\n    },\n\n    visitor: {\n      // Run on ClassBody and not on class so that if @babel/helper-create-class-features-plugin\n      // is enabled it can generate optimized output without passing from the intermediate\n      // private fields representation.\n      ClassBody(classBody) {\n        const { scope } = classBody;\n        const privateNames = new Set<string>();\n        const body = classBody.get(\"body\");\n        for (const path of body) {\n          if (path.isPrivate()) {\n            privateNames.add(path.get(\"key.id\").node.name);\n          }\n        }\n        for (const path of body) {\n          if (!path.isStaticBlock()) continue;\n          const staticBlockPrivateId = generateUid(scope, privateNames);\n          privateNames.add(staticBlockPrivateId);\n          const staticBlockRef = t.privateName(\n            t.identifier(staticBlockPrivateId),\n          );\n\n          let replacement;\n          const blockBody = path.node.body;\n          // We special-case the single expression case to avoid the iife, since\n          // it's common.\n          if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n            replacement = t.inheritsComments(\n              blockBody[0].expression,\n              blockBody[0],\n            );\n          } else {\n            replacement = template.expression.ast`(() => { ${blockBody} })()`;\n          }\n\n          path.replaceWith(\n            t.classPrivateProperty(\n              staticBlockRef,\n              replacement,\n              [],\n              /* static */ true,\n            ),\n          );\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAGA,IAAAC,gCAAA,GAAAD,OAAA;AAYA,SAASE,WAAWA,CAACC,KAAY,EAAEC,QAAqB,EAAE;EACxD,MAAMC,IAAI,GAAG,EAAE;EACf,IAAIC,GAAG;EACP,IAAIC,CAAC,GAAG,CAAC;EACT,GAAG;IACDD,GAAG,GAAG,IAAID,IAAI,EAAE;IAChB,IAAIE,CAAC,GAAG,CAAC,EAAED,GAAG,IAAIC,CAAC;IACnBA,CAAC,EAAE;EACL,CAAC,QAAQH,QAAQ,CAACI,GAAG,CAACF,GAAG,CAAC;EAC1B,OAAOA,GAAG;AACZ;AAAC,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,0BAAO,EAAC,CAAC;EAAEC,KAAK,EAAEC,CAAC;EAAEC,QAAQ;EAAEC;AAAc,CAAC,KAAK;EAChEA,aAAa,sCAA4B,CAAC;EAE1C,OAAO;IACLX,IAAI,EAAE,8BAA8B;IACpCY,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,kBAAkB,CAAC;IAE1DC,GAAGA,CAAA,EAAG;MAGJ,IAAAC,8CAAa,EAAC,IAAI,CAACC,IAAI,EAAEC,yCAAQ,CAACC,YAAY,EAAc,KAAK,CAAC;IACpE,CAAC;IAEDC,OAAO,EAAE;MAIPC,SAASA,CAACC,SAAS,EAAE;QACnB,MAAM;UAAE1B;QAAM,CAAC,GAAG0B,SAAS;QAC3B,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAAS,CAAC;QACtC,MAAMC,IAAI,GAAGH,SAAS,CAACI,GAAG,CAAC,MAAM,CAAC;QAClC,KAAK,MAAMC,IAAI,IAAIF,IAAI,EAAE;UACvB,IAAIE,IAAI,CAACC,SAAS,CAAC,CAAC,EAAE;YACpBL,YAAY,CAACM,GAAG,CAACF,IAAI,CAACD,GAAG,CAAC,QAAQ,CAAC,CAACI,IAAI,CAAChC,IAAI,CAAC;UAChD;QACF;QACA,KAAK,MAAM6B,IAAI,IAAIF,IAAI,EAAE;UACvB,IAAI,CAACE,IAAI,CAACI,aAAa,CAAC,CAAC,EAAE;UAC3B,MAAMC,oBAAoB,GAAGrC,WAAW,CAACC,KAAK,EAAE2B,YAAY,CAAC;UAC7DA,YAAY,CAACM,GAAG,CAACG,oBAAoB,CAAC;UACtC,MAAMC,cAAc,GAAG1B,CAAC,CAAC2B,WAAW,CAClC3B,CAAC,CAAC4B,UAAU,CAACH,oBAAoB,CACnC,CAAC;UAED,IAAII,WAAW;UACf,MAAMC,SAAS,GAAGV,IAAI,CAACG,IAAI,CAACL,IAAI;UAGhC,IAAIY,SAAS,CAACC,MAAM,KAAK,CAAC,IAAI/B,CAAC,CAACgC,qBAAqB,CAACF,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACnED,WAAW,GAAG7B,CAAC,CAACiC,gBAAgB,CAC9BH,SAAS,CAAC,CAAC,CAAC,CAACI,UAAU,EACvBJ,SAAS,CAAC,CAAC,CACb,CAAC;UACH,CAAC,MAAM;YACLD,WAAW,GAAG5B,QAAQ,CAACiC,UAAU,CAACC,GAAG,YAAYL,SAAS,OAAO;UACnE;UAEAV,IAAI,CAACgB,WAAW,CACdpC,CAAC,CAACqC,oBAAoB,CACpBX,cAAc,EACdG,WAAW,EACX,EAAE,EACW,IACf,CACF,CAAC;QACH;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-class-static-block/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,46 @@
+{
+  "name": "@babel/plugin-transform-class-static-block",
+  "version": "7.26.0",
+  "description": "Transform class static blocks",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-class-static-block"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-create-class-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.12.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-external-helpers": "^7.25.9",
+    "@babel/plugin-transform-class-properties": "^7.25.9",
+    "@babel/traverse": "^7.25.9",
+    "@babel/types": "^7.26.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-class-static-block",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-classes
+
+> Compile ES2015 classes to ES5
+
+See our website [@babel/plugin-transform-classes](https://babeljs.io/docs/babel-plugin-transform-classes) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-classes
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-classes --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperCompilationTargets = require("@babel/helper-compilation-targets");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _core = require("@babel/core");
+var _globals = require("globals");
+var _transformClass = require("./transformClass.js");
+const getBuiltinClasses = category => Object.keys(_globals[category]).filter(name => /^[A-Z]/.test(name));
+const builtinClasses = new Set([...getBuiltinClasses("builtin"), ...getBuiltinClasses("browser")]);
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
+  api.assertVersion(7);
+  const {
+    loose = false
+  } = options;
+  const setClassMethods = (_api$assumption = api.assumption("setClassMethods")) != null ? _api$assumption : loose;
+  const constantSuper = (_api$assumption2 = api.assumption("constantSuper")) != null ? _api$assumption2 : loose;
+  const superIsCallableConstructor = (_api$assumption3 = api.assumption("superIsCallableConstructor")) != null ? _api$assumption3 : loose;
+  const noClassCalls = (_api$assumption4 = api.assumption("noClassCalls")) != null ? _api$assumption4 : loose;
+  const supportUnicodeId = !(0, _helperCompilationTargets.isRequired)("transform-unicode-escapes", api.targets());
+  const VISITED = new WeakSet();
+  return {
+    name: "transform-classes",
+    visitor: {
+      ExportDefaultDeclaration(path) {
+        if (!path.get("declaration").isClassDeclaration()) return;
+        {
+          var _path$splitExportDecl;
+          (_path$splitExportDecl = path.splitExportDeclaration) != null ? _path$splitExportDecl : path.splitExportDeclaration = require("@babel/traverse").NodePath.prototype.splitExportDeclaration;
+        }
+        path.splitExportDeclaration();
+      },
+      ClassDeclaration(path) {
+        const {
+          node
+        } = path;
+        const ref = node.id ? _core.types.cloneNode(node.id) : path.scope.generateUidIdentifier("class");
+        path.replaceWith(_core.types.variableDeclaration("let", [_core.types.variableDeclarator(ref, _core.types.toExpression(node))]));
+      },
+      ClassExpression(path, state) {
+        const {
+          node
+        } = path;
+        if (VISITED.has(node)) return;
+        {
+          var _path$ensureFunctionN;
+          (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+        }
+        const replacement = path.ensureFunctionName(supportUnicodeId);
+        if (replacement && replacement.node !== node) return;
+        VISITED.add(node);
+        const [replacedPath] = path.replaceWith((0, _transformClass.default)(path, state.file, builtinClasses, loose, {
+          setClassMethods,
+          constantSuper,
+          superIsCallableConstructor,
+          noClassCalls
+        }, supportUnicodeId));
+        if (replacedPath.isCallExpression()) {
+          (0, _helperAnnotateAsPure.default)(replacedPath);
+          const callee = replacedPath.get("callee");
+          if (callee.isArrowFunctionExpression()) {
+            callee.arrowFunctionToExpression();
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperCompilationTargets","_helperAnnotateAsPure","_core","_globals","_transformClass","getBuiltinClasses","category","Object","keys","globals","filter","name","test","builtinClasses","Set","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","_api$assumption3","_api$assumption4","assertVersion","loose","setClassMethods","assumption","constantSuper","superIsCallableConstructor","noClassCalls","supportUnicodeId","isRequired","targets","VISITED","WeakSet","visitor","ExportDefaultDeclaration","path","get","isClassDeclaration","_path$splitExportDecl","splitExportDeclaration","NodePath","prototype","ClassDeclaration","node","ref","id","t","cloneNode","scope","generateUidIdentifier","replaceWith","variableDeclaration","variableDeclarator","toExpression","ClassExpression","state","has","_path$ensureFunctionN","ensureFunctionName","replacement","add","replacedPath","transformClass","file","isCallExpression","annotateAsPure","callee","isArrowFunctionExpression","arrowFunctionToExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { isRequired } from \"@babel/helper-compilation-targets\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { types as t } from \"@babel/core\";\nimport globals from \"globals\";\nimport transformClass from \"./transformClass.ts\";\n\nconst getBuiltinClasses = (category: keyof typeof globals) =>\n  Object.keys(globals[category]).filter(name => /^[A-Z]/.test(name));\n\nconst builtinClasses = new Set([\n  ...getBuiltinClasses(\"builtin\"),\n  ...getBuiltinClasses(\"browser\"),\n]);\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { loose = false } = options;\n\n  const setClassMethods = api.assumption(\"setClassMethods\") ?? loose;\n  const constantSuper = api.assumption(\"constantSuper\") ?? loose;\n  const superIsCallableConstructor =\n    api.assumption(\"superIsCallableConstructor\") ?? loose;\n  const noClassCalls = api.assumption(\"noClassCalls\") ?? loose;\n  const supportUnicodeId = !isRequired(\n    \"transform-unicode-escapes\",\n    api.targets(),\n  );\n\n  // todo: investigate traversal requeueing\n  const VISITED = new WeakSet();\n\n  return {\n    name: \"transform-classes\",\n\n    visitor: {\n      ExportDefaultDeclaration(path) {\n        if (!path.get(\"declaration\").isClassDeclaration()) return;\n        if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n          // polyfill when being run by an older Babel version\n          path.splitExportDeclaration ??=\n            // eslint-disable-next-line no-restricted-globals\n            require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n        }\n        path.splitExportDeclaration();\n      },\n\n      ClassDeclaration(path) {\n        const { node } = path;\n\n        const ref = node.id\n          ? t.cloneNode(node.id)\n          : path.scope.generateUidIdentifier(\"class\");\n\n        path.replaceWith(\n          t.variableDeclaration(\"let\", [\n            t.variableDeclarator(ref, t.toExpression(node)),\n          ]),\n        );\n      },\n\n      ClassExpression(path, state) {\n        const { node } = path;\n        if (VISITED.has(node)) return;\n\n        if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n          // polyfill when being run by an older Babel version\n          path.ensureFunctionName ??=\n            // eslint-disable-next-line no-restricted-globals\n            require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n        }\n        const replacement = path.ensureFunctionName(supportUnicodeId);\n        if (replacement && replacement.node !== node) return;\n\n        VISITED.add(node);\n\n        const [replacedPath] = path.replaceWith(\n          transformClass(\n            path,\n            state.file,\n            builtinClasses,\n            loose,\n            {\n              setClassMethods,\n              constantSuper,\n              superIsCallableConstructor,\n              noClassCalls,\n            },\n            supportUnicodeId,\n          ),\n        );\n\n        if (replacedPath.isCallExpression()) {\n          annotateAsPure(replacedPath);\n          const callee = replacedPath.get(\"callee\");\n          if (callee.isArrowFunctionExpression()) {\n            // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n            callee.arrowFunctionToExpression();\n          }\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AAEA,MAAMM,iBAAiB,GAAIC,QAA8B,IACvDC,MAAM,CAACC,IAAI,CAACC,QAAO,CAACH,QAAQ,CAAC,CAAC,CAACI,MAAM,CAACC,IAAI,IAAI,QAAQ,CAACC,IAAI,CAACD,IAAI,CAAC,CAAC;AAEpE,MAAME,cAAc,GAAG,IAAIC,GAAG,CAAC,CAC7B,GAAGT,iBAAiB,CAAC,SAAS,CAAC,EAC/B,GAAGA,iBAAiB,CAAC,SAAS,CAAC,CAChC,CAAC;AAAC,IAAAU,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMY,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAAA,IAAAC,eAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAC,gBAAA;EAChDL,GAAG,CAACM,aAAa,CAAkB,CAAE,CAAC;EAEtC,MAAM;IAAEC,KAAK,GAAG;EAAM,CAAC,GAAGN,OAAO;EAEjC,MAAMO,eAAe,IAAAN,eAAA,GAAGF,GAAG,CAACS,UAAU,CAAC,iBAAiB,CAAC,YAAAP,eAAA,GAAIK,KAAK;EAClE,MAAMG,aAAa,IAAAP,gBAAA,GAAGH,GAAG,CAACS,UAAU,CAAC,eAAe,CAAC,YAAAN,gBAAA,GAAII,KAAK;EAC9D,MAAMI,0BAA0B,IAAAP,gBAAA,GAC9BJ,GAAG,CAACS,UAAU,CAAC,4BAA4B,CAAC,YAAAL,gBAAA,GAAIG,KAAK;EACvD,MAAMK,YAAY,IAAAP,gBAAA,GAAGL,GAAG,CAACS,UAAU,CAAC,cAAc,CAAC,YAAAJ,gBAAA,GAAIE,KAAK;EAC5D,MAAMM,gBAAgB,GAAG,CAAC,IAAAC,oCAAU,EAClC,2BAA2B,EAC3Bd,GAAG,CAACe,OAAO,CAAC,CACd,CAAC;EAGD,MAAMC,OAAO,GAAG,IAAIC,OAAO,CAAC,CAAC;EAE7B,OAAO;IACLzB,IAAI,EAAE,mBAAmB;IAEzB0B,OAAO,EAAE;MACPC,wBAAwBA,CAACC,IAAI,EAAE;QAC7B,IAAI,CAACA,IAAI,CAACC,GAAG,CAAC,aAAa,CAAC,CAACC,kBAAkB,CAAC,CAAC,EAAE;QACc;UAAA,IAAAC,qBAAA;UAE/D,CAAAA,qBAAA,GAAAH,IAAI,CAACI,sBAAsB,YAAAD,qBAAA,GAA3BH,IAAI,CAACI,sBAAsB,GAEzB5C,OAAO,CAAC,iBAAiB,CAAC,CAAC6C,QAAQ,CAACC,SAAS,CAACF,sBAAsB;QACxE;QACAJ,IAAI,CAACI,sBAAsB,CAAC,CAAC;MAC/B,CAAC;MAEDG,gBAAgBA,CAACP,IAAI,EAAE;QACrB,MAAM;UAAEQ;QAAK,CAAC,GAAGR,IAAI;QAErB,MAAMS,GAAG,GAAGD,IAAI,CAACE,EAAE,GACfC,WAAC,CAACC,SAAS,CAACJ,IAAI,CAACE,EAAE,CAAC,GACpBV,IAAI,CAACa,KAAK,CAACC,qBAAqB,CAAC,OAAO,CAAC;QAE7Cd,IAAI,CAACe,WAAW,CACdJ,WAAC,CAACK,mBAAmB,CAAC,KAAK,EAAE,CAC3BL,WAAC,CAACM,kBAAkB,CAACR,GAAG,EAAEE,WAAC,CAACO,YAAY,CAACV,IAAI,CAAC,CAAC,CAChD,CACH,CAAC;MACH,CAAC;MAEDW,eAAeA,CAACnB,IAAI,EAAEoB,KAAK,EAAE;QAC3B,MAAM;UAAEZ;QAAK,CAAC,GAAGR,IAAI;QACrB,IAAIJ,OAAO,CAACyB,GAAG,CAACb,IAAI,CAAC,EAAE;QAE0C;UAAA,IAAAc,qBAAA;UAE/D,CAAAA,qBAAA,GAAAtB,IAAI,CAACuB,kBAAkB,YAAAD,qBAAA,GAAvBtB,IAAI,CAACuB,kBAAkB,GAErB/D,OAAO,CAAC,iBAAiB,CAAC,CAAC6C,QAAQ,CAACC,SAAS,CAACiB,kBAAkB;QACpE;QACA,MAAMC,WAAW,GAAGxB,IAAI,CAACuB,kBAAkB,CAAC9B,gBAAgB,CAAC;QAC7D,IAAI+B,WAAW,IAAIA,WAAW,CAAChB,IAAI,KAAKA,IAAI,EAAE;QAE9CZ,OAAO,CAAC6B,GAAG,CAACjB,IAAI,CAAC;QAEjB,MAAM,CAACkB,YAAY,CAAC,GAAG1B,IAAI,CAACe,WAAW,CACrC,IAAAY,uBAAc,EACZ3B,IAAI,EACJoB,KAAK,CAACQ,IAAI,EACVtD,cAAc,EACda,KAAK,EACL;UACEC,eAAe;UACfE,aAAa;UACbC,0BAA0B;UAC1BC;QACF,CAAC,EACDC,gBACF,CACF,CAAC;QAED,IAAIiC,YAAY,CAACG,gBAAgB,CAAC,CAAC,EAAE;UACnC,IAAAC,6BAAc,EAACJ,YAAY,CAAC;UAC5B,MAAMK,MAAM,GAAGL,YAAY,CAACzB,GAAG,CAAC,QAAQ,CAAC;UACzC,IAAI8B,MAAM,CAACC,yBAAyB,CAAC,CAAC,EAAE;YAEtCD,MAAM,CAACE,yBAAyB,CAAC,CAAC;UACpC;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/inline-callSuper-helpers.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/inline-callSuper-helpers.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/inline-callSuper-helpers.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,73 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = addCallSuperHelper;
+var _core = require("@babel/core");
+const helper = _core.template.statement`
+  function CALL_SUPER(
+    _this,
+    derived,
+    args,
+  ) {
+    function isNativeReflectConstruct() {
+      if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+
+      // core-js@3
+      if (Reflect.construct.sham) return false;
+
+      // Proxy can't be polyfilled. Every browser implemented
+      // proxies before or at the same time as Reflect.construct,
+      // so if they support Proxy they also support Reflect.construct.
+      if (typeof Proxy === "function") return true;
+
+      // Since Reflect.construct can't be properly polyfilled, some
+      // implementations (e.g. core-js@2) don't set the correct internal slots.
+      // Those polyfills don't allow us to subclass built-ins, so we need to
+      // use our fallback implementation.
+      try {
+        // If the internal slots aren't set, this throws an error similar to
+        //   TypeError: this is not a Boolean object.
+        return !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}),);
+      } catch (e) {
+        return false;
+      }
+    }
+
+    // Super
+    derived = GET_PROTOTYPE_OF(derived);
+    return POSSIBLE_CONSTRUCTOR_RETURN(
+      _this,
+      isNativeReflectConstruct()
+        ? // NOTE: This doesn't work if this.__proto__.constructor has been modified.
+          Reflect.construct(
+            derived,
+            args || [],
+            GET_PROTOTYPE_OF(_this).constructor,
+          )
+        : derived.apply(_this, args),
+    );
+  }
+`;
+const helperIDs = new WeakMap();
+function addCallSuperHelper(file) {
+  if (helperIDs.has(file)) {
+    return (_core.types.cloneNode || _core.types.clone)(helperIDs.get(file));
+  }
+  try {
+    return file.addHelper("callSuper");
+  } catch (_unused) {}
+  const id = file.scope.generateUidIdentifier("callSuper");
+  helperIDs.set(file, id);
+  const fn = helper({
+    CALL_SUPER: id,
+    GET_PROTOTYPE_OF: file.addHelper("getPrototypeOf"),
+    POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper("possibleConstructorReturn")
+  });
+  file.path.unshiftContainer("body", [fn]);
+  file.scope.registerDeclaration(file.path.get("body.0"));
+  return _core.types.cloneNode(id);
+}
+
+//# sourceMappingURL=inline-callSuper-helpers.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/inline-callSuper-helpers.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/inline-callSuper-helpers.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/inline-callSuper-helpers.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","helper","template","statement","helperIDs","WeakMap","addCallSuperHelper","file","has","t","cloneNode","clone","get","addHelper","_unused","id","scope","generateUidIdentifier","set","fn","CALL_SUPER","GET_PROTOTYPE_OF","POSSIBLE_CONSTRUCTOR_RETURN","path","unshiftContainer","registerDeclaration"],"sources":["../src/inline-callSuper-helpers.ts"],"sourcesContent":["import { template, types as t, type File } from \"@babel/core\";\n\nconst helper = template.statement`\n  function CALL_SUPER(\n    _this,\n    derived,\n    args,\n  ) {\n    function isNativeReflectConstruct() {\n      if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n\n      // core-js@3\n      if (Reflect.construct.sham) return false;\n\n      // Proxy can't be polyfilled. Every browser implemented\n      // proxies before or at the same time as Reflect.construct,\n      // so if they support Proxy they also support Reflect.construct.\n      if (typeof Proxy === \"function\") return true;\n\n      // Since Reflect.construct can't be properly polyfilled, some\n      // implementations (e.g. core-js@2) don't set the correct internal slots.\n      // Those polyfills don't allow us to subclass built-ins, so we need to\n      // use our fallback implementation.\n      try {\n        // If the internal slots aren't set, this throws an error similar to\n        //   TypeError: this is not a Boolean object.\n        return !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}),);\n      } catch (e) {\n        return false;\n      }\n    }\n\n    // Super\n    derived = GET_PROTOTYPE_OF(derived);\n    return POSSIBLE_CONSTRUCTOR_RETURN(\n      _this,\n      isNativeReflectConstruct()\n        ? // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n          Reflect.construct(\n            derived,\n            args || [],\n            GET_PROTOTYPE_OF(_this).constructor,\n          )\n        : derived.apply(_this, args),\n    );\n  }\n`;\n\nconst helperIDs = new WeakMap();\n\nexport default function addCallSuperHelper(file: File) {\n  if (helperIDs.has(file)) {\n    // TODO: Only use t.cloneNode in Babel 8\n    // t.cloneNode isn't supported in every version\n    return (t.cloneNode || t.clone)(helperIDs.get(file));\n  }\n\n  try {\n    return file.addHelper(\"callSuper\");\n  } catch {\n    // old Babel doesn't support the helper.\n  }\n\n  const id = file.scope.generateUidIdentifier(\"callSuper\");\n  helperIDs.set(file, id);\n\n  const fn = helper({\n    CALL_SUPER: id,\n    GET_PROTOTYPE_OF: file.addHelper(\"getPrototypeOf\"),\n    POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper(\"possibleConstructorReturn\"),\n  });\n\n  file.path.unshiftContainer(\"body\", [fn]);\n  file.scope.registerDeclaration(file.path.get(\"body.0\"));\n\n  return t.cloneNode(id);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,MAAMC,MAAM,GAAGC,cAAQ,CAACC,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMC,SAAS,GAAG,IAAIC,OAAO,CAAC,CAAC;AAEhB,SAASC,kBAAkBA,CAACC,IAAU,EAAE;EACrD,IAAIH,SAAS,CAACI,GAAG,CAACD,IAAI,CAAC,EAAE;IAGvB,OAAO,CAACE,WAAC,CAACC,SAAS,IAAID,WAAC,CAACE,KAAK,EAAEP,SAAS,CAACQ,GAAG,CAACL,IAAI,CAAC,CAAC;EACtD;EAEA,IAAI;IACF,OAAOA,IAAI,CAACM,SAAS,CAAC,WAAW,CAAC;EACpC,CAAC,CAAC,OAAAC,OAAA,EAAM,CAER;EAEA,MAAMC,EAAE,GAAGR,IAAI,CAACS,KAAK,CAACC,qBAAqB,CAAC,WAAW,CAAC;EACxDb,SAAS,CAACc,GAAG,CAACX,IAAI,EAAEQ,EAAE,CAAC;EAEvB,MAAMI,EAAE,GAAGlB,MAAM,CAAC;IAChBmB,UAAU,EAAEL,EAAE;IACdM,gBAAgB,EAAEd,IAAI,CAACM,SAAS,CAAC,gBAAgB,CAAC;IAClDS,2BAA2B,EAAEf,IAAI,CAACM,SAAS,CAAC,2BAA2B;EACzE,CAAC,CAAC;EAEFN,IAAI,CAACgB,IAAI,CAACC,gBAAgB,CAAC,MAAM,EAAE,CAACL,EAAE,CAAC,CAAC;EACxCZ,IAAI,CAACS,KAAK,CAACS,mBAAmB,CAAClB,IAAI,CAACgB,IAAI,CAACX,GAAG,CAAC,QAAQ,CAAC,CAAC;EAEvD,OAAOH,WAAC,CAACC,SAAS,CAACK,EAAE,CAAC;AACxB","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/transformClass.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/transformClass.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/transformClass.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,544 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = transformClass;
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+var _core = require("@babel/core");
+var _traverse = require("@babel/traverse");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _inlineCallSuperHelpers = require("./inline-callSuper-helpers.js");
+function buildConstructor(classRef, constructorBody, node) {
+  const func = _core.types.functionDeclaration(_core.types.cloneNode(classRef), [], constructorBody);
+  _core.types.inherits(func, node);
+  return func;
+}
+function transformClass(path, file, builtinClasses, isLoose, assumptions, supportUnicodeId) {
+  const classState = {
+    parent: undefined,
+    scope: undefined,
+    node: undefined,
+    path: undefined,
+    file: undefined,
+    classId: undefined,
+    classRef: undefined,
+    superName: null,
+    superReturns: [],
+    isDerived: false,
+    extendsNative: false,
+    construct: undefined,
+    constructorBody: undefined,
+    userConstructor: undefined,
+    userConstructorPath: undefined,
+    hasConstructor: false,
+    body: [],
+    superThises: [],
+    pushedInherits: false,
+    pushedCreateClass: false,
+    protoAlias: null,
+    isLoose: false,
+    dynamicKeys: new Map(),
+    methods: {
+      instance: {
+        hasComputed: false,
+        list: [],
+        map: new Map()
+      },
+      static: {
+        hasComputed: false,
+        list: [],
+        map: new Map()
+      }
+    }
+  };
+  const setState = newState => {
+    Object.assign(classState, newState);
+  };
+  const findThisesVisitor = _traverse.visitors.environmentVisitor({
+    ThisExpression(path) {
+      classState.superThises.push(path);
+    }
+  });
+  function createClassHelper(args) {
+    return _core.types.callExpression(classState.file.addHelper("createClass"), args);
+  }
+  function maybeCreateConstructor() {
+    const classBodyPath = classState.path.get("body");
+    for (const path of classBodyPath.get("body")) {
+      if (path.isClassMethod({
+        kind: "constructor"
+      })) return;
+    }
+    let params, body;
+    if (classState.isDerived) {
+      const constructor = _core.template.expression.ast`
+        (function () {
+          super(...arguments);
+        })
+      `;
+      params = constructor.params;
+      body = constructor.body;
+    } else {
+      params = [];
+      body = _core.types.blockStatement([]);
+    }
+    classBodyPath.unshiftContainer("body", _core.types.classMethod("constructor", _core.types.identifier("constructor"), params, body));
+  }
+  function buildBody() {
+    maybeCreateConstructor();
+    pushBody();
+    verifyConstructor();
+    if (classState.userConstructor) {
+      const {
+        constructorBody,
+        userConstructor,
+        construct
+      } = classState;
+      constructorBody.body.push(...userConstructor.body.body);
+      _core.types.inherits(construct, userConstructor);
+      _core.types.inherits(constructorBody, userConstructor.body);
+    }
+    pushDescriptors();
+  }
+  function pushBody() {
+    const classBodyPaths = classState.path.get("body.body");
+    for (const path of classBodyPaths) {
+      const node = path.node;
+      if (path.isClassProperty() || path.isClassPrivateProperty()) {
+        throw path.buildCodeFrameError("Missing class properties transform.");
+      }
+      if (node.decorators) {
+        throw path.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");
+      }
+      if (_core.types.isClassMethod(node)) {
+        const isConstructor = node.kind === "constructor";
+        const replaceSupers = new _helperReplaceSupers.default({
+          methodPath: path,
+          objectRef: classState.classRef,
+          superRef: classState.superName,
+          constantSuper: assumptions.constantSuper,
+          file: classState.file,
+          refToPreserve: classState.classRef
+        });
+        replaceSupers.replace();
+        const superReturns = [];
+        path.traverse(_traverse.visitors.environmentVisitor({
+          ReturnStatement(path) {
+            if (!path.getFunctionParent().isArrowFunctionExpression()) {
+              superReturns.push(path);
+            }
+          }
+        }));
+        if (isConstructor) {
+          pushConstructor(superReturns, node, path);
+        } else {
+          {
+            var _path$ensureFunctionN;
+            (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+          }
+          path.ensureFunctionName(supportUnicodeId);
+          let wrapped;
+          if (node !== path.node) {
+            wrapped = path.node;
+            path.replaceWith(node);
+          }
+          pushMethod(node, wrapped);
+        }
+      }
+    }
+  }
+  function pushDescriptors() {
+    pushInheritsToBody();
+    const {
+      body
+    } = classState;
+    const props = {
+      instance: null,
+      static: null
+    };
+    for (const placement of ["static", "instance"]) {
+      if (classState.methods[placement].list.length) {
+        props[placement] = classState.methods[placement].list.map(desc => {
+          const obj = _core.types.objectExpression([_core.types.objectProperty(_core.types.identifier("key"), desc.key)]);
+          for (const kind of ["get", "set", "value"]) {
+            if (desc[kind] != null) {
+              obj.properties.push(_core.types.objectProperty(_core.types.identifier(kind), desc[kind]));
+            }
+          }
+          return obj;
+        });
+      }
+    }
+    if (props.instance || props.static) {
+      let args = [_core.types.cloneNode(classState.classRef), props.instance ? _core.types.arrayExpression(props.instance) : _core.types.nullLiteral(), props.static ? _core.types.arrayExpression(props.static) : _core.types.nullLiteral()];
+      let lastNonNullIndex = 0;
+      for (let i = 0; i < args.length; i++) {
+        if (!_core.types.isNullLiteral(args[i])) lastNonNullIndex = i;
+      }
+      args = args.slice(0, lastNonNullIndex + 1);
+      body.push(_core.types.returnStatement(createClassHelper(args)));
+      classState.pushedCreateClass = true;
+    }
+  }
+  function wrapSuperCall(bareSuper, superRef, thisRef, body) {
+    const bareSuperNode = bareSuper.node;
+    let call;
+    if (assumptions.superIsCallableConstructor) {
+      bareSuperNode.arguments.unshift(_core.types.thisExpression());
+      if (bareSuperNode.arguments.length === 2 && _core.types.isSpreadElement(bareSuperNode.arguments[1]) && _core.types.isIdentifier(bareSuperNode.arguments[1].argument, {
+        name: "arguments"
+      })) {
+        bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;
+        bareSuperNode.callee = _core.types.memberExpression(_core.types.cloneNode(superRef), _core.types.identifier("apply"));
+      } else {
+        bareSuperNode.callee = _core.types.memberExpression(_core.types.cloneNode(superRef), _core.types.identifier("call"));
+      }
+      call = _core.types.logicalExpression("||", bareSuperNode, _core.types.thisExpression());
+    } else {
+      var _bareSuperNode$argume;
+      const args = [_core.types.thisExpression(), _core.types.cloneNode(classState.classRef)];
+      if ((_bareSuperNode$argume = bareSuperNode.arguments) != null && _bareSuperNode$argume.length) {
+        const bareSuperNodeArguments = bareSuperNode.arguments;
+        if (bareSuperNodeArguments.length === 1 && _core.types.isSpreadElement(bareSuperNodeArguments[0]) && _core.types.isIdentifier(bareSuperNodeArguments[0].argument, {
+          name: "arguments"
+        })) {
+          args.push(bareSuperNodeArguments[0].argument);
+        } else {
+          args.push(_core.types.arrayExpression(bareSuperNodeArguments));
+        }
+      }
+      call = _core.types.callExpression((0, _inlineCallSuperHelpers.default)(classState.file), args);
+    }
+    if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) {
+      if (classState.superThises.length) {
+        call = _core.types.assignmentExpression("=", thisRef(), call);
+      }
+      bareSuper.parentPath.replaceWith(_core.types.returnStatement(call));
+    } else {
+      bareSuper.replaceWith(_core.types.assignmentExpression("=", thisRef(), call));
+    }
+  }
+  function verifyConstructor() {
+    if (!classState.isDerived) return;
+    const path = classState.userConstructorPath;
+    const body = path.get("body");
+    const constructorBody = path.get("body");
+    let maxGuaranteedSuperBeforeIndex = constructorBody.node.body.length;
+    path.traverse(findThisesVisitor);
+    let thisRef = function () {
+      const ref = path.scope.generateDeclaredUidIdentifier("this");
+      maxGuaranteedSuperBeforeIndex++;
+      thisRef = () => _core.types.cloneNode(ref);
+      return ref;
+    };
+    const buildAssertThisInitialized = function () {
+      return _core.types.callExpression(classState.file.addHelper("assertThisInitialized"), [thisRef()]);
+    };
+    const bareSupers = [];
+    path.traverse(_traverse.visitors.environmentVisitor({
+      Super(path) {
+        const {
+          node,
+          parentPath
+        } = path;
+        if (parentPath.isCallExpression({
+          callee: node
+        })) {
+          bareSupers.unshift(parentPath);
+        }
+      }
+    }));
+    for (const bareSuper of bareSupers) {
+      wrapSuperCall(bareSuper, classState.superName, thisRef, body);
+      if (maxGuaranteedSuperBeforeIndex >= 0) {
+        let lastParentPath;
+        bareSuper.find(function (parentPath) {
+          if (parentPath === constructorBody) {
+            maxGuaranteedSuperBeforeIndex = Math.min(maxGuaranteedSuperBeforeIndex, lastParentPath.key);
+            return true;
+          }
+          const {
+            type
+          } = parentPath;
+          switch (type) {
+            case "ExpressionStatement":
+            case "SequenceExpression":
+            case "AssignmentExpression":
+            case "BinaryExpression":
+            case "MemberExpression":
+            case "CallExpression":
+            case "NewExpression":
+            case "VariableDeclarator":
+            case "VariableDeclaration":
+            case "BlockStatement":
+            case "ArrayExpression":
+            case "ObjectExpression":
+            case "ObjectProperty":
+            case "TemplateLiteral":
+              lastParentPath = parentPath;
+              return false;
+            default:
+              if (type === "LogicalExpression" && parentPath.node.left === lastParentPath.node || parentPath.isConditional() && parentPath.node.test === lastParentPath.node || type === "OptionalCallExpression" && parentPath.node.callee === lastParentPath.node || type === "OptionalMemberExpression" && parentPath.node.object === lastParentPath.node) {
+                lastParentPath = parentPath;
+                return false;
+              }
+          }
+          maxGuaranteedSuperBeforeIndex = -1;
+          return true;
+        });
+      }
+    }
+    const guaranteedCalls = new Set();
+    for (const thisPath of classState.superThises) {
+      const {
+        node,
+        parentPath
+      } = thisPath;
+      if (parentPath.isMemberExpression({
+        object: node
+      })) {
+        thisPath.replaceWith(thisRef());
+        continue;
+      }
+      let thisIndex;
+      thisPath.find(function (parentPath) {
+        if (parentPath.parentPath === constructorBody) {
+          thisIndex = parentPath.key;
+          return true;
+        }
+      });
+      let exprPath = thisPath.parentPath.isSequenceExpression() ? thisPath.parentPath : thisPath;
+      if (exprPath.listKey === "arguments" && (exprPath.parentPath.isCallExpression() || exprPath.parentPath.isOptionalCallExpression())) {
+        exprPath = exprPath.parentPath;
+      } else {
+        exprPath = null;
+      }
+      if (maxGuaranteedSuperBeforeIndex !== -1 && thisIndex > maxGuaranteedSuperBeforeIndex || guaranteedCalls.has(exprPath)) {
+        thisPath.replaceWith(thisRef());
+      } else {
+        if (exprPath) {
+          guaranteedCalls.add(exprPath);
+        }
+        thisPath.replaceWith(buildAssertThisInitialized());
+      }
+    }
+    let wrapReturn;
+    if (classState.isLoose) {
+      wrapReturn = returnArg => {
+        const thisExpr = buildAssertThisInitialized();
+        return returnArg ? _core.types.logicalExpression("||", returnArg, thisExpr) : thisExpr;
+      };
+    } else {
+      wrapReturn = returnArg => {
+        const returnParams = [thisRef()];
+        if (returnArg != null) {
+          returnParams.push(returnArg);
+        }
+        return _core.types.callExpression(classState.file.addHelper("possibleConstructorReturn"), returnParams);
+      };
+    }
+    const bodyPaths = body.get("body");
+    const guaranteedSuperBeforeFinish = maxGuaranteedSuperBeforeIndex !== -1 && maxGuaranteedSuperBeforeIndex < bodyPaths.length;
+    if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) {
+      body.pushContainer("body", _core.types.returnStatement(guaranteedSuperBeforeFinish ? thisRef() : buildAssertThisInitialized()));
+    }
+    for (const returnPath of classState.superReturns) {
+      returnPath.get("argument").replaceWith(wrapReturn(returnPath.node.argument));
+    }
+  }
+  function pushMethod(node, wrapped) {
+    if (node.kind === "method") {
+      if (processMethod(node)) return;
+    }
+    const placement = node.static ? "static" : "instance";
+    const methods = classState.methods[placement];
+    const descKey = node.kind === "method" ? "value" : node.kind;
+    const key = _core.types.isNumericLiteral(node.key) || _core.types.isBigIntLiteral(node.key) ? _core.types.stringLiteral(String(node.key.value)) : _core.types.toComputedKey(node);
+    methods.hasComputed = !_core.types.isStringLiteral(key);
+    const fn = wrapped != null ? wrapped : _core.types.toExpression(node);
+    let descriptor;
+    if (!methods.hasComputed && methods.map.has(key.value)) {
+      descriptor = methods.map.get(key.value);
+      descriptor[descKey] = fn;
+      if (descKey === "value") {
+        descriptor.get = null;
+        descriptor.set = null;
+      } else {
+        descriptor.value = null;
+      }
+    } else {
+      descriptor = {
+        key: key,
+        [descKey]: fn
+      };
+      methods.list.push(descriptor);
+      if (!methods.hasComputed) {
+        methods.map.set(key.value, descriptor);
+      }
+    }
+  }
+  function processMethod(node) {
+    if (assumptions.setClassMethods && !node.decorators) {
+      let {
+        classRef
+      } = classState;
+      if (!node.static) {
+        insertProtoAliasOnce();
+        classRef = classState.protoAlias;
+      }
+      const methodName = _core.types.memberExpression(_core.types.cloneNode(classRef), node.key, node.computed || _core.types.isLiteral(node.key));
+      const func = _core.types.functionExpression(node.id, node.params, node.body, node.generator, node.async);
+      _core.types.inherits(func, node);
+      const expr = _core.types.expressionStatement(_core.types.assignmentExpression("=", methodName, func));
+      _core.types.inheritsComments(expr, node);
+      classState.body.push(expr);
+      return true;
+    }
+    return false;
+  }
+  function insertProtoAliasOnce() {
+    if (classState.protoAlias === null) {
+      setState({
+        protoAlias: classState.scope.generateUidIdentifier("proto")
+      });
+      const classProto = _core.types.memberExpression(classState.classRef, _core.types.identifier("prototype"));
+      const protoDeclaration = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(classState.protoAlias, classProto)]);
+      classState.body.push(protoDeclaration);
+    }
+  }
+  function pushConstructor(superReturns, method, path) {
+    setState({
+      userConstructorPath: path,
+      userConstructor: method,
+      hasConstructor: true,
+      superReturns
+    });
+    const {
+      construct
+    } = classState;
+    _core.types.inheritsComments(construct, method);
+    construct.params = method.params;
+    _core.types.inherits(construct.body, method.body);
+    construct.body.directives = method.body.directives;
+    if (classState.hasInstanceDescriptors || classState.hasStaticDescriptors) {
+      pushDescriptors();
+    }
+    pushInheritsToBody();
+  }
+  function pushInheritsToBody() {
+    if (!classState.isDerived || classState.pushedInherits) return;
+    classState.pushedInherits = true;
+    classState.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [_core.types.cloneNode(classState.classRef), _core.types.cloneNode(classState.superName)])));
+  }
+  function extractDynamicKeys() {
+    const {
+      dynamicKeys,
+      node,
+      scope
+    } = classState;
+    for (const elem of node.body.body) {
+      if (!_core.types.isClassMethod(elem) || !elem.computed) continue;
+      if (scope.isPure(elem.key, true)) continue;
+      const id = scope.generateUidIdentifierBasedOnNode(elem.key);
+      dynamicKeys.set(id.name, elem.key);
+      elem.key = id;
+    }
+  }
+  function setupClosureParamsArgs() {
+    const {
+      superName,
+      dynamicKeys
+    } = classState;
+    const closureParams = [];
+    const closureArgs = [];
+    if (classState.isDerived) {
+      let arg = _core.types.cloneNode(superName);
+      if (classState.extendsNative) {
+        arg = _core.types.callExpression(classState.file.addHelper("wrapNativeSuper"), [arg]);
+        (0, _helperAnnotateAsPure.default)(arg);
+      }
+      const param = classState.scope.generateUidIdentifierBasedOnNode(superName);
+      closureParams.push(param);
+      closureArgs.push(arg);
+      setState({
+        superName: _core.types.cloneNode(param)
+      });
+    }
+    for (const [name, value] of dynamicKeys) {
+      closureParams.push(_core.types.identifier(name));
+      closureArgs.push(value);
+    }
+    return {
+      closureParams,
+      closureArgs
+    };
+  }
+  function classTransformer(path, file, builtinClasses, isLoose) {
+    setState({
+      parent: path.parent,
+      scope: path.scope,
+      node: path.node,
+      path,
+      file,
+      isLoose
+    });
+    setState({
+      classId: classState.node.id,
+      classRef: classState.node.id ? _core.types.identifier(classState.node.id.name) : classState.scope.generateUidIdentifier("class"),
+      superName: classState.node.superClass,
+      isDerived: !!classState.node.superClass,
+      constructorBody: _core.types.blockStatement([])
+    });
+    setState({
+      extendsNative: _core.types.isIdentifier(classState.superName) && builtinClasses.has(classState.superName.name) && !classState.scope.hasBinding(classState.superName.name, true)
+    });
+    const {
+      classRef,
+      node,
+      constructorBody
+    } = classState;
+    setState({
+      construct: buildConstructor(classRef, constructorBody, node)
+    });
+    extractDynamicKeys();
+    const {
+      body
+    } = classState;
+    const {
+      closureParams,
+      closureArgs
+    } = setupClosureParamsArgs();
+    buildBody();
+    if (!assumptions.noClassCalls) {
+      constructorBody.body.unshift(_core.types.expressionStatement(_core.types.callExpression(classState.file.addHelper("classCallCheck"), [_core.types.thisExpression(), _core.types.cloneNode(classState.classRef)])));
+    }
+    const isStrict = path.isInStrictMode();
+    let constructorOnly = body.length === 0;
+    if (constructorOnly && !isStrict) {
+      for (const param of classState.construct.params) {
+        if (!_core.types.isIdentifier(param)) {
+          constructorOnly = false;
+          break;
+        }
+      }
+    }
+    const directives = constructorOnly ? classState.construct.body.directives : [];
+    if (!isStrict) {
+      directives.push(_core.types.directive(_core.types.directiveLiteral("use strict")));
+    }
+    if (constructorOnly) {
+      const expr = _core.types.toExpression(classState.construct);
+      return classState.isLoose ? expr : createClassHelper([expr]);
+    }
+    if (!classState.pushedCreateClass) {
+      body.push(_core.types.returnStatement(classState.isLoose ? _core.types.cloneNode(classState.classRef) : createClassHelper([_core.types.cloneNode(classState.classRef)])));
+    }
+    body.unshift(classState.construct);
+    const container = _core.types.arrowFunctionExpression(closureParams, _core.types.blockStatement(body, directives));
+    return _core.types.callExpression(container, closureArgs);
+  }
+  return classTransformer(path, file, builtinClasses, isLoose);
+}
+
+//# sourceMappingURL=transformClass.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/transformClass.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/transformClass.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/lib/transformClass.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperReplaceSupers","require","_core","_traverse","_helperAnnotateAsPure","_inlineCallSuperHelpers","buildConstructor","classRef","constructorBody","node","func","t","functionDeclaration","cloneNode","inherits","transformClass","path","file","builtinClasses","isLoose","assumptions","supportUnicodeId","classState","parent","undefined","scope","classId","superName","superReturns","isDerived","extendsNative","construct","userConstructor","userConstructorPath","hasConstructor","body","superThises","pushedInherits","pushedCreateClass","protoAlias","dynamicKeys","Map","methods","instance","hasComputed","list","map","static","setState","newState","Object","assign","findThisesVisitor","visitors","environmentVisitor","ThisExpression","push","createClassHelper","args","callExpression","addHelper","maybeCreateConstructor","classBodyPath","get","isClassMethod","kind","params","constructor","template","expression","ast","blockStatement","unshiftContainer","classMethod","identifier","buildBody","pushBody","verifyConstructor","pushDescriptors","classBodyPaths","isClassProperty","isClassPrivateProperty","buildCodeFrameError","decorators","isConstructor","replaceSupers","ReplaceSupers","methodPath","objectRef","superRef","constantSuper","refToPreserve","replace","traverse","ReturnStatement","getFunctionParent","isArrowFunctionExpression","pushConstructor","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype","wrapped","replaceWith","pushMethod","pushInheritsToBody","props","placement","length","desc","obj","objectExpression","objectProperty","key","properties","arrayExpression","nullLiteral","lastNonNullIndex","i","isNullLiteral","slice","returnStatement","wrapSuperCall","bareSuper","thisRef","bareSuperNode","call","superIsCallableConstructor","arguments","unshift","thisExpression","isSpreadElement","isIdentifier","argument","name","callee","memberExpression","logicalExpression","_bareSuperNode$argume","bareSuperNodeArguments","addCallSuperHelper","parentPath","isExpressionStatement","container","assignmentExpression","maxGuaranteedSuperBeforeIndex","ref","generateDeclaredUidIdentifier","buildAssertThisInitialized","bareSupers","Super","isCallExpression","lastParentPath","find","Math","min","type","left","isConditional","test","object","guaranteedCalls","Set","thisPath","isMemberExpression","thisIndex","exprPath","isSequenceExpression","listKey","isOptionalCallExpression","has","add","wrapReturn","returnArg","thisExpr","returnParams","bodyPaths","guaranteedSuperBeforeFinish","pop","isReturnStatement","pushContainer","returnPath","processMethod","descKey","isNumericLiteral","isBigIntLiteral","stringLiteral","String","value","toComputedKey","isStringLiteral","fn","toExpression","descriptor","set","setClassMethods","insertProtoAliasOnce","methodName","computed","isLiteral","functionExpression","id","generator","async","expr","expressionStatement","inheritsComments","generateUidIdentifier","classProto","protoDeclaration","variableDeclaration","variableDeclarator","method","directives","hasInstanceDescriptors","hasStaticDescriptors","extractDynamicKeys","elem","isPure","generateUidIdentifierBasedOnNode","setupClosureParamsArgs","closureParams","closureArgs","arg","annotateAsPure","param","classTransformer","superClass","hasBinding","noClassCalls","isStrict","isInStrictMode","constructorOnly","directive","directiveLiteral","arrowFunctionExpression"],"sources":["../src/transformClass.ts"],"sourcesContent":["import type { NodePath, Scope, File } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport { template, types as t } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\n\nimport addCallSuperHelper from \"./inline-callSuper-helpers.ts\";\n\ntype ClassAssumptions = {\n  setClassMethods: boolean;\n  constantSuper: boolean;\n  superIsCallableConstructor: boolean;\n  noClassCalls: boolean;\n};\n\ntype ClassConstructor = t.ClassMethod & { kind: \"constructor\" };\n\nfunction buildConstructor(\n  classRef: t.Identifier,\n  constructorBody: t.BlockStatement,\n  node: t.Class,\n) {\n  const func = t.functionDeclaration(\n    t.cloneNode(classRef),\n    [],\n    constructorBody,\n  );\n  t.inherits(func, node);\n  return func;\n}\n\ntype Descriptor = {\n  key: t.Expression;\n  get?: t.Expression | null;\n  set?: t.Expression | null;\n  value?: t.Expression | null;\n  constructor?: t.Expression | null;\n};\n\ntype State = {\n  parent: t.Node;\n  scope: Scope;\n  node: t.Class;\n  path: NodePath<t.Class>;\n  file: File;\n\n  classId: t.Identifier | void;\n  classRef: t.Identifier;\n  superName: t.Expression | null;\n  superReturns: NodePath<t.ReturnStatement>[];\n  isDerived: boolean;\n  extendsNative: boolean;\n\n  construct: t.FunctionDeclaration;\n  constructorBody: t.BlockStatement;\n  userConstructor: ClassConstructor;\n  userConstructorPath: NodePath<ClassConstructor>;\n  hasConstructor: boolean;\n\n  body: t.Statement[];\n  superThises: NodePath<t.ThisExpression>[];\n  pushedInherits: boolean;\n  pushedCreateClass: boolean;\n  protoAlias: t.Identifier | null;\n  isLoose: boolean;\n\n  dynamicKeys: Map<string, t.Expression>;\n\n  methods: {\n    // 'list' is in the same order as the elements appear in the class body.\n    // if there aren't computed keys, we can safely reorder class elements\n    // and use 'map' to merge duplicates.\n    instance: {\n      hasComputed: boolean;\n      list: Descriptor[];\n      map: Map<string, Descriptor>;\n    };\n    static: {\n      hasComputed: boolean;\n      list: Descriptor[];\n      map: Map<string, Descriptor>;\n    };\n  };\n};\n\ntype PropertyInfo = {\n  instance: t.ObjectExpression[] | null;\n  static: t.ObjectExpression[] | null;\n};\n\nexport default function transformClass(\n  path: NodePath<t.Class>,\n  file: File,\n  builtinClasses: ReadonlySet<string>,\n  isLoose: boolean,\n  assumptions: ClassAssumptions,\n  supportUnicodeId: boolean,\n) {\n  const classState: State = {\n    parent: undefined,\n    scope: undefined,\n    node: undefined,\n    path: undefined,\n    file: undefined,\n\n    classId: undefined,\n    classRef: undefined,\n    superName: null,\n    superReturns: [],\n    isDerived: false,\n    extendsNative: false,\n\n    construct: undefined,\n    constructorBody: undefined,\n    userConstructor: undefined,\n    userConstructorPath: undefined,\n    hasConstructor: false,\n\n    body: [],\n    superThises: [],\n    pushedInherits: false,\n    pushedCreateClass: false,\n    protoAlias: null,\n    isLoose: false,\n\n    dynamicKeys: new Map(),\n\n    methods: {\n      instance: {\n        hasComputed: false,\n        list: [],\n        map: new Map(),\n      },\n      static: {\n        hasComputed: false,\n        list: [],\n        map: new Map(),\n      },\n    },\n  };\n\n  const setState = (newState: Partial<State>) => {\n    Object.assign(classState, newState);\n  };\n\n  const findThisesVisitor = visitors.environmentVisitor({\n    ThisExpression(path) {\n      classState.superThises.push(path);\n    },\n  });\n\n  function createClassHelper(args: t.Expression[]) {\n    return t.callExpression(classState.file.addHelper(\"createClass\"), args);\n  }\n\n  /**\n   * Creates a class constructor or bail out if there is one\n   */\n  function maybeCreateConstructor() {\n    const classBodyPath = classState.path.get(\"body\");\n    for (const path of classBodyPath.get(\"body\")) {\n      if (path.isClassMethod({ kind: \"constructor\" })) return;\n    }\n\n    let params: t.FunctionExpression[\"params\"], body;\n\n    if (classState.isDerived) {\n      const constructor = template.expression.ast`\n        (function () {\n          super(...arguments);\n        })\n      ` as t.FunctionExpression;\n      params = constructor.params;\n      body = constructor.body;\n    } else {\n      params = [];\n      body = t.blockStatement([]);\n    }\n\n    classBodyPath.unshiftContainer(\n      \"body\",\n      t.classMethod(\"constructor\", t.identifier(\"constructor\"), params, body),\n    );\n  }\n\n  function buildBody() {\n    maybeCreateConstructor();\n    pushBody();\n    verifyConstructor();\n\n    if (classState.userConstructor) {\n      const { constructorBody, userConstructor, construct } = classState;\n\n      constructorBody.body.push(...userConstructor.body.body);\n      t.inherits(construct, userConstructor);\n      t.inherits(constructorBody, userConstructor.body);\n    }\n\n    pushDescriptors();\n  }\n\n  function pushBody() {\n    const classBodyPaths: Array<any> = classState.path.get(\"body.body\");\n\n    for (const path of classBodyPaths) {\n      const node = path.node;\n\n      if (path.isClassProperty() || path.isClassPrivateProperty()) {\n        throw path.buildCodeFrameError(\"Missing class properties transform.\");\n      }\n\n      if (node.decorators) {\n        throw path.buildCodeFrameError(\n          \"Method has decorators, put the decorator plugin before the classes one.\",\n        );\n      }\n\n      if (t.isClassMethod(node)) {\n        const isConstructor = node.kind === \"constructor\";\n\n        const replaceSupers = new ReplaceSupers({\n          methodPath: path,\n          objectRef: classState.classRef,\n          superRef: classState.superName,\n          constantSuper: assumptions.constantSuper,\n          file: classState.file,\n          refToPreserve: classState.classRef,\n        });\n\n        replaceSupers.replace();\n\n        const superReturns: NodePath<t.ReturnStatement>[] = [];\n        path.traverse(\n          visitors.environmentVisitor({\n            ReturnStatement(path) {\n              if (!path.getFunctionParent().isArrowFunctionExpression()) {\n                superReturns.push(path);\n              }\n            },\n          }),\n        );\n\n        if (isConstructor) {\n          pushConstructor(superReturns, node as ClassConstructor, path);\n        } else {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.ensureFunctionName ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n          }\n          path.ensureFunctionName(supportUnicodeId);\n          let wrapped;\n          if (node !== path.node) {\n            wrapped = path.node;\n            // The node has been wrapped. Reset it to the original once, but store the wrapper.\n            path.replaceWith(node);\n          }\n\n          pushMethod(node, wrapped);\n        }\n      }\n    }\n  }\n\n  function pushDescriptors() {\n    pushInheritsToBody();\n\n    const { body } = classState;\n\n    const props: PropertyInfo = {\n      instance: null,\n      static: null,\n    };\n\n    for (const placement of [\"static\", \"instance\"] as const) {\n      if (classState.methods[placement].list.length) {\n        props[placement] = classState.methods[placement].list.map(desc => {\n          const obj = t.objectExpression([\n            t.objectProperty(t.identifier(\"key\"), desc.key),\n          ]);\n\n          for (const kind of [\"get\", \"set\", \"value\"] as const) {\n            if (desc[kind] != null) {\n              obj.properties.push(\n                t.objectProperty(t.identifier(kind), desc[kind]),\n              );\n            }\n          }\n\n          return obj;\n        });\n      }\n    }\n\n    if (props.instance || props.static) {\n      let args = [\n        t.cloneNode(classState.classRef), // Constructor\n        props.instance ? t.arrayExpression(props.instance) : t.nullLiteral(), // instanceDescriptors\n        props.static ? t.arrayExpression(props.static) : t.nullLiteral(), // staticDescriptors\n      ];\n\n      let lastNonNullIndex = 0;\n      for (let i = 0; i < args.length; i++) {\n        if (!t.isNullLiteral(args[i])) lastNonNullIndex = i;\n      }\n      args = args.slice(0, lastNonNullIndex + 1);\n\n      body.push(t.returnStatement(createClassHelper(args)));\n      classState.pushedCreateClass = true;\n    }\n  }\n\n  function wrapSuperCall(\n    bareSuper: NodePath<t.CallExpression>,\n    superRef: t.Expression,\n    thisRef: () => t.Identifier,\n    body: NodePath<t.BlockStatement>,\n  ) {\n    const bareSuperNode = bareSuper.node;\n    let call;\n\n    if (assumptions.superIsCallableConstructor) {\n      bareSuperNode.arguments.unshift(t.thisExpression());\n      if (\n        bareSuperNode.arguments.length === 2 &&\n        t.isSpreadElement(bareSuperNode.arguments[1]) &&\n        t.isIdentifier(bareSuperNode.arguments[1].argument, {\n          name: \"arguments\",\n        })\n      ) {\n        // special case single arguments spread\n        bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;\n        bareSuperNode.callee = t.memberExpression(\n          t.cloneNode(superRef),\n          t.identifier(\"apply\"),\n        );\n      } else {\n        bareSuperNode.callee = t.memberExpression(\n          t.cloneNode(superRef),\n          t.identifier(\"call\"),\n        );\n      }\n\n      call = t.logicalExpression(\"||\", bareSuperNode, t.thisExpression());\n    } else {\n      const args: t.Expression[] = [\n        t.thisExpression(),\n        t.cloneNode(classState.classRef),\n      ];\n      if (bareSuperNode.arguments?.length) {\n        const bareSuperNodeArguments = bareSuperNode.arguments as (\n          | t.Expression\n          | t.SpreadElement\n        )[];\n\n        /**\n         * test262/test/language/expressions/super/call-spread-err-sngl-err-itr-get-get.js\n         *\n         * var iter = {};\n         * Object.defineProperty(iter, Symbol.iterator, {\n         *   get: function() {\n         *     throw new Test262Error();\n         *   }\n         * })\n         * super(...iter);\n         */\n\n        if (\n          bareSuperNodeArguments.length === 1 &&\n          t.isSpreadElement(bareSuperNodeArguments[0]) &&\n          t.isIdentifier(bareSuperNodeArguments[0].argument, {\n            name: \"arguments\",\n          })\n        ) {\n          args.push(bareSuperNodeArguments[0].argument);\n        } else {\n          args.push(t.arrayExpression(bareSuperNodeArguments));\n        }\n      }\n      call = t.callExpression(addCallSuperHelper(classState.file), args);\n    }\n\n    if (\n      bareSuper.parentPath.isExpressionStatement() &&\n      bareSuper.parentPath.container === body.node.body &&\n      body.node.body.length - 1 === bareSuper.parentPath.key\n    ) {\n      // this super call is the last statement in the body so we can just straight up\n      // turn it into a return\n\n      if (classState.superThises.length) {\n        call = t.assignmentExpression(\"=\", thisRef(), call);\n      }\n\n      bareSuper.parentPath.replaceWith(t.returnStatement(call));\n    } else {\n      bareSuper.replaceWith(t.assignmentExpression(\"=\", thisRef(), call));\n    }\n  }\n\n  function verifyConstructor() {\n    if (!classState.isDerived) return;\n\n    const path = classState.userConstructorPath;\n    const body = path.get(\"body\");\n\n    const constructorBody = path.get(\"body\");\n\n    let maxGuaranteedSuperBeforeIndex = constructorBody.node.body.length;\n\n    path.traverse(findThisesVisitor);\n\n    let thisRef = function () {\n      const ref = path.scope.generateDeclaredUidIdentifier(\"this\");\n      maxGuaranteedSuperBeforeIndex++;\n      thisRef = () => t.cloneNode(ref);\n      return ref;\n    };\n\n    const buildAssertThisInitialized = function () {\n      return t.callExpression(\n        classState.file.addHelper(\"assertThisInitialized\"),\n        [thisRef()],\n      );\n    };\n\n    const bareSupers: NodePath<t.CallExpression>[] = [];\n    path.traverse(\n      visitors.environmentVisitor({\n        Super(path) {\n          const { node, parentPath } = path;\n          if (parentPath.isCallExpression({ callee: node })) {\n            bareSupers.unshift(parentPath);\n          }\n        },\n      }),\n    );\n\n    for (const bareSuper of bareSupers) {\n      wrapSuperCall(bareSuper, classState.superName, thisRef, body);\n\n      if (maxGuaranteedSuperBeforeIndex >= 0) {\n        let lastParentPath: NodePath;\n        bareSuper.find(function (parentPath) {\n          // hit top so short circuit\n          if (parentPath === constructorBody) {\n            maxGuaranteedSuperBeforeIndex = Math.min(\n              maxGuaranteedSuperBeforeIndex,\n              lastParentPath.key as number,\n            );\n            return true;\n          }\n\n          const { type } = parentPath;\n          switch (type) {\n            case \"ExpressionStatement\":\n            case \"SequenceExpression\":\n            case \"AssignmentExpression\":\n            case \"BinaryExpression\":\n            case \"MemberExpression\":\n            case \"CallExpression\":\n            case \"NewExpression\":\n            case \"VariableDeclarator\":\n            case \"VariableDeclaration\":\n            case \"BlockStatement\":\n            case \"ArrayExpression\":\n            case \"ObjectExpression\":\n            case \"ObjectProperty\":\n            case \"TemplateLiteral\":\n              lastParentPath = parentPath;\n              return false;\n            default:\n              if (\n                (type === \"LogicalExpression\" &&\n                  parentPath.node.left === lastParentPath.node) ||\n                (parentPath.isConditional() &&\n                  parentPath.node.test === lastParentPath.node) ||\n                (type === \"OptionalCallExpression\" &&\n                  parentPath.node.callee === lastParentPath.node) ||\n                (type === \"OptionalMemberExpression\" &&\n                  parentPath.node.object === lastParentPath.node)\n              ) {\n                lastParentPath = parentPath;\n                return false;\n              }\n          }\n\n          maxGuaranteedSuperBeforeIndex = -1;\n          return true;\n        });\n      }\n    }\n\n    const guaranteedCalls = new Set<NodePath>();\n\n    for (const thisPath of classState.superThises) {\n      const { node, parentPath } = thisPath;\n      if (parentPath.isMemberExpression({ object: node })) {\n        thisPath.replaceWith(thisRef());\n        continue;\n      }\n\n      let thisIndex: number;\n      thisPath.find(function (parentPath) {\n        if (parentPath.parentPath === constructorBody) {\n          thisIndex = parentPath.key as number;\n          return true;\n        }\n      });\n\n      let exprPath: NodePath = thisPath.parentPath.isSequenceExpression()\n        ? thisPath.parentPath\n        : thisPath;\n      if (\n        exprPath.listKey === \"arguments\" &&\n        (exprPath.parentPath.isCallExpression() ||\n          exprPath.parentPath.isOptionalCallExpression())\n      ) {\n        exprPath = exprPath.parentPath;\n      } else {\n        exprPath = null;\n      }\n\n      if (\n        (maxGuaranteedSuperBeforeIndex !== -1 &&\n          thisIndex > maxGuaranteedSuperBeforeIndex) ||\n        guaranteedCalls.has(exprPath)\n      ) {\n        thisPath.replaceWith(thisRef());\n      } else {\n        if (exprPath) {\n          guaranteedCalls.add(exprPath);\n        }\n        thisPath.replaceWith(buildAssertThisInitialized());\n      }\n    }\n\n    let wrapReturn;\n\n    if (classState.isLoose) {\n      wrapReturn = (returnArg: t.Expression | void) => {\n        const thisExpr = buildAssertThisInitialized();\n        return returnArg\n          ? t.logicalExpression(\"||\", returnArg, thisExpr)\n          : thisExpr;\n      };\n    } else {\n      wrapReturn = (returnArg: t.Expression | undefined) => {\n        const returnParams: t.Expression[] = [thisRef()];\n        if (returnArg != null) {\n          returnParams.push(returnArg);\n        }\n        return t.callExpression(\n          classState.file.addHelper(\"possibleConstructorReturn\"),\n          returnParams,\n        );\n      };\n    }\n\n    // if we have a return as the last node in the body then we've already caught that\n    // return\n    const bodyPaths = body.get(\"body\");\n    const guaranteedSuperBeforeFinish =\n      maxGuaranteedSuperBeforeIndex !== -1 &&\n      maxGuaranteedSuperBeforeIndex < bodyPaths.length;\n    if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) {\n      body.pushContainer(\n        \"body\",\n        t.returnStatement(\n          guaranteedSuperBeforeFinish\n            ? thisRef()\n            : buildAssertThisInitialized(),\n        ),\n      );\n    }\n\n    for (const returnPath of classState.superReturns) {\n      returnPath\n        .get(\"argument\")\n        .replaceWith(wrapReturn(returnPath.node.argument));\n    }\n  }\n\n  /**\n   * Push a method to its respective mutatorMap.\n   */\n  function pushMethod(node: t.ClassMethod, wrapped?: t.Expression) {\n    if (node.kind === \"method\") {\n      if (processMethod(node)) return;\n    }\n\n    const placement = node.static ? \"static\" : \"instance\";\n    const methods = classState.methods[placement];\n\n    const descKey = node.kind === \"method\" ? \"value\" : node.kind;\n    const key =\n      t.isNumericLiteral(node.key) || t.isBigIntLiteral(node.key)\n        ? t.stringLiteral(String(node.key.value))\n        : t.toComputedKey(node);\n    methods.hasComputed = !t.isStringLiteral(key);\n\n    const fn: t.Expression = wrapped ?? t.toExpression(node);\n\n    let descriptor: Descriptor;\n    if (\n      !methods.hasComputed &&\n      methods.map.has((key as t.StringLiteral).value)\n    ) {\n      descriptor = methods.map.get((key as t.StringLiteral).value);\n      descriptor[descKey] = fn;\n\n      if (descKey === \"value\") {\n        descriptor.get = null;\n        descriptor.set = null;\n      } else {\n        descriptor.value = null;\n      }\n    } else {\n      descriptor = {\n        key:\n          // private name has been handled in class-properties transform\n          key as t.Expression,\n        [descKey]: fn,\n      } as Descriptor;\n      methods.list.push(descriptor);\n\n      if (!methods.hasComputed) {\n        methods.map.set((key as t.StringLiteral).value, descriptor);\n      }\n    }\n  }\n\n  function processMethod(node: t.ClassMethod) {\n    if (assumptions.setClassMethods && !node.decorators) {\n      // use assignments instead of define properties for loose classes\n      let { classRef } = classState;\n      if (!node.static) {\n        insertProtoAliasOnce();\n        classRef = classState.protoAlias;\n      }\n      const methodName = t.memberExpression(\n        t.cloneNode(classRef),\n        node.key,\n        node.computed || t.isLiteral(node.key),\n      );\n\n      const func: t.Expression = t.functionExpression(\n        // @ts-expect-error We actually set and id through .ensureFunctionName\n        node.id,\n        // @ts-expect-error Fixme: should throw when we see TSParameterProperty\n        node.params,\n        node.body,\n        node.generator,\n        node.async,\n      );\n      t.inherits(func, node);\n\n      const expr = t.expressionStatement(\n        t.assignmentExpression(\"=\", methodName, func),\n      );\n      t.inheritsComments(expr, node);\n      classState.body.push(expr);\n      return true;\n    }\n\n    return false;\n  }\n\n  function insertProtoAliasOnce() {\n    if (classState.protoAlias === null) {\n      setState({ protoAlias: classState.scope.generateUidIdentifier(\"proto\") });\n      const classProto = t.memberExpression(\n        classState.classRef,\n        t.identifier(\"prototype\"),\n      );\n      const protoDeclaration = t.variableDeclaration(\"var\", [\n        t.variableDeclarator(classState.protoAlias, classProto),\n      ]);\n\n      classState.body.push(protoDeclaration);\n    }\n  }\n\n  /**\n   * Replace the constructor body of our class.\n   */\n  function pushConstructor(\n    superReturns: NodePath<t.ReturnStatement>[],\n    method: ClassConstructor,\n    path: NodePath<ClassConstructor>,\n  ) {\n    setState({\n      userConstructorPath: path,\n      userConstructor: method,\n      hasConstructor: true,\n      superReturns,\n    });\n\n    const { construct } = classState;\n\n    t.inheritsComments(construct, method);\n\n    // @ts-expect-error Fixme: should throw when we see TSParameterProperty\n    construct.params = method.params;\n\n    t.inherits(construct.body, method.body);\n    construct.body.directives = method.body.directives;\n\n    // we haven't pushed any descriptors yet\n    // @ts-expect-error todo(flow->ts) maybe remove this block - properties from condition are not used anywhere else\n    if (classState.hasInstanceDescriptors || classState.hasStaticDescriptors) {\n      pushDescriptors();\n    }\n\n    pushInheritsToBody();\n  }\n\n  /**\n   * Push inherits helper to body.\n   */\n  function pushInheritsToBody() {\n    if (!classState.isDerived || classState.pushedInherits) return;\n\n    classState.pushedInherits = true;\n\n    // Unshift to ensure that the constructor inheritance is set up before\n    // any properties can be assigned to the prototype.\n\n    classState.body.unshift(\n      t.expressionStatement(\n        t.callExpression(\n          classState.file.addHelper(\n            classState.isLoose ? \"inheritsLoose\" : \"inherits\",\n          ),\n          [t.cloneNode(classState.classRef), t.cloneNode(classState.superName)],\n        ),\n      ),\n    );\n  }\n\n  function extractDynamicKeys() {\n    const { dynamicKeys, node, scope } = classState;\n\n    for (const elem of node.body.body) {\n      if (!t.isClassMethod(elem) || !elem.computed) continue;\n      if (scope.isPure(elem.key, /* constants only*/ true)) continue;\n\n      const id = scope.generateUidIdentifierBasedOnNode(elem.key);\n      dynamicKeys.set(id.name, elem.key);\n\n      elem.key = id;\n    }\n  }\n\n  function setupClosureParamsArgs() {\n    const { superName, dynamicKeys } = classState;\n    const closureParams = [];\n    const closureArgs = [];\n\n    if (classState.isDerived) {\n      let arg = t.cloneNode(superName);\n      if (classState.extendsNative) {\n        arg = t.callExpression(classState.file.addHelper(\"wrapNativeSuper\"), [\n          arg,\n        ]);\n        annotateAsPure(arg);\n      }\n\n      const param =\n        classState.scope.generateUidIdentifierBasedOnNode(superName);\n\n      closureParams.push(param);\n      closureArgs.push(arg);\n\n      setState({ superName: t.cloneNode(param) });\n    }\n\n    for (const [name, value] of dynamicKeys) {\n      closureParams.push(t.identifier(name));\n      closureArgs.push(value);\n    }\n\n    return { closureParams, closureArgs };\n  }\n\n  function classTransformer(\n    path: NodePath<t.Class>,\n    file: File,\n    builtinClasses: ReadonlySet<string>,\n    isLoose: boolean,\n  ) {\n    setState({\n      parent: path.parent,\n      scope: path.scope,\n      node: path.node,\n      path,\n      file,\n      isLoose,\n    });\n\n    setState({\n      classId: classState.node.id,\n      // this is the name of the binding that will **always** reference the class we've constructed\n      classRef: classState.node.id\n        ? t.identifier(classState.node.id.name)\n        : classState.scope.generateUidIdentifier(\"class\"),\n      superName: classState.node.superClass,\n      isDerived: !!classState.node.superClass,\n      constructorBody: t.blockStatement([]),\n    });\n\n    setState({\n      extendsNative:\n        t.isIdentifier(classState.superName) &&\n        builtinClasses.has(classState.superName.name) &&\n        !classState.scope.hasBinding(\n          classState.superName.name,\n          /* noGlobals */ true,\n        ),\n    });\n\n    const { classRef, node, constructorBody } = classState;\n\n    setState({\n      construct: buildConstructor(classRef, constructorBody, node),\n    });\n\n    extractDynamicKeys();\n\n    const { body } = classState;\n    const { closureParams, closureArgs } = setupClosureParamsArgs();\n\n    buildBody();\n\n    // make sure this class isn't directly called (with A() instead new A())\n    if (!assumptions.noClassCalls) {\n      constructorBody.body.unshift(\n        t.expressionStatement(\n          t.callExpression(classState.file.addHelper(\"classCallCheck\"), [\n            t.thisExpression(),\n            t.cloneNode(classState.classRef),\n          ]),\n        ),\n      );\n    }\n\n    const isStrict = path.isInStrictMode();\n    let constructorOnly = body.length === 0;\n    if (constructorOnly && !isStrict) {\n      for (const param of classState.construct.params) {\n        // It's illegal to put a use strict directive into the body of a function\n        // with non-simple parameters for some reason. So, we have to use a strict\n        // wrapper function.\n        if (!t.isIdentifier(param)) {\n          constructorOnly = false;\n          break;\n        }\n      }\n    }\n\n    const directives = constructorOnly\n      ? classState.construct.body.directives\n      : [];\n    if (!isStrict) {\n      directives.push(t.directive(t.directiveLiteral(\"use strict\")));\n    }\n\n    if (constructorOnly) {\n      // named class with only a constructor\n      const expr = t.toExpression(classState.construct);\n      return classState.isLoose ? expr : createClassHelper([expr]);\n    }\n\n    if (!classState.pushedCreateClass) {\n      body.push(\n        t.returnStatement(\n          classState.isLoose\n            ? t.cloneNode(classState.classRef)\n            : createClassHelper([t.cloneNode(classState.classRef)]),\n        ),\n      );\n    }\n\n    body.unshift(classState.construct);\n\n    const container = t.arrowFunctionExpression(\n      closureParams,\n      t.blockStatement(body, directives),\n    );\n    return t.callExpression(container, closureArgs);\n  }\n\n  return classTransformer(path, file, builtinClasses, isLoose);\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-classes/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-classes/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-classes/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,39 @@
+{
+  "name": "@babel/plugin-transform-classes",
+  "version": "7.25.9",
+  "description": "Compile ES2015 classes to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-classes"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-classes",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "@babel/helper-compilation-targets": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-replace-supers": "^7.25.9",
+    "@babel/traverse": "^7.25.9",
+    "globals": "^11.1.0"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-computed-properties
+
+> Compile ES2015 computed properties to ES5
+
+See our website [@babel/plugin-transform-computed-properties](https://babeljs.io/docs/babel-plugin-transform-computed-properties) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-computed-properties
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-computed-properties --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,168 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _core = require("@babel/core");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _template = require("@babel/template");
+{
+  var DefineAccessorHelper = _template.default.expression.ast`
+    function (type, obj, key, fn) {
+      var desc = { configurable: true, enumerable: true };
+      desc[type] = fn;
+      return Object.defineProperty(obj, key, desc);
+    }
+  `;
+  DefineAccessorHelper._compact = true;
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption;
+  api.assertVersion(7);
+  const setComputedProperties = (_api$assumption = api.assumption("setComputedProperties")) != null ? _api$assumption : options.loose;
+  const pushComputedProps = setComputedProperties ? pushComputedPropsLoose : pushComputedPropsSpec;
+  function buildDefineAccessor(state, obj, prop) {
+    const type = prop.kind;
+    const key = !prop.computed && _core.types.isIdentifier(prop.key) ? _core.types.stringLiteral(prop.key.name) : prop.key;
+    const fn = getValue(prop);
+    {
+      let helper;
+      if (state.availableHelper("defineAccessor")) {
+        helper = state.addHelper("defineAccessor");
+      } else {
+        const file = state.file;
+        helper = file.get("fallbackDefineAccessorHelper");
+        if (!helper) {
+          const id = file.scope.generateUidIdentifier("defineAccessor");
+          file.scope.push({
+            id,
+            init: DefineAccessorHelper
+          });
+          file.set("fallbackDefineAccessorHelper", helper = id);
+        }
+        helper = _core.types.cloneNode(helper);
+      }
+      return _core.types.callExpression(helper, [_core.types.stringLiteral(type), obj, key, fn]);
+    }
+  }
+  function getValue(prop) {
+    if (_core.types.isObjectProperty(prop)) {
+      return prop.value;
+    } else if (_core.types.isObjectMethod(prop)) {
+      return _core.types.functionExpression(null, prop.params, prop.body, prop.generator, prop.async);
+    }
+  }
+  function pushAssign(objId, prop, body) {
+    body.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.cloneNode(objId), prop.key, prop.computed || _core.types.isLiteral(prop.key)), getValue(prop))));
+  }
+  function pushComputedPropsLoose(info) {
+    const {
+      computedProps,
+      state,
+      initPropExpression,
+      objId,
+      body
+    } = info;
+    for (const prop of computedProps) {
+      if (_core.types.isObjectMethod(prop) && (prop.kind === "get" || prop.kind === "set")) {
+        if (computedProps.length === 1) {
+          return buildDefineAccessor(state, initPropExpression, prop);
+        } else {
+          body.push(_core.types.expressionStatement(buildDefineAccessor(state, _core.types.cloneNode(objId), prop)));
+        }
+      } else {
+        pushAssign(_core.types.cloneNode(objId), prop, body);
+      }
+    }
+  }
+  function pushComputedPropsSpec(info) {
+    const {
+      objId,
+      body,
+      computedProps,
+      state
+    } = info;
+    const CHUNK_LENGTH_CAP = 10;
+    let currentChunk = null;
+    const computedPropsChunks = [];
+    for (const prop of computedProps) {
+      if (!currentChunk || currentChunk.length === CHUNK_LENGTH_CAP) {
+        currentChunk = [];
+        computedPropsChunks.push(currentChunk);
+      }
+      currentChunk.push(prop);
+    }
+    for (const chunk of computedPropsChunks) {
+      const single = computedPropsChunks.length === 1;
+      let node = single ? info.initPropExpression : _core.types.cloneNode(objId);
+      for (const prop of chunk) {
+        if (_core.types.isObjectMethod(prop) && (prop.kind === "get" || prop.kind === "set")) {
+          node = buildDefineAccessor(info.state, node, prop);
+        } else {
+          node = _core.types.callExpression(state.addHelper("defineProperty"), [node, _core.types.toComputedKey(prop), getValue(prop)]);
+        }
+      }
+      if (single) return node;
+      body.push(_core.types.expressionStatement(node));
+    }
+  }
+  return {
+    name: "transform-computed-properties",
+    visitor: {
+      ObjectExpression: {
+        exit(path, state) {
+          const {
+            node,
+            parent,
+            scope
+          } = path;
+          let hasComputed = false;
+          for (const prop of node.properties) {
+            hasComputed = prop.computed === true;
+            if (hasComputed) break;
+          }
+          if (!hasComputed) return;
+          const initProps = [];
+          const computedProps = [];
+          let foundComputed = false;
+          for (const prop of node.properties) {
+            if (_core.types.isSpreadElement(prop)) {
+              continue;
+            }
+            if (prop.computed) {
+              foundComputed = true;
+            }
+            if (foundComputed) {
+              computedProps.push(prop);
+            } else {
+              initProps.push(prop);
+            }
+          }
+          const objId = scope.generateUidIdentifierBasedOnNode(parent);
+          const initPropExpression = _core.types.objectExpression(initProps);
+          const body = [];
+          body.push(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(objId, initPropExpression)]));
+          const single = pushComputedProps({
+            scope,
+            objId,
+            body,
+            computedProps,
+            initPropExpression,
+            state
+          });
+          if (single) {
+            path.replaceWith(single);
+          } else {
+            if (setComputedProperties) {
+              body.push(_core.types.expressionStatement(_core.types.cloneNode(objId)));
+            }
+            path.replaceWithMultiple(body);
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperPluginUtils","_template","DefineAccessorHelper","template","expression","ast","_compact","_default","exports","default","declare","api","options","_api$assumption","assertVersion","setComputedProperties","assumption","loose","pushComputedProps","pushComputedPropsLoose","pushComputedPropsSpec","buildDefineAccessor","state","obj","prop","type","kind","key","computed","t","isIdentifier","stringLiteral","name","fn","getValue","helper","availableHelper","addHelper","file","get","id","scope","generateUidIdentifier","push","init","set","cloneNode","callExpression","isObjectProperty","value","isObjectMethod","functionExpression","params","body","generator","async","pushAssign","objId","expressionStatement","assignmentExpression","memberExpression","isLiteral","info","computedProps","initPropExpression","length","CHUNK_LENGTH_CAP","currentChunk","computedPropsChunks","chunk","single","node","toComputedKey","visitor","ObjectExpression","exit","path","parent","hasComputed","properties","initProps","foundComputed","isSpreadElement","generateUidIdentifierBasedOnNode","objectExpression","variableDeclaration","variableDeclarator","replaceWith","replaceWithMultiple"],"sources":["../src/index.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { PluginPass, Scope } from \"@babel/core\";\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport template from \"@babel/template\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\ntype PropertyInfo = {\n  scope: Scope;\n  objId: t.Identifier;\n  body: t.Statement[];\n  computedProps: t.ObjectMember[];\n  initPropExpression: t.ObjectExpression;\n  state: PluginPass;\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var DefineAccessorHelper = template.expression.ast`\n    function (type, obj, key, fn) {\n      var desc = { configurable: true, enumerable: true };\n      desc[type] = fn;\n      return Object.defineProperty(obj, key, desc);\n    }\n  `;\n  // @ts-expect-error undocumented _compact node property\n  DefineAccessorHelper._compact = true;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const setComputedProperties =\n    api.assumption(\"setComputedProperties\") ?? options.loose;\n\n  const pushComputedProps = setComputedProperties\n    ? pushComputedPropsLoose\n    : pushComputedPropsSpec;\n\n  function buildDefineAccessor(\n    state: PluginPass,\n    obj: t.Expression,\n    prop: t.ObjectMethod,\n  ) {\n    const type = prop.kind as \"get\" | \"set\";\n    const key =\n      !prop.computed && t.isIdentifier(prop.key)\n        ? t.stringLiteral(prop.key.name)\n        : prop.key;\n    const fn = getValue(prop);\n    if (process.env.BABEL_8_BREAKING) {\n      return t.callExpression(state.addHelper(\"defineAccessor\"), [\n        t.stringLiteral(type),\n        obj,\n        key,\n        fn,\n      ]);\n    } else {\n      let helper: t.Identifier;\n      if (state.availableHelper(\"defineAccessor\")) {\n        helper = state.addHelper(\"defineAccessor\");\n      } else {\n        // Fallback for @babel/helpers <= 7.20.6, manually add helper function\n        const file = state.file;\n        helper = file.get(\"fallbackDefineAccessorHelper\");\n        if (!helper) {\n          const id = file.scope.generateUidIdentifier(\"defineAccessor\");\n          file.scope.push({\n            id,\n            init: DefineAccessorHelper,\n          });\n          file.set(\"fallbackDefineAccessorHelper\", (helper = id));\n        }\n        helper = t.cloneNode(helper);\n      }\n\n      return t.callExpression(helper, [t.stringLiteral(type), obj, key, fn]);\n    }\n  }\n\n  /**\n   * Get value of an object member under object expression.\n   * Returns a function expression if prop is a ObjectMethod.\n   *\n   * @param {t.ObjectMember} prop\n   * @returns t.Expression\n   */\n  function getValue(prop: t.ObjectMember) {\n    if (t.isObjectProperty(prop)) {\n      return prop.value as t.Expression;\n    } else if (t.isObjectMethod(prop)) {\n      return t.functionExpression(\n        null,\n        prop.params,\n        prop.body,\n        prop.generator,\n        prop.async,\n      );\n    }\n  }\n\n  function pushAssign(\n    objId: t.Identifier,\n    prop: t.ObjectMember,\n    body: t.Statement[],\n  ) {\n    body.push(\n      t.expressionStatement(\n        t.assignmentExpression(\n          \"=\",\n          t.memberExpression(\n            t.cloneNode(objId),\n            prop.key,\n            prop.computed || t.isLiteral(prop.key),\n          ),\n          getValue(prop),\n        ),\n      ),\n    );\n  }\n\n  function pushComputedPropsLoose(info: PropertyInfo) {\n    const { computedProps, state, initPropExpression, objId, body } = info;\n\n    for (const prop of computedProps) {\n      if (\n        t.isObjectMethod(prop) &&\n        (prop.kind === \"get\" || prop.kind === \"set\")\n      ) {\n        if (computedProps.length === 1) {\n          return buildDefineAccessor(state, initPropExpression, prop);\n        } else {\n          body.push(\n            t.expressionStatement(\n              buildDefineAccessor(state, t.cloneNode(objId), prop),\n            ),\n          );\n        }\n      } else {\n        pushAssign(t.cloneNode(objId), prop, body);\n      }\n    }\n  }\n\n  function pushComputedPropsSpec(info: PropertyInfo) {\n    const { objId, body, computedProps, state } = info;\n\n    // To prevent too deep AST structures in case of large objects\n    const CHUNK_LENGTH_CAP = 10;\n\n    let currentChunk: t.ObjectMember[] = null;\n    const computedPropsChunks: Array<t.ObjectMember[]> = [];\n    for (const prop of computedProps) {\n      if (!currentChunk || currentChunk.length === CHUNK_LENGTH_CAP) {\n        currentChunk = [];\n        computedPropsChunks.push(currentChunk);\n      }\n      currentChunk.push(prop);\n    }\n\n    for (const chunk of computedPropsChunks) {\n      const single = computedPropsChunks.length === 1;\n      let node: t.Expression = single\n        ? info.initPropExpression\n        : t.cloneNode(objId);\n      for (const prop of chunk) {\n        if (\n          t.isObjectMethod(prop) &&\n          (prop.kind === \"get\" || prop.kind === \"set\")\n        ) {\n          node = buildDefineAccessor(info.state, node, prop);\n        } else {\n          node = t.callExpression(state.addHelper(\"defineProperty\"), [\n            node,\n            // PrivateName must not be in ObjectExpression\n            t.toComputedKey(prop) as t.Expression,\n            // the value of ObjectProperty in ObjectExpression must be an expression\n            getValue(prop),\n          ]);\n        }\n      }\n      if (single) return node;\n      body.push(t.expressionStatement(node));\n    }\n  }\n\n  return {\n    name: \"transform-computed-properties\",\n\n    visitor: {\n      ObjectExpression: {\n        exit(path, state) {\n          const { node, parent, scope } = path;\n          let hasComputed = false;\n          for (const prop of node.properties) {\n            // @ts-expect-error SpreadElement must not have computed property\n            hasComputed = prop.computed === true;\n            if (hasComputed) break;\n          }\n          if (!hasComputed) return;\n\n          // put all getters/setters into the first object expression as well as all initialisers up\n          // to the first computed property\n\n          const initProps: t.ObjectMember[] = [];\n          const computedProps: t.ObjectMember[] = [];\n          let foundComputed = false;\n\n          for (const prop of node.properties) {\n            if (t.isSpreadElement(prop)) {\n              continue;\n            }\n            if (prop.computed) {\n              foundComputed = true;\n            }\n\n            if (foundComputed) {\n              computedProps.push(prop);\n            } else {\n              initProps.push(prop);\n            }\n          }\n\n          const objId = scope.generateUidIdentifierBasedOnNode(parent);\n          const initPropExpression = t.objectExpression(initProps);\n          const body = [];\n\n          body.push(\n            t.variableDeclaration(\"var\", [\n              t.variableDeclarator(objId, initPropExpression),\n            ]),\n          );\n\n          const single = pushComputedProps({\n            scope,\n            objId,\n            body,\n            computedProps,\n            initPropExpression,\n            state,\n          });\n\n          if (single) {\n            path.replaceWith(single);\n          } else {\n            if (setComputedProperties) {\n              body.push(t.expressionStatement(t.cloneNode(objId)));\n            }\n            path.replaceWithMultiple(body);\n          }\n        },\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-computed-properties/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-computed-properties",
+  "version": "7.25.9",
+  "description": "Compile ES2015 computed properties to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-computed-properties"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-computed-properties",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/template": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-destructuring/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-destructuring/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-destructuring/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-destructuring/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-destructuring/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-destructuring/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-destructuring
+
+> Compile ES2015 destructuring to ES5
+
+See our website [@babel/plugin-transform-destructuring](https://babeljs.io/docs/babel-plugin-transform-destructuring) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-destructuring
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-destructuring --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-destructuring/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-destructuring/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-destructuring/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,577 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+var core = require('@babel/core');
+
+function isPureVoid(node) {
+  return core.types.isUnaryExpression(node) && node.operator === "void" && core.types.isPureish(node.argument);
+}
+function unshiftForXStatementBody(statementPath, newStatements) {
+  statementPath.ensureBlock();
+  const {
+    scope,
+    node
+  } = statementPath;
+  const bodyScopeBindings = statementPath.get("body").scope.bindings;
+  const hasShadowedBlockScopedBindings = Object.keys(bodyScopeBindings).some(name => scope.hasBinding(name));
+  if (hasShadowedBlockScopedBindings) {
+    node.body = core.types.blockStatement([...newStatements, node.body]);
+  } else {
+    node.body.body.unshift(...newStatements);
+  }
+}
+function hasArrayRest(pattern) {
+  return pattern.elements.some(elem => core.types.isRestElement(elem));
+}
+function hasObjectRest(pattern) {
+  return pattern.properties.some(prop => core.types.isRestElement(prop));
+}
+const STOP_TRAVERSAL = {};
+const arrayUnpackVisitor = (node, ancestors, state) => {
+  if (!ancestors.length) {
+    return;
+  }
+  if (core.types.isIdentifier(node) && core.types.isReferenced(node, ancestors[ancestors.length - 1].node) && state.bindings[node.name]) {
+    state.deopt = true;
+    throw STOP_TRAVERSAL;
+  }
+};
+class DestructuringTransformer {
+  constructor(opts) {
+    this.blockHoist = void 0;
+    this.operator = void 0;
+    this.arrayRefSet = void 0;
+    this.nodes = void 0;
+    this.scope = void 0;
+    this.kind = void 0;
+    this.iterableIsArray = void 0;
+    this.arrayLikeIsIterable = void 0;
+    this.objectRestNoSymbols = void 0;
+    this.useBuiltIns = void 0;
+    this.addHelper = void 0;
+    this.blockHoist = opts.blockHoist;
+    this.operator = opts.operator;
+    this.arrayRefSet = new Set();
+    this.nodes = opts.nodes || [];
+    this.scope = opts.scope;
+    this.kind = opts.kind;
+    this.iterableIsArray = opts.iterableIsArray;
+    this.arrayLikeIsIterable = opts.arrayLikeIsIterable;
+    this.objectRestNoSymbols = opts.objectRestNoSymbols;
+    this.useBuiltIns = opts.useBuiltIns;
+    this.addHelper = opts.addHelper;
+  }
+  getExtendsHelper() {
+    return this.useBuiltIns ? core.types.memberExpression(core.types.identifier("Object"), core.types.identifier("assign")) : this.addHelper("extends");
+  }
+  buildVariableAssignment(id, init) {
+    let op = this.operator;
+    if (core.types.isMemberExpression(id) || core.types.isOptionalMemberExpression(id)) op = "=";
+    let node;
+    if (op) {
+      node = core.types.expressionStatement(core.types.assignmentExpression(op, id, core.types.cloneNode(init) || this.scope.buildUndefinedNode()));
+    } else {
+      let nodeInit;
+      if ((this.kind === "const" || this.kind === "using") && init === null) {
+        nodeInit = this.scope.buildUndefinedNode();
+      } else {
+        nodeInit = core.types.cloneNode(init);
+      }
+      node = core.types.variableDeclaration(this.kind, [core.types.variableDeclarator(id, nodeInit)]);
+    }
+    node._blockHoist = this.blockHoist;
+    return node;
+  }
+  buildVariableDeclaration(id, init) {
+    const declar = core.types.variableDeclaration("var", [core.types.variableDeclarator(core.types.cloneNode(id), core.types.cloneNode(init))]);
+    declar._blockHoist = this.blockHoist;
+    return declar;
+  }
+  push(id, _init) {
+    const init = core.types.cloneNode(_init);
+    if (core.types.isObjectPattern(id)) {
+      this.pushObjectPattern(id, init);
+    } else if (core.types.isArrayPattern(id)) {
+      this.pushArrayPattern(id, init);
+    } else if (core.types.isAssignmentPattern(id)) {
+      this.pushAssignmentPattern(id, init);
+    } else {
+      this.nodes.push(this.buildVariableAssignment(id, init));
+    }
+  }
+  toArray(node, count) {
+    if (this.iterableIsArray || core.types.isIdentifier(node) && this.arrayRefSet.has(node.name)) {
+      return node;
+    } else {
+      const {
+        scope,
+        arrayLikeIsIterable
+      } = this;
+      if (core.types.isIdentifier(node)) {
+        const binding = scope.getBinding(node.name);
+        if (binding != null && binding.constant && binding.path.isGenericType("Array")) {
+          return node;
+        }
+      }
+      if (core.types.isArrayExpression(node)) {
+        return node;
+      }
+      if (core.types.isIdentifier(node, {
+        name: "arguments"
+      })) {
+        return core.template.expression.ast`
+          Array.prototype.slice.call(${node})
+        `;
+      }
+      let helperName;
+      const args = [node];
+      if (typeof count === "number") {
+        args.push(core.types.numericLiteral(count));
+        helperName = "slicedToArray";
+      } else {
+        helperName = "toArray";
+      }
+      if (arrayLikeIsIterable) {
+        args.unshift(scope.path.hub.addHelper(helperName));
+        helperName = "maybeArrayLike";
+      }
+      return core.types.callExpression(scope.path.hub.addHelper(helperName), args);
+    }
+  }
+  pushAssignmentPattern({
+    left,
+    right
+  }, valueRef) {
+    if (isPureVoid(valueRef)) {
+      this.push(left, right);
+      return;
+    }
+    const tempId = this.scope.generateUidIdentifierBasedOnNode(valueRef);
+    this.nodes.push(this.buildVariableDeclaration(tempId, valueRef));
+    const tempConditional = core.types.conditionalExpression(core.types.binaryExpression("===", core.types.cloneNode(tempId), this.scope.buildUndefinedNode()), right, core.types.cloneNode(tempId));
+    if (core.types.isPattern(left)) {
+      let patternId;
+      let node;
+      if (this.kind === "const" || this.kind === "let" || this.kind === "using") {
+        patternId = this.scope.generateUidIdentifier(tempId.name);
+        node = this.buildVariableDeclaration(patternId, tempConditional);
+      } else {
+        patternId = tempId;
+        node = core.types.expressionStatement(core.types.assignmentExpression("=", core.types.cloneNode(tempId), tempConditional));
+      }
+      this.nodes.push(node);
+      this.push(left, patternId);
+    } else {
+      this.nodes.push(this.buildVariableAssignment(left, tempConditional));
+    }
+  }
+  pushObjectRest(pattern, objRef, spreadProp, spreadPropIndex) {
+    const value = buildObjectExcludingKeys(pattern.properties.slice(0, spreadPropIndex), objRef, this.scope, name => this.addHelper(name), this.objectRestNoSymbols, this.useBuiltIns);
+    this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));
+  }
+  pushObjectProperty(prop, propRef) {
+    if (core.types.isLiteral(prop.key)) prop.computed = true;
+    const pattern = prop.value;
+    const objRef = core.types.memberExpression(core.types.cloneNode(propRef), prop.key, prop.computed);
+    if (core.types.isPattern(pattern)) {
+      this.push(pattern, objRef);
+    } else {
+      this.nodes.push(this.buildVariableAssignment(pattern, objRef));
+    }
+  }
+  pushObjectPattern(pattern, objRef) {
+    if (!pattern.properties.length) {
+      this.nodes.push(core.types.expressionStatement(core.types.callExpression(this.addHelper("objectDestructuringEmpty"), isPureVoid(objRef) ? [] : [objRef])));
+      return;
+    }
+    if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {
+      const temp = this.scope.generateUidIdentifierBasedOnNode(objRef);
+      this.nodes.push(this.buildVariableDeclaration(temp, objRef));
+      objRef = temp;
+    }
+    if (hasObjectRest(pattern)) {
+      let copiedPattern;
+      for (let i = 0; i < pattern.properties.length; i++) {
+        const prop = pattern.properties[i];
+        if (core.types.isRestElement(prop)) {
+          break;
+        }
+        const key = prop.key;
+        if (prop.computed && !this.scope.isPure(key)) {
+          const name = this.scope.generateUidIdentifierBasedOnNode(key);
+          this.nodes.push(this.buildVariableDeclaration(name, key));
+          if (!copiedPattern) {
+            copiedPattern = pattern = Object.assign({}, pattern, {
+              properties: pattern.properties.slice()
+            });
+          }
+          copiedPattern.properties[i] = Object.assign({}, prop, {
+            key: name
+          });
+        }
+      }
+    }
+    for (let i = 0; i < pattern.properties.length; i++) {
+      const prop = pattern.properties[i];
+      if (core.types.isRestElement(prop)) {
+        this.pushObjectRest(pattern, objRef, prop, i);
+      } else {
+        this.pushObjectProperty(prop, objRef);
+      }
+    }
+  }
+  canUnpackArrayPattern(pattern, arr) {
+    if (!core.types.isArrayExpression(arr)) return false;
+    if (pattern.elements.length > arr.elements.length) return;
+    if (pattern.elements.length < arr.elements.length && !hasArrayRest(pattern)) {
+      return false;
+    }
+    for (const elem of pattern.elements) {
+      if (!elem) return false;
+      if (core.types.isMemberExpression(elem)) return false;
+    }
+    for (const elem of arr.elements) {
+      if (core.types.isSpreadElement(elem)) return false;
+      if (core.types.isCallExpression(elem)) return false;
+      if (core.types.isMemberExpression(elem)) return false;
+    }
+    const bindings = core.types.getBindingIdentifiers(pattern);
+    const state = {
+      deopt: false,
+      bindings
+    };
+    try {
+      core.types.traverse(arr, arrayUnpackVisitor, state);
+    } catch (e) {
+      if (e !== STOP_TRAVERSAL) throw e;
+    }
+    return !state.deopt;
+  }
+  pushUnpackedArrayPattern(pattern, arr) {
+    const holeToUndefined = el => el != null ? el : this.scope.buildUndefinedNode();
+    for (let i = 0; i < pattern.elements.length; i++) {
+      const elem = pattern.elements[i];
+      if (core.types.isRestElement(elem)) {
+        this.push(elem.argument, core.types.arrayExpression(arr.elements.slice(i).map(holeToUndefined)));
+      } else {
+        this.push(elem, holeToUndefined(arr.elements[i]));
+      }
+    }
+  }
+  pushArrayPattern(pattern, arrayRef) {
+    if (arrayRef === null) {
+      this.nodes.push(core.types.expressionStatement(core.types.callExpression(this.addHelper("objectDestructuringEmpty"), [])));
+      return;
+    }
+    if (!pattern.elements) return;
+    if (this.canUnpackArrayPattern(pattern, arrayRef)) {
+      this.pushUnpackedArrayPattern(pattern, arrayRef);
+      return;
+    }
+    const count = !hasArrayRest(pattern) && pattern.elements.length;
+    const toArray = this.toArray(arrayRef, count);
+    if (core.types.isIdentifier(toArray)) {
+      arrayRef = toArray;
+    } else {
+      arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);
+      this.arrayRefSet.add(arrayRef.name);
+      this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));
+    }
+    for (let i = 0; i < pattern.elements.length; i++) {
+      const elem = pattern.elements[i];
+      if (!elem) continue;
+      let elemRef;
+      if (core.types.isRestElement(elem)) {
+        elemRef = this.toArray(arrayRef);
+        elemRef = core.types.callExpression(core.types.memberExpression(elemRef, core.types.identifier("slice")), [core.types.numericLiteral(i)]);
+        this.push(elem.argument, elemRef);
+      } else {
+        elemRef = core.types.memberExpression(arrayRef, core.types.numericLiteral(i), true);
+        this.push(elem, elemRef);
+      }
+    }
+  }
+  init(pattern, ref) {
+    if (!core.types.isArrayExpression(ref) && !core.types.isMemberExpression(ref)) {
+      const memo = this.scope.maybeGenerateMemoised(ref, true);
+      if (memo) {
+        this.nodes.push(this.buildVariableDeclaration(memo, core.types.cloneNode(ref)));
+        ref = memo;
+      }
+    }
+    this.push(pattern, ref);
+    return this.nodes;
+  }
+}
+function buildObjectExcludingKeys(excludedKeys, objRef, scope, addHelper, objectRestNoSymbols, useBuiltIns) {
+  const keys = [];
+  let allLiteral = true;
+  let hasTemplateLiteral = false;
+  for (let i = 0; i < excludedKeys.length; i++) {
+    const prop = excludedKeys[i];
+    const key = prop.key;
+    if (core.types.isIdentifier(key) && !prop.computed) {
+      keys.push(core.types.stringLiteral(key.name));
+    } else if (core.types.isTemplateLiteral(key)) {
+      keys.push(core.types.cloneNode(key));
+      hasTemplateLiteral = true;
+    } else if (core.types.isLiteral(key)) {
+      keys.push(core.types.stringLiteral(String(key.value)));
+    } else if (core.types.isPrivateName(key)) ; else {
+      keys.push(core.types.cloneNode(key));
+      allLiteral = false;
+    }
+  }
+  let value;
+  if (keys.length === 0) {
+    const extendsHelper = useBuiltIns ? core.types.memberExpression(core.types.identifier("Object"), core.types.identifier("assign")) : addHelper("extends");
+    value = core.types.callExpression(extendsHelper, [core.types.objectExpression([]), core.types.sequenceExpression([core.types.callExpression(addHelper("objectDestructuringEmpty"), [core.types.cloneNode(objRef)]), core.types.cloneNode(objRef)])]);
+  } else {
+    let keyExpression = core.types.arrayExpression(keys);
+    if (!allLiteral) {
+      keyExpression = core.types.callExpression(core.types.memberExpression(keyExpression, core.types.identifier("map")), [addHelper("toPropertyKey")]);
+    } else if (!hasTemplateLiteral && !core.types.isProgram(scope.block)) {
+      const programScope = scope.getProgramParent();
+      const id = programScope.generateUidIdentifier("excluded");
+      programScope.push({
+        id,
+        init: keyExpression,
+        kind: "const"
+      });
+      keyExpression = core.types.cloneNode(id);
+    }
+    value = core.types.callExpression(addHelper(`objectWithoutProperties${objectRestNoSymbols ? "Loose" : ""}`), [core.types.cloneNode(objRef), keyExpression]);
+  }
+  return value;
+}
+function convertVariableDeclaration(path, addHelper, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns) {
+  const {
+    node,
+    scope
+  } = path;
+  const nodeKind = node.kind;
+  const nodeLoc = node.loc;
+  const nodes = [];
+  for (let i = 0; i < node.declarations.length; i++) {
+    const declar = node.declarations[i];
+    const patternId = declar.init;
+    const pattern = declar.id;
+    const destructuring = new DestructuringTransformer({
+      blockHoist: node._blockHoist,
+      nodes: nodes,
+      scope: scope,
+      kind: node.kind,
+      iterableIsArray,
+      arrayLikeIsIterable,
+      useBuiltIns,
+      objectRestNoSymbols,
+      addHelper
+    });
+    if (core.types.isPattern(pattern)) {
+      destructuring.init(pattern, patternId);
+      if (+i !== node.declarations.length - 1) {
+        core.types.inherits(nodes[nodes.length - 1], declar);
+      }
+    } else {
+      nodes.push(core.types.inherits(destructuring.buildVariableAssignment(pattern, patternId), declar));
+    }
+  }
+  let tail = null;
+  let nodesOut = [];
+  for (const node of nodes) {
+    if (core.types.isVariableDeclaration(node)) {
+      if (tail !== null) {
+        tail.declarations.push(...node.declarations);
+        continue;
+      } else {
+        node.kind = nodeKind;
+        tail = node;
+      }
+    } else {
+      tail = null;
+    }
+    if (!node.loc) {
+      node.loc = nodeLoc;
+    }
+    nodesOut.push(node);
+  }
+  if (nodesOut.length === 2 && core.types.isVariableDeclaration(nodesOut[0]) && core.types.isExpressionStatement(nodesOut[1]) && core.types.isCallExpression(nodesOut[1].expression) && nodesOut[0].declarations.length === 1) {
+    const expr = nodesOut[1].expression;
+    expr.arguments = [nodesOut[0].declarations[0].init];
+    nodesOut = [expr];
+  } else {
+    if (core.types.isForStatement(path.parent, {
+      init: node
+    }) && !nodesOut.some(v => core.types.isVariableDeclaration(v))) {
+      for (let i = 0; i < nodesOut.length; i++) {
+        const node = nodesOut[i];
+        if (core.types.isExpressionStatement(node)) {
+          nodesOut[i] = node.expression;
+        }
+      }
+    }
+  }
+  if (nodesOut.length === 1) {
+    path.replaceWith(nodesOut[0]);
+  } else {
+    path.replaceWithMultiple(nodesOut);
+  }
+  scope.crawl();
+}
+function convertAssignmentExpression(path, addHelper, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns) {
+  const {
+    node,
+    scope,
+    parentPath
+  } = path;
+  const nodes = [];
+  const destructuring = new DestructuringTransformer({
+    operator: node.operator,
+    scope: scope,
+    nodes: nodes,
+    arrayLikeIsIterable,
+    iterableIsArray,
+    objectRestNoSymbols,
+    useBuiltIns,
+    addHelper
+  });
+  let ref;
+  if (!parentPath.isExpressionStatement() && !parentPath.isSequenceExpression() || path.isCompletionRecord()) {
+    ref = scope.generateUidIdentifierBasedOnNode(node.right, "ref");
+    nodes.push(core.types.variableDeclaration("var", [core.types.variableDeclarator(ref, node.right)]));
+    if (core.types.isArrayExpression(node.right)) {
+      destructuring.arrayRefSet.add(ref.name);
+    }
+  }
+  destructuring.init(node.left, ref || node.right);
+  if (ref) {
+    if (parentPath.isArrowFunctionExpression()) {
+      path.replaceWith(core.types.blockStatement([]));
+      nodes.push(core.types.returnStatement(core.types.cloneNode(ref)));
+    } else {
+      nodes.push(core.types.expressionStatement(core.types.cloneNode(ref)));
+    }
+  }
+  path.replaceWithMultiple(nodes);
+  scope.crawl();
+}
+
+function variableDeclarationHasPattern(node) {
+  for (const declar of node.declarations) {
+    if (core.types.isPattern(declar.id)) {
+      return true;
+    }
+  }
+  return false;
+}
+var index = helperPluginUtils.declare((api, options) => {
+  var _ref, _api$assumption, _ref2, _options$allowArrayLi, _ref3, _api$assumption2;
+  api.assertVersion(7);
+  const {
+    useBuiltIns = false
+  } = options;
+  const iterableIsArray = (_ref = (_api$assumption = api.assumption("iterableIsArray")) != null ? _api$assumption : options.loose) != null ? _ref : false;
+  const arrayLikeIsIterable = (_ref2 = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable")) != null ? _ref2 : false;
+  const objectRestNoSymbols = (_ref3 = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : options.loose) != null ? _ref3 : false;
+  return {
+    name: "transform-destructuring",
+    visitor: {
+      ExportNamedDeclaration(path) {
+        const declaration = path.get("declaration");
+        if (!declaration.isVariableDeclaration()) return;
+        if (!variableDeclarationHasPattern(declaration.node)) return;
+        const specifiers = [];
+        for (const name of Object.keys(path.getOuterBindingIdentifiers())) {
+          specifiers.push(core.types.exportSpecifier(core.types.identifier(name), core.types.identifier(name)));
+        }
+        path.replaceWith(declaration.node);
+        path.insertAfter(core.types.exportNamedDeclaration(null, specifiers));
+        path.scope.crawl();
+      },
+      ForXStatement(path) {
+        const {
+          node,
+          scope
+        } = path;
+        const left = node.left;
+        if (core.types.isPattern(left)) {
+          const temp = scope.generateUidIdentifier("ref");
+          node.left = core.types.variableDeclaration("var", [core.types.variableDeclarator(temp)]);
+          path.ensureBlock();
+          const statementBody = path.node.body.body;
+          const nodes = [];
+          if (statementBody.length === 0 && path.isCompletionRecord()) {
+            nodes.unshift(core.types.expressionStatement(scope.buildUndefinedNode()));
+          }
+          nodes.unshift(core.types.expressionStatement(core.types.assignmentExpression("=", left, core.types.cloneNode(temp))));
+          unshiftForXStatementBody(path, nodes);
+          scope.crawl();
+          return;
+        }
+        if (!core.types.isVariableDeclaration(left)) return;
+        const pattern = left.declarations[0].id;
+        if (!core.types.isPattern(pattern)) return;
+        const key = scope.generateUidIdentifier("ref");
+        node.left = core.types.variableDeclaration(left.kind, [core.types.variableDeclarator(key, null)]);
+        const nodes = [];
+        const destructuring = new DestructuringTransformer({
+          kind: left.kind,
+          scope: scope,
+          nodes: nodes,
+          arrayLikeIsIterable,
+          iterableIsArray,
+          objectRestNoSymbols,
+          useBuiltIns,
+          addHelper: name => this.addHelper(name)
+        });
+        destructuring.init(pattern, key);
+        unshiftForXStatementBody(path, nodes);
+        scope.crawl();
+      },
+      CatchClause({
+        node,
+        scope
+      }) {
+        const pattern = node.param;
+        if (!core.types.isPattern(pattern)) return;
+        const ref = scope.generateUidIdentifier("ref");
+        node.param = ref;
+        const nodes = [];
+        const destructuring = new DestructuringTransformer({
+          kind: "let",
+          scope: scope,
+          nodes: nodes,
+          arrayLikeIsIterable,
+          iterableIsArray,
+          objectRestNoSymbols,
+          useBuiltIns,
+          addHelper: name => this.addHelper(name)
+        });
+        destructuring.init(pattern, ref);
+        node.body.body = [...nodes, ...node.body.body];
+        scope.crawl();
+      },
+      AssignmentExpression(path, state) {
+        if (!core.types.isPattern(path.node.left)) return;
+        convertAssignmentExpression(path, name => state.addHelper(name), arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns);
+      },
+      VariableDeclaration(path, state) {
+        const {
+          node,
+          parent
+        } = path;
+        if (core.types.isForXStatement(parent)) return;
+        if (!parent || !path.container) return;
+        if (!variableDeclarationHasPattern(node)) return;
+        convertVariableDeclaration(path, name => state.addHelper(name), arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns);
+      }
+    }
+  };
+});
+
+exports.buildObjectExcludingKeys = buildObjectExcludingKeys;
+exports.default = index;
+exports.unshiftForXStatementBody = unshiftForXStatementBody;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-destructuring/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-destructuring/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-destructuring/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/util.ts","../src/index.ts"],"sourcesContent":["import { types as t, template } from \"@babel/core\";\nimport type { File, Scope, NodePath } from \"@babel/core\";\n\nfunction isPureVoid(node: t.Node) {\n  return (\n    t.isUnaryExpression(node) &&\n    node.operator === \"void\" &&\n    t.isPureish(node.argument)\n  );\n}\n\nexport function unshiftForXStatementBody(\n  statementPath: NodePath<t.ForXStatement>,\n  newStatements: t.Statement[],\n) {\n  statementPath.ensureBlock();\n  const { scope, node } = statementPath;\n  const bodyScopeBindings = statementPath.get(\"body\").scope.bindings;\n  const hasShadowedBlockScopedBindings = Object.keys(bodyScopeBindings).some(\n    name => scope.hasBinding(name),\n  );\n\n  if (hasShadowedBlockScopedBindings) {\n    // handle shadowed variables referenced in computed keys:\n    // var a = 0;for (const { #x: x, [a++]: y } of z) { const a = 1; }\n    node.body = t.blockStatement([...newStatements, node.body]);\n  } else {\n    (node.body as t.BlockStatement).body.unshift(...newStatements);\n  }\n}\n\n/**\n * Test if an ArrayPattern's elements contain any RestElements.\n */\n\nfunction hasArrayRest(pattern: t.ArrayPattern) {\n  return pattern.elements.some(elem => t.isRestElement(elem));\n}\n\n/**\n * Test if an ObjectPattern's properties contain any RestElements.\n */\n\nfunction hasObjectRest(pattern: t.ObjectPattern) {\n  return pattern.properties.some(prop => t.isRestElement(prop));\n}\n\ninterface UnpackableArrayExpression extends t.ArrayExpression {\n  elements: (null | t.Expression)[];\n}\n\nconst STOP_TRAVERSAL = {};\n\ninterface ArrayUnpackVisitorState {\n  deopt: boolean;\n  bindings: Record<string, t.Identifier>;\n}\n\n// NOTE: This visitor is meant to be used via t.traverse\nconst arrayUnpackVisitor = (\n  node: t.Node,\n  ancestors: t.TraversalAncestors,\n  state: ArrayUnpackVisitorState,\n) => {\n  if (!ancestors.length) {\n    // Top-level node: this is the array literal.\n    return;\n  }\n\n  if (\n    t.isIdentifier(node) &&\n    t.isReferenced(node, ancestors[ancestors.length - 1].node) &&\n    state.bindings[node.name]\n  ) {\n    state.deopt = true;\n    // eslint-disable-next-line @typescript-eslint/only-throw-error\n    throw STOP_TRAVERSAL;\n  }\n};\n\nexport type DestructuringTransformerNode =\n  | t.VariableDeclaration\n  | t.ExpressionStatement\n  | t.ReturnStatement;\n\ninterface DestructuringTransformerOption {\n  blockHoist?: number;\n  operator?: t.AssignmentExpression[\"operator\"];\n  nodes?: DestructuringTransformerNode[];\n  kind?: t.VariableDeclaration[\"kind\"];\n  scope: Scope;\n  arrayLikeIsIterable: boolean;\n  iterableIsArray: boolean;\n  objectRestNoSymbols: boolean;\n  useBuiltIns: boolean;\n  addHelper: File[\"addHelper\"];\n}\nexport class DestructuringTransformer {\n  private blockHoist: number;\n  private operator: t.AssignmentExpression[\"operator\"];\n  arrayRefSet: Set<string>;\n  private nodes: DestructuringTransformerNode[];\n  private scope: Scope;\n  private kind: t.VariableDeclaration[\"kind\"];\n  private iterableIsArray: boolean;\n  private arrayLikeIsIterable: boolean;\n  private objectRestNoSymbols: boolean;\n  private useBuiltIns: boolean;\n  private addHelper: File[\"addHelper\"];\n  constructor(opts: DestructuringTransformerOption) {\n    this.blockHoist = opts.blockHoist;\n    this.operator = opts.operator;\n    this.arrayRefSet = new Set();\n    this.nodes = opts.nodes || [];\n    this.scope = opts.scope;\n    this.kind = opts.kind;\n    this.iterableIsArray = opts.iterableIsArray;\n    this.arrayLikeIsIterable = opts.arrayLikeIsIterable;\n    this.objectRestNoSymbols = opts.objectRestNoSymbols;\n    this.useBuiltIns = opts.useBuiltIns;\n    this.addHelper = opts.addHelper;\n  }\n\n  getExtendsHelper() {\n    return this.useBuiltIns\n      ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n      : this.addHelper(\"extends\");\n  }\n\n  buildVariableAssignment(\n    id: t.AssignmentExpression[\"left\"],\n    init: t.Expression,\n  ) {\n    let op = this.operator;\n    if (t.isMemberExpression(id) || t.isOptionalMemberExpression(id)) op = \"=\";\n\n    let node: t.ExpressionStatement | t.VariableDeclaration;\n\n    if (op) {\n      node = t.expressionStatement(\n        t.assignmentExpression(\n          op,\n          id,\n          t.cloneNode(init) || this.scope.buildUndefinedNode(),\n        ),\n      );\n    } else {\n      let nodeInit: t.Expression;\n\n      if ((this.kind === \"const\" || this.kind === \"using\") && init === null) {\n        nodeInit = this.scope.buildUndefinedNode();\n      } else {\n        nodeInit = t.cloneNode(init);\n      }\n\n      node = t.variableDeclaration(this.kind, [\n        t.variableDeclarator(\n          id as t.Identifier | t.ArrayPattern | t.ObjectPattern,\n          nodeInit,\n        ),\n      ]);\n    }\n\n    //@ts-expect-error(todo): document block hoist property\n    node._blockHoist = this.blockHoist;\n\n    return node;\n  }\n\n  buildVariableDeclaration(id: t.Identifier, init: t.Expression) {\n    const declar = t.variableDeclaration(\"var\", [\n      t.variableDeclarator(t.cloneNode(id), t.cloneNode(init)),\n    ]);\n    // @ts-expect-error todo(flow->ts): avoid mutations\n    declar._blockHoist = this.blockHoist;\n    return declar;\n  }\n\n  push(id: t.LVal, _init: t.Expression | null) {\n    const init = t.cloneNode(_init);\n    if (t.isObjectPattern(id)) {\n      this.pushObjectPattern(id, init);\n    } else if (t.isArrayPattern(id)) {\n      this.pushArrayPattern(id, init);\n    } else if (t.isAssignmentPattern(id)) {\n      this.pushAssignmentPattern(id, init);\n    } else {\n      this.nodes.push(\n        this.buildVariableAssignment(\n          id as t.AssignmentExpression[\"left\"],\n          init,\n        ),\n      );\n    }\n  }\n\n  toArray(node: t.Expression, count?: false | number) {\n    if (\n      this.iterableIsArray ||\n      (t.isIdentifier(node) && this.arrayRefSet.has(node.name))\n    ) {\n      return node;\n    } else {\n      const { scope, arrayLikeIsIterable } = this;\n\n      if (t.isIdentifier(node)) {\n        const binding = scope.getBinding(node.name);\n        if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n          return node;\n        }\n      }\n\n      if (t.isArrayExpression(node)) {\n        return node;\n      }\n\n      if (t.isIdentifier(node, { name: \"arguments\" })) {\n        return template.expression.ast`\n          Array.prototype.slice.call(${node})\n        `;\n      }\n\n      let helperName;\n      const args = [node];\n      if (typeof count === \"number\") {\n        args.push(t.numericLiteral(count));\n\n        // Used in array-rest to create an array from a subset of an iterable.\n        helperName = \"slicedToArray\";\n        // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n      } else {\n        // Used in array-rest to create an array\n        helperName = \"toArray\";\n      }\n\n      if (arrayLikeIsIterable) {\n        args.unshift(scope.path.hub.addHelper(helperName));\n        helperName = \"maybeArrayLike\";\n      }\n\n      return t.callExpression(scope.path.hub.addHelper(helperName), args);\n    }\n  }\n\n  pushAssignmentPattern(\n    { left, right }: t.AssignmentPattern,\n    valueRef: t.Expression | null,\n  ) {\n    // handle array init with void 0. This also happens when\n    // the value was originally a hole.\n    // const [x = 42] = [void 0,];\n    // -> const x = 42;\n    if (isPureVoid(valueRef)) {\n      this.push(left, right);\n      return;\n    }\n\n    // we need to assign the current value of the assignment to avoid evaluating\n    // it more than once\n    const tempId = this.scope.generateUidIdentifierBasedOnNode(valueRef);\n\n    this.nodes.push(this.buildVariableDeclaration(tempId, valueRef));\n\n    const tempConditional = t.conditionalExpression(\n      t.binaryExpression(\n        \"===\",\n        t.cloneNode(tempId),\n        this.scope.buildUndefinedNode(),\n      ),\n      right,\n      t.cloneNode(tempId),\n    );\n\n    if (t.isPattern(left)) {\n      let patternId;\n      let node;\n\n      if (\n        this.kind === \"const\" ||\n        this.kind === \"let\" ||\n        this.kind === \"using\"\n      ) {\n        patternId = this.scope.generateUidIdentifier(tempId.name);\n        node = this.buildVariableDeclaration(patternId, tempConditional);\n      } else {\n        patternId = tempId;\n\n        node = t.expressionStatement(\n          t.assignmentExpression(\"=\", t.cloneNode(tempId), tempConditional),\n        );\n      }\n\n      this.nodes.push(node);\n      this.push(left, patternId);\n    } else {\n      this.nodes.push(this.buildVariableAssignment(left, tempConditional));\n    }\n  }\n\n  pushObjectRest(\n    pattern: t.ObjectPattern,\n    objRef: t.Expression,\n    spreadProp: t.RestElement,\n    spreadPropIndex: number,\n  ) {\n    const value = buildObjectExcludingKeys(\n      pattern.properties.slice(0, spreadPropIndex) as t.ObjectProperty[],\n      objRef,\n      this.scope,\n      name => this.addHelper(name),\n      this.objectRestNoSymbols,\n      this.useBuiltIns,\n    );\n    this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));\n  }\n\n  pushObjectProperty(prop: t.ObjectProperty, propRef: t.Expression) {\n    if (t.isLiteral(prop.key)) prop.computed = true;\n\n    const pattern = prop.value as t.AssignmentExpression[\"left\"];\n    const objRef = t.memberExpression(\n      t.cloneNode(propRef),\n      prop.key,\n      prop.computed,\n    );\n\n    if (t.isPattern(pattern)) {\n      this.push(pattern, objRef);\n    } else {\n      this.nodes.push(this.buildVariableAssignment(pattern, objRef));\n    }\n  }\n\n  pushObjectPattern(pattern: t.ObjectPattern, objRef: t.Expression) {\n    // https://github.com/babel/babel/issues/681\n\n    if (!pattern.properties.length) {\n      this.nodes.push(\n        t.expressionStatement(\n          t.callExpression(\n            this.addHelper(\"objectDestructuringEmpty\"),\n            isPureVoid(objRef) ? [] : [objRef],\n          ),\n        ),\n      );\n      return;\n    }\n\n    // if we have more than one properties in this pattern and the objectRef is a\n    // member expression then we need to assign it to a temporary variable so it's\n    // only evaluated once\n\n    if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {\n      const temp = this.scope.generateUidIdentifierBasedOnNode(objRef);\n      this.nodes.push(this.buildVariableDeclaration(temp, objRef));\n      objRef = temp;\n    }\n\n    // Replace impure computed key expressions if we have a rest parameter\n    if (hasObjectRest(pattern)) {\n      let copiedPattern: t.ObjectPattern;\n      for (let i = 0; i < pattern.properties.length; i++) {\n        const prop = pattern.properties[i];\n        if (t.isRestElement(prop)) {\n          break;\n        }\n        const key = prop.key;\n        if (prop.computed && !this.scope.isPure(key)) {\n          const name = this.scope.generateUidIdentifierBasedOnNode(key);\n          this.nodes.push(\n            //@ts-expect-error PrivateName has been handled by destructuring-private\n            this.buildVariableDeclaration(name, key),\n          );\n          if (!copiedPattern) {\n            copiedPattern = pattern = {\n              ...pattern,\n              properties: pattern.properties.slice(),\n            };\n          }\n          copiedPattern.properties[i] = {\n            ...prop,\n            key: name,\n          };\n        }\n      }\n    }\n\n    for (let i = 0; i < pattern.properties.length; i++) {\n      const prop = pattern.properties[i];\n      if (t.isRestElement(prop)) {\n        this.pushObjectRest(pattern, objRef, prop, i);\n      } else {\n        this.pushObjectProperty(prop, objRef);\n      }\n    }\n  }\n\n  canUnpackArrayPattern(\n    pattern: t.ArrayPattern,\n    arr: t.Expression,\n  ): arr is UnpackableArrayExpression {\n    // not an array so there's no way we can deal with this\n    if (!t.isArrayExpression(arr)) return false;\n\n    // pattern has less elements than the array and doesn't have a rest so some\n    // elements won't be evaluated\n    if (pattern.elements.length > arr.elements.length) return;\n    if (\n      pattern.elements.length < arr.elements.length &&\n      !hasArrayRest(pattern)\n    ) {\n      return false;\n    }\n\n    for (const elem of pattern.elements) {\n      // deopt on holes\n      if (!elem) return false;\n\n      // deopt on member expressions as they may be included in the RHS\n      if (t.isMemberExpression(elem)) return false;\n    }\n\n    for (const elem of arr.elements) {\n      // deopt on spread elements\n      if (t.isSpreadElement(elem)) return false;\n\n      // deopt call expressions as they might change values of LHS variables\n      if (t.isCallExpression(elem)) return false;\n\n      // deopt on member expressions as they may be getter/setters and have side-effects\n      if (t.isMemberExpression(elem)) return false;\n    }\n\n    // deopt on reference to left side identifiers\n    const bindings = t.getBindingIdentifiers(pattern);\n    const state: ArrayUnpackVisitorState = { deopt: false, bindings };\n\n    try {\n      t.traverse(arr, arrayUnpackVisitor, state);\n    } catch (e) {\n      if (e !== STOP_TRAVERSAL) throw e;\n    }\n\n    return !state.deopt;\n  }\n\n  pushUnpackedArrayPattern(\n    pattern: t.ArrayPattern,\n    arr: UnpackableArrayExpression,\n  ) {\n    const holeToUndefined = (el: t.Expression) =>\n      el ?? this.scope.buildUndefinedNode();\n\n    for (let i = 0; i < pattern.elements.length; i++) {\n      const elem = pattern.elements[i];\n      if (t.isRestElement(elem)) {\n        this.push(\n          elem.argument,\n          t.arrayExpression(arr.elements.slice(i).map(holeToUndefined)),\n        );\n      } else {\n        this.push(elem, holeToUndefined(arr.elements[i]));\n      }\n    }\n  }\n\n  pushArrayPattern(pattern: t.ArrayPattern, arrayRef: t.Expression | null) {\n    if (arrayRef === null) {\n      this.nodes.push(\n        t.expressionStatement(\n          t.callExpression(this.addHelper(\"objectDestructuringEmpty\"), []),\n        ),\n      );\n      return;\n    }\n    if (!pattern.elements) return;\n\n    // optimise basic array destructuring of an array expression\n    //\n    // we can't do this to a pattern of unequal size to it's right hand\n    // array expression as then there will be values that won't be evaluated\n    //\n    // eg: let [a, b] = [1, 2];\n\n    if (this.canUnpackArrayPattern(pattern, arrayRef)) {\n      this.pushUnpackedArrayPattern(pattern, arrayRef);\n      return;\n    }\n\n    // if we have a rest then we need all the elements so don't tell\n    // `scope.toArray` to only get a certain amount\n\n    const count = !hasArrayRest(pattern) && pattern.elements.length;\n\n    // so we need to ensure that the `arrayRef` is an array, `scope.toArray` will\n    // return a locally bound identifier if it's been inferred to be an array,\n    // otherwise it'll be a call to a helper that will ensure it's one\n\n    const toArray = this.toArray(arrayRef, count);\n\n    if (t.isIdentifier(toArray)) {\n      // we've been given an identifier so it must have been inferred to be an\n      // array\n      arrayRef = toArray;\n    } else {\n      arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);\n      this.arrayRefSet.add(arrayRef.name);\n      this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));\n    }\n\n    for (let i = 0; i < pattern.elements.length; i++) {\n      const elem = pattern.elements[i];\n\n      // hole\n      if (!elem) continue;\n\n      let elemRef;\n\n      if (t.isRestElement(elem)) {\n        elemRef = this.toArray(arrayRef);\n        elemRef = t.callExpression(\n          t.memberExpression(elemRef, t.identifier(\"slice\")),\n          [t.numericLiteral(i)],\n        );\n\n        // set the element to the rest element argument since we've dealt with it\n        // being a rest already\n        this.push(elem.argument, elemRef);\n      } else {\n        elemRef = t.memberExpression(arrayRef, t.numericLiteral(i), true);\n        this.push(elem, elemRef);\n      }\n    }\n  }\n\n  init(pattern: t.LVal, ref: t.Expression) {\n    // trying to destructure a value that we can't evaluate more than once so we\n    // need to save it to a variable\n\n    if (!t.isArrayExpression(ref) && !t.isMemberExpression(ref)) {\n      const memo = this.scope.maybeGenerateMemoised(ref, true);\n      if (memo) {\n        this.nodes.push(this.buildVariableDeclaration(memo, t.cloneNode(ref)));\n        ref = memo;\n      }\n    }\n\n    this.push(pattern, ref);\n\n    return this.nodes;\n  }\n}\n\ninterface ExcludingKey {\n  key: t.Expression | t.PrivateName;\n  computed: boolean;\n}\n\nexport function buildObjectExcludingKeys<T extends ExcludingKey>(\n  excludedKeys: T[],\n  objRef: t.Expression,\n  scope: Scope,\n  addHelper: File[\"addHelper\"],\n  objectRestNoSymbols: boolean,\n  useBuiltIns: boolean,\n): t.CallExpression {\n  // get all the keys that appear in this object before the current spread\n\n  const keys = [];\n  let allLiteral = true;\n  let hasTemplateLiteral = false;\n  for (let i = 0; i < excludedKeys.length; i++) {\n    const prop = excludedKeys[i];\n    const key = prop.key;\n    if (t.isIdentifier(key) && !prop.computed) {\n      keys.push(t.stringLiteral(key.name));\n    } else if (t.isTemplateLiteral(key)) {\n      keys.push(t.cloneNode(key));\n      hasTemplateLiteral = true;\n    } else if (t.isLiteral(key)) {\n      // @ts-expect-error todo(flow->ts) NullLiteral\n      keys.push(t.stringLiteral(String(key.value)));\n    } else if (t.isPrivateName(key)) {\n      // private key is not enumerable\n    } else {\n      keys.push(t.cloneNode(key));\n      allLiteral = false;\n    }\n  }\n\n  let value;\n  if (keys.length === 0) {\n    const extendsHelper = useBuiltIns\n      ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n      : addHelper(\"extends\");\n    value = t.callExpression(extendsHelper, [\n      t.objectExpression([]),\n      t.sequenceExpression([\n        t.callExpression(addHelper(\"objectDestructuringEmpty\"), [\n          t.cloneNode(objRef),\n        ]),\n        t.cloneNode(objRef),\n      ]),\n    ]);\n  } else {\n    let keyExpression: t.Expression = t.arrayExpression(keys);\n\n    if (!allLiteral) {\n      keyExpression = t.callExpression(\n        t.memberExpression(keyExpression, t.identifier(\"map\")),\n        [addHelper(\"toPropertyKey\")],\n      );\n    } else if (!hasTemplateLiteral && !t.isProgram(scope.block)) {\n      // Hoist definition of excluded keys, so that it's not created each time.\n      const programScope = scope.getProgramParent();\n      const id = programScope.generateUidIdentifier(\"excluded\");\n\n      programScope.push({\n        id,\n        init: keyExpression,\n        kind: \"const\",\n      });\n\n      keyExpression = t.cloneNode(id);\n    }\n\n    value = t.callExpression(\n      addHelper(`objectWithoutProperties${objectRestNoSymbols ? \"Loose\" : \"\"}`),\n      [t.cloneNode(objRef), keyExpression],\n    );\n  }\n  return value;\n}\n\nexport function convertVariableDeclaration(\n  path: NodePath<t.VariableDeclaration>,\n  addHelper: File[\"addHelper\"],\n  arrayLikeIsIterable: boolean,\n  iterableIsArray: boolean,\n  objectRestNoSymbols: boolean,\n  useBuiltIns: boolean,\n) {\n  const { node, scope } = path;\n\n  const nodeKind = node.kind;\n  const nodeLoc = node.loc;\n  const nodes = [];\n\n  for (let i = 0; i < node.declarations.length; i++) {\n    const declar = node.declarations[i];\n\n    const patternId = declar.init;\n    const pattern = declar.id;\n\n    const destructuring: DestructuringTransformer =\n      new DestructuringTransformer({\n        // @ts-expect-error(todo): avoid internal properties access\n        blockHoist: node._blockHoist,\n        nodes: nodes,\n        scope: scope,\n        kind: node.kind,\n        iterableIsArray,\n        arrayLikeIsIterable,\n        useBuiltIns,\n        objectRestNoSymbols,\n        addHelper,\n      });\n\n    if (t.isPattern(pattern)) {\n      destructuring.init(pattern, patternId);\n\n      if (+i !== node.declarations.length - 1) {\n        // we aren't the last declarator so let's just make the\n        // last transformed node inherit from us\n        t.inherits(nodes[nodes.length - 1], declar);\n      }\n    } else {\n      nodes.push(\n        t.inherits(\n          destructuring.buildVariableAssignment(pattern, patternId),\n          declar,\n        ),\n      );\n    }\n  }\n\n  let tail: t.VariableDeclaration | null = null;\n  let nodesOut = [];\n  for (const node of nodes) {\n    if (t.isVariableDeclaration(node)) {\n      if (tail !== null) {\n        // Create a single compound declarations\n        tail.declarations.push(...node.declarations);\n        continue;\n      } else {\n        // Make sure the original node kind is used for each compound declaration\n        node.kind = nodeKind;\n        tail = node;\n      }\n    } else {\n      tail = null;\n    }\n    // Propagate the original declaration node's location\n    if (!node.loc) {\n      node.loc = nodeLoc;\n    }\n    nodesOut.push(node);\n  }\n\n  if (\n    nodesOut.length === 2 &&\n    t.isVariableDeclaration(nodesOut[0]) &&\n    t.isExpressionStatement(nodesOut[1]) &&\n    t.isCallExpression(nodesOut[1].expression) &&\n    nodesOut[0].declarations.length === 1\n  ) {\n    // This can only happen when we generate this code:\n    //    var _ref = DESTRUCTURED_VALUE;\n    //     babelHelpers.objectDestructuringEmpty(_ref);\n    // Since pushing those two statements to the for loop .init will require an IIFE,\n    // we can optimize them to\n    //     babelHelpers.objectDestructuringEmpty(DESTRUCTURED_VALUE);\n    const expr = nodesOut[1].expression;\n    expr.arguments = [nodesOut[0].declarations[0].init];\n    nodesOut = [expr];\n  } else {\n    // We must keep nodes all are expressions or statements, so `replaceWithMultiple` can work.\n    if (\n      t.isForStatement(path.parent, { init: node }) &&\n      !nodesOut.some(v => t.isVariableDeclaration(v))\n    ) {\n      for (let i = 0; i < nodesOut.length; i++) {\n        const node: t.Node = nodesOut[i];\n        if (t.isExpressionStatement(node)) {\n          nodesOut[i] = node.expression;\n        }\n      }\n    }\n  }\n\n  if (nodesOut.length === 1) {\n    path.replaceWith(nodesOut[0]);\n  } else {\n    path.replaceWithMultiple(nodesOut);\n  }\n  scope.crawl();\n}\n\nexport function convertAssignmentExpression(\n  path: NodePath<t.AssignmentExpression & { left: t.Pattern }>,\n  addHelper: File[\"addHelper\"],\n  arrayLikeIsIterable: boolean,\n  iterableIsArray: boolean,\n  objectRestNoSymbols: boolean,\n  useBuiltIns: boolean,\n) {\n  const { node, scope, parentPath } = path;\n\n  const nodes: DestructuringTransformerNode[] = [];\n\n  const destructuring = new DestructuringTransformer({\n    operator: node.operator,\n    scope: scope,\n    nodes: nodes,\n    arrayLikeIsIterable,\n    iterableIsArray,\n    objectRestNoSymbols,\n    useBuiltIns,\n    addHelper,\n  });\n\n  let ref: t.Identifier | void;\n  if (\n    (!parentPath.isExpressionStatement() &&\n      !parentPath.isSequenceExpression()) ||\n    path.isCompletionRecord()\n  ) {\n    ref = scope.generateUidIdentifierBasedOnNode(node.right, \"ref\");\n\n    nodes.push(\n      t.variableDeclaration(\"var\", [t.variableDeclarator(ref, node.right)]),\n    );\n\n    if (t.isArrayExpression(node.right)) {\n      destructuring.arrayRefSet.add(ref.name);\n    }\n  }\n\n  destructuring.init(node.left, ref || node.right);\n\n  if (ref) {\n    if (parentPath.isArrowFunctionExpression()) {\n      path.replaceWith(t.blockStatement([]));\n      nodes.push(t.returnStatement(t.cloneNode(ref)));\n    } else {\n      nodes.push(t.expressionStatement(t.cloneNode(ref)));\n    }\n  }\n\n  path.replaceWithMultiple(nodes);\n  scope.crawl();\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\nimport {\n  DestructuringTransformer,\n  convertVariableDeclaration,\n  convertAssignmentExpression,\n  unshiftForXStatementBody,\n  type DestructuringTransformerNode,\n} from \"./util.ts\";\nexport { buildObjectExcludingKeys, unshiftForXStatementBody } from \"./util.ts\";\n\n/**\n * Test if a VariableDeclaration's declarations contains any Patterns.\n */\n\nfunction variableDeclarationHasPattern(node: t.VariableDeclaration) {\n  for (const declar of node.declarations) {\n    if (t.isPattern(declar.id)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport interface Options {\n  allowArrayLike?: boolean;\n  loose?: boolean;\n  useBuiltIns?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { useBuiltIns = false } = options;\n\n  const iterableIsArray =\n    api.assumption(\"iterableIsArray\") ?? options.loose ?? false;\n  const arrayLikeIsIterable =\n    options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\") ?? false;\n  const objectRestNoSymbols =\n    api.assumption(\"objectRestNoSymbols\") ?? options.loose ?? false;\n\n  return {\n    name: \"transform-destructuring\",\n\n    visitor: {\n      ExportNamedDeclaration(path) {\n        const declaration = path.get(\"declaration\");\n        if (!declaration.isVariableDeclaration()) return;\n        if (!variableDeclarationHasPattern(declaration.node)) return;\n\n        const specifiers = [];\n\n        for (const name of Object.keys(path.getOuterBindingIdentifiers())) {\n          specifiers.push(\n            t.exportSpecifier(t.identifier(name), t.identifier(name)),\n          );\n        }\n\n        // Split the declaration and export list into two declarations so that the variable\n        // declaration can be split up later without needing to worry about not being a\n        // top-level statement.\n        path.replaceWith(declaration.node);\n        path.insertAfter(t.exportNamedDeclaration(null, specifiers));\n        path.scope.crawl();\n      },\n\n      ForXStatement(path: NodePath<t.ForXStatement>) {\n        const { node, scope } = path;\n        const left = node.left;\n\n        if (t.isPattern(left)) {\n          // for ({ length: k } in { abc: 3 });\n\n          const temp = scope.generateUidIdentifier(\"ref\");\n\n          node.left = t.variableDeclaration(\"var\", [\n            t.variableDeclarator(temp),\n          ]);\n\n          path.ensureBlock();\n          const statementBody = (path.node.body as t.BlockStatement).body;\n          const nodes = [];\n          // todo: the completion of a for statement can only be observed from\n          // a do block (or eval that we don't support),\n          // but the new do-expression proposal plans to ban iteration ends in the\n          // do block, maybe we can get rid of this\n          if (statementBody.length === 0 && path.isCompletionRecord()) {\n            nodes.unshift(t.expressionStatement(scope.buildUndefinedNode()));\n          }\n\n          nodes.unshift(\n            t.expressionStatement(\n              t.assignmentExpression(\"=\", left, t.cloneNode(temp)),\n            ),\n          );\n\n          unshiftForXStatementBody(path, nodes);\n          scope.crawl();\n          return;\n        }\n\n        if (!t.isVariableDeclaration(left)) return;\n\n        const pattern = left.declarations[0].id;\n        if (!t.isPattern(pattern)) return;\n\n        const key = scope.generateUidIdentifier(\"ref\");\n        node.left = t.variableDeclaration(left.kind, [\n          t.variableDeclarator(key, null),\n        ]);\n\n        const nodes: DestructuringTransformerNode[] = [];\n\n        const destructuring = new DestructuringTransformer({\n          kind: left.kind,\n          scope: scope,\n          nodes: nodes,\n          arrayLikeIsIterable,\n          iterableIsArray,\n          objectRestNoSymbols,\n          useBuiltIns,\n          addHelper: name => this.addHelper(name),\n        });\n\n        destructuring.init(pattern, key);\n\n        unshiftForXStatementBody(path, nodes);\n        scope.crawl();\n      },\n\n      CatchClause({ node, scope }) {\n        const pattern = node.param;\n        if (!t.isPattern(pattern)) return;\n\n        const ref = scope.generateUidIdentifier(\"ref\");\n        node.param = ref;\n\n        const nodes: DestructuringTransformerNode[] = [];\n\n        const destructuring = new DestructuringTransformer({\n          kind: \"let\",\n          scope: scope,\n          nodes: nodes,\n          arrayLikeIsIterable,\n          iterableIsArray,\n          objectRestNoSymbols,\n          useBuiltIns,\n          addHelper: name => this.addHelper(name),\n        });\n        destructuring.init(pattern, ref);\n\n        node.body.body = [...nodes, ...node.body.body];\n        scope.crawl();\n      },\n\n      AssignmentExpression(path, state) {\n        if (!t.isPattern(path.node.left)) return;\n        convertAssignmentExpression(\n          path as NodePath<t.AssignmentExpression & { left: t.Pattern }>,\n          name => state.addHelper(name),\n          arrayLikeIsIterable,\n          iterableIsArray,\n          objectRestNoSymbols,\n          useBuiltIns,\n        );\n      },\n\n      VariableDeclaration(path, state) {\n        const { node, parent } = path;\n        if (t.isForXStatement(parent)) return;\n        if (!parent || !path.container) return; // i don't know why this is necessary - TODO\n        if (!variableDeclarationHasPattern(node)) return;\n        convertVariableDeclaration(\n          path,\n          name => state.addHelper(name),\n          arrayLikeIsIterable,\n          iterableIsArray,\n          objectRestNoSymbols,\n          useBuiltIns,\n        );\n      },\n    },\n  };\n});\n"],"names":["isPureVoid","node","t","isUnaryExpression","operator","isPureish","argument","unshiftForXStatementBody","statementPath","newStatements","ensureBlock","scope","bodyScopeBindings","get","bindings","hasShadowedBlockScopedBindings","Object","keys","some","name","hasBinding","body","blockStatement","unshift","hasArrayRest","pattern","elements","elem","isRestElement","hasObjectRest","properties","prop","STOP_TRAVERSAL","arrayUnpackVisitor","ancestors","state","length","isIdentifier","isReferenced","deopt","DestructuringTransformer","constructor","opts","blockHoist","arrayRefSet","nodes","kind","iterableIsArray","arrayLikeIsIterable","objectRestNoSymbols","useBuiltIns","addHelper","Set","getExtendsHelper","memberExpression","identifier","buildVariableAssignment","id","init","op","isMemberExpression","isOptionalMemberExpression","expressionStatement","assignmentExpression","cloneNode","buildUndefinedNode","nodeInit","variableDeclaration","variableDeclarator","_blockHoist","buildVariableDeclaration","declar","push","_init","isObjectPattern","pushObjectPattern","isArrayPattern","pushArrayPattern","isAssignmentPattern","pushAssignmentPattern","toArray","count","has","binding","getBinding","constant","path","isGenericType","isArrayExpression","template","expression","ast","helperName","args","numericLiteral","hub","callExpression","left","right","valueRef","tempId","generateUidIdentifierBasedOnNode","tempConditional","conditionalExpression","binaryExpression","isPattern","patternId","generateUidIdentifier","pushObjectRest","objRef","spreadProp","spreadPropIndex","value","buildObjectExcludingKeys","slice","pushObjectProperty","propRef","isLiteral","key","computed","isStatic","temp","copiedPattern","i","isPure","assign","canUnpackArrayPattern","arr","isSpreadElement","isCallExpression","getBindingIdentifiers","traverse","e","pushUnpackedArrayPattern","holeToUndefined","el","arrayExpression","map","arrayRef","add","elemRef","ref","memo","maybeGenerateMemoised","excludedKeys","allLiteral","hasTemplateLiteral","stringLiteral","isTemplateLiteral","String","isPrivateName","extendsHelper","objectExpression","sequenceExpression","keyExpression","isProgram","block","programScope","getProgramParent","convertVariableDeclaration","nodeKind","nodeLoc","loc","declarations","destructuring","inherits","tail","nodesOut","isVariableDeclaration","isExpressionStatement","expr","arguments","isForStatement","parent","v","replaceWith","replaceWithMultiple","crawl","convertAssignmentExpression","parentPath","isSequenceExpression","isCompletionRecord","isArrowFunctionExpression","returnStatement","variableDeclarationHasPattern","declare","api","options","_ref","_api$assumption","_ref2","_options$allowArrayLi","_ref3","_api$assumption2","assertVersion","assumption","loose","allowArrayLike","visitor","ExportNamedDeclaration","declaration","specifiers","getOuterBindingIdentifiers","exportSpecifier","insertAfter","exportNamedDeclaration","ForXStatement","statementBody","CatchClause","param","AssignmentExpression","VariableDeclaration","isForXStatement","container"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/plugin-transform-destructuring/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-destructuring/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-destructuring/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-destructuring",
+  "version": "7.25.9",
+  "description": "Compile ES2015 destructuring to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-destructuring"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-destructuring",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-dotall-regex
+
+> Compile regular expressions using the `s` (`dotAll`) flag to ES5.
+
+See our website [@babel/plugin-transform-dotall-regex](https://babeljs.io/docs/babel-plugin-transform-dotall-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-dotall-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-dotall-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-dotall-regex",
+    feature: "dotAllFlag"
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","assertVersion","createRegExpFeaturePlugin","name","feature"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-dotall-regex\",\n    feature: \"dotAllFlag\",\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,uCAAoB,CAAC;EAEtC,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,wBAAwB;IAC9BC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dotall-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,40 @@
+{
+  "name": "@babel/plugin-transform-dotall-regex",
+  "version": "7.25.9",
+  "description": "Compile regular expressions using the `s` (`dotAll`) flag to ES5.",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-dotall-regex",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "regular expressions",
+    "dotall"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-dotall-regex"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-duplicate-keys
+
+> Compile objects with duplicate keys to valid strict ES5
+
+See our website [@babel/plugin-transform-duplicate-keys](https://babeljs.io/docs/babel-plugin-transform-duplicate-keys) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-duplicate-keys
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-duplicate-keys --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,60 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+function getName(key) {
+  if (_core.types.isIdentifier(key)) {
+    return key.name;
+  }
+  return key.value.toString();
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-duplicate-keys",
+    visitor: {
+      ObjectExpression(path) {
+        const {
+          node
+        } = path;
+        const plainProps = node.properties.filter(prop => !_core.types.isSpreadElement(prop) && !prop.computed);
+        const alreadySeenData = Object.create(null);
+        const alreadySeenGetters = Object.create(null);
+        const alreadySeenSetters = Object.create(null);
+        for (const prop of plainProps) {
+          const name = getName(prop.key);
+          let isDuplicate = false;
+          switch (prop.kind) {
+            case "get":
+              if (alreadySeenData[name] || alreadySeenGetters[name]) {
+                isDuplicate = true;
+              }
+              alreadySeenGetters[name] = true;
+              break;
+            case "set":
+              if (alreadySeenData[name] || alreadySeenSetters[name]) {
+                isDuplicate = true;
+              }
+              alreadySeenSetters[name] = true;
+              break;
+            default:
+              if (alreadySeenData[name] || alreadySeenGetters[name] || alreadySeenSetters[name]) {
+                isDuplicate = true;
+              }
+              alreadySeenData[name] = true;
+          }
+          if (isDuplicate) {
+            prop.computed = true;
+            prop.key = _core.types.stringLiteral(name);
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","getName","key","t","isIdentifier","name","value","toString","_default","exports","default","declare","api","assertVersion","visitor","ObjectExpression","path","node","plainProps","properties","filter","prop","isSpreadElement","computed","alreadySeenData","Object","create","alreadySeenGetters","alreadySeenSetters","isDuplicate","kind","stringLiteral"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nfunction getName(\n  key: t.Identifier | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral,\n) {\n  if (t.isIdentifier(key)) {\n    return key.name;\n  }\n  return key.value.toString();\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-duplicate-keys\",\n\n    visitor: {\n      ObjectExpression(path) {\n        const { node } = path;\n        const plainProps = node.properties.filter(\n          prop => !t.isSpreadElement(prop) && !prop.computed,\n        ) as (t.ObjectMethod | t.ObjectProperty)[];\n\n        // A property is a duplicate key if:\n        // * the property is a data property, and is preceded by a data,\n        //   getter, or setter property of the same name.\n        // * the property is a getter property, and is preceded by a data or\n        //   getter property of the same name.\n        // * the property is a setter property, and is preceded by a data or\n        //   setter property of the same name.\n\n        const alreadySeenData = Object.create(null);\n        const alreadySeenGetters = Object.create(null);\n        const alreadySeenSetters = Object.create(null);\n\n        for (const prop of plainProps) {\n          const name = getName(\n            // prop must be non-computed\n            prop.key as\n              | t.Identifier\n              | t.StringLiteral\n              | t.NumericLiteral\n              | t.BigIntLiteral,\n          );\n          let isDuplicate = false;\n          // @ts-expect-error prop.kind is not defined in ObjectProperty\n          switch (prop.kind) {\n            case \"get\":\n              if (alreadySeenData[name] || alreadySeenGetters[name]) {\n                isDuplicate = true;\n              }\n              alreadySeenGetters[name] = true;\n              break;\n            case \"set\":\n              if (alreadySeenData[name] || alreadySeenSetters[name]) {\n                isDuplicate = true;\n              }\n              alreadySeenSetters[name] = true;\n              break;\n            default:\n              if (\n                alreadySeenData[name] ||\n                alreadySeenGetters[name] ||\n                alreadySeenSetters[name]\n              ) {\n                isDuplicate = true;\n              }\n              alreadySeenData[name] = true;\n          }\n\n          if (isDuplicate) {\n            // Rely on the computed properties transform to split the property\n            // assignment out of the object literal.\n            prop.computed = true;\n            prop.key = t.stringLiteral(name);\n          }\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAEA,SAASE,OAAOA,CACdC,GAAwE,EACxE;EACA,IAAIC,WAAC,CAACC,YAAY,CAACF,GAAG,CAAC,EAAE;IACvB,OAAOA,GAAG,CAACG,IAAI;EACjB;EACA,OAAOH,GAAG,CAACI,KAAK,CAACC,QAAQ,CAAC,CAAC;AAC7B;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLR,IAAI,EAAE,0BAA0B;IAEhCS,OAAO,EAAE;MACPC,gBAAgBA,CAACC,IAAI,EAAE;QACrB,MAAM;UAAEC;QAAK,CAAC,GAAGD,IAAI;QACrB,MAAME,UAAU,GAAGD,IAAI,CAACE,UAAU,CAACC,MAAM,CACvCC,IAAI,IAAI,CAAClB,WAAC,CAACmB,eAAe,CAACD,IAAI,CAAC,IAAI,CAACA,IAAI,CAACE,QAC5C,CAA0C;QAU1C,MAAMC,eAAe,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;QAC3C,MAAMC,kBAAkB,GAAGF,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;QAC9C,MAAME,kBAAkB,GAAGH,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC;QAE9C,KAAK,MAAML,IAAI,IAAIH,UAAU,EAAE;UAC7B,MAAMb,IAAI,GAAGJ,OAAO,CAElBoB,IAAI,CAACnB,GAKP,CAAC;UACD,IAAI2B,WAAW,GAAG,KAAK;UAEvB,QAAQR,IAAI,CAACS,IAAI;YACf,KAAK,KAAK;cACR,IAAIN,eAAe,CAACnB,IAAI,CAAC,IAAIsB,kBAAkB,CAACtB,IAAI,CAAC,EAAE;gBACrDwB,WAAW,GAAG,IAAI;cACpB;cACAF,kBAAkB,CAACtB,IAAI,CAAC,GAAG,IAAI;cAC/B;YACF,KAAK,KAAK;cACR,IAAImB,eAAe,CAACnB,IAAI,CAAC,IAAIuB,kBAAkB,CAACvB,IAAI,CAAC,EAAE;gBACrDwB,WAAW,GAAG,IAAI;cACpB;cACAD,kBAAkB,CAACvB,IAAI,CAAC,GAAG,IAAI;cAC/B;YACF;cACE,IACEmB,eAAe,CAACnB,IAAI,CAAC,IACrBsB,kBAAkB,CAACtB,IAAI,CAAC,IACxBuB,kBAAkB,CAACvB,IAAI,CAAC,EACxB;gBACAwB,WAAW,GAAG,IAAI;cACpB;cACAL,eAAe,CAACnB,IAAI,CAAC,GAAG,IAAI;UAChC;UAEA,IAAIwB,WAAW,EAAE;YAGfR,IAAI,CAACE,QAAQ,GAAG,IAAI;YACpBF,IAAI,CAACnB,GAAG,GAAGC,WAAC,CAAC4B,aAAa,CAAC1B,IAAI,CAAC;UAClC;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-keys/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-duplicate-keys",
+  "version": "7.25.9",
+  "description": "Compile objects with duplicate keys to valid strict ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-duplicate-keys"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-duplicate-keys",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-duplicate-named-capturing-groups-regex
+
+> Compile regular expressions using duplicate named groups to index-based groups.
+
+See our website [@babel/plugin-transform-duplicate-named-capturing-groups-regex](https://babeljs.io/docs/babel-plugin-transform-duplicate-named-capturing-groups-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-duplicate-named-capturing-groups-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-duplicate-named-capturing-groups-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  api.assertVersion("^7.19.0 || >8.0.0-alpha <8.0.0-beta");
+  const {
+    runtime
+  } = options;
+  if (runtime !== undefined && typeof runtime !== "boolean") {
+    throw new Error("The 'runtime' option must be boolean");
+  }
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-duplicate-named-capturing-groups-regex",
+    feature: "duplicateNamedCaptureGroups",
+    options: {
+      runtime
+    }
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","options","assertVersion","runtime","undefined","Error","createRegExpFeaturePlugin","name","feature"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  runtime?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.19.0\"));\n\n  const { runtime } = options;\n  if (runtime !== undefined && typeof runtime !== \"boolean\") {\n    throw new Error(\"The 'runtime' option must be boolean\");\n  }\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-duplicate-named-capturing-groups-regex\",\n    feature: \"duplicateNamedCaptureGroups\",\n    options: { runtime },\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMtC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAChDD,GAAG,CAACE,aAAa,sCAA4B,CAAC;EAE9C,MAAM;IAAEC;EAAQ,CAAC,GAAGF,OAAO;EAC3B,IAAIE,OAAO,KAAKC,SAAS,IAAI,OAAOD,OAAO,KAAK,SAAS,EAAE;IACzD,MAAM,IAAIE,KAAK,CAAC,sCAAsC,CAAC;EACzD;EAEA,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,kDAAkD;IACxDC,OAAO,EAAE,6BAA6B;IACtCP,OAAO,EAAE;MAAEE;IAAQ;EACrB,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,47 @@
+{
+  "name": "@babel/plugin-transform-duplicate-named-capturing-groups-regex",
+  "version": "7.25.9",
+  "description": "Compile regular expressions using duplicate named groups to index-based groups.",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-duplicate-named-capturing-groups-regex",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "regular expressions"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-duplicate-named-capturing-groups-regex"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "core-js": "^3.30.2"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-dynamic-import
+
+> Transform import() expressions
+
+See our website [@babel/plugin-transform-dynamic-import](https://babeljs.io/docs/babel-plugin-transform-dynamic-import) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-dynamic-import
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-dynamic-import --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+const SUPPORTED_MODULES = new Set(["commonjs", "amd", "systemjs"]);
+const MODULES_NOT_FOUND = `\
+@babel/plugin-transform-dynamic-import depends on a modules
+transform plugin. Supported plugins are:
+ - @babel/plugin-transform-modules-commonjs ^7.4.0
+ - @babel/plugin-transform-modules-amd ^7.4.0
+ - @babel/plugin-transform-modules-systemjs ^7.4.0
+
+If you are using Webpack or Rollup and thus don't want
+Babel to transpile your imports and exports, you can use
+the @babel/plugin-syntax-dynamic-import plugin and let your
+bundler handle dynamic imports.
+`;
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-dynamic-import",
+    manipulateOptions: (_, parser) => parser.plugins.push("dynamicImport"),
+    pre() {
+      this.file.set("@babel/plugin-proposal-dynamic-import", "7.25.9");
+    },
+    visitor: {
+      Program() {
+        const modules = this.file.get("@babel/plugin-transform-modules-*");
+        if (!SUPPORTED_MODULES.has(modules)) {
+          throw new Error(MODULES_NOT_FOUND);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","SUPPORTED_MODULES","Set","MODULES_NOT_FOUND","_default","exports","default","declare","api","assertVersion","name","manipulateOptions","_","parser","plugins","push","pre","file","set","visitor","Program","modules","get","has","Error"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nconst SUPPORTED_MODULES = new Set([\"commonjs\", \"amd\", \"systemjs\"]);\n\nconst MODULES_NOT_FOUND = `\\\n@babel/plugin-transform-dynamic-import depends on a modules\ntransform plugin. Supported plugins are:\n - @babel/plugin-transform-modules-commonjs ^7.4.0\n - @babel/plugin-transform-modules-amd ^7.4.0\n - @babel/plugin-transform-modules-systemjs ^7.4.0\n\nIf you are using Webpack or Rollup and thus don't want\nBabel to transpile your imports and exports, you can use\nthe @babel/plugin-syntax-dynamic-import plugin and let your\nbundler handle dynamic imports.\n`;\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-dynamic-import\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"dynamicImport\"),\n\n    pre() {\n      // We keep using the old name, for compatibility with older\n      // version of the CommonJS transform.\n      this.file.set(\n        \"@babel/plugin-proposal-dynamic-import\",\n        PACKAGE_JSON.version,\n      );\n    },\n\n    visitor: {\n      Program() {\n        const modules = this.file.get(\"@babel/plugin-transform-modules-*\");\n\n        if (!SUPPORTED_MODULES.has(modules)) {\n          throw new Error(MODULES_NOT_FOUND);\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEA,MAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAElE,MAAMC,iBAAiB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,0BAA0B;IAChCC,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,eAAe,CAAC;IAEvDC,GAAGA,CAAA,EAAG;MAGJ,IAAI,CAACC,IAAI,CAACC,GAAG,CACX,uCAAuC,UAEzC,CAAC;IACH,CAAC;IAEDC,OAAO,EAAE;MACPC,OAAOA,CAAA,EAAG;QACR,MAAMC,OAAO,GAAG,IAAI,CAACJ,IAAI,CAACK,GAAG,CAAC,mCAAmC,CAAC;QAElE,IAAI,CAACrB,iBAAiB,CAACsB,GAAG,CAACF,OAAO,CAAC,EAAE;UACnC,MAAM,IAAIG,KAAK,CAACrB,iBAAiB,CAAC;QACpC;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-dynamic-import/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,33 @@
+{
+  "name": "@babel/plugin-transform-dynamic-import",
+  "version": "7.25.9",
+  "description": "Transform import() expressions",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-dynamic-import"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-exponentiation-operator
+
+> Compile exponentiation operator to ES5
+
+See our website [@babel/plugin-transform-exponentiation-operator](https://babeljs.io/docs/babel-plugin-transform-exponentiation-operator) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-exponentiation-operator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-exponentiation-operator --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,82 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const {
+    types: t,
+    template
+  } = api;
+  function build(left, right) {
+    return t.callExpression(t.memberExpression(t.identifier("Math"), t.identifier("pow")), [left, right]);
+  }
+  function maybeMemoize(node, scope) {
+    if (scope.isStatic(node)) {
+      return {
+        assign: node,
+        ref: t.cloneNode(node)
+      };
+    }
+    if (scope.path.isPattern()) {
+      return null;
+    }
+    const id = scope.generateUidIdentifierBasedOnNode(node);
+    scope.push({
+      id
+    });
+    return {
+      assign: t.assignmentExpression("=", t.cloneNode(id), node),
+      ref: t.cloneNode(id)
+    };
+  }
+  return {
+    name: "transform-exponentiation-operator",
+    visitor: {
+      AssignmentExpression(path) {
+        const {
+          node,
+          scope
+        } = path;
+        if (node.operator !== "**=") return;
+        if (t.isMemberExpression(node.left)) {
+          let member1;
+          let member2;
+          const object = maybeMemoize(node.left.object, scope);
+          if (!object) {
+            path.replaceWith(template.expression.ast`(() => ${path.node})()`);
+            return;
+          }
+          const {
+            property,
+            computed
+          } = node.left;
+          if (computed) {
+            const prop = maybeMemoize(property, scope);
+            member1 = t.memberExpression(object.assign, prop.assign, true);
+            member2 = t.memberExpression(object.ref, prop.ref, true);
+          } else {
+            member1 = t.memberExpression(object.assign, property, false);
+            member2 = t.memberExpression(object.ref, t.cloneNode(property), false);
+          }
+          path.replaceWith(t.assignmentExpression("=", member1, build(member2, node.right)));
+        } else {
+          path.replaceWith(t.assignmentExpression("=", node.left, build(t.cloneNode(node.left), node.right)));
+        }
+      },
+      BinaryExpression(path) {
+        const {
+          node
+        } = path;
+        if (node.operator === "**") {
+          path.replaceWith(build(node.left, node.right));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","assertVersion","types","t","template","build","left","right","callExpression","memberExpression","identifier","maybeMemoize","node","scope","isStatic","assign","ref","cloneNode","path","isPattern","id","generateUidIdentifierBasedOnNode","push","assignmentExpression","name","visitor","AssignmentExpression","operator","isMemberExpression","member1","member2","object","replaceWith","expression","ast","property","computed","prop","BinaryExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { types as t, Scope } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { types: t, template } = api;\n\n  function build(left: t.Expression, right: t.Expression) {\n    return t.callExpression(\n      t.memberExpression(t.identifier(\"Math\"), t.identifier(\"pow\")),\n      [left, right],\n    );\n  }\n\n  function maybeMemoize<T extends t.Expression | t.Super>(\n    node: T,\n    scope: Scope,\n  ) {\n    if (scope.isStatic(node)) {\n      return { assign: node, ref: t.cloneNode(node) };\n    }\n\n    if (scope.path.isPattern()) {\n      // We cannot inject a temp var in function arguments.\n      return null;\n    }\n\n    const id = scope.generateUidIdentifierBasedOnNode(node);\n    scope.push({ id });\n    return {\n      assign: t.assignmentExpression(\n        \"=\",\n        t.cloneNode(id),\n        // This is not t.Super, because otherwise the .isStatic check above\n        // would have returned true.\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n        node as t.Expression,\n      ),\n      ref: t.cloneNode(id),\n    };\n  }\n\n  return {\n    name: \"transform-exponentiation-operator\",\n\n    visitor: {\n      AssignmentExpression(path) {\n        const { node, scope } = path;\n        if (node.operator !== \"**=\") return;\n\n        if (t.isMemberExpression(node.left)) {\n          let member1: t.Expression;\n          let member2: t.Expression;\n\n          const object = maybeMemoize(node.left.object, scope);\n          if (!object) {\n            // We need to inject a temp var, but we are in function parameters\n            // and thus cannot. Wrap the expression in an IIFE. It will be\n            // eventually requeued and transformed.\n            path.replaceWith(template.expression.ast`(() => ${path.node})()`);\n            return;\n          }\n\n          const { property, computed } = node.left;\n\n          if (computed) {\n            const prop = maybeMemoize(property as t.Expression, scope);\n            member1 = t.memberExpression(object.assign, prop.assign, true);\n            member2 = t.memberExpression(object.ref, prop.ref, true);\n          } else {\n            member1 = t.memberExpression(object.assign, property, false);\n            member2 = t.memberExpression(\n              object.ref,\n              t.cloneNode(property),\n              false,\n            );\n          }\n\n          path.replaceWith(\n            t.assignmentExpression(\"=\", member1, build(member2, node.right)),\n          );\n        } else {\n          path.replaceWith(\n            t.assignmentExpression(\n              \"=\",\n              node.left,\n              build(\n                // todo: it could be a t.AsExpression\n                t.cloneNode(node.left) as t.Identifier,\n                node.right,\n              ),\n            ),\n          );\n        }\n      },\n\n      BinaryExpression(path) {\n        const { node } = path;\n        if (node.operator === \"**\") {\n          path.replaceWith(\n            build(\n              // left can be PrivateName only if operator is `\"in\"`\n              node.left as t.Expression,\n              node.right,\n            ),\n          );\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-exponentiation-operator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-exponentiation-operator",
+  "version": "7.26.3",
+  "description": "Compile exponentiation operator to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-exponentiation-operator"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-exponentiation-operator",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-export-namespace-from
+
+> Compile export namespace to ES2015
+
+See our website [@babel/plugin-transform-export-namespace-from](https://babeljs.io/docs/babel-plugin-transform-export-namespace-from) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-export-namespace-from
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-export-namespace-from --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,46 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-export-namespace-from",
+    manipulateOptions: (_, parser) => parser.plugins.push("exportNamespaceFrom"),
+    visitor: {
+      ExportNamedDeclaration(path) {
+        var _exported$name;
+        const {
+          node,
+          scope
+        } = path;
+        const {
+          specifiers
+        } = node;
+        const index = _core.types.isExportDefaultSpecifier(specifiers[0]) ? 1 : 0;
+        if (!_core.types.isExportNamespaceSpecifier(specifiers[index])) return;
+        const nodes = [];
+        if (index === 1) {
+          nodes.push(_core.types.exportNamedDeclaration(null, [specifiers.shift()], node.source));
+        }
+        const specifier = specifiers.shift();
+        const {
+          exported
+        } = specifier;
+        const uid = scope.generateUidIdentifier((_exported$name = exported.name) != null ? _exported$name : exported.value);
+        nodes.push(_core.types.importDeclaration([_core.types.importNamespaceSpecifier(uid)], _core.types.cloneNode(node.source)), _core.types.exportNamedDeclaration(null, [_core.types.exportSpecifier(_core.types.cloneNode(uid), exported)]));
+        if (node.specifiers.length >= 1) {
+          nodes.push(node);
+        }
+        const [importDeclaration] = path.replaceWithMultiple(nodes);
+        path.scope.registerDeclaration(importDeclaration);
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","manipulateOptions","_","parser","plugins","push","visitor","ExportNamedDeclaration","path","_exported$name","node","scope","specifiers","index","t","isExportDefaultSpecifier","isExportNamespaceSpecifier","nodes","exportNamedDeclaration","shift","source","specifier","exported","uid","generateUidIdentifier","value","importDeclaration","importNamespaceSpecifier","cloneNode","exportSpecifier","length","replaceWithMultiple","registerDeclaration"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-export-namespace-from\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"exportNamespaceFrom\"),\n\n    visitor: {\n      ExportNamedDeclaration(path) {\n        const { node, scope } = path;\n        const { specifiers } = node;\n\n        const index = t.isExportDefaultSpecifier(specifiers[0]) ? 1 : 0;\n        if (!t.isExportNamespaceSpecifier(specifiers[index])) return;\n\n        const nodes = [];\n\n        if (index === 1) {\n          nodes.push(\n            t.exportNamedDeclaration(null, [specifiers.shift()], node.source),\n          );\n        }\n\n        const specifier = specifiers.shift();\n        const { exported } = specifier;\n        const uid = scope.generateUidIdentifier(\n          // @ts-expect-error Identifier ?? StringLiteral\n          exported.name ?? exported.value,\n        );\n\n        nodes.push(\n          t.importDeclaration(\n            [t.importNamespaceSpecifier(uid)],\n            t.cloneNode(node.source),\n          ),\n          t.exportNamedDeclaration(null, [\n            t.exportSpecifier(t.cloneNode(uid), exported),\n          ]),\n        );\n\n        if (node.specifiers.length >= 1) {\n          nodes.push(node);\n        }\n\n        const [importDeclaration] = path.replaceWithMultiple(nodes);\n        path.scope.registerDeclaration(importDeclaration);\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAyC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1B,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,iCAAiC;IACvCC,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,qBAAqB,CAAC;IAE7DC,OAAO,EAAE;MACPC,sBAAsBA,CAACC,IAAI,EAAE;QAAA,IAAAC,cAAA;QAC3B,MAAM;UAAEC,IAAI;UAAEC;QAAM,CAAC,GAAGH,IAAI;QAC5B,MAAM;UAAEI;QAAW,CAAC,GAAGF,IAAI;QAE3B,MAAMG,KAAK,GAAGC,WAAC,CAACC,wBAAwB,CAACH,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/D,IAAI,CAACE,WAAC,CAACE,0BAA0B,CAACJ,UAAU,CAACC,KAAK,CAAC,CAAC,EAAE;QAEtD,MAAMI,KAAK,GAAG,EAAE;QAEhB,IAAIJ,KAAK,KAAK,CAAC,EAAE;UACfI,KAAK,CAACZ,IAAI,CACRS,WAAC,CAACI,sBAAsB,CAAC,IAAI,EAAE,CAACN,UAAU,CAACO,KAAK,CAAC,CAAC,CAAC,EAAET,IAAI,CAACU,MAAM,CAClE,CAAC;QACH;QAEA,MAAMC,SAAS,GAAGT,UAAU,CAACO,KAAK,CAAC,CAAC;QACpC,MAAM;UAAEG;QAAS,CAAC,GAAGD,SAAS;QAC9B,MAAME,GAAG,GAAGZ,KAAK,CAACa,qBAAqB,EAAAf,cAAA,GAErCa,QAAQ,CAACtB,IAAI,YAAAS,cAAA,GAAIa,QAAQ,CAACG,KAC5B,CAAC;QAEDR,KAAK,CAACZ,IAAI,CACRS,WAAC,CAACY,iBAAiB,CACjB,CAACZ,WAAC,CAACa,wBAAwB,CAACJ,GAAG,CAAC,CAAC,EACjCT,WAAC,CAACc,SAAS,CAAClB,IAAI,CAACU,MAAM,CACzB,CAAC,EACDN,WAAC,CAACI,sBAAsB,CAAC,IAAI,EAAE,CAC7BJ,WAAC,CAACe,eAAe,CAACf,WAAC,CAACc,SAAS,CAACL,GAAG,CAAC,EAAED,QAAQ,CAAC,CAC9C,CACH,CAAC;QAED,IAAIZ,IAAI,CAACE,UAAU,CAACkB,MAAM,IAAI,CAAC,EAAE;UAC/Bb,KAAK,CAACZ,IAAI,CAACK,IAAI,CAAC;QAClB;QAEA,MAAM,CAACgB,iBAAiB,CAAC,GAAGlB,IAAI,CAACuB,mBAAmB,CAACd,KAAK,CAAC;QAC3DT,IAAI,CAACG,KAAK,CAACqB,mBAAmB,CAACN,iBAAiB,CAAC;MACnD;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-export-namespace-from/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-export-namespace-from",
+  "version": "7.25.9",
+  "description": "Compile export namespace to ES2015",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-export-namespace-from"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-export-namespace-from",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-for-of
+
+> Compile ES2015 for...of to ES5
+
+See our website [@babel/plugin-transform-for-of](https://babeljs.io/docs/babel-plugin-transform-for-of) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-for-of
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-for-of --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,194 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _noHelperImplementation = require("./no-helper-implementation.js");
+var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers");
+function buildLoopBody(path, declar, newBody) {
+  let block;
+  const bodyPath = path.get("body");
+  const body = newBody != null ? newBody : bodyPath.node;
+  if (_core.types.isBlockStatement(body) && Object.keys(path.getBindingIdentifiers()).some(id => bodyPath.scope.hasOwnBinding(id))) {
+    block = _core.types.blockStatement([declar, body]);
+  } else {
+    block = _core.types.toBlock(body);
+    block.body.unshift(declar);
+  }
+  return block;
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _options$assumeArray, _options$allowArrayLi, _api$assumption;
+  api.assertVersion(7);
+  {
+    const {
+      assumeArray,
+      allowArrayLike,
+      loose
+    } = options;
+    if (loose === true && assumeArray === true) {
+      throw new Error(`The loose and assumeArray options cannot be used together in @babel/plugin-transform-for-of`);
+    }
+    if (assumeArray === true && allowArrayLike === true) {
+      throw new Error(`The assumeArray and allowArrayLike options cannot be used together in @babel/plugin-transform-for-of`);
+    }
+    {
+      if (allowArrayLike && /^7\.\d\./.test(api.version)) {
+        throw new Error(`The allowArrayLike is only supported when using @babel/core@^7.10.0`);
+      }
+    }
+  }
+  const iterableIsArray = (_options$assumeArray = options.assumeArray) != null ? _options$assumeArray : !options.loose && api.assumption("iterableIsArray");
+  const arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable");
+  const skipIteratorClosing = (_api$assumption = api.assumption("skipForOfIteratorClosing")) != null ? _api$assumption : options.loose;
+  if (iterableIsArray && arrayLikeIsIterable) {
+    throw new Error(`The "iterableIsArray" and "arrayLikeIsIterable" assumptions are not compatible.`);
+  }
+  if (iterableIsArray) {
+    return {
+      name: "transform-for-of",
+      visitor: {
+        ForOfStatement(path) {
+          const {
+            scope
+          } = path;
+          const {
+            left,
+            await: isAwait
+          } = path.node;
+          if (isAwait) {
+            return;
+          }
+          const right = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes)(path.node.right);
+          const i = scope.generateUidIdentifier("i");
+          let array = scope.maybeGenerateMemoised(right, true);
+          if (!array && _core.types.isIdentifier(right) && path.get("body").scope.hasOwnBinding(right.name)) {
+            array = scope.generateUidIdentifier("arr");
+          }
+          const inits = [_core.types.variableDeclarator(i, _core.types.numericLiteral(0))];
+          if (array) {
+            inits.push(_core.types.variableDeclarator(array, right));
+          } else {
+            array = right;
+          }
+          const item = _core.types.memberExpression(_core.types.cloneNode(array), _core.types.cloneNode(i), true);
+          let assignment;
+          if (_core.types.isVariableDeclaration(left)) {
+            assignment = left;
+            assignment.declarations[0].init = item;
+          } else {
+            assignment = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, item));
+          }
+          path.replaceWith(_core.types.forStatement(_core.types.variableDeclaration("let", inits), _core.types.binaryExpression("<", _core.types.cloneNode(i), _core.types.memberExpression(_core.types.cloneNode(array), _core.types.identifier("length"))), _core.types.updateExpression("++", _core.types.cloneNode(i)), buildLoopBody(path, assignment)));
+        }
+      }
+    };
+  }
+  const buildForOfArray = (0, _core.template)`
+    for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;
+  `;
+  const buildForOfNoIteratorClosing = _core.template.statements`
+    for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;
+        !(STEP_KEY = ITERATOR_HELPER()).done;) BODY;
+  `;
+  const buildForOf = _core.template.statements`
+    var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;
+    try {
+      for (ITERATOR_HELPER.s(); !(STEP_KEY = ITERATOR_HELPER.n()).done;) BODY;
+    } catch (err) {
+      ITERATOR_HELPER.e(err);
+    } finally {
+      ITERATOR_HELPER.f();
+    }
+  `;
+  const builder = skipIteratorClosing ? {
+    build: buildForOfNoIteratorClosing,
+    helper: "createForOfIteratorHelperLoose",
+    getContainer: nodes => nodes
+  } : {
+    build: buildForOf,
+    helper: "createForOfIteratorHelper",
+    getContainer: nodes => nodes[1].block.body
+  };
+  function _ForOfStatementArray(path) {
+    const {
+      node,
+      scope
+    } = path;
+    const right = scope.generateUidIdentifierBasedOnNode(node.right, "arr");
+    const iterationKey = scope.generateUidIdentifier("i");
+    const loop = buildForOfArray({
+      BODY: node.body,
+      KEY: iterationKey,
+      NAME: right,
+      ARR: node.right
+    });
+    _core.types.inherits(loop, node);
+    const iterationValue = _core.types.memberExpression(_core.types.cloneNode(right), _core.types.cloneNode(iterationKey), true);
+    let declar;
+    const left = node.left;
+    if (_core.types.isVariableDeclaration(left)) {
+      left.declarations[0].init = iterationValue;
+      declar = left;
+    } else {
+      declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, iterationValue));
+    }
+    loop.body = buildLoopBody(path, declar, loop.body);
+    return loop;
+  }
+  return {
+    name: "transform-for-of",
+    visitor: {
+      ForOfStatement(path, state) {
+        const right = path.get("right");
+        if (right.isArrayExpression() || right.isGenericType("Array") || _core.types.isArrayTypeAnnotation(right.getTypeAnnotation())) {
+          path.replaceWith(_ForOfStatementArray(path));
+          return;
+        }
+        {
+          if (!state.availableHelper(builder.helper)) {
+            (0, _noHelperImplementation.default)(skipIteratorClosing, path, state);
+            return;
+          }
+        }
+        const {
+          node,
+          parent,
+          scope
+        } = path;
+        const left = node.left;
+        let declar;
+        const stepKey = scope.generateUid("step");
+        const stepValue = _core.types.memberExpression(_core.types.identifier(stepKey), _core.types.identifier("value"));
+        if (_core.types.isVariableDeclaration(left)) {
+          declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, stepValue)]);
+        } else {
+          declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, stepValue));
+        }
+        const nodes = builder.build({
+          CREATE_ITERATOR_HELPER: state.addHelper(builder.helper),
+          ITERATOR_HELPER: scope.generateUidIdentifier("iterator"),
+          ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable ? _core.types.booleanLiteral(true) : null,
+          STEP_KEY: _core.types.identifier(stepKey),
+          OBJECT: node.right,
+          BODY: buildLoopBody(path, declar)
+        });
+        const container = builder.getContainer(nodes);
+        _core.types.inherits(container[0], node);
+        _core.types.inherits(container[0].body, node.body);
+        if (_core.types.isLabeledStatement(parent)) {
+          container[0] = _core.types.labeledStatement(parent.label, container[0]);
+          path.parentPath.replaceWithMultiple(nodes);
+          path.skip();
+        } else {
+          path.replaceWithMultiple(nodes);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_noHelperImplementation","_helperSkipTransparentExpressionWrappers","buildLoopBody","path","declar","newBody","block","bodyPath","get","body","node","t","isBlockStatement","Object","keys","getBindingIdentifiers","some","id","scope","hasOwnBinding","blockStatement","toBlock","unshift","_default","exports","default","declare","api","options","_options$assumeArray","_options$allowArrayLi","_api$assumption","assertVersion","assumeArray","allowArrayLike","loose","Error","test","version","iterableIsArray","assumption","arrayLikeIsIterable","skipIteratorClosing","name","visitor","ForOfStatement","left","await","isAwait","right","skipTransparentExprWrapperNodes","i","generateUidIdentifier","array","maybeGenerateMemoised","isIdentifier","inits","variableDeclarator","numericLiteral","push","item","memberExpression","cloneNode","assignment","isVariableDeclaration","declarations","init","expressionStatement","assignmentExpression","replaceWith","forStatement","variableDeclaration","binaryExpression","identifier","updateExpression","buildForOfArray","template","buildForOfNoIteratorClosing","statements","buildForOf","builder","build","helper","getContainer","nodes","_ForOfStatementArray","generateUidIdentifierBasedOnNode","iterationKey","loop","BODY","KEY","NAME","ARR","inherits","iterationValue","state","isArrayExpression","isGenericType","isArrayTypeAnnotation","getTypeAnnotation","availableHelper","transformWithoutHelper","parent","stepKey","generateUid","stepValue","kind","CREATE_ITERATOR_HELPER","addHelper","ITERATOR_HELPER","ARRAY_LIKE_IS_ITERABLE","booleanLiteral","STEP_KEY","OBJECT","container","isLabeledStatement","labeledStatement","label","parentPath","replaceWithMultiple","skip"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t, type NodePath } from \"@babel/core\";\n\nimport transformWithoutHelper from \"./no-helper-implementation.ts\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nexport interface Options {\n  allowArrayLike?: boolean;\n  assumeArray?: boolean;\n  loose?: boolean;\n}\n\nfunction buildLoopBody(\n  path: NodePath<t.ForXStatement>,\n  declar: t.Statement,\n  newBody?: t.Statement | t.Expression,\n) {\n  let block;\n  const bodyPath = path.get(\"body\");\n  const body = newBody ?? bodyPath.node;\n  if (\n    t.isBlockStatement(body) &&\n    Object.keys(path.getBindingIdentifiers()).some(id =>\n      bodyPath.scope.hasOwnBinding(id),\n    )\n  ) {\n    block = t.blockStatement([declar, body]);\n  } else {\n    block = t.toBlock(body);\n    block.body.unshift(declar);\n  }\n  return block;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  {\n    const { assumeArray, allowArrayLike, loose } = options;\n\n    if (loose === true && assumeArray === true) {\n      throw new Error(\n        `The loose and assumeArray options cannot be used together in @babel/plugin-transform-for-of`,\n      );\n    }\n\n    if (assumeArray === true && allowArrayLike === true) {\n      throw new Error(\n        `The assumeArray and allowArrayLike options cannot be used together in @babel/plugin-transform-for-of`,\n      );\n    }\n\n    if (!process.env.BABEL_8_BREAKING) {\n      // TODO: Remove in Babel 8\n      if (allowArrayLike && /^7\\.\\d\\./.test(api.version)) {\n        throw new Error(\n          `The allowArrayLike is only supported when using @babel/core@^7.10.0`,\n        );\n      }\n    }\n  }\n\n  const iterableIsArray =\n    options.assumeArray ??\n    // Loose mode is not compatible with 'assumeArray', so we shouldn't read\n    // 'iterableIsArray' if 'loose' is true.\n    (!options.loose && api.assumption(\"iterableIsArray\"));\n\n  const arrayLikeIsIterable =\n    options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\");\n\n  const skipIteratorClosing =\n    api.assumption(\"skipForOfIteratorClosing\") ?? options.loose;\n\n  if (iterableIsArray && arrayLikeIsIterable) {\n    throw new Error(\n      `The \"iterableIsArray\" and \"arrayLikeIsIterable\" assumptions are not compatible.`,\n    );\n  }\n\n  if (iterableIsArray) {\n    return {\n      name: \"transform-for-of\",\n\n      visitor: {\n        ForOfStatement(path) {\n          const { scope } = path;\n          const { left, await: isAwait } = path.node;\n          if (isAwait) {\n            return;\n          }\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n          const right = skipTransparentExprWrapperNodes(\n            path.node.right,\n          ) as t.Expression;\n          const i = scope.generateUidIdentifier(\"i\");\n          let array: t.Identifier | t.ThisExpression =\n            scope.maybeGenerateMemoised(right, true);\n          if (\n            !array &&\n            t.isIdentifier(right) &&\n            path.get(\"body\").scope.hasOwnBinding(right.name)\n          ) {\n            array = scope.generateUidIdentifier(\"arr\");\n          }\n\n          const inits = [t.variableDeclarator(i, t.numericLiteral(0))];\n          if (array) {\n            inits.push(t.variableDeclarator(array, right));\n          } else {\n            array = right as t.Identifier | t.ThisExpression;\n          }\n\n          const item = t.memberExpression(\n            t.cloneNode(array),\n            t.cloneNode(i),\n            true,\n          );\n          let assignment;\n          if (t.isVariableDeclaration(left)) {\n            assignment = left;\n            assignment.declarations[0].init = item;\n          } else {\n            assignment = t.expressionStatement(\n              t.assignmentExpression(\"=\", left, item),\n            );\n          }\n\n          path.replaceWith(\n            t.forStatement(\n              t.variableDeclaration(\"let\", inits),\n              t.binaryExpression(\n                \"<\",\n                t.cloneNode(i),\n                t.memberExpression(t.cloneNode(array), t.identifier(\"length\")),\n              ),\n              t.updateExpression(\"++\", t.cloneNode(i)),\n              buildLoopBody(path, assignment),\n            ),\n          );\n        },\n      },\n    };\n  }\n\n  const buildForOfArray = template`\n    for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;\n  `;\n\n  const buildForOfNoIteratorClosing = template.statements`\n    for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n        !(STEP_KEY = ITERATOR_HELPER()).done;) BODY;\n  `;\n\n  const buildForOf = template.statements`\n    var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n    try {\n      for (ITERATOR_HELPER.s(); !(STEP_KEY = ITERATOR_HELPER.n()).done;) BODY;\n    } catch (err) {\n      ITERATOR_HELPER.e(err);\n    } finally {\n      ITERATOR_HELPER.f();\n    }\n  `;\n\n  const builder = skipIteratorClosing\n    ? {\n        build: buildForOfNoIteratorClosing,\n        helper: \"createForOfIteratorHelperLoose\",\n        getContainer: (nodes: t.Statement[]): [t.ForStatement] =>\n          nodes as [t.ForStatement],\n      }\n    : {\n        build: buildForOf,\n        helper: \"createForOfIteratorHelper\",\n        getContainer: (nodes: t.Statement[]): [t.ForStatement] =>\n          (nodes[1] as t.TryStatement).block.body as [t.ForStatement],\n      };\n\n  function _ForOfStatementArray(path: NodePath<t.ForOfStatement>) {\n    const { node, scope } = path;\n\n    const right = scope.generateUidIdentifierBasedOnNode(node.right, \"arr\");\n    const iterationKey = scope.generateUidIdentifier(\"i\");\n\n    const loop = buildForOfArray({\n      BODY: node.body,\n      KEY: iterationKey,\n      NAME: right,\n      ARR: node.right,\n    }) as t.For;\n\n    t.inherits(loop, node);\n\n    const iterationValue = t.memberExpression(\n      t.cloneNode(right),\n      t.cloneNode(iterationKey),\n      true,\n    );\n\n    let declar;\n    const left = node.left;\n    if (t.isVariableDeclaration(left)) {\n      left.declarations[0].init = iterationValue;\n      declar = left;\n    } else {\n      declar = t.expressionStatement(\n        t.assignmentExpression(\"=\", left, iterationValue),\n      );\n    }\n\n    loop.body = buildLoopBody(path, declar, loop.body);\n\n    return loop;\n  }\n\n  return {\n    name: \"transform-for-of\",\n    visitor: {\n      ForOfStatement(path, state) {\n        const right = path.get(\"right\");\n        if (\n          right.isArrayExpression() ||\n          (process.env.BABEL_8_BREAKING\n            ? right.isGenericType(\"Array\")\n            : right.isGenericType(\"Array\") ||\n              t.isArrayTypeAnnotation(right.getTypeAnnotation()))\n        ) {\n          path.replaceWith(_ForOfStatementArray(path));\n          return;\n        }\n\n        if (!process.env.BABEL_8_BREAKING) {\n          if (!state.availableHelper(builder.helper)) {\n            // Babel <7.9.0 doesn't support this helper\n            transformWithoutHelper(skipIteratorClosing, path, state);\n            return;\n          }\n        }\n\n        const { node, parent, scope } = path;\n        const left = node.left;\n        let declar;\n\n        const stepKey = scope.generateUid(\"step\");\n        const stepValue = t.memberExpression(\n          t.identifier(stepKey),\n          t.identifier(\"value\"),\n        );\n\n        if (t.isVariableDeclaration(left)) {\n          // for (let i of test)\n          declar = t.variableDeclaration(left.kind, [\n            t.variableDeclarator(left.declarations[0].id, stepValue),\n          ]);\n        } else {\n          // for (i of test), for ({ i } of test)\n          declar = t.expressionStatement(\n            t.assignmentExpression(\"=\", left, stepValue),\n          );\n        }\n\n        const nodes = builder.build({\n          CREATE_ITERATOR_HELPER: state.addHelper(builder.helper),\n          ITERATOR_HELPER: scope.generateUidIdentifier(\"iterator\"),\n          ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable\n            ? t.booleanLiteral(true)\n            : null,\n          STEP_KEY: t.identifier(stepKey),\n          OBJECT: node.right,\n          BODY: buildLoopBody(path, declar),\n        });\n        const container = builder.getContainer(nodes);\n\n        t.inherits(container[0], node);\n        t.inherits(container[0].body, node.body);\n\n        if (t.isLabeledStatement(parent)) {\n          // @ts-expect-error replacing node types\n          container[0] = t.labeledStatement(parent.label, container[0]);\n\n          path.parentPath.replaceWithMultiple(nodes);\n\n          // The parent has been replaced, prevent Babel from traversing a detached path\n          path.skip();\n        } else {\n          path.replaceWithMultiple(nodes);\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,153 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = transformWithoutHelper;
+var _core = require("@babel/core");
+function transformWithoutHelper(loose, path, state) {
+  const pushComputedProps = loose ? pushComputedPropsLoose : pushComputedPropsSpec;
+  const {
+    node
+  } = path;
+  const build = pushComputedProps(path, state);
+  const declar = build.declar;
+  const loop = build.loop;
+  const block = loop.body;
+  path.ensureBlock();
+  if (declar) {
+    block.body.push(declar);
+  }
+  block.body.push(...node.body.body);
+  _core.types.inherits(loop, node);
+  _core.types.inherits(loop.body, node.body);
+  if (build.replaceParent) {
+    path.parentPath.replaceWithMultiple(build.node);
+    path.remove();
+  } else {
+    path.replaceWithMultiple(build.node);
+  }
+}
+const buildForOfLoose = _core.template.statement(`
+  for (var LOOP_OBJECT = OBJECT,
+          IS_ARRAY = Array.isArray(LOOP_OBJECT),
+          INDEX = 0,
+          LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {
+    INTERMEDIATE;
+    if (IS_ARRAY) {
+      if (INDEX >= LOOP_OBJECT.length) break;
+      ID = LOOP_OBJECT[INDEX++];
+    } else {
+      INDEX = LOOP_OBJECT.next();
+      if (INDEX.done) break;
+      ID = INDEX.value;
+    }
+  }
+`);
+const buildForOf = _core.template.statements(`
+  var ITERATOR_COMPLETION = true;
+  var ITERATOR_HAD_ERROR_KEY = false;
+  var ITERATOR_ERROR_KEY = undefined;
+  try {
+    for (
+      var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;
+      !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);
+      ITERATOR_COMPLETION = true
+    ) {}
+  } catch (err) {
+    ITERATOR_HAD_ERROR_KEY = true;
+    ITERATOR_ERROR_KEY = err;
+  } finally {
+    try {
+      if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {
+        ITERATOR_KEY.return();
+      }
+    } finally {
+      if (ITERATOR_HAD_ERROR_KEY) {
+        throw ITERATOR_ERROR_KEY;
+      }
+    }
+  }
+`);
+function pushComputedPropsLoose(path, state) {
+  const {
+    node,
+    scope,
+    parent
+  } = path;
+  const {
+    left
+  } = node;
+  let declar, id, intermediate;
+  if (_core.types.isIdentifier(left) || _core.types.isPattern(left) || _core.types.isMemberExpression(left)) {
+    id = left;
+    intermediate = null;
+  } else if (_core.types.isVariableDeclaration(left)) {
+    id = scope.generateUidIdentifier("ref");
+    declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, _core.types.identifier(id.name))]);
+    intermediate = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(id.name))]);
+  } else {
+    throw state.buildCodeFrameError(left, `Unknown node type ${left.type} in ForStatement`);
+  }
+  const iteratorKey = scope.generateUidIdentifier("iterator");
+  const isArrayKey = scope.generateUidIdentifier("isArray");
+  const loop = buildForOfLoose({
+    LOOP_OBJECT: iteratorKey,
+    IS_ARRAY: isArrayKey,
+    OBJECT: node.right,
+    INDEX: scope.generateUidIdentifier("i"),
+    ID: id,
+    INTERMEDIATE: intermediate
+  });
+  const isLabeledParent = _core.types.isLabeledStatement(parent);
+  let labeled;
+  if (isLabeledParent) {
+    labeled = _core.types.labeledStatement(parent.label, loop);
+  }
+  return {
+    replaceParent: isLabeledParent,
+    declar: declar,
+    node: labeled || loop,
+    loop: loop
+  };
+}
+function pushComputedPropsSpec(path, state) {
+  const {
+    node,
+    scope,
+    parent
+  } = path;
+  const left = node.left;
+  let declar;
+  const stepKey = scope.generateUid("step");
+  const stepValue = _core.types.memberExpression(_core.types.identifier(stepKey), _core.types.identifier("value"));
+  if (_core.types.isIdentifier(left) || _core.types.isPattern(left) || _core.types.isMemberExpression(left)) {
+    declar = _core.types.expressionStatement(_core.types.assignmentExpression("=", left, stepValue));
+  } else if (_core.types.isVariableDeclaration(left)) {
+    declar = _core.types.variableDeclaration(left.kind, [_core.types.variableDeclarator(left.declarations[0].id, stepValue)]);
+  } else {
+    throw state.buildCodeFrameError(left, `Unknown node type ${left.type} in ForStatement`);
+  }
+  const template = buildForOf({
+    ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
+    ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"),
+    ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
+    ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
+    STEP_KEY: _core.types.identifier(stepKey),
+    OBJECT: node.right
+  });
+  const isLabeledParent = _core.types.isLabeledStatement(parent);
+  const tryBody = template[3].block.body;
+  const loop = tryBody[0];
+  if (isLabeledParent) {
+    tryBody[0] = _core.types.labeledStatement(parent.label, loop);
+  }
+  return {
+    replaceParent: isLabeledParent,
+    declar: declar,
+    loop: loop,
+    node: template
+  };
+}
+
+//# sourceMappingURL=no-helper-implementation.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/lib/no-helper-implementation.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","transformWithoutHelper","loose","path","state","pushComputedProps","pushComputedPropsLoose","pushComputedPropsSpec","node","build","declar","loop","block","body","ensureBlock","push","t","inherits","replaceParent","parentPath","replaceWithMultiple","remove","buildForOfLoose","template","statement","buildForOf","statements","scope","parent","left","id","intermediate","isIdentifier","isPattern","isMemberExpression","isVariableDeclaration","generateUidIdentifier","variableDeclaration","kind","variableDeclarator","declarations","identifier","name","buildCodeFrameError","type","iteratorKey","isArrayKey","LOOP_OBJECT","IS_ARRAY","OBJECT","right","INDEX","ID","INTERMEDIATE","isLabeledParent","isLabeledStatement","labeled","labeledStatement","label","stepKey","generateUid","stepValue","memberExpression","expressionStatement","assignmentExpression","ITERATOR_HAD_ERROR_KEY","ITERATOR_COMPLETION","ITERATOR_ERROR_KEY","ITERATOR_KEY","STEP_KEY","tryBody"],"sources":["../src/no-helper-implementation.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { PluginPass, NodePath } from \"@babel/core\";\n\n// This is the legacy implementation, which inlines all the code.\n// It must be kept for compatibility reasons.\n// TODO(Babel 8): Remove this file.\n\nexport default function transformWithoutHelper(\n  loose: boolean | void,\n  path: NodePath<t.ForOfStatement>,\n  state: PluginPass,\n) {\n  const pushComputedProps = loose\n    ? pushComputedPropsLoose\n    : pushComputedPropsSpec;\n\n  const { node } = path;\n  const build = pushComputedProps(path, state);\n  const declar = build.declar;\n  const loop = build.loop;\n  const block = loop.body as t.BlockStatement;\n\n  // ensure that it's a block so we can take all its statements\n  path.ensureBlock();\n\n  // add the value declaration to the new loop body\n  if (declar) {\n    block.body.push(declar);\n  }\n\n  // push the rest of the original loop body onto our new body\n  block.body.push(...(node.body as t.BlockStatement).body);\n\n  t.inherits(loop, node);\n  t.inherits(loop.body, node.body);\n\n  if (build.replaceParent) {\n    path.parentPath.replaceWithMultiple(build.node);\n    path.remove();\n  } else {\n    path.replaceWithMultiple(build.node);\n  }\n}\n\nconst buildForOfLoose = template.statement(`\n  for (var LOOP_OBJECT = OBJECT,\n          IS_ARRAY = Array.isArray(LOOP_OBJECT),\n          INDEX = 0,\n          LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n    INTERMEDIATE;\n    if (IS_ARRAY) {\n      if (INDEX >= LOOP_OBJECT.length) break;\n      ID = LOOP_OBJECT[INDEX++];\n    } else {\n      INDEX = LOOP_OBJECT.next();\n      if (INDEX.done) break;\n      ID = INDEX.value;\n    }\n  }\n`);\n\nconst buildForOf = template.statements(`\n  var ITERATOR_COMPLETION = true;\n  var ITERATOR_HAD_ERROR_KEY = false;\n  var ITERATOR_ERROR_KEY = undefined;\n  try {\n    for (\n      var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;\n      !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);\n      ITERATOR_COMPLETION = true\n    ) {}\n  } catch (err) {\n    ITERATOR_HAD_ERROR_KEY = true;\n    ITERATOR_ERROR_KEY = err;\n  } finally {\n    try {\n      if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {\n        ITERATOR_KEY.return();\n      }\n    } finally {\n      if (ITERATOR_HAD_ERROR_KEY) {\n        throw ITERATOR_ERROR_KEY;\n      }\n    }\n  }\n`);\n\nfunction pushComputedPropsLoose(\n  path: NodePath<t.ForOfStatement>,\n  state: PluginPass,\n) {\n  const { node, scope, parent } = path;\n  const { left } = node;\n  let declar, id, intermediate;\n\n  if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n    // for (i of test), for ({ i } of test)\n    id = left;\n    intermediate = null;\n  } else if (t.isVariableDeclaration(left)) {\n    // for (let i of test)\n    id = scope.generateUidIdentifier(\"ref\");\n    declar = t.variableDeclaration(left.kind, [\n      t.variableDeclarator(left.declarations[0].id, t.identifier(id.name)),\n    ]);\n    intermediate = t.variableDeclaration(\"var\", [\n      t.variableDeclarator(t.identifier(id.name)),\n    ]);\n  } else {\n    throw state.buildCodeFrameError(\n      left,\n      `Unknown node type ${left.type} in ForStatement`,\n    );\n  }\n\n  const iteratorKey = scope.generateUidIdentifier(\"iterator\");\n  const isArrayKey = scope.generateUidIdentifier(\"isArray\");\n\n  const loop = buildForOfLoose({\n    LOOP_OBJECT: iteratorKey,\n    IS_ARRAY: isArrayKey,\n    OBJECT: node.right,\n    INDEX: scope.generateUidIdentifier(\"i\"),\n    ID: id,\n    INTERMEDIATE: intermediate,\n  }) as t.ForStatement;\n\n  //\n  const isLabeledParent = t.isLabeledStatement(parent);\n  let labeled;\n\n  if (isLabeledParent) {\n    labeled = t.labeledStatement(parent.label, loop);\n  }\n\n  return {\n    replaceParent: isLabeledParent,\n    declar: declar,\n    node: labeled || loop,\n    loop: loop,\n  };\n}\n\nfunction pushComputedPropsSpec(\n  path: NodePath<t.ForOfStatement>,\n  state: PluginPass,\n) {\n  const { node, scope, parent } = path;\n  const left = node.left;\n  let declar;\n\n  const stepKey = scope.generateUid(\"step\");\n  const stepValue = t.memberExpression(\n    t.identifier(stepKey),\n    t.identifier(\"value\"),\n  );\n\n  if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {\n    // for (i of test), for ({ i } of test)\n    declar = t.expressionStatement(\n      t.assignmentExpression(\"=\", left, stepValue),\n    );\n  } else if (t.isVariableDeclaration(left)) {\n    // for (let i of test)\n    declar = t.variableDeclaration(left.kind, [\n      t.variableDeclarator(left.declarations[0].id, stepValue),\n    ]);\n  } else {\n    throw state.buildCodeFrameError(\n      left,\n      `Unknown node type ${left.type} in ForStatement`,\n    );\n  }\n\n  const template = buildForOf({\n    ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier(\"didIteratorError\"),\n    ITERATOR_COMPLETION: scope.generateUidIdentifier(\n      \"iteratorNormalCompletion\",\n    ),\n    ITERATOR_ERROR_KEY: scope.generateUidIdentifier(\"iteratorError\"),\n    ITERATOR_KEY: scope.generateUidIdentifier(\"iterator\"),\n    STEP_KEY: t.identifier(stepKey),\n    OBJECT: node.right,\n  });\n\n  const isLabeledParent = t.isLabeledStatement(parent);\n\n  const tryBody = (template[3] as t.TryStatement).block.body;\n  const loop = tryBody[0] as t.ForStatement;\n\n  if (isLabeledParent) {\n    tryBody[0] = t.labeledStatement(parent.label, loop);\n  }\n\n  //\n\n  return {\n    replaceParent: isLabeledParent,\n    declar: declar,\n    loop: loop,\n    node: template,\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-for-of/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-for-of/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-for-of/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-for-of",
+  "version": "7.25.9",
+  "description": "Compile ES2015 for...of to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-for-of"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-for-of",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-function-name/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-function-name/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-function-name/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-function-name/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-function-name/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-function-name/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-function-name
+
+> Apply ES2015 function.name semantics to all functions
+
+See our website [@babel/plugin-transform-function-name](https://babeljs.io/docs/babel-plugin-transform-function-name) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-function-name
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-function-name --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-function-name/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-function-name/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-function-name/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCompilationTargets = require("@babel/helper-compilation-targets");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  const supportUnicodeId = !(0, _helperCompilationTargets.isRequired)("transform-unicode-escapes", api.targets());
+  return {
+    name: "transform-function-name",
+    visitor: {
+      FunctionExpression: {
+        exit(path) {
+          if (path.key !== "value" && !path.parentPath.isObjectProperty()) {
+            {
+              var _path$ensureFunctionN;
+              (_path$ensureFunctionN = path.ensureFunctionName) != null ? _path$ensureFunctionN : path.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+            }
+            path.ensureFunctionName(supportUnicodeId);
+          }
+        }
+      },
+      ObjectProperty(path) {
+        const value = path.get("value");
+        if (value.isFunction()) {
+          {
+            var _value$ensureFunction;
+            (_value$ensureFunction = value.ensureFunctionName) != null ? _value$ensureFunction : value.ensureFunctionName = require("@babel/traverse").NodePath.prototype.ensureFunctionName;
+          }
+          value.ensureFunctionName(supportUnicodeId);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-function-name/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-function-name/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-function-name/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCompilationTargets","require","_helperPluginUtils","_default","exports","default","declare","api","assertVersion","supportUnicodeId","isRequired","targets","name","visitor","FunctionExpression","exit","path","key","parentPath","isObjectProperty","_path$ensureFunctionN","ensureFunctionName","NodePath","prototype","ObjectProperty","value","get","isFunction","_value$ensureFunction"],"sources":["../src/index.ts"],"sourcesContent":["import { isRequired } from \"@babel/helper-compilation-targets\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n  const supportUnicodeId = !isRequired(\n    \"transform-unicode-escapes\",\n    api.targets(),\n  );\n\n  return {\n    name: \"transform-function-name\",\n\n    visitor: {\n      FunctionExpression: {\n        exit(path) {\n          if (path.key !== \"value\" && !path.parentPath.isObjectProperty()) {\n            if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n              // polyfill when being run by an older Babel version\n              path.ensureFunctionName ??=\n                // eslint-disable-next-line no-restricted-globals\n                require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n            }\n            path.ensureFunctionName(supportUnicodeId);\n          }\n        },\n      },\n\n      ObjectProperty(path) {\n        const value = path.get(\"value\");\n        if (value.isFunction()) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            value.ensureFunctionName ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n          }\n          // @ts-expect-error Fixme: should check ArrowFunctionExpression\n          value.ensureFunctionName(supportUnicodeId);\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,yBAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EACtC,MAAMC,gBAAgB,GAAG,CAAC,IAAAC,oCAAU,EAClC,2BAA2B,EAC3BH,GAAG,CAACI,OAAO,CAAC,CACd,CAAC;EAED,OAAO;IACLC,IAAI,EAAE,yBAAyB;IAE/BC,OAAO,EAAE;MACPC,kBAAkB,EAAE;QAClBC,IAAIA,CAACC,IAAI,EAAE;UACT,IAAIA,IAAI,CAACC,GAAG,KAAK,OAAO,IAAI,CAACD,IAAI,CAACE,UAAU,CAACC,gBAAgB,CAAC,CAAC,EAAE;YACE;cAAA,IAAAC,qBAAA;cAE/D,CAAAA,qBAAA,GAAAJ,IAAI,CAACK,kBAAkB,YAAAD,qBAAA,GAAvBJ,IAAI,CAACK,kBAAkB,GAErBpB,OAAO,CAAC,iBAAiB,CAAC,CAACqB,QAAQ,CAACC,SAAS,CAACF,kBAAkB;YACpE;YACAL,IAAI,CAACK,kBAAkB,CAACZ,gBAAgB,CAAC;UAC3C;QACF;MACF,CAAC;MAEDe,cAAcA,CAACR,IAAI,EAAE;QACnB,MAAMS,KAAK,GAAGT,IAAI,CAACU,GAAG,CAAC,OAAO,CAAC;QAC/B,IAAID,KAAK,CAACE,UAAU,CAAC,CAAC,EAAE;UAC2C;YAAA,IAAAC,qBAAA;YAE/D,CAAAA,qBAAA,GAAAH,KAAK,CAACJ,kBAAkB,YAAAO,qBAAA,GAAxBH,KAAK,CAACJ,kBAAkB,GAEtBpB,OAAO,CAAC,iBAAiB,CAAC,CAACqB,QAAQ,CAACC,SAAS,CAACF,kBAAkB;UACpE;UAEAI,KAAK,CAACJ,kBAAkB,CAACZ,gBAAgB,CAAC;QAC5C;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-function-name/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-function-name/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-function-name/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-function-name",
+  "version": "7.25.9",
+  "description": "Apply ES2015 function.name semantics to all functions",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-function-name"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-function-name",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-compilation-targets": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-json-strings/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-json-strings/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-json-strings/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-json-strings/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-json-strings/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-json-strings/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-json-strings
+
+> Escape U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR in JS strings
+
+See our website [@babel/plugin-transform-json-strings](https://babeljs.io/docs/babel-plugin-transform-json-strings) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-json-strings
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-json-strings --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-json-strings/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-json-strings/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-json-strings/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const regex = /(\\*)([\u2028\u2029])/g;
+  function replace(match, escapes, separator) {
+    const isEscaped = escapes.length % 2 === 1;
+    if (isEscaped) return match;
+    return `${escapes}\\u${separator.charCodeAt(0).toString(16)}`;
+  }
+  return {
+    name: "transform-json-strings",
+    manipulateOptions: (_, parser) => parser.plugins.push("jsonStrings"),
+    visitor: {
+      "DirectiveLiteral|StringLiteral"({
+        node
+      }) {
+        const {
+          extra
+        } = node;
+        if (!(extra != null && extra.raw)) return;
+        extra.raw = extra.raw.replace(regex, replace);
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-json-strings/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-json-strings/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-json-strings/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","assertVersion","regex","replace","match","escapes","separator","isEscaped","length","charCodeAt","toString","name","manipulateOptions","_","parser","plugins","push","visitor","DirectiveLiteral|StringLiteral","node","extra","raw"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { NodePath, types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n  const regex = /(\\\\*)([\\u2028\\u2029])/g;\n  function replace(match: string, escapes: string, separator: string) {\n    // If there's an odd number, that means the separator itself was escaped.\n    // \"\\X\" escapes X.\n    // \"\\\\X\" escapes the backslash, so X is unescaped.\n    const isEscaped = escapes.length % 2 === 1;\n    if (isEscaped) return match;\n\n    return `${escapes}\\\\u${separator.charCodeAt(0).toString(16)}`;\n  }\n\n  return {\n    name: \"transform-json-strings\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"jsonStrings\"),\n\n    visitor: {\n      \"DirectiveLiteral|StringLiteral\"({\n        node,\n      }: NodePath<t.DirectiveLiteral | t.StringLiteral>) {\n        const { extra } = node;\n        if (!extra?.raw) return;\n\n        extra.raw = (extra.raw as string).replace(regex, replace);\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAGtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,uCAAoB,CAAC;EACtC,MAAMC,KAAK,GAAG,wBAAwB;EACtC,SAASC,OAAOA,CAACC,KAAa,EAAEC,OAAe,EAAEC,SAAiB,EAAE;IAIlE,MAAMC,SAAS,GAAGF,OAAO,CAACG,MAAM,GAAG,CAAC,KAAK,CAAC;IAC1C,IAAID,SAAS,EAAE,OAAOH,KAAK;IAE3B,OAAO,GAAGC,OAAO,MAAMC,SAAS,CAACG,UAAU,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,EAAE;EAC/D;EAEA,OAAO;IACLC,IAAI,EAAE,wBAAwB;IAC9BC,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,aAAa,CAAC;IAErDC,OAAO,EAAE;MACP,gCAAgCC,CAAC;QAC/BC;MAC8C,CAAC,EAAE;QACjD,MAAM;UAAEC;QAAM,CAAC,GAAGD,IAAI;QACtB,IAAI,EAACC,KAAK,YAALA,KAAK,CAAEC,GAAG,GAAE;QAEjBD,KAAK,CAACC,GAAG,GAAID,KAAK,CAACC,GAAG,CAAYlB,OAAO,CAACD,KAAK,EAAEC,OAAO,CAAC;MAC3D;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-json-strings/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-json-strings/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-json-strings/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-json-strings",
+  "version": "7.25.9",
+  "description": "Escape U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR in JS strings",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-json-strings"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-json-strings",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-literals/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-literals/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-literals
+
+> Compile ES2015 unicode string and number literals to ES5
+
+See our website [@babel/plugin-transform-literals](https://babeljs.io/docs/babel-plugin-transform-literals) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-literals
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-literals --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-literals/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-literals",
+    visitor: {
+      NumericLiteral({
+        node
+      }) {
+        if (node.extra && /^0[ob]/i.test(node.extra.raw)) {
+          node.extra = undefined;
+        }
+      },
+      StringLiteral({
+        node
+      }) {
+        if (node.extra && /\\u/i.test(node.extra.raw)) {
+          node.extra = undefined;
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-literals/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","assertVersion","name","visitor","NumericLiteral","node","extra","test","raw","undefined","StringLiteral"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-literals\",\n\n    visitor: {\n      NumericLiteral({ node }) {\n        // number octal like 0b10 or 0o70\n        // @ts-expect-error Add node.extra typings\n        if (node.extra && /^0[ob]/i.test(node.extra.raw)) {\n          node.extra = undefined;\n        }\n      },\n\n      StringLiteral({ node }) {\n        // unicode escape\n        // @ts-expect-error Add node.extra typings\n        if (node.extra && /\\\\u/i.test(node.extra.raw)) {\n          node.extra = undefined;\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,oBAAoB;IAE1BC,OAAO,EAAE;MACPC,cAAcA,CAAC;QAAEC;MAAK,CAAC,EAAE;QAGvB,IAAIA,IAAI,CAACC,KAAK,IAAI,SAAS,CAACC,IAAI,CAACF,IAAI,CAACC,KAAK,CAACE,GAAG,CAAC,EAAE;UAChDH,IAAI,CAACC,KAAK,GAAGG,SAAS;QACxB;MACF,CAAC;MAEDC,aAAaA,CAAC;QAAEL;MAAK,CAAC,EAAE;QAGtB,IAAIA,IAAI,CAACC,KAAK,IAAI,MAAM,CAACC,IAAI,CAACF,IAAI,CAACC,KAAK,CAACE,GAAG,CAAC,EAAE;UAC7CH,IAAI,CAACC,KAAK,GAAGG,SAAS;QACxB;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-literals/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-literals",
+  "version": "7.25.9",
+  "description": "Compile ES2015 unicode string and number literals to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-literals"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-literals",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-logical-assignment-operators
+
+> Transforms logical assignment operators into short-circuited assignments
+
+See our website [@babel/plugin-transform-logical-assignment-operators](https://babeljs.io/docs/babel-plugin-transform-logical-assignment-operators) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-logical-assignment-operators
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-logical-assignment-operators --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,55 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  return {
+    name: "transform-logical-assignment-operators",
+    manipulateOptions: (_, parser) => parser.plugins.push("logicalAssignment"),
+    visitor: {
+      AssignmentExpression(path) {
+        const {
+          node,
+          scope
+        } = path;
+        const {
+          operator,
+          left,
+          right
+        } = node;
+        const operatorTrunc = operator.slice(0, -1);
+        if (!_core.types.LOGICAL_OPERATORS.includes(operatorTrunc)) {
+          return;
+        }
+        const lhs = _core.types.cloneNode(left);
+        if (_core.types.isMemberExpression(left)) {
+          const {
+            object,
+            property,
+            computed
+          } = left;
+          const memo = scope.maybeGenerateMemoised(object);
+          if (memo) {
+            left.object = memo;
+            lhs.object = _core.types.assignmentExpression("=", _core.types.cloneNode(memo), object);
+          }
+          if (computed) {
+            const memo = scope.maybeGenerateMemoised(property);
+            if (memo) {
+              left.property = memo;
+              lhs.property = _core.types.assignmentExpression("=", _core.types.cloneNode(memo), property);
+            }
+          }
+        }
+        path.replaceWith(_core.types.logicalExpression(operatorTrunc, lhs, _core.types.assignmentExpression("=", left, right)));
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","manipulateOptions","_","parser","plugins","push","visitor","AssignmentExpression","path","node","scope","operator","left","right","operatorTrunc","slice","t","LOGICAL_OPERATORS","includes","lhs","cloneNode","isMemberExpression","object","property","computed","memo","maybeGenerateMemoised","assignmentExpression","replaceWith","logicalExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-logical-assignment-operators\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"logicalAssignment\"),\n\n    visitor: {\n      AssignmentExpression(path) {\n        const { node, scope } = path;\n        const { operator, left, right } = node;\n        const operatorTrunc = operator.slice(0, -1);\n        if (!t.LOGICAL_OPERATORS.includes(operatorTrunc)) {\n          return;\n        }\n\n        const lhs = t.cloneNode(left) as t.Identifier | t.MemberExpression;\n        if (t.isMemberExpression(left)) {\n          const { object, property, computed } = left;\n          const memo = scope.maybeGenerateMemoised(object);\n          if (memo) {\n            left.object = memo;\n            (lhs as t.MemberExpression).object = t.assignmentExpression(\n              \"=\",\n              t.cloneNode(memo),\n              // object must not be Super when `memo` is an identifier\n              // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n              object as t.Expression,\n            );\n          }\n\n          if (computed) {\n            const memo = scope.maybeGenerateMemoised(property);\n            if (memo) {\n              left.property = memo;\n              (lhs as t.MemberExpression).property = t.assignmentExpression(\n                \"=\",\n                t.cloneNode(memo),\n                // @ts-expect-error todo(flow->ts): property can be t.PrivateName\n                property,\n              );\n            }\n          }\n        }\n\n        path.replaceWith(\n          t.logicalExpression(\n            // @ts-expect-error operatorTrunc has been tested by t.LOGICAL_OPERATORS\n            operatorTrunc,\n            lhs,\n            t.assignmentExpression(\"=\", left, right),\n          ),\n        );\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAyC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1B,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,uCAAoB,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,wCAAwC;IAC9CC,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,mBAAmB,CAAC;IAE3DC,OAAO,EAAE;MACPC,oBAAoBA,CAACC,IAAI,EAAE;QACzB,MAAM;UAAEC,IAAI;UAAEC;QAAM,CAAC,GAAGF,IAAI;QAC5B,MAAM;UAAEG,QAAQ;UAAEC,IAAI;UAAEC;QAAM,CAAC,GAAGJ,IAAI;QACtC,MAAMK,aAAa,GAAGH,QAAQ,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAACC,WAAC,CAACC,iBAAiB,CAACC,QAAQ,CAACJ,aAAa,CAAC,EAAE;UAChD;QACF;QAEA,MAAMK,GAAG,GAAGH,WAAC,CAACI,SAAS,CAACR,IAAI,CAAsC;QAClE,IAAII,WAAC,CAACK,kBAAkB,CAACT,IAAI,CAAC,EAAE;UAC9B,MAAM;YAAEU,MAAM;YAAEC,QAAQ;YAAEC;UAAS,CAAC,GAAGZ,IAAI;UAC3C,MAAMa,IAAI,GAAGf,KAAK,CAACgB,qBAAqB,CAACJ,MAAM,CAAC;UAChD,IAAIG,IAAI,EAAE;YACRb,IAAI,CAACU,MAAM,GAAGG,IAAI;YACjBN,GAAG,CAAwBG,MAAM,GAAGN,WAAC,CAACW,oBAAoB,CACzD,GAAG,EACHX,WAAC,CAACI,SAAS,CAACK,IAAI,CAAC,EAGjBH,MACF,CAAC;UACH;UAEA,IAAIE,QAAQ,EAAE;YACZ,MAAMC,IAAI,GAAGf,KAAK,CAACgB,qBAAqB,CAACH,QAAQ,CAAC;YAClD,IAAIE,IAAI,EAAE;cACRb,IAAI,CAACW,QAAQ,GAAGE,IAAI;cACnBN,GAAG,CAAwBI,QAAQ,GAAGP,WAAC,CAACW,oBAAoB,CAC3D,GAAG,EACHX,WAAC,CAACI,SAAS,CAACK,IAAI,CAAC,EAEjBF,QACF,CAAC;YACH;UACF;QACF;QAEAf,IAAI,CAACoB,WAAW,CACdZ,WAAC,CAACa,iBAAiB,CAEjBf,aAAa,EACbK,GAAG,EACHH,WAAC,CAACW,oBAAoB,CAAC,GAAG,EAAEf,IAAI,EAAEC,KAAK,CACzC,CACF,CAAC;MACH;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-logical-assignment-operators/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-logical-assignment-operators",
+  "version": "7.25.9",
+  "description": "Transforms logical assignment operators into short-circuited assignments",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-logical-assignment-operators"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-logical-assignment-operators",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-member-expression-literals
+
+> Ensure that reserved words are quoted in property accesses
+
+See our website [@babel/plugin-transform-member-expression-literals](https://babeljs.io/docs/babel-plugin-transform-member-expression-literals) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-member-expression-literals
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-member-expression-literals --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-member-expression-literals",
+    visitor: {
+      MemberExpression: {
+        exit({
+          node
+        }) {
+          const prop = node.property;
+          if (!node.computed && _core.types.isIdentifier(prop) && !_core.types.isValidES3Identifier(prop.name)) {
+            node.property = _core.types.stringLiteral(prop.name);
+            node.computed = true;
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","MemberExpression","exit","node","prop","property","computed","t","isIdentifier","isValidES3Identifier","stringLiteral"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-member-expression-literals\",\n\n    visitor: {\n      MemberExpression: {\n        exit({ node }) {\n          const prop = node.property;\n          if (\n            !node.computed &&\n            t.isIdentifier(prop) &&\n            !t.isValidES3Identifier(prop.name)\n          ) {\n            // foo.default -> foo[\"default\"]\n            node.property = t.stringLiteral(prop.name);\n            node.computed = true;\n          }\n        },\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAyC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1B,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,sCAAsC;IAE5CC,OAAO,EAAE;MACPC,gBAAgB,EAAE;QAChBC,IAAIA,CAAC;UAAEC;QAAK,CAAC,EAAE;UACb,MAAMC,IAAI,GAAGD,IAAI,CAACE,QAAQ;UAC1B,IACE,CAACF,IAAI,CAACG,QAAQ,IACdC,WAAC,CAACC,YAAY,CAACJ,IAAI,CAAC,IACpB,CAACG,WAAC,CAACE,oBAAoB,CAACL,IAAI,CAACL,IAAI,CAAC,EAClC;YAEAI,IAAI,CAACE,QAAQ,GAAGE,WAAC,CAACG,aAAa,CAACN,IAAI,CAACL,IAAI,CAAC;YAC1CI,IAAI,CAACG,QAAQ,GAAG,IAAI;UACtB;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-member-expression-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-member-expression-literals",
+  "version": "7.25.9",
+  "description": "Ensure that reserved words are quoted in property accesses",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-member-expression-literals"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-member-expression-literals",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-modules-amd
+
+> This plugin transforms ES2015 modules to AMD
+
+See our website [@babel/plugin-transform-modules-amd](https://babeljs.io/docs/babel-plugin-transform-modules-amd) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-modules-amd
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-modules-amd --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,144 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperModuleTransforms = require("@babel/helper-module-transforms");
+var _core = require("@babel/core");
+const buildWrapper = _core.template.statement(`
+  define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {
+  })
+`);
+const buildAnonymousWrapper = _core.template.statement(`
+  define(["require"], function(REQUIRE) {
+  })
+`);
+function injectWrapper(path, wrapper) {
+  const {
+    body,
+    directives
+  } = path.node;
+  path.node.directives = [];
+  path.node.body = [];
+  const amdFactoryCall = path.pushContainer("body", wrapper)[0].get("expression");
+  const amdFactoryCallArgs = amdFactoryCall.get("arguments");
+  const amdFactory = amdFactoryCallArgs[amdFactoryCallArgs.length - 1].get("body");
+  amdFactory.pushContainer("directives", directives);
+  amdFactory.pushContainer("body", body);
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion(7);
+  const {
+    allowTopLevelThis,
+    strict,
+    strictMode,
+    importInterop,
+    noInterop
+  } = options;
+  const constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
+  const enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
+  return {
+    name: "transform-modules-amd",
+    pre() {
+      this.file.set("@babel/plugin-transform-modules-*", "amd");
+    },
+    visitor: {
+      ["CallExpression" + (api.types.importExpression ? "|ImportExpression" : "")](path, state) {
+        if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
+        if (path.isCallExpression() && !path.get("callee").isImport()) return;
+        let {
+          requireId,
+          resolveId,
+          rejectId
+        } = state;
+        if (!requireId) {
+          requireId = path.scope.generateUidIdentifier("require");
+          state.requireId = requireId;
+        }
+        if (!resolveId || !rejectId) {
+          resolveId = path.scope.generateUidIdentifier("resolve");
+          rejectId = path.scope.generateUidIdentifier("reject");
+          state.resolveId = resolveId;
+          state.rejectId = rejectId;
+        }
+        let result = _core.types.identifier("imported");
+        if (!noInterop) {
+          result = (0, _helperModuleTransforms.wrapInterop)(this.file.path, result, "namespace");
+        }
+        path.replaceWith((0, _helperModuleTransforms.buildDynamicImport)(path.node, false, false, specifier => _core.template.expression.ast`
+              new Promise((${resolveId}, ${rejectId}) =>
+                ${requireId}(
+                  [${specifier}],
+                  imported => ${_core.types.cloneNode(resolveId)}(${result}),
+                  ${_core.types.cloneNode(rejectId)}
+                )
+              )
+            `));
+      },
+      Program: {
+        exit(path, {
+          requireId
+        }) {
+          if (!(0, _helperModuleTransforms.isModule)(path)) {
+            if (requireId) {
+              injectWrapper(path, buildAnonymousWrapper({
+                REQUIRE: _core.types.cloneNode(requireId)
+              }));
+            }
+            return;
+          }
+          const amdArgs = [];
+          const importNames = [];
+          if (requireId) {
+            amdArgs.push(_core.types.stringLiteral("require"));
+            importNames.push(_core.types.cloneNode(requireId));
+          }
+          let moduleName = (0, _helperModuleTransforms.getModuleName)(this.file.opts, options);
+          if (moduleName) moduleName = _core.types.stringLiteral(moduleName);
+          const {
+            meta,
+            headers
+          } = (0, _helperModuleTransforms.rewriteModuleStatementsAndPrepareHeader)(path, {
+            enumerableModuleMeta,
+            constantReexports,
+            strict,
+            strictMode,
+            allowTopLevelThis,
+            importInterop,
+            noInterop,
+            filename: this.file.opts.filename
+          });
+          if ((0, _helperModuleTransforms.hasExports)(meta)) {
+            amdArgs.push(_core.types.stringLiteral("exports"));
+            importNames.push(_core.types.identifier(meta.exportName));
+          }
+          for (const [source, metadata] of meta.source) {
+            amdArgs.push(_core.types.stringLiteral(source));
+            importNames.push(_core.types.identifier(metadata.name));
+            if (!(0, _helperModuleTransforms.isSideEffectImport)(metadata)) {
+              const interop = (0, _helperModuleTransforms.wrapInterop)(path, _core.types.identifier(metadata.name), metadata.interop);
+              if (interop) {
+                const header = _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.identifier(metadata.name), interop));
+                header.loc = metadata.loc;
+                headers.push(header);
+              }
+            }
+            headers.push(...(0, _helperModuleTransforms.buildNamespaceInitStatements)(meta, metadata, constantReexports));
+          }
+          (0, _helperModuleTransforms.ensureStatementsHoisted)(headers);
+          path.unshiftContainer("body", headers);
+          injectWrapper(path, buildWrapper({
+            MODULE_NAME: moduleName,
+            AMD_ARGUMENTS: _core.types.arrayExpression(amdArgs),
+            IMPORT_NAMES: importNames
+          }));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperModuleTransforms","_core","buildWrapper","template","statement","buildAnonymousWrapper","injectWrapper","path","wrapper","body","directives","node","amdFactoryCall","pushContainer","get","amdFactoryCallArgs","amdFactory","length","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","assertVersion","allowTopLevelThis","strict","strictMode","importInterop","noInterop","constantReexports","assumption","loose","enumerableModuleMeta","name","pre","file","set","visitor","types","importExpression","state","has","isCallExpression","isImport","requireId","resolveId","rejectId","scope","generateUidIdentifier","result","t","identifier","wrapInterop","replaceWith","buildDynamicImport","specifier","expression","ast","cloneNode","Program","exit","isModule","REQUIRE","amdArgs","importNames","push","stringLiteral","moduleName","getModuleName","opts","meta","headers","rewriteModuleStatementsAndPrepareHeader","filename","hasExports","exportName","source","metadata","isSideEffectImport","interop","header","expressionStatement","assignmentExpression","loc","buildNamespaceInitStatements","ensureStatementsHoisted","unshiftContainer","MODULE_NAME","AMD_ARGUMENTS","arrayExpression","IMPORT_NAMES"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  buildDynamicImport,\n  isModule,\n  rewriteModuleStatementsAndPrepareHeader,\n  type RewriteModuleStatementsAndPrepareHeaderOptions,\n  hasExports,\n  isSideEffectImport,\n  buildNamespaceInitStatements,\n  ensureStatementsHoisted,\n  wrapInterop,\n  getModuleName,\n} from \"@babel/helper-module-transforms\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\nimport type { NodePath, PluginPass } from \"@babel/core\";\n\nconst buildWrapper = template.statement(`\n  define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {\n  })\n`);\n\nconst buildAnonymousWrapper = template.statement(`\n  define([\"require\"], function(REQUIRE) {\n  })\n`);\n\nfunction injectWrapper(\n  path: NodePath<t.Program>,\n  wrapper: t.ExpressionStatement,\n) {\n  const { body, directives } = path.node;\n  path.node.directives = [];\n  path.node.body = [];\n  const amdFactoryCall = path\n    .pushContainer(\"body\", wrapper)[0]\n    .get(\"expression\") as NodePath<t.CallExpression>;\n  const amdFactoryCallArgs = amdFactoryCall.get(\"arguments\");\n  const amdFactory = (\n    amdFactoryCallArgs[\n      amdFactoryCallArgs.length - 1\n    ] as NodePath<t.FunctionExpression>\n  ).get(\"body\");\n  amdFactory.pushContainer(\"directives\", directives);\n  amdFactory.pushContainer(\"body\", body);\n}\n\nexport interface Options extends PluginOptions {\n  allowTopLevelThis?: boolean;\n  importInterop?: RewriteModuleStatementsAndPrepareHeaderOptions[\"importInterop\"];\n  loose?: boolean;\n  noInterop?: boolean;\n  strict?: boolean;\n  strictMode?: boolean;\n}\n\ntype State = {\n  requireId?: t.Identifier;\n  resolveId?: t.Identifier;\n  rejectId?: t.Identifier;\n};\n\nexport default declare<State>((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { allowTopLevelThis, strict, strictMode, importInterop, noInterop } =\n    options;\n\n  const constantReexports =\n    api.assumption(\"constantReexports\") ?? options.loose;\n  const enumerableModuleMeta =\n    api.assumption(\"enumerableModuleMeta\") ?? options.loose;\n\n  return {\n    name: \"transform-modules-amd\",\n\n    pre() {\n      this.file.set(\"@babel/plugin-transform-modules-*\", \"amd\");\n    },\n\n    visitor: {\n      [\"CallExpression\" +\n        (api.types.importExpression ? \"|ImportExpression\" : \"\")](\n        this: State & PluginPass,\n        path: NodePath<t.CallExpression | t.ImportExpression>,\n        state: State,\n      ) {\n        if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) return;\n        if (path.isCallExpression() && !path.get(\"callee\").isImport()) return;\n\n        let { requireId, resolveId, rejectId } = state;\n        if (!requireId) {\n          requireId = path.scope.generateUidIdentifier(\"require\");\n          state.requireId = requireId;\n        }\n        if (!resolveId || !rejectId) {\n          resolveId = path.scope.generateUidIdentifier(\"resolve\");\n          rejectId = path.scope.generateUidIdentifier(\"reject\");\n          state.resolveId = resolveId;\n          state.rejectId = rejectId;\n        }\n\n        let result: t.Node = t.identifier(\"imported\");\n        if (!noInterop) {\n          result = wrapInterop(this.file.path, result, \"namespace\");\n        }\n\n        path.replaceWith(\n          buildDynamicImport(\n            path.node,\n            false,\n            false,\n            specifier => template.expression.ast`\n              new Promise((${resolveId}, ${rejectId}) =>\n                ${requireId}(\n                  [${specifier}],\n                  imported => ${t.cloneNode(resolveId)}(${result}),\n                  ${t.cloneNode(rejectId)}\n                )\n              )\n            `,\n          ),\n        );\n      },\n      Program: {\n        exit(path, { requireId }) {\n          if (!isModule(path)) {\n            if (requireId) {\n              injectWrapper(\n                path,\n                buildAnonymousWrapper({\n                  REQUIRE: t.cloneNode(requireId),\n                }) as t.ExpressionStatement,\n              );\n            }\n            return;\n          }\n\n          const amdArgs = [];\n          const importNames = [];\n          if (requireId) {\n            amdArgs.push(t.stringLiteral(\"require\"));\n            importNames.push(t.cloneNode(requireId));\n          }\n\n          let moduleName = getModuleName(this.file.opts, options);\n          // @ts-expect-error todo(flow->ts): do not reuse variables\n          if (moduleName) moduleName = t.stringLiteral(moduleName);\n\n          const { meta, headers } = rewriteModuleStatementsAndPrepareHeader(\n            path,\n            {\n              enumerableModuleMeta,\n              constantReexports,\n              strict,\n              strictMode,\n              allowTopLevelThis,\n              importInterop,\n              noInterop,\n              filename: this.file.opts.filename,\n            },\n          );\n\n          if (hasExports(meta)) {\n            amdArgs.push(t.stringLiteral(\"exports\"));\n\n            importNames.push(t.identifier(meta.exportName));\n          }\n\n          for (const [source, metadata] of meta.source) {\n            amdArgs.push(t.stringLiteral(source));\n            importNames.push(t.identifier(metadata.name));\n\n            if (!isSideEffectImport(metadata)) {\n              const interop = wrapInterop(\n                path,\n                t.identifier(metadata.name),\n                metadata.interop,\n              );\n              if (interop) {\n                const header = t.expressionStatement(\n                  t.assignmentExpression(\n                    \"=\",\n                    t.identifier(metadata.name),\n                    interop,\n                  ),\n                );\n                header.loc = metadata.loc;\n                headers.push(header);\n              }\n            }\n\n            headers.push(\n              ...buildNamespaceInitStatements(\n                meta,\n                metadata,\n                constantReexports,\n              ),\n            );\n          }\n\n          ensureStatementsHoisted(headers);\n          path.unshiftContainer(\"body\", headers);\n\n          injectWrapper(\n            path,\n            buildWrapper({\n              MODULE_NAME: moduleName,\n\n              AMD_ARGUMENTS: t.arrayExpression(amdArgs),\n              IMPORT_NAMES: importNames,\n            }) as t.ExpressionStatement,\n          );\n        },\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAYA,IAAAE,KAAA,GAAAF,OAAA;AAIA,MAAMG,YAAY,GAAGC,cAAQ,CAACC,SAAS,CAAC;AACxC;AACA;AACA,CAAC,CAAC;AAEF,MAAMC,qBAAqB,GAAGF,cAAQ,CAACC,SAAS,CAAC;AACjD;AACA;AACA,CAAC,CAAC;AAEF,SAASE,aAAaA,CACpBC,IAAyB,EACzBC,OAA8B,EAC9B;EACA,MAAM;IAAEC,IAAI;IAAEC;EAAW,CAAC,GAAGH,IAAI,CAACI,IAAI;EACtCJ,IAAI,CAACI,IAAI,CAACD,UAAU,GAAG,EAAE;EACzBH,IAAI,CAACI,IAAI,CAACF,IAAI,GAAG,EAAE;EACnB,MAAMG,cAAc,GAAGL,IAAI,CACxBM,aAAa,CAAC,MAAM,EAAEL,OAAO,CAAC,CAAC,CAAC,CAAC,CACjCM,GAAG,CAAC,YAAY,CAA+B;EAClD,MAAMC,kBAAkB,GAAGH,cAAc,CAACE,GAAG,CAAC,WAAW,CAAC;EAC1D,MAAME,UAAU,GACdD,kBAAkB,CAChBA,kBAAkB,CAACE,MAAM,GAAG,CAAC,CAC9B,CACDH,GAAG,CAAC,MAAM,CAAC;EACbE,UAAU,CAACH,aAAa,CAAC,YAAY,EAAEH,UAAU,CAAC;EAClDM,UAAU,CAACH,aAAa,CAAC,MAAM,EAAEJ,IAAI,CAAC;AACxC;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAiBc,IAAAC,0BAAO,EAAQ,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAAA,IAAAC,eAAA,EAAAC,gBAAA;EACvDH,GAAG,CAACI,aAAa,CAAkB,CAAE,CAAC;EAEtC,MAAM;IAAEC,iBAAiB;IAAEC,MAAM;IAAEC,UAAU;IAAEC,aAAa;IAAEC;EAAU,CAAC,GACvER,OAAO;EAET,MAAMS,iBAAiB,IAAAR,eAAA,GACrBF,GAAG,CAACW,UAAU,CAAC,mBAAmB,CAAC,YAAAT,eAAA,GAAID,OAAO,CAACW,KAAK;EACtD,MAAMC,oBAAoB,IAAAV,gBAAA,GACxBH,GAAG,CAACW,UAAU,CAAC,sBAAsB,CAAC,YAAAR,gBAAA,GAAIF,OAAO,CAACW,KAAK;EAEzD,OAAO;IACLE,IAAI,EAAE,uBAAuB;IAE7BC,GAAGA,CAAA,EAAG;MACJ,IAAI,CAACC,IAAI,CAACC,GAAG,CAAC,mCAAmC,EAAE,KAAK,CAAC;IAC3D,CAAC;IAEDC,OAAO,EAAE;MACP,CAAC,gBAAgB,IACdlB,GAAG,CAACmB,KAAK,CAACC,gBAAgB,GAAG,mBAAmB,GAAG,EAAE,CAAC,EAEvDnC,IAAqD,EACrDoC,KAAY,EACZ;QACA,IAAI,CAAC,IAAI,CAACL,IAAI,CAACM,GAAG,CAAC,uCAAuC,CAAC,EAAE;QAC7D,IAAIrC,IAAI,CAACsC,gBAAgB,CAAC,CAAC,IAAI,CAACtC,IAAI,CAACO,GAAG,CAAC,QAAQ,CAAC,CAACgC,QAAQ,CAAC,CAAC,EAAE;QAE/D,IAAI;UAAEC,SAAS;UAAEC,SAAS;UAAEC;QAAS,CAAC,GAAGN,KAAK;QAC9C,IAAI,CAACI,SAAS,EAAE;UACdA,SAAS,GAAGxC,IAAI,CAAC2C,KAAK,CAACC,qBAAqB,CAAC,SAAS,CAAC;UACvDR,KAAK,CAACI,SAAS,GAAGA,SAAS;QAC7B;QACA,IAAI,CAACC,SAAS,IAAI,CAACC,QAAQ,EAAE;UAC3BD,SAAS,GAAGzC,IAAI,CAAC2C,KAAK,CAACC,qBAAqB,CAAC,SAAS,CAAC;UACvDF,QAAQ,GAAG1C,IAAI,CAAC2C,KAAK,CAACC,qBAAqB,CAAC,QAAQ,CAAC;UACrDR,KAAK,CAACK,SAAS,GAAGA,SAAS;UAC3BL,KAAK,CAACM,QAAQ,GAAGA,QAAQ;QAC3B;QAEA,IAAIG,MAAc,GAAGC,WAAC,CAACC,UAAU,CAAC,UAAU,CAAC;QAC7C,IAAI,CAACvB,SAAS,EAAE;UACdqB,MAAM,GAAG,IAAAG,mCAAW,EAAC,IAAI,CAACjB,IAAI,CAAC/B,IAAI,EAAE6C,MAAM,EAAE,WAAW,CAAC;QAC3D;QAEA7C,IAAI,CAACiD,WAAW,CACd,IAAAC,0CAAkB,EAChBlD,IAAI,CAACI,IAAI,EACT,KAAK,EACL,KAAK,EACL+C,SAAS,IAAIvD,cAAQ,CAACwD,UAAU,CAACC,GAAG;AAChD,6BAA6BZ,SAAS,KAAKC,QAAQ;AACnD,kBAAkBF,SAAS;AAC3B,qBAAqBW,SAAS;AAC9B,gCAAgCL,WAAC,CAACQ,SAAS,CAACb,SAAS,CAAC,IAAII,MAAM;AAChE,oBAAoBC,WAAC,CAACQ,SAAS,CAACZ,QAAQ,CAAC;AACzC;AACA;AACA,aACU,CACF,CAAC;MACH,CAAC;MACDa,OAAO,EAAE;QACPC,IAAIA,CAACxD,IAAI,EAAE;UAAEwC;QAAU,CAAC,EAAE;UACxB,IAAI,CAAC,IAAAiB,gCAAQ,EAACzD,IAAI,CAAC,EAAE;YACnB,IAAIwC,SAAS,EAAE;cACbzC,aAAa,CACXC,IAAI,EACJF,qBAAqB,CAAC;gBACpB4D,OAAO,EAAEZ,WAAC,CAACQ,SAAS,CAACd,SAAS;cAChC,CAAC,CACH,CAAC;YACH;YACA;UACF;UAEA,MAAMmB,OAAO,GAAG,EAAE;UAClB,MAAMC,WAAW,GAAG,EAAE;UACtB,IAAIpB,SAAS,EAAE;YACbmB,OAAO,CAACE,IAAI,CAACf,WAAC,CAACgB,aAAa,CAAC,SAAS,CAAC,CAAC;YACxCF,WAAW,CAACC,IAAI,CAACf,WAAC,CAACQ,SAAS,CAACd,SAAS,CAAC,CAAC;UAC1C;UAEA,IAAIuB,UAAU,GAAG,IAAAC,qCAAa,EAAC,IAAI,CAACjC,IAAI,CAACkC,IAAI,EAAEjD,OAAO,CAAC;UAEvD,IAAI+C,UAAU,EAAEA,UAAU,GAAGjB,WAAC,CAACgB,aAAa,CAACC,UAAU,CAAC;UAExD,MAAM;YAAEG,IAAI;YAAEC;UAAQ,CAAC,GAAG,IAAAC,+DAAuC,EAC/DpE,IAAI,EACJ;YACE4B,oBAAoB;YACpBH,iBAAiB;YACjBJ,MAAM;YACNC,UAAU;YACVF,iBAAiB;YACjBG,aAAa;YACbC,SAAS;YACT6C,QAAQ,EAAE,IAAI,CAACtC,IAAI,CAACkC,IAAI,CAACI;UAC3B,CACF,CAAC;UAED,IAAI,IAAAC,kCAAU,EAACJ,IAAI,CAAC,EAAE;YACpBP,OAAO,CAACE,IAAI,CAACf,WAAC,CAACgB,aAAa,CAAC,SAAS,CAAC,CAAC;YAExCF,WAAW,CAACC,IAAI,CAACf,WAAC,CAACC,UAAU,CAACmB,IAAI,CAACK,UAAU,CAAC,CAAC;UACjD;UAEA,KAAK,MAAM,CAACC,MAAM,EAAEC,QAAQ,CAAC,IAAIP,IAAI,CAACM,MAAM,EAAE;YAC5Cb,OAAO,CAACE,IAAI,CAACf,WAAC,CAACgB,aAAa,CAACU,MAAM,CAAC,CAAC;YACrCZ,WAAW,CAACC,IAAI,CAACf,WAAC,CAACC,UAAU,CAAC0B,QAAQ,CAAC5C,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,IAAA6C,0CAAkB,EAACD,QAAQ,CAAC,EAAE;cACjC,MAAME,OAAO,GAAG,IAAA3B,mCAAW,EACzBhD,IAAI,EACJ8C,WAAC,CAACC,UAAU,CAAC0B,QAAQ,CAAC5C,IAAI,CAAC,EAC3B4C,QAAQ,CAACE,OACX,CAAC;cACD,IAAIA,OAAO,EAAE;gBACX,MAAMC,MAAM,GAAG9B,WAAC,CAAC+B,mBAAmB,CAClC/B,WAAC,CAACgC,oBAAoB,CACpB,GAAG,EACHhC,WAAC,CAACC,UAAU,CAAC0B,QAAQ,CAAC5C,IAAI,CAAC,EAC3B8C,OACF,CACF,CAAC;gBACDC,MAAM,CAACG,GAAG,GAAGN,QAAQ,CAACM,GAAG;gBACzBZ,OAAO,CAACN,IAAI,CAACe,MAAM,CAAC;cACtB;YACF;YAEAT,OAAO,CAACN,IAAI,CACV,GAAG,IAAAmB,oDAA4B,EAC7Bd,IAAI,EACJO,QAAQ,EACRhD,iBACF,CACF,CAAC;UACH;UAEA,IAAAwD,+CAAuB,EAACd,OAAO,CAAC;UAChCnE,IAAI,CAACkF,gBAAgB,CAAC,MAAM,EAAEf,OAAO,CAAC;UAEtCpE,aAAa,CACXC,IAAI,EACJL,YAAY,CAAC;YACXwF,WAAW,EAAEpB,UAAU;YAEvBqB,aAAa,EAAEtC,WAAC,CAACuC,eAAe,CAAC1B,OAAO,CAAC;YACzC2B,YAAY,EAAE1B;UAChB,CAAC,CACH,CAAC;QACH;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-amd/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-modules-amd",
+  "version": "7.25.9",
+  "description": "This plugin transforms ES2015 modules to AMD",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-amd"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-amd",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-module-transforms": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-external-helpers": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-modules-commonjs
+
+> This plugin transforms ES2015 modules to CommonJS
+
+See our website [@babel/plugin-transform-modules-commonjs](https://babeljs.io/docs/babel-plugin-transform-modules-commonjs) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-modules-commonjs
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-modules-commonjs --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/dynamic-import.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/dynamic-import.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/dynamic-import.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.transformDynamicImport = transformDynamicImport;
+var _core = require("@babel/core");
+var _helperModuleTransforms = require("@babel/helper-module-transforms");
+const requireNoInterop = source => _core.template.expression.ast`require(${source})`;
+const requireInterop = (source, file) => _core.types.callExpression(file.addHelper("interopRequireWildcard"), [requireNoInterop(source)]);
+function transformDynamicImport(path, noInterop, file) {
+  const buildRequire = noInterop ? requireNoInterop : requireInterop;
+  path.replaceWith((0, _helperModuleTransforms.buildDynamicImport)(path.node, true, false, specifier => buildRequire(specifier, file)));
+}
+
+//# sourceMappingURL=dynamic-import.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/dynamic-import.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/dynamic-import.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/dynamic-import.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperModuleTransforms","requireNoInterop","source","template","expression","ast","requireInterop","file","t","callExpression","addHelper","transformDynamicImport","path","noInterop","buildRequire","replaceWith","buildDynamicImport","node","specifier"],"sources":["../src/dynamic-import.ts"],"sourcesContent":["// Heavily inspired by\n// https://github.com/airbnb/babel-plugin-dynamic-import-node/blob/master/src/utils.js\n\nimport type { File, NodePath } from \"@babel/core\";\nimport { types as t, template } from \"@babel/core\";\nimport { buildDynamicImport } from \"@babel/helper-module-transforms\";\n\nconst requireNoInterop = (source: t.Expression) =>\n  template.expression.ast`require(${source})`;\n\nconst requireInterop = (source: t.Expression, file: File) =>\n  t.callExpression(file.addHelper(\"interopRequireWildcard\"), [\n    requireNoInterop(source),\n  ]);\n\nexport function transformDynamicImport(\n  path: NodePath<t.CallExpression | t.ImportExpression>,\n  noInterop: boolean,\n  file: File,\n) {\n  const buildRequire = noInterop ? requireNoInterop : requireInterop;\n\n  path.replaceWith(\n    buildDynamicImport(path.node, true, false, specifier =>\n      buildRequire(specifier, file),\n    ),\n  );\n}\n"],"mappings":";;;;;;AAIA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAEA,MAAME,gBAAgB,GAAIC,MAAoB,IAC5CC,cAAQ,CAACC,UAAU,CAACC,GAAG,WAAWH,MAAM,GAAG;AAE7C,MAAMI,cAAc,GAAGA,CAACJ,MAAoB,EAAEK,IAAU,KACtDC,WAAC,CAACC,cAAc,CAACF,IAAI,CAACG,SAAS,CAAC,wBAAwB,CAAC,EAAE,CACzDT,gBAAgB,CAACC,MAAM,CAAC,CACzB,CAAC;AAEG,SAASS,sBAAsBA,CACpCC,IAAqD,EACrDC,SAAkB,EAClBN,IAAU,EACV;EACA,MAAMO,YAAY,GAAGD,SAAS,GAAGZ,gBAAgB,GAAGK,cAAc;EAElEM,IAAI,CAACG,WAAW,CACd,IAAAC,0CAAkB,EAACJ,IAAI,CAACK,IAAI,EAAE,IAAI,EAAE,KAAK,EAAEC,SAAS,IAClDJ,YAAY,CAACI,SAAS,EAAEX,IAAI,CAC9B,CACF,CAAC;AACH","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/hooks.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/hooks.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/hooks.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.defineCommonJSHook = defineCommonJSHook;
+exports.makeInvokers = makeInvokers;
+const commonJSHooksKey = "@babel/plugin-transform-modules-commonjs/customWrapperPlugin";
+function defineCommonJSHook(file, hook) {
+  let hooks = file.get(commonJSHooksKey);
+  if (!hooks) file.set(commonJSHooksKey, hooks = []);
+  hooks.push(hook);
+}
+function findMap(arr, cb) {
+  if (arr) {
+    for (const el of arr) {
+      const res = cb(el);
+      if (res != null) return res;
+    }
+  }
+}
+function makeInvokers(file) {
+  const hooks = file.get(commonJSHooksKey);
+  return {
+    getWrapperPayload(...args) {
+      return findMap(hooks, hook => hook.getWrapperPayload == null ? void 0 : hook.getWrapperPayload(...args));
+    },
+    wrapReference(...args) {
+      return findMap(hooks, hook => hook.wrapReference == null ? void 0 : hook.wrapReference(...args));
+    },
+    buildRequireWrapper(...args) {
+      return findMap(hooks, hook => hook.buildRequireWrapper == null ? void 0 : hook.buildRequireWrapper(...args));
+    }
+  };
+}
+
+//# sourceMappingURL=hooks.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/hooks.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/hooks.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/hooks.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["commonJSHooksKey","defineCommonJSHook","file","hook","hooks","get","set","push","findMap","arr","cb","el","res","makeInvokers","getWrapperPayload","args","wrapReference","buildRequireWrapper"],"sources":["../src/hooks.ts"],"sourcesContent":["import type { types as t, File } from \"@babel/core\";\nimport type { isSideEffectImport } from \"@babel/helper-module-transforms\";\n\nconst commonJSHooksKey =\n  \"@babel/plugin-transform-modules-commonjs/customWrapperPlugin\";\n\ntype SourceMetadata = Parameters<typeof isSideEffectImport>[0];\n\n// A hook exposes a set of function that can customize how `require()` calls and\n// references to the imported bindings are handled. These functions can either\n// return a result, or return `null` to delegate to the next hook.\nexport interface CommonJSHook {\n  name: string;\n  version: string;\n  wrapReference?(ref: t.Expression, payload: unknown): t.CallExpression | null;\n  // Optionally wrap a `require` call. If this function returns `false`, the\n  // `require` call is removed from the generated code.\n  buildRequireWrapper?(\n    name: string,\n    init: t.Expression,\n    payload: unknown,\n    referenced: boolean,\n  ): t.Statement | false | null;\n  getWrapperPayload?(\n    source: string,\n    metadata: SourceMetadata,\n    importNodes: t.Node[],\n  ): string | null;\n}\n\nexport function defineCommonJSHook(file: File, hook: CommonJSHook) {\n  let hooks = file.get(commonJSHooksKey);\n  if (!hooks) file.set(commonJSHooksKey, (hooks = []));\n  hooks.push(hook);\n}\n\nfunction findMap<T, U>(arr: T[] | null, cb: (el: T) => U): U | null {\n  if (arr) {\n    for (const el of arr) {\n      const res = cb(el);\n      if (res != null) return res;\n    }\n  }\n}\n\nexport function makeInvokers(\n  file: File,\n): Pick<\n  CommonJSHook,\n  \"wrapReference\" | \"getWrapperPayload\" | \"buildRequireWrapper\"\n> {\n  const hooks: CommonJSHook[] | null = file.get(commonJSHooksKey);\n\n  return {\n    getWrapperPayload(...args) {\n      return findMap(hooks, hook => hook.getWrapperPayload?.(...args));\n    },\n    wrapReference(...args) {\n      return findMap(hooks, hook => hook.wrapReference?.(...args));\n    },\n    buildRequireWrapper(...args) {\n      return findMap(hooks, hook => hook.buildRequireWrapper?.(...args));\n    },\n  };\n}\n"],"mappings":";;;;;;;AAGA,MAAMA,gBAAgB,GACpB,8DAA8D;AA0BzD,SAASC,kBAAkBA,CAACC,IAAU,EAAEC,IAAkB,EAAE;EACjE,IAAIC,KAAK,GAAGF,IAAI,CAACG,GAAG,CAACL,gBAAgB,CAAC;EACtC,IAAI,CAACI,KAAK,EAAEF,IAAI,CAACI,GAAG,CAACN,gBAAgB,EAAGI,KAAK,GAAG,EAAG,CAAC;EACpDA,KAAK,CAACG,IAAI,CAACJ,IAAI,CAAC;AAClB;AAEA,SAASK,OAAOA,CAAOC,GAAe,EAAEC,EAAgB,EAAY;EAClE,IAAID,GAAG,EAAE;IACP,KAAK,MAAME,EAAE,IAAIF,GAAG,EAAE;MACpB,MAAMG,GAAG,GAAGF,EAAE,CAACC,EAAE,CAAC;MAClB,IAAIC,GAAG,IAAI,IAAI,EAAE,OAAOA,GAAG;IAC7B;EACF;AACF;AAEO,SAASC,YAAYA,CAC1BX,IAAU,EAIV;EACA,MAAME,KAA4B,GAAGF,IAAI,CAACG,GAAG,CAACL,gBAAgB,CAAC;EAE/D,OAAO;IACLc,iBAAiBA,CAAC,GAAGC,IAAI,EAAE;MACzB,OAAOP,OAAO,CAACJ,KAAK,EAAED,IAAI,IAAIA,IAAI,CAACW,iBAAiB,oBAAtBX,IAAI,CAACW,iBAAiB,CAAG,GAAGC,IAAI,CAAC,CAAC;IAClE,CAAC;IACDC,aAAaA,CAAC,GAAGD,IAAI,EAAE;MACrB,OAAOP,OAAO,CAACJ,KAAK,EAAED,IAAI,IAAIA,IAAI,CAACa,aAAa,oBAAlBb,IAAI,CAACa,aAAa,CAAG,GAAGD,IAAI,CAAC,CAAC;IAC9D,CAAC;IACDE,mBAAmBA,CAAC,GAAGF,IAAI,EAAE;MAC3B,OAAOP,OAAO,CAACJ,KAAK,EAAED,IAAI,IAAIA,IAAI,CAACc,mBAAmB,oBAAxBd,IAAI,CAACc,mBAAmB,CAAG,GAAGF,IAAI,CAAC,CAAC;IACpE;EACF,CAAC;AACH","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,193 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+Object.defineProperty(exports, "defineCommonJSHook", {
+  enumerable: true,
+  get: function () {
+    return _hooks.defineCommonJSHook;
+  }
+});
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperModuleTransforms = require("@babel/helper-module-transforms");
+var _core = require("@babel/core");
+var _dynamicImport = require("./dynamic-import.js");
+var _lazy = require("./lazy.js");
+var _hooks = require("./hooks.js");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2, _api$assumption3;
+  api.assertVersion(7);
+  const {
+    strictNamespace = false,
+    mjsStrictNamespace = strictNamespace,
+    allowTopLevelThis,
+    strict,
+    strictMode,
+    noInterop,
+    importInterop,
+    lazy = false,
+    allowCommonJSExports = true,
+    loose = false
+  } = options;
+  const constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : loose;
+  const enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : loose;
+  const noIncompleteNsImportDetection = (_api$assumption3 = api.assumption("noIncompleteNsImportDetection")) != null ? _api$assumption3 : false;
+  if (typeof lazy !== "boolean" && typeof lazy !== "function" && (!Array.isArray(lazy) || !lazy.every(item => typeof item === "string"))) {
+    throw new Error(`.lazy must be a boolean, array of strings, or a function`);
+  }
+  if (typeof strictNamespace !== "boolean") {
+    throw new Error(`.strictNamespace must be a boolean, or undefined`);
+  }
+  if (typeof mjsStrictNamespace !== "boolean") {
+    throw new Error(`.mjsStrictNamespace must be a boolean, or undefined`);
+  }
+  const getAssertion = localName => _core.template.expression.ast`
+    (function(){
+      throw new Error(
+        "The CommonJS '" + "${localName}" + "' variable is not available in ES6 modules." +
+        "Consider setting setting sourceType:script or sourceType:unambiguous in your " +
+        "Babel config for this file.");
+    })()
+  `;
+  const moduleExportsVisitor = {
+    ReferencedIdentifier(path) {
+      const localName = path.node.name;
+      if (localName !== "module" && localName !== "exports") return;
+      const localBinding = path.scope.getBinding(localName);
+      const rootBinding = this.scope.getBinding(localName);
+      if (rootBinding !== localBinding || path.parentPath.isObjectProperty({
+        value: path.node
+      }) && path.parentPath.parentPath.isObjectPattern() || path.parentPath.isAssignmentExpression({
+        left: path.node
+      }) || path.isAssignmentExpression({
+        left: path.node
+      })) {
+        return;
+      }
+      path.replaceWith(getAssertion(localName));
+    },
+    UpdateExpression(path) {
+      const arg = path.get("argument");
+      if (!arg.isIdentifier()) return;
+      const localName = arg.node.name;
+      if (localName !== "module" && localName !== "exports") return;
+      const localBinding = path.scope.getBinding(localName);
+      const rootBinding = this.scope.getBinding(localName);
+      if (rootBinding !== localBinding) return;
+      path.replaceWith(_core.types.assignmentExpression(path.node.operator[0] + "=", arg.node, getAssertion(localName)));
+    },
+    AssignmentExpression(path) {
+      const left = path.get("left");
+      if (left.isIdentifier()) {
+        const localName = left.node.name;
+        if (localName !== "module" && localName !== "exports") return;
+        const localBinding = path.scope.getBinding(localName);
+        const rootBinding = this.scope.getBinding(localName);
+        if (rootBinding !== localBinding) return;
+        const right = path.get("right");
+        right.replaceWith(_core.types.sequenceExpression([right.node, getAssertion(localName)]));
+      } else if (left.isPattern()) {
+        const ids = left.getOuterBindingIdentifiers();
+        const localName = Object.keys(ids).find(localName => {
+          if (localName !== "module" && localName !== "exports") return false;
+          return this.scope.getBinding(localName) === path.scope.getBinding(localName);
+        });
+        if (localName) {
+          const right = path.get("right");
+          right.replaceWith(_core.types.sequenceExpression([right.node, getAssertion(localName)]));
+        }
+      }
+    }
+  };
+  return {
+    name: "transform-modules-commonjs",
+    pre() {
+      this.file.set("@babel/plugin-transform-modules-*", "commonjs");
+      if (lazy) (0, _hooks.defineCommonJSHook)(this.file, (0, _lazy.lazyImportsHook)(lazy));
+    },
+    visitor: {
+      ["CallExpression" + (api.types.importExpression ? "|ImportExpression" : "")](path) {
+        if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
+        if (path.isCallExpression() && !_core.types.isImport(path.node.callee)) return;
+        let {
+          scope
+        } = path;
+        do {
+          scope.rename("require");
+        } while (scope = scope.parent);
+        (0, _dynamicImport.transformDynamicImport)(path, noInterop, this.file);
+      },
+      Program: {
+        exit(path, state) {
+          if (!(0, _helperModuleTransforms.isModule)(path)) return;
+          path.scope.rename("exports");
+          path.scope.rename("module");
+          path.scope.rename("require");
+          path.scope.rename("__filename");
+          path.scope.rename("__dirname");
+          if (!allowCommonJSExports) {
+            path.traverse(moduleExportsVisitor, {
+              scope: path.scope
+            });
+          }
+          let moduleName = (0, _helperModuleTransforms.getModuleName)(this.file.opts, options);
+          if (moduleName) moduleName = _core.types.stringLiteral(moduleName);
+          const hooks = (0, _hooks.makeInvokers)(this.file);
+          const {
+            meta,
+            headers
+          } = (0, _helperModuleTransforms.rewriteModuleStatementsAndPrepareHeader)(path, {
+            exportName: "exports",
+            constantReexports,
+            enumerableModuleMeta,
+            strict,
+            strictMode,
+            allowTopLevelThis,
+            noInterop,
+            importInterop,
+            wrapReference: hooks.wrapReference,
+            getWrapperPayload: hooks.getWrapperPayload,
+            esNamespaceOnly: typeof state.filename === "string" && /\.mjs$/.test(state.filename) ? mjsStrictNamespace : strictNamespace,
+            noIncompleteNsImportDetection,
+            filename: this.file.opts.filename
+          });
+          for (const [source, metadata] of meta.source) {
+            const loadExpr = _core.types.callExpression(_core.types.identifier("require"), [_core.types.stringLiteral(source)]);
+            let header;
+            if ((0, _helperModuleTransforms.isSideEffectImport)(metadata)) {
+              if (lazy && metadata.wrap === "function") {
+                throw new Error("Assertion failure");
+              }
+              header = _core.types.expressionStatement(loadExpr);
+            } else {
+              var _header;
+              const init = (0, _helperModuleTransforms.wrapInterop)(path, loadExpr, metadata.interop) || loadExpr;
+              if (metadata.wrap) {
+                const res = hooks.buildRequireWrapper(metadata.name, init, metadata.wrap, metadata.referenced);
+                if (res === false) continue;else header = res;
+              }
+              (_header = header) != null ? _header : header = _core.template.statement.ast`
+                var ${metadata.name} = ${init};
+              `;
+            }
+            header.loc = metadata.loc;
+            headers.push(header);
+            headers.push(...(0, _helperModuleTransforms.buildNamespaceInitStatements)(meta, metadata, constantReexports, hooks.wrapReference));
+          }
+          (0, _helperModuleTransforms.ensureStatementsHoisted)(headers);
+          path.unshiftContainer("body", headers);
+          path.get("body").forEach(path => {
+            if (!headers.includes(path.node)) return;
+            if (path.isVariableDeclaration()) {
+              path.scope.registerDeclaration(path);
+            }
+          });
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperModuleTransforms","_core","_dynamicImport","_lazy","_hooks","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","_api$assumption3","assertVersion","strictNamespace","mjsStrictNamespace","allowTopLevelThis","strict","strictMode","noInterop","importInterop","lazy","allowCommonJSExports","loose","constantReexports","assumption","enumerableModuleMeta","noIncompleteNsImportDetection","Array","isArray","every","item","Error","getAssertion","localName","template","expression","ast","moduleExportsVisitor","ReferencedIdentifier","path","node","name","localBinding","scope","getBinding","rootBinding","parentPath","isObjectProperty","value","isObjectPattern","isAssignmentExpression","left","replaceWith","UpdateExpression","arg","get","isIdentifier","t","assignmentExpression","operator","AssignmentExpression","right","sequenceExpression","isPattern","ids","getOuterBindingIdentifiers","Object","keys","find","pre","file","set","defineCommonJSHook","lazyImportsHook","visitor","types","importExpression","has","isCallExpression","isImport","callee","rename","parent","transformDynamicImport","Program","exit","state","isModule","traverse","moduleName","getModuleName","opts","stringLiteral","hooks","makeInvokers","meta","headers","rewriteModuleStatementsAndPrepareHeader","exportName","wrapReference","getWrapperPayload","esNamespaceOnly","filename","test","source","metadata","loadExpr","callExpression","identifier","header","isSideEffectImport","wrap","expressionStatement","_header","init","wrapInterop","interop","res","buildRequireWrapper","referenced","statement","loc","push","buildNamespaceInitStatements","ensureStatementsHoisted","unshiftContainer","forEach","includes","isVariableDeclaration","registerDeclaration"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  isModule,\n  rewriteModuleStatementsAndPrepareHeader,\n  type RewriteModuleStatementsAndPrepareHeaderOptions,\n  isSideEffectImport,\n  buildNamespaceInitStatements,\n  ensureStatementsHoisted,\n  wrapInterop,\n  getModuleName,\n} from \"@babel/helper-module-transforms\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginPass, Visitor, Scope, NodePath } from \"@babel/core\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\n\nimport { transformDynamicImport } from \"./dynamic-import.ts\";\nimport { lazyImportsHook } from \"./lazy.ts\";\n\nimport { defineCommonJSHook, makeInvokers } from \"./hooks.ts\";\nexport { defineCommonJSHook };\n\nexport interface Options extends PluginOptions {\n  allowCommonJSExports?: boolean;\n  allowTopLevelThis?: boolean;\n  importInterop?: RewriteModuleStatementsAndPrepareHeaderOptions[\"importInterop\"];\n  lazy?: RewriteModuleStatementsAndPrepareHeaderOptions[\"lazy\"];\n  loose?: boolean;\n  mjsStrictNamespace?: boolean;\n  noInterop?: boolean;\n  strict?: boolean;\n  strictMode?: boolean;\n  strictNamespace?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const {\n    // 'true' for imports to strictly have .default, instead of having\n    // destructuring-like behavior for their properties. This matches the behavior\n    // of the initial Node.js (v12) behavior when importing a CommonJS without\n    // the __esMoule property.\n    // .strictNamespace is for non-mjs files, mjsStrictNamespace if for mjs files.\n    strictNamespace = false,\n    mjsStrictNamespace = strictNamespace,\n\n    allowTopLevelThis,\n    strict,\n    strictMode,\n    noInterop,\n    importInterop,\n    lazy = false,\n    // Defaulting to 'true' for now. May change before 7.x major.\n    allowCommonJSExports = true,\n    loose = false,\n  } = options;\n\n  const constantReexports = api.assumption(\"constantReexports\") ?? loose;\n  const enumerableModuleMeta = api.assumption(\"enumerableModuleMeta\") ?? loose;\n  const noIncompleteNsImportDetection =\n    api.assumption(\"noIncompleteNsImportDetection\") ?? false;\n\n  if (\n    typeof lazy !== \"boolean\" &&\n    typeof lazy !== \"function\" &&\n    (!Array.isArray(lazy) || !lazy.every(item => typeof item === \"string\"))\n  ) {\n    throw new Error(`.lazy must be a boolean, array of strings, or a function`);\n  }\n\n  if (typeof strictNamespace !== \"boolean\") {\n    throw new Error(`.strictNamespace must be a boolean, or undefined`);\n  }\n  if (typeof mjsStrictNamespace !== \"boolean\") {\n    throw new Error(`.mjsStrictNamespace must be a boolean, or undefined`);\n  }\n\n  const getAssertion = (localName: string) => template.expression.ast`\n    (function(){\n      throw new Error(\n        \"The CommonJS '\" + \"${localName}\" + \"' variable is not available in ES6 modules.\" +\n        \"Consider setting setting sourceType:script or sourceType:unambiguous in your \" +\n        \"Babel config for this file.\");\n    })()\n  `;\n\n  const moduleExportsVisitor: Visitor<{ scope: Scope }> = {\n    ReferencedIdentifier(path) {\n      const localName = path.node.name;\n      if (localName !== \"module\" && localName !== \"exports\") return;\n\n      const localBinding = path.scope.getBinding(localName);\n      const rootBinding = this.scope.getBinding(localName);\n\n      if (\n        // redeclared in this scope\n        rootBinding !== localBinding ||\n        (path.parentPath.isObjectProperty({ value: path.node }) &&\n          path.parentPath.parentPath.isObjectPattern()) ||\n        path.parentPath.isAssignmentExpression({ left: path.node }) ||\n        path.isAssignmentExpression({ left: path.node })\n      ) {\n        return;\n      }\n\n      path.replaceWith(getAssertion(localName));\n    },\n\n    UpdateExpression(path) {\n      const arg = path.get(\"argument\");\n      if (!arg.isIdentifier()) return;\n      const localName = arg.node.name;\n      if (localName !== \"module\" && localName !== \"exports\") return;\n\n      const localBinding = path.scope.getBinding(localName);\n      const rootBinding = this.scope.getBinding(localName);\n\n      // redeclared in this scope\n      if (rootBinding !== localBinding) return;\n\n      path.replaceWith(\n        t.assignmentExpression(\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n          (path.node.operator[0] + \"=\") as t.AssignmentExpression[\"operator\"],\n          arg.node,\n          getAssertion(localName),\n        ),\n      );\n    },\n\n    AssignmentExpression(path) {\n      const left = path.get(\"left\");\n      if (left.isIdentifier()) {\n        const localName = left.node.name;\n        if (localName !== \"module\" && localName !== \"exports\") return;\n\n        const localBinding = path.scope.getBinding(localName);\n        const rootBinding = this.scope.getBinding(localName);\n\n        // redeclared in this scope\n        if (rootBinding !== localBinding) return;\n\n        const right = path.get(\"right\");\n        right.replaceWith(\n          t.sequenceExpression([right.node, getAssertion(localName)]),\n        );\n      } else if (left.isPattern()) {\n        const ids = left.getOuterBindingIdentifiers();\n        const localName = Object.keys(ids).find(localName => {\n          if (localName !== \"module\" && localName !== \"exports\") return false;\n\n          return (\n            this.scope.getBinding(localName) ===\n            path.scope.getBinding(localName)\n          );\n        });\n\n        if (localName) {\n          const right = path.get(\"right\");\n          right.replaceWith(\n            t.sequenceExpression([right.node, getAssertion(localName)]),\n          );\n        }\n      }\n    },\n  };\n\n  return {\n    name: \"transform-modules-commonjs\",\n\n    pre() {\n      this.file.set(\"@babel/plugin-transform-modules-*\", \"commonjs\");\n\n      if (lazy) defineCommonJSHook(this.file, lazyImportsHook(lazy));\n    },\n\n    visitor: {\n      [\"CallExpression\" +\n        (api.types.importExpression ? \"|ImportExpression\" : \"\")](\n        this: PluginPass,\n        path: NodePath<t.CallExpression | t.ImportExpression>,\n      ) {\n        if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) return;\n        if (path.isCallExpression() && !t.isImport(path.node.callee)) return;\n\n        let { scope } = path;\n        do {\n          scope.rename(\"require\");\n        } while ((scope = scope.parent));\n\n        transformDynamicImport(path, noInterop, this.file);\n      },\n\n      Program: {\n        exit(path, state) {\n          if (!isModule(path)) return;\n\n          // Rename the bindings auto-injected into the scope so there is no\n          // risk of conflict between the bindings.\n          path.scope.rename(\"exports\");\n          path.scope.rename(\"module\");\n          path.scope.rename(\"require\");\n          path.scope.rename(\"__filename\");\n          path.scope.rename(\"__dirname\");\n\n          // Rewrite references to 'module' and 'exports' to throw exceptions.\n          // These objects are specific to CommonJS and are not available in\n          // real ES6 implementations.\n          if (!allowCommonJSExports) {\n            path.traverse(moduleExportsVisitor, {\n              scope: path.scope,\n            });\n          }\n\n          let moduleName = getModuleName(this.file.opts, options);\n          // @ts-expect-error todo(flow->ts): do not reuse variables\n          if (moduleName) moduleName = t.stringLiteral(moduleName);\n\n          const hooks = makeInvokers(this.file);\n\n          const { meta, headers } = rewriteModuleStatementsAndPrepareHeader(\n            path,\n            {\n              exportName: \"exports\",\n              constantReexports,\n              enumerableModuleMeta,\n              strict,\n              strictMode,\n              allowTopLevelThis,\n              noInterop,\n              importInterop,\n              wrapReference: hooks.wrapReference,\n              getWrapperPayload: hooks.getWrapperPayload,\n              esNamespaceOnly:\n                typeof state.filename === \"string\" &&\n                /\\.mjs$/.test(state.filename)\n                  ? mjsStrictNamespace\n                  : strictNamespace,\n              noIncompleteNsImportDetection,\n              filename: this.file.opts.filename,\n            },\n          );\n\n          for (const [source, metadata] of meta.source) {\n            const loadExpr = t.callExpression(t.identifier(\"require\"), [\n              t.stringLiteral(source),\n            ]);\n\n            let header: t.Statement;\n            if (isSideEffectImport(metadata)) {\n              if (lazy && metadata.wrap === \"function\") {\n                throw new Error(\"Assertion failure\");\n              }\n\n              header = t.expressionStatement(loadExpr);\n            } else {\n              const init =\n                wrapInterop(path, loadExpr, metadata.interop) || loadExpr;\n\n              if (metadata.wrap) {\n                const res = hooks.buildRequireWrapper(\n                  metadata.name,\n                  init,\n                  metadata.wrap,\n                  metadata.referenced,\n                );\n                if (res === false) continue;\n                else header = res;\n              }\n              header ??= template.statement.ast`\n                var ${metadata.name} = ${init};\n              `;\n            }\n            header.loc = metadata.loc;\n\n            headers.push(header);\n            headers.push(\n              ...buildNamespaceInitStatements(\n                meta,\n                metadata,\n                constantReexports,\n                hooks.wrapReference,\n              ),\n            );\n          }\n\n          ensureStatementsHoisted(headers);\n          path.unshiftContainer(\"body\", headers);\n          path.get(\"body\").forEach(path => {\n            if (!headers.includes(path.node)) return;\n            if (path.isVariableDeclaration()) {\n              path.scope.registerDeclaration(path);\n            }\n          });\n        },\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/lazy.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/lazy.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/lazy.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.lazyImportsHook = void 0;
+var _core = require("@babel/core");
+var _helperModuleTransforms = require("@babel/helper-module-transforms");
+const lazyImportsHook = lazy => ({
+  name: `${"@babel/plugin-transform-modules-commonjs"}/lazy`,
+  version: "7.26.3",
+  getWrapperPayload(source, metadata) {
+    if ((0, _helperModuleTransforms.isSideEffectImport)(metadata) || metadata.reexportAll) {
+      return null;
+    }
+    if (lazy === true) {
+      return source.includes(".") ? null : "lazy/function";
+    }
+    if (Array.isArray(lazy)) {
+      return !lazy.includes(source) ? null : "lazy/function";
+    }
+    if (typeof lazy === "function") {
+      return lazy(source) ? "lazy/function" : null;
+    }
+  },
+  buildRequireWrapper(name, init, payload, referenced) {
+    if (payload === "lazy/function") {
+      if (!referenced) return false;
+      return _core.template.statement.ast`
+        function ${name}() {
+          const data = ${init};
+          ${name} = function(){ return data; };
+          return data;
+        }
+      `;
+    }
+  },
+  wrapReference(ref, payload) {
+    if (payload === "lazy/function") return _core.types.callExpression(ref, []);
+  }
+});
+exports.lazyImportsHook = lazyImportsHook;
+
+//# sourceMappingURL=lazy.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/lazy.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/lazy.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/lib/lazy.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_helperModuleTransforms","lazyImportsHook","lazy","name","version","getWrapperPayload","source","metadata","isSideEffectImport","reexportAll","includes","Array","isArray","buildRequireWrapper","init","payload","referenced","template","statement","ast","wrapReference","ref","t","callExpression","exports"],"sources":["../src/lazy.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport { isSideEffectImport } from \"@babel/helper-module-transforms\";\nimport type { CommonJSHook } from \"./hooks.ts\";\n\ntype Lazy = boolean | string[] | ((source: string) => boolean);\n\nexport const lazyImportsHook = (lazy: Lazy): CommonJSHook => ({\n  name: `${PACKAGE_JSON.name}/lazy`,\n  version: PACKAGE_JSON.version,\n  getWrapperPayload(source, metadata) {\n    if (isSideEffectImport(metadata) || metadata.reexportAll) {\n      return null;\n    }\n    if (lazy === true) {\n      // 'true' means that local relative files are eagerly loaded and\n      // dependency modules are loaded lazily.\n      return source.includes(\".\") ? null : \"lazy/function\";\n    }\n    if (Array.isArray(lazy)) {\n      return !lazy.includes(source) ? null : \"lazy/function\";\n    }\n    if (typeof lazy === \"function\") {\n      return lazy(source) ? \"lazy/function\" : null;\n    }\n  },\n  buildRequireWrapper(name, init, payload, referenced) {\n    if (payload === \"lazy/function\") {\n      if (!referenced) return false;\n      return template.statement.ast`\n        function ${name}() {\n          const data = ${init};\n          ${name} = function(){ return data; };\n          return data;\n        }\n      `;\n    }\n  },\n  wrapReference(ref, payload) {\n    if (payload === \"lazy/function\") return t.callExpression(ref, []);\n  },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAKO,MAAME,eAAe,GAAIC,IAAU,KAAoB;EAC5DC,IAAI,EAAE,oDAA2B;EACjCC,OAAO,UAAsB;EAC7BC,iBAAiBA,CAACC,MAAM,EAAEC,QAAQ,EAAE;IAClC,IAAI,IAAAC,0CAAkB,EAACD,QAAQ,CAAC,IAAIA,QAAQ,CAACE,WAAW,EAAE;MACxD,OAAO,IAAI;IACb;IACA,IAAIP,IAAI,KAAK,IAAI,EAAE;MAGjB,OAAOI,MAAM,CAACI,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,eAAe;IACtD;IACA,IAAIC,KAAK,CAACC,OAAO,CAACV,IAAI,CAAC,EAAE;MACvB,OAAO,CAACA,IAAI,CAACQ,QAAQ,CAACJ,MAAM,CAAC,GAAG,IAAI,GAAG,eAAe;IACxD;IACA,IAAI,OAAOJ,IAAI,KAAK,UAAU,EAAE;MAC9B,OAAOA,IAAI,CAACI,MAAM,CAAC,GAAG,eAAe,GAAG,IAAI;IAC9C;EACF,CAAC;EACDO,mBAAmBA,CAACV,IAAI,EAAEW,IAAI,EAAEC,OAAO,EAAEC,UAAU,EAAE;IACnD,IAAID,OAAO,KAAK,eAAe,EAAE;MAC/B,IAAI,CAACC,UAAU,EAAE,OAAO,KAAK;MAC7B,OAAOC,cAAQ,CAACC,SAAS,CAACC,GAAG;AACnC,mBAAmBhB,IAAI;AACvB,yBAAyBW,IAAI;AAC7B,YAAYX,IAAI;AAChB;AACA;AACA,OAAO;IACH;EACF,CAAC;EACDiB,aAAaA,CAACC,GAAG,EAAEN,OAAO,EAAE;IAC1B,IAAIA,OAAO,KAAK,eAAe,EAAE,OAAOO,WAAC,CAACC,cAAc,CAACF,GAAG,EAAE,EAAE,CAAC;EACnE;AACF,CAAC,CAAC;AAACG,OAAA,CAAAvB,eAAA,GAAAA,eAAA","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-commonjs/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-modules-commonjs",
+  "version": "7.26.3",
+  "description": "This plugin transforms ES2015 modules to CommonJS",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-commonjs"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-module-transforms": "^7.26.0",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-external-helpers": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-commonjs",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-modules-systemjs
+
+> This plugin transforms ES2015 modules to SystemJS
+
+See our website [@babel/plugin-transform-modules-systemjs](https://babeljs.io/docs/babel-plugin-transform-modules-systemjs) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-modules-systemjs
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-modules-systemjs --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,406 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+exports.getExportSpecifierName = getExportSpecifierName;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _helperModuleTransforms = require("@babel/helper-module-transforms");
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+const buildTemplate = _core.template.statement(`
+  SYSTEM_REGISTER(MODULE_NAME, SOURCES, function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {
+    "use strict";
+    BEFORE_BODY;
+    return {
+      setters: SETTERS,
+      execute: EXECUTE,
+    };
+  });
+`);
+const buildExportAll = _core.template.statement(`
+  for (var KEY in TARGET) {
+    if (KEY !== "default" && KEY !== "__esModule") EXPORT_OBJ[KEY] = TARGET[KEY];
+  }
+`);
+const MISSING_PLUGIN_WARNING = `\
+WARNING: Dynamic import() transformation must be enabled using the
+         @babel/plugin-transform-dynamic-import plugin. Babel 8 will
+         no longer transform import() without using that plugin.
+`;
+const MISSING_PLUGIN_ERROR = `\
+ERROR: Dynamic import() transformation must be enabled using the
+       @babel/plugin-transform-dynamic-import plugin. Babel 8
+       no longer transforms import() without using that plugin.
+`;
+function getExportSpecifierName(node, stringSpecifiers) {
+  if (node.type === "Identifier") {
+    return node.name;
+  } else if (node.type === "StringLiteral") {
+    const stringValue = node.value;
+    if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) {
+      stringSpecifiers.add(stringValue);
+    }
+    return stringValue;
+  } else {
+    throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${node.type}`);
+  }
+}
+function constructExportCall(path, exportIdent, exportNames, exportValues, exportStarTarget, stringSpecifiers) {
+  const statements = [];
+  if (!exportStarTarget) {
+    if (exportNames.length === 1) {
+      statements.push(_core.types.expressionStatement(_core.types.callExpression(exportIdent, [_core.types.stringLiteral(exportNames[0]), exportValues[0]])));
+    } else {
+      const objectProperties = [];
+      for (let i = 0; i < exportNames.length; i++) {
+        const exportName = exportNames[i];
+        const exportValue = exportValues[i];
+        objectProperties.push(_core.types.objectProperty(stringSpecifiers.has(exportName) ? _core.types.stringLiteral(exportName) : _core.types.identifier(exportName), exportValue));
+      }
+      statements.push(_core.types.expressionStatement(_core.types.callExpression(exportIdent, [_core.types.objectExpression(objectProperties)])));
+    }
+  } else {
+    const exportObj = path.scope.generateUid("exportObj");
+    statements.push(_core.types.variableDeclaration("var", [_core.types.variableDeclarator(_core.types.identifier(exportObj), _core.types.objectExpression([]))]));
+    statements.push(buildExportAll({
+      KEY: path.scope.generateUidIdentifier("key"),
+      EXPORT_OBJ: _core.types.identifier(exportObj),
+      TARGET: exportStarTarget
+    }));
+    for (let i = 0; i < exportNames.length; i++) {
+      const exportName = exportNames[i];
+      const exportValue = exportValues[i];
+      statements.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.memberExpression(_core.types.identifier(exportObj), _core.types.identifier(exportName)), exportValue)));
+    }
+    statements.push(_core.types.expressionStatement(_core.types.callExpression(exportIdent, [_core.types.identifier(exportObj)])));
+  }
+  return statements;
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  api.assertVersion(7);
+  const {
+    systemGlobal = "System",
+    allowTopLevelThis = false
+  } = options;
+  const reassignmentVisited = new WeakSet();
+  const reassignmentVisitor = {
+    "AssignmentExpression|UpdateExpression"(path) {
+      if (reassignmentVisited.has(path.node)) return;
+      reassignmentVisited.add(path.node);
+      const arg = path.isAssignmentExpression() ? path.get("left") : path.get("argument");
+      if (arg.isObjectPattern() || arg.isArrayPattern()) {
+        const exprs = [path.node];
+        for (const name of Object.keys(arg.getBindingIdentifiers())) {
+          if (this.scope.getBinding(name) !== path.scope.getBinding(name)) {
+            return;
+          }
+          const exportedNames = this.exports[name];
+          if (!exportedNames) continue;
+          for (const exportedName of exportedNames) {
+            exprs.push(this.buildCall(exportedName, _core.types.identifier(name)).expression);
+          }
+        }
+        path.replaceWith(_core.types.sequenceExpression(exprs));
+        return;
+      }
+      if (!arg.isIdentifier()) return;
+      const name = arg.node.name;
+      if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
+      const exportedNames = this.exports[name];
+      if (!exportedNames) return;
+      let node = path.node;
+      const isPostUpdateExpression = _core.types.isUpdateExpression(node, {
+        prefix: false
+      });
+      if (isPostUpdateExpression) {
+        node = _core.types.binaryExpression(node.operator[0], _core.types.unaryExpression("+", _core.types.cloneNode(node.argument)), _core.types.numericLiteral(1));
+      }
+      for (const exportedName of exportedNames) {
+        node = this.buildCall(exportedName, node).expression;
+      }
+      if (isPostUpdateExpression) {
+        node = _core.types.sequenceExpression([node, path.node]);
+      }
+      path.replaceWith(node);
+    }
+  };
+  return {
+    name: "transform-modules-systemjs",
+    pre() {
+      this.file.set("@babel/plugin-transform-modules-*", "systemjs");
+    },
+    visitor: {
+      ["CallExpression" + (api.types.importExpression ? "|ImportExpression" : "")](path, state) {
+        if (path.isCallExpression() && !_core.types.isImport(path.node.callee)) return;
+        if (path.isCallExpression()) {
+          if (!this.file.has("@babel/plugin-proposal-dynamic-import")) {
+            {
+              console.warn(MISSING_PLUGIN_WARNING);
+            }
+          }
+        } else {
+          if (!this.file.has("@babel/plugin-proposal-dynamic-import")) {
+            throw new Error(MISSING_PLUGIN_ERROR);
+          }
+        }
+        path.replaceWith((0, _helperModuleTransforms.buildDynamicImport)(path.node, false, true, specifier => _core.types.callExpression(_core.types.memberExpression(_core.types.identifier(state.contextIdent), _core.types.identifier("import")), [specifier])));
+      },
+      MetaProperty(path, state) {
+        if (path.node.meta.name === "import" && path.node.property.name === "meta") {
+          path.replaceWith(_core.types.memberExpression(_core.types.identifier(state.contextIdent), _core.types.identifier("meta")));
+        }
+      },
+      ReferencedIdentifier(path, state) {
+        if (path.node.name === "__moduleName" && !path.scope.hasBinding("__moduleName")) {
+          path.replaceWith(_core.types.memberExpression(_core.types.identifier(state.contextIdent), _core.types.identifier("id")));
+        }
+      },
+      Program: {
+        enter(path, state) {
+          state.contextIdent = path.scope.generateUid("context");
+          state.stringSpecifiers = new Set();
+          if (!allowTopLevelThis) {
+            (0, _helperModuleTransforms.rewriteThis)(path);
+          }
+        },
+        exit(path, state) {
+          const scope = path.scope;
+          const exportIdent = scope.generateUid("export");
+          const {
+            contextIdent,
+            stringSpecifiers
+          } = state;
+          const exportMap = Object.create(null);
+          const modules = [];
+          const beforeBody = [];
+          const setters = [];
+          const sources = [];
+          const variableIds = [];
+          const removedPaths = [];
+          function addExportName(key, val) {
+            exportMap[key] = exportMap[key] || [];
+            exportMap[key].push(val);
+          }
+          function pushModule(source, key, specifiers) {
+            let module;
+            modules.forEach(function (m) {
+              if (m.key === source) {
+                module = m;
+              }
+            });
+            if (!module) {
+              modules.push(module = {
+                key: source,
+                imports: [],
+                exports: []
+              });
+            }
+            module[key] = module[key].concat(specifiers);
+          }
+          function buildExportCall(name, val) {
+            return _core.types.expressionStatement(_core.types.callExpression(_core.types.identifier(exportIdent), [_core.types.stringLiteral(name), val]));
+          }
+          const exportNames = [];
+          const exportValues = [];
+          const body = path.get("body");
+          for (const path of body) {
+            if (path.isFunctionDeclaration()) {
+              beforeBody.push(path.node);
+              removedPaths.push(path);
+            } else if (path.isClassDeclaration()) {
+              variableIds.push(_core.types.cloneNode(path.node.id));
+              path.replaceWith(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(path.node.id), _core.types.toExpression(path.node))));
+            } else if (path.isVariableDeclaration()) {
+              path.node.kind = "var";
+            } else if (path.isImportDeclaration()) {
+              const source = path.node.source.value;
+              pushModule(source, "imports", path.node.specifiers);
+              for (const name of Object.keys(path.getBindingIdentifiers())) {
+                scope.removeBinding(name);
+                variableIds.push(_core.types.identifier(name));
+              }
+              path.remove();
+            } else if (path.isExportAllDeclaration()) {
+              pushModule(path.node.source.value, "exports", path.node);
+              path.remove();
+            } else if (path.isExportDefaultDeclaration()) {
+              const declar = path.node.declaration;
+              if (_core.types.isClassDeclaration(declar)) {
+                const id = declar.id;
+                if (id) {
+                  exportNames.push("default");
+                  exportValues.push(scope.buildUndefinedNode());
+                  variableIds.push(_core.types.cloneNode(id));
+                  addExportName(id.name, "default");
+                  path.replaceWith(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(id), _core.types.toExpression(declar))));
+                } else {
+                  exportNames.push("default");
+                  exportValues.push(_core.types.toExpression(declar));
+                  removedPaths.push(path);
+                }
+              } else if (_core.types.isFunctionDeclaration(declar)) {
+                const id = declar.id;
+                if (id) {
+                  beforeBody.push(declar);
+                  exportNames.push("default");
+                  exportValues.push(_core.types.cloneNode(id));
+                  addExportName(id.name, "default");
+                } else {
+                  exportNames.push("default");
+                  exportValues.push(_core.types.toExpression(declar));
+                }
+                removedPaths.push(path);
+              } else {
+                path.replaceWith(buildExportCall("default", declar));
+              }
+            } else if (path.isExportNamedDeclaration()) {
+              const declar = path.node.declaration;
+              if (declar) {
+                path.replaceWith(declar);
+                if (_core.types.isFunction(declar)) {
+                  const name = declar.id.name;
+                  addExportName(name, name);
+                  beforeBody.push(declar);
+                  exportNames.push(name);
+                  exportValues.push(_core.types.cloneNode(declar.id));
+                  removedPaths.push(path);
+                } else if (_core.types.isClass(declar)) {
+                  const name = declar.id.name;
+                  exportNames.push(name);
+                  exportValues.push(scope.buildUndefinedNode());
+                  variableIds.push(_core.types.cloneNode(declar.id));
+                  path.replaceWith(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(declar.id), _core.types.toExpression(declar))));
+                  addExportName(name, name);
+                } else {
+                  if (_core.types.isVariableDeclaration(declar)) {
+                    declar.kind = "var";
+                  }
+                  for (const name of Object.keys(_core.types.getBindingIdentifiers(declar))) {
+                    addExportName(name, name);
+                  }
+                }
+              } else {
+                const specifiers = path.node.specifiers;
+                if (specifiers != null && specifiers.length) {
+                  if (path.node.source) {
+                    pushModule(path.node.source.value, "exports", specifiers);
+                    path.remove();
+                  } else {
+                    const nodes = [];
+                    for (const specifier of specifiers) {
+                      const {
+                        local,
+                        exported
+                      } = specifier;
+                      const binding = scope.getBinding(local.name);
+                      const exportedName = getExportSpecifierName(exported, stringSpecifiers);
+                      if (binding && _core.types.isFunctionDeclaration(binding.path.node)) {
+                        exportNames.push(exportedName);
+                        exportValues.push(_core.types.cloneNode(local));
+                      } else if (!binding) {
+                        nodes.push(buildExportCall(exportedName, local));
+                      }
+                      addExportName(local.name, exportedName);
+                    }
+                    path.replaceWithMultiple(nodes);
+                  }
+                } else {
+                  path.remove();
+                }
+              }
+            }
+          }
+          modules.forEach(function (specifiers) {
+            const setterBody = [];
+            const target = scope.generateUid(specifiers.key);
+            for (let specifier of specifiers.imports) {
+              if (_core.types.isImportNamespaceSpecifier(specifier)) {
+                setterBody.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", specifier.local, _core.types.identifier(target))));
+              } else if (_core.types.isImportDefaultSpecifier(specifier)) {
+                specifier = _core.types.importSpecifier(specifier.local, _core.types.identifier("default"));
+              }
+              if (_core.types.isImportSpecifier(specifier)) {
+                const {
+                  imported
+                } = specifier;
+                setterBody.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", specifier.local, _core.types.memberExpression(_core.types.identifier(target), specifier.imported, imported.type === "StringLiteral"))));
+              }
+            }
+            if (specifiers.exports.length) {
+              const exportNames = [];
+              const exportValues = [];
+              let hasExportStar = false;
+              for (const node of specifiers.exports) {
+                if (_core.types.isExportAllDeclaration(node)) {
+                  hasExportStar = true;
+                } else if (_core.types.isExportSpecifier(node)) {
+                  const exportedName = getExportSpecifierName(node.exported, stringSpecifiers);
+                  exportNames.push(exportedName);
+                  exportValues.push(_core.types.memberExpression(_core.types.identifier(target), node.local, _core.types.isStringLiteral(node.local)));
+                } else {}
+              }
+              setterBody.push(...constructExportCall(path, _core.types.identifier(exportIdent), exportNames, exportValues, hasExportStar ? _core.types.identifier(target) : null, stringSpecifiers));
+            }
+            sources.push(_core.types.stringLiteral(specifiers.key));
+            setters.push(_core.types.functionExpression(null, [_core.types.identifier(target)], _core.types.blockStatement(setterBody)));
+          });
+          let moduleName = (0, _helperModuleTransforms.getModuleName)(this.file.opts, options);
+          if (moduleName) moduleName = _core.types.stringLiteral(moduleName);
+          {
+            var _path$scope, _path$scope$hoistVari;
+            (_path$scope$hoistVari = (_path$scope = path.scope).hoistVariables) != null ? _path$scope$hoistVari : _path$scope.hoistVariables = require("@babel/traverse").Scope.prototype.hoistVariables;
+          }
+          path.scope.hoistVariables((id, hasInit) => {
+            variableIds.push(id);
+            if (!hasInit && id.name in exportMap) {
+              for (const exported of exportMap[id.name]) {
+                exportNames.push(exported);
+                exportValues.push(_core.types.buildUndefinedNode());
+              }
+            }
+          });
+          if (variableIds.length) {
+            beforeBody.unshift(_core.types.variableDeclaration("var", variableIds.map(id => _core.types.variableDeclarator(id))));
+          }
+          if (exportNames.length) {
+            beforeBody.push(...constructExportCall(path, _core.types.identifier(exportIdent), exportNames, exportValues, null, stringSpecifiers));
+          }
+          path.traverse(reassignmentVisitor, {
+            exports: exportMap,
+            buildCall: buildExportCall,
+            scope
+          });
+          for (const path of removedPaths) {
+            path.remove();
+          }
+          let hasTLA = false;
+          path.traverse({
+            AwaitExpression(path) {
+              hasTLA = true;
+              path.stop();
+            },
+            Function(path) {
+              path.skip();
+            },
+            noScope: true
+          });
+          path.node.body = [buildTemplate({
+            SYSTEM_REGISTER: _core.types.memberExpression(_core.types.identifier(systemGlobal), _core.types.identifier("register")),
+            BEFORE_BODY: beforeBody,
+            MODULE_NAME: moduleName,
+            SETTERS: _core.types.arrayExpression(setters),
+            EXECUTE: _core.types.functionExpression(null, [], _core.types.blockStatement(path.node.body), false, hasTLA),
+            SOURCES: _core.types.arrayExpression(sources),
+            EXPORT_IDENTIFIER: _core.types.identifier(exportIdent),
+            CONTEXT_IDENTIFIER: _core.types.identifier(contextIdent)
+          })];
+          path.requeue(path.get("body.0"));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_helperModuleTransforms","_helperValidatorIdentifier","buildTemplate","template","statement","buildExportAll","MISSING_PLUGIN_WARNING","MISSING_PLUGIN_ERROR","getExportSpecifierName","node","stringSpecifiers","type","name","stringValue","value","isIdentifierName","add","Error","constructExportCall","path","exportIdent","exportNames","exportValues","exportStarTarget","statements","length","push","t","expressionStatement","callExpression","stringLiteral","objectProperties","i","exportName","exportValue","objectProperty","has","identifier","objectExpression","exportObj","scope","generateUid","variableDeclaration","variableDeclarator","KEY","generateUidIdentifier","EXPORT_OBJ","TARGET","assignmentExpression","memberExpression","_default","exports","default","declare","api","options","assertVersion","systemGlobal","allowTopLevelThis","reassignmentVisited","WeakSet","reassignmentVisitor","AssignmentExpression|UpdateExpression","arg","isAssignmentExpression","get","isObjectPattern","isArrayPattern","exprs","Object","keys","getBindingIdentifiers","getBinding","exportedNames","exportedName","buildCall","expression","replaceWith","sequenceExpression","isIdentifier","isPostUpdateExpression","isUpdateExpression","prefix","binaryExpression","operator","unaryExpression","cloneNode","argument","numericLiteral","pre","file","set","visitor","types","importExpression","state","isCallExpression","isImport","callee","console","warn","buildDynamicImport","specifier","contextIdent","MetaProperty","meta","property","ReferencedIdentifier","hasBinding","Program","enter","Set","rewriteThis","exit","exportMap","create","modules","beforeBody","setters","sources","variableIds","removedPaths","addExportName","key","val","pushModule","source","specifiers","module","forEach","m","imports","concat","buildExportCall","body","isFunctionDeclaration","isClassDeclaration","id","toExpression","isVariableDeclaration","kind","isImportDeclaration","removeBinding","remove","isExportAllDeclaration","isExportDefaultDeclaration","declar","declaration","buildUndefinedNode","isExportNamedDeclaration","isFunction","isClass","nodes","local","exported","binding","replaceWithMultiple","setterBody","target","isImportNamespaceSpecifier","isImportDefaultSpecifier","importSpecifier","isImportSpecifier","imported","hasExportStar","isExportSpecifier","isStringLiteral","functionExpression","blockStatement","moduleName","getModuleName","opts","_path$scope","_path$scope$hoistVari","hoistVariables","Scope","prototype","hasInit","unshift","map","traverse","hasTLA","AwaitExpression","stop","Function","skip","noScope","SYSTEM_REGISTER","BEFORE_BODY","MODULE_NAME","SETTERS","arrayExpression","EXECUTE","SOURCES","EXPORT_IDENTIFIER","CONTEXT_IDENTIFIER","requeue"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginPass, NodePath, Scope, Visitor } from \"@babel/core\";\nimport {\n  buildDynamicImport,\n  getModuleName,\n  rewriteThis,\n} from \"@babel/helper-module-transforms\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\nimport { isIdentifierName } from \"@babel/helper-validator-identifier\";\n\nconst buildTemplate = template.statement(`\n  SYSTEM_REGISTER(MODULE_NAME, SOURCES, function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {\n    \"use strict\";\n    BEFORE_BODY;\n    return {\n      setters: SETTERS,\n      execute: EXECUTE,\n    };\n  });\n`);\n\nconst buildExportAll = template.statement(`\n  for (var KEY in TARGET) {\n    if (KEY !== \"default\" && KEY !== \"__esModule\") EXPORT_OBJ[KEY] = TARGET[KEY];\n  }\n`);\n\nconst MISSING_PLUGIN_WARNING = `\\\nWARNING: Dynamic import() transformation must be enabled using the\n         @babel/plugin-transform-dynamic-import plugin. Babel 8 will\n         no longer transform import() without using that plugin.\n`;\n\nconst MISSING_PLUGIN_ERROR = `\\\nERROR: Dynamic import() transformation must be enabled using the\n       @babel/plugin-transform-dynamic-import plugin. Babel 8\n       no longer transforms import() without using that plugin.\n`;\n\n//todo: use getExportSpecifierName in `helper-module-transforms` when this library is refactored to NodePath usage.\n\nexport function getExportSpecifierName(\n  node: t.Node,\n  stringSpecifiers: Set<string>,\n): string {\n  if (node.type === \"Identifier\") {\n    return node.name;\n  } else if (node.type === \"StringLiteral\") {\n    const stringValue = node.value;\n    // add specifier value to `stringSpecifiers` only when it can not be converted to an identifier name\n    // i.e In `import { \"foo\" as bar }`\n    // we do not consider `\"foo\"` to be a `stringSpecifier` because we can treat it as\n    // `import { foo as bar }`\n    // This helps minimize the size of `stringSpecifiers` and reduce overhead of checking valid identifier names\n    // when building transpiled code from metadata\n    if (!isIdentifierName(stringValue)) {\n      stringSpecifiers.add(stringValue);\n    }\n    return stringValue;\n  } else {\n    throw new Error(\n      `Expected export specifier to be either Identifier or StringLiteral, got ${node.type}`,\n    );\n  }\n}\n\ntype PluginState = {\n  contextIdent: string;\n  // List of names that should only be printed as string literals.\n  // i.e. `import { \"any unicode\" as foo } from \"some-module\"`\n  // `stringSpecifiers` is Set(1) [\"any unicode\"]\n  // In most cases `stringSpecifiers` is an empty Set\n  stringSpecifiers: Set<string>;\n};\n\ntype ModuleMetadata = {\n  key: string;\n  imports: any[];\n  exports: any[];\n};\n\nfunction constructExportCall(\n  path: NodePath<t.Program>,\n  exportIdent: t.Identifier,\n  exportNames: string[],\n  exportValues: t.Expression[],\n  exportStarTarget: t.Identifier | null,\n  stringSpecifiers: Set<string>,\n) {\n  const statements = [];\n  if (!exportStarTarget) {\n    if (exportNames.length === 1) {\n      statements.push(\n        t.expressionStatement(\n          t.callExpression(exportIdent, [\n            t.stringLiteral(exportNames[0]),\n            exportValues[0],\n          ]),\n        ),\n      );\n    } else {\n      const objectProperties = [];\n      for (let i = 0; i < exportNames.length; i++) {\n        const exportName = exportNames[i];\n        const exportValue = exportValues[i];\n        objectProperties.push(\n          t.objectProperty(\n            stringSpecifiers.has(exportName)\n              ? t.stringLiteral(exportName)\n              : t.identifier(exportName),\n            exportValue,\n          ),\n        );\n      }\n      statements.push(\n        t.expressionStatement(\n          t.callExpression(exportIdent, [t.objectExpression(objectProperties)]),\n        ),\n      );\n    }\n  } else {\n    const exportObj = path.scope.generateUid(\"exportObj\");\n\n    statements.push(\n      t.variableDeclaration(\"var\", [\n        t.variableDeclarator(t.identifier(exportObj), t.objectExpression([])),\n      ]),\n    );\n\n    statements.push(\n      buildExportAll({\n        KEY: path.scope.generateUidIdentifier(\"key\"),\n        EXPORT_OBJ: t.identifier(exportObj),\n        TARGET: exportStarTarget,\n      }),\n    );\n\n    for (let i = 0; i < exportNames.length; i++) {\n      const exportName = exportNames[i];\n      const exportValue = exportValues[i];\n\n      statements.push(\n        t.expressionStatement(\n          t.assignmentExpression(\n            \"=\",\n            t.memberExpression(\n              t.identifier(exportObj),\n              t.identifier(exportName),\n            ),\n            exportValue,\n          ),\n        ),\n      );\n    }\n\n    statements.push(\n      t.expressionStatement(\n        t.callExpression(exportIdent, [t.identifier(exportObj)]),\n      ),\n    );\n  }\n  return statements;\n}\n\nexport interface Options extends PluginOptions {\n  allowTopLevelThis?: boolean;\n  systemGlobal?: string;\n}\n\ntype ReassignmentVisitorState = {\n  scope: Scope;\n  exports: any;\n  buildCall: (name: string, value: t.Expression) => t.ExpressionStatement;\n};\n\nexport default declare<PluginState>((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { systemGlobal = \"System\", allowTopLevelThis = false } = options;\n  const reassignmentVisited = new WeakSet();\n\n  const reassignmentVisitor: Visitor<ReassignmentVisitorState> = {\n    \"AssignmentExpression|UpdateExpression\"(\n      path: NodePath<t.AssignmentExpression | t.UpdateExpression>,\n    ) {\n      if (reassignmentVisited.has(path.node)) return;\n      reassignmentVisited.add(path.node);\n\n      const arg = path.isAssignmentExpression()\n        ? path.get(\"left\")\n        : path.get(\"argument\");\n\n      if (arg.isObjectPattern() || arg.isArrayPattern()) {\n        const exprs: t.SequenceExpression[\"expressions\"] = [path.node];\n        for (const name of Object.keys(arg.getBindingIdentifiers())) {\n          if (this.scope.getBinding(name) !== path.scope.getBinding(name)) {\n            return;\n          }\n          const exportedNames = this.exports[name];\n          if (!exportedNames) continue;\n          for (const exportedName of exportedNames) {\n            exprs.push(\n              this.buildCall(exportedName, t.identifier(name)).expression,\n            );\n          }\n        }\n        path.replaceWith(t.sequenceExpression(exprs));\n        return;\n      }\n\n      if (!arg.isIdentifier()) return;\n\n      const name = arg.node.name;\n\n      // redeclared in this scope\n      if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;\n\n      const exportedNames = this.exports[name];\n      if (!exportedNames) return;\n\n      let node: t.Expression = path.node;\n\n      // if it is a non-prefix update expression (x++ etc)\n      // then we must replace with the expression (_export('x', x + 1), x++)\n      // in order to ensure the same update expression value\n      const isPostUpdateExpression = t.isUpdateExpression(node, {\n        prefix: false,\n      });\n      if (isPostUpdateExpression) {\n        node = t.binaryExpression(\n          // @ts-expect-error The operator of a post-update expression must be \"++\" | \"--\"\n          node.operator[0],\n          t.unaryExpression(\n            \"+\",\n            t.cloneNode(\n              // @ts-expect-error node is UpdateExpression\n              node.argument,\n            ),\n          ),\n          t.numericLiteral(1),\n        );\n      }\n\n      for (const exportedName of exportedNames) {\n        node = this.buildCall(exportedName, node).expression;\n      }\n\n      if (isPostUpdateExpression) {\n        node = t.sequenceExpression([node, path.node]);\n      }\n\n      path.replaceWith(node);\n    },\n  };\n\n  return {\n    name: \"transform-modules-systemjs\",\n\n    pre() {\n      this.file.set(\"@babel/plugin-transform-modules-*\", \"systemjs\");\n    },\n\n    visitor: {\n      [\"CallExpression\" +\n        (api.types.importExpression ? \"|ImportExpression\" : \"\")](\n        this: PluginPass & PluginState,\n        path: NodePath<t.CallExpression | t.ImportExpression>,\n        state: PluginState,\n      ) {\n        if (path.isCallExpression() && !t.isImport(path.node.callee)) return;\n        if (path.isCallExpression()) {\n          if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) {\n            if (process.env.BABEL_8_BREAKING) {\n              throw new Error(MISSING_PLUGIN_ERROR);\n            } else {\n              console.warn(MISSING_PLUGIN_WARNING);\n            }\n          }\n        } else {\n          // when createImportExpressions is true, we require the dynamic import transform\n          if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) {\n            throw new Error(MISSING_PLUGIN_ERROR);\n          }\n        }\n        path.replaceWith(\n          buildDynamicImport(path.node, false, true, specifier =>\n            t.callExpression(\n              t.memberExpression(\n                t.identifier(state.contextIdent),\n                t.identifier(\"import\"),\n              ),\n              [specifier],\n            ),\n          ),\n        );\n      },\n\n      MetaProperty(path, state: PluginState) {\n        if (\n          path.node.meta.name === \"import\" &&\n          path.node.property.name === \"meta\"\n        ) {\n          path.replaceWith(\n            t.memberExpression(\n              t.identifier(state.contextIdent),\n              t.identifier(\"meta\"),\n            ),\n          );\n        }\n      },\n\n      ReferencedIdentifier(path, state) {\n        if (\n          path.node.name === \"__moduleName\" &&\n          !path.scope.hasBinding(\"__moduleName\")\n        ) {\n          path.replaceWith(\n            t.memberExpression(\n              t.identifier(state.contextIdent),\n              t.identifier(\"id\"),\n            ),\n          );\n        }\n      },\n\n      Program: {\n        enter(path, state) {\n          state.contextIdent = path.scope.generateUid(\"context\");\n          state.stringSpecifiers = new Set();\n          if (!allowTopLevelThis) {\n            rewriteThis(path);\n          }\n        },\n        exit(path, state) {\n          const scope = path.scope;\n          const exportIdent = scope.generateUid(\"export\");\n          const { contextIdent, stringSpecifiers } = state;\n\n          const exportMap: Record<string, string[]> = Object.create(null);\n          const modules: ModuleMetadata[] = [];\n\n          const beforeBody = [];\n          const setters: t.Expression[] = [];\n          const sources: t.StringLiteral[] = [];\n          const variableIds = [];\n          const removedPaths = [];\n\n          function addExportName(key: string, val: string) {\n            exportMap[key] = exportMap[key] || [];\n            exportMap[key].push(val);\n          }\n\n          function pushModule(\n            source: string,\n            key: \"imports\" | \"exports\",\n            specifiers: t.ModuleSpecifier[] | t.ExportAllDeclaration,\n          ) {\n            let module: ModuleMetadata;\n            modules.forEach(function (m) {\n              if (m.key === source) {\n                module = m;\n              }\n            });\n            if (!module) {\n              modules.push(\n                (module = { key: source, imports: [], exports: [] }),\n              );\n            }\n            module[key] = module[key].concat(specifiers);\n          }\n\n          function buildExportCall(name: string, val: t.Expression) {\n            return t.expressionStatement(\n              t.callExpression(t.identifier(exportIdent), [\n                t.stringLiteral(name),\n                val,\n              ]),\n            );\n          }\n\n          const exportNames = [];\n          const exportValues: t.Expression[] = [];\n\n          const body = path.get(\"body\");\n\n          for (const path of body) {\n            if (path.isFunctionDeclaration()) {\n              beforeBody.push(path.node);\n              removedPaths.push(path);\n            } else if (path.isClassDeclaration()) {\n              variableIds.push(t.cloneNode(path.node.id));\n              path.replaceWith(\n                t.expressionStatement(\n                  t.assignmentExpression(\n                    \"=\",\n                    t.cloneNode(path.node.id),\n                    t.toExpression(path.node),\n                  ),\n                ),\n              );\n            } else if (path.isVariableDeclaration()) {\n              // Convert top-level variable declarations to \"var\",\n              // because they must be hoisted\n              path.node.kind = \"var\";\n            } else if (path.isImportDeclaration()) {\n              const source = path.node.source.value;\n              pushModule(source, \"imports\", path.node.specifiers);\n              for (const name of Object.keys(path.getBindingIdentifiers())) {\n                scope.removeBinding(name);\n                variableIds.push(t.identifier(name));\n              }\n              path.remove();\n            } else if (path.isExportAllDeclaration()) {\n              pushModule(path.node.source.value, \"exports\", path.node);\n              path.remove();\n            } else if (path.isExportDefaultDeclaration()) {\n              const declar = path.node.declaration;\n              if (t.isClassDeclaration(declar)) {\n                const id = declar.id;\n                if (id) {\n                  exportNames.push(\"default\");\n                  exportValues.push(scope.buildUndefinedNode());\n                  variableIds.push(t.cloneNode(id));\n                  addExportName(id.name, \"default\");\n                  path.replaceWith(\n                    t.expressionStatement(\n                      t.assignmentExpression(\n                        \"=\",\n                        t.cloneNode(id),\n                        t.toExpression(declar),\n                      ),\n                    ),\n                  );\n                } else {\n                  exportNames.push(\"default\");\n                  exportValues.push(t.toExpression(declar));\n                  removedPaths.push(path);\n                }\n              } else if (t.isFunctionDeclaration(declar)) {\n                const id = declar.id;\n                if (id) {\n                  beforeBody.push(declar);\n                  exportNames.push(\"default\");\n                  exportValues.push(t.cloneNode(id));\n                  addExportName(id.name, \"default\");\n                } else {\n                  exportNames.push(\"default\");\n                  exportValues.push(t.toExpression(declar));\n                }\n                removedPaths.push(path);\n              } else {\n                // @ts-expect-error TSDeclareFunction is not expected here\n                path.replaceWith(buildExportCall(\"default\", declar));\n              }\n            } else if (path.isExportNamedDeclaration()) {\n              const declar = path.node.declaration;\n\n              if (declar) {\n                path.replaceWith(declar);\n\n                if (t.isFunction(declar)) {\n                  const name = declar.id.name;\n                  addExportName(name, name);\n                  beforeBody.push(declar);\n                  exportNames.push(name);\n                  exportValues.push(t.cloneNode(declar.id));\n                  removedPaths.push(path);\n                } else if (t.isClass(declar)) {\n                  const name = declar.id.name;\n                  exportNames.push(name);\n                  exportValues.push(scope.buildUndefinedNode());\n                  variableIds.push(t.cloneNode(declar.id));\n                  path.replaceWith(\n                    t.expressionStatement(\n                      t.assignmentExpression(\n                        \"=\",\n                        t.cloneNode(declar.id),\n                        t.toExpression(declar),\n                      ),\n                    ),\n                  );\n                  addExportName(name, name);\n                } else {\n                  if (t.isVariableDeclaration(declar)) {\n                    // Convert top-level variable declarations to \"var\",\n                    // because they must be hoisted\n                    declar.kind = \"var\";\n                  }\n                  for (const name of Object.keys(\n                    t.getBindingIdentifiers(declar),\n                  )) {\n                    addExportName(name, name);\n                  }\n                }\n              } else {\n                const specifiers = path.node.specifiers;\n                if (specifiers?.length) {\n                  if (path.node.source) {\n                    pushModule(path.node.source.value, \"exports\", specifiers);\n                    path.remove();\n                  } else {\n                    const nodes = [];\n\n                    for (const specifier of specifiers) {\n                      // @ts-expect-error This isn't an \"export ... from\" declaration\n                      // because path.node.source is falsy, so the local specifier exists.\n                      const { local, exported } = specifier;\n\n                      const binding = scope.getBinding(local.name);\n                      const exportedName = getExportSpecifierName(\n                        exported,\n                        stringSpecifiers,\n                      );\n                      // hoisted function export\n                      if (\n                        binding &&\n                        t.isFunctionDeclaration(binding.path.node)\n                      ) {\n                        exportNames.push(exportedName);\n                        exportValues.push(t.cloneNode(local));\n                      }\n                      // only globals also exported this way\n                      else if (!binding) {\n                        nodes.push(buildExportCall(exportedName, local));\n                      }\n                      addExportName(local.name, exportedName);\n                    }\n\n                    path.replaceWithMultiple(nodes);\n                  }\n                } else {\n                  path.remove();\n                }\n              }\n            }\n          }\n\n          modules.forEach(function (specifiers) {\n            const setterBody = [];\n            const target = scope.generateUid(specifiers.key);\n\n            for (let specifier of specifiers.imports) {\n              if (t.isImportNamespaceSpecifier(specifier)) {\n                setterBody.push(\n                  t.expressionStatement(\n                    t.assignmentExpression(\n                      \"=\",\n                      specifier.local,\n                      t.identifier(target),\n                    ),\n                  ),\n                );\n              } else if (t.isImportDefaultSpecifier(specifier)) {\n                specifier = t.importSpecifier(\n                  specifier.local,\n                  t.identifier(\"default\"),\n                );\n              }\n\n              if (t.isImportSpecifier(specifier)) {\n                const { imported } = specifier;\n                setterBody.push(\n                  t.expressionStatement(\n                    t.assignmentExpression(\n                      \"=\",\n                      specifier.local,\n                      t.memberExpression(\n                        t.identifier(target),\n                        specifier.imported,\n                        /* computed */ imported.type === \"StringLiteral\",\n                      ),\n                    ),\n                  ),\n                );\n              }\n            }\n\n            if (specifiers.exports.length) {\n              const exportNames = [];\n              const exportValues = [];\n              let hasExportStar = false;\n\n              for (const node of specifiers.exports) {\n                if (t.isExportAllDeclaration(node)) {\n                  hasExportStar = true;\n                } else if (t.isExportSpecifier(node)) {\n                  const exportedName = getExportSpecifierName(\n                    node.exported,\n                    stringSpecifiers,\n                  );\n                  exportNames.push(exportedName);\n                  exportValues.push(\n                    t.memberExpression(\n                      t.identifier(target),\n                      node.local,\n                      t.isStringLiteral(node.local),\n                    ),\n                  );\n                } else {\n                  // todo\n                }\n              }\n\n              setterBody.push(\n                ...constructExportCall(\n                  path,\n                  t.identifier(exportIdent),\n                  exportNames,\n                  exportValues,\n                  hasExportStar ? t.identifier(target) : null,\n                  stringSpecifiers,\n                ),\n              );\n            }\n\n            sources.push(t.stringLiteral(specifiers.key));\n            setters.push(\n              t.functionExpression(\n                null,\n                [t.identifier(target)],\n                t.blockStatement(setterBody),\n              ),\n            );\n          });\n\n          let moduleName = getModuleName(this.file.opts, options);\n          // @ts-expect-error todo(flow->ts): do not reuse variables\n          if (moduleName) moduleName = t.stringLiteral(moduleName);\n\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.scope.hoistVariables ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").Scope.prototype.hoistVariables;\n          }\n\n          path.scope.hoistVariables((id, hasInit) => {\n            variableIds.push(id);\n            if (!hasInit && id.name in exportMap) {\n              for (const exported of exportMap[id.name]) {\n                exportNames.push(exported);\n                exportValues.push(t.buildUndefinedNode());\n              }\n            }\n          });\n\n          if (variableIds.length) {\n            beforeBody.unshift(\n              t.variableDeclaration(\n                \"var\",\n                variableIds.map(id => t.variableDeclarator(id)),\n              ),\n            );\n          }\n\n          if (exportNames.length) {\n            beforeBody.push(\n              ...constructExportCall(\n                path,\n                t.identifier(exportIdent),\n                exportNames,\n                exportValues,\n                null,\n                stringSpecifiers,\n              ),\n            );\n          }\n\n          path.traverse(reassignmentVisitor, {\n            exports: exportMap,\n            buildCall: buildExportCall,\n            scope,\n          });\n\n          for (const path of removedPaths) {\n            path.remove();\n          }\n\n          let hasTLA = false;\n          path.traverse({\n            AwaitExpression(path) {\n              hasTLA = true;\n              path.stop();\n            },\n            Function(path) {\n              path.skip();\n            },\n            // @ts-expect-error - todo: add noScope to type definitions\n            noScope: true,\n          });\n\n          path.node.body = [\n            buildTemplate({\n              SYSTEM_REGISTER: t.memberExpression(\n                t.identifier(systemGlobal),\n                t.identifier(\"register\"),\n              ),\n              BEFORE_BODY: beforeBody,\n              MODULE_NAME: moduleName,\n              SETTERS: t.arrayExpression(setters),\n              EXECUTE: t.functionExpression(\n                null,\n                [],\n                t.blockStatement(path.node.body),\n                false,\n                hasTLA,\n              ),\n              SOURCES: t.arrayExpression(sources),\n              EXPORT_IDENTIFIER: t.identifier(exportIdent),\n              CONTEXT_IDENTIFIER: t.identifier(contextIdent),\n            }),\n          ];\n          path.requeue(path.get(\"body.0\"));\n        },\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-systemjs/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,39 @@
+{
+  "name": "@babel/plugin-transform-modules-systemjs",
+  "version": "7.25.9",
+  "description": "This plugin transforms ES2015 modules to SystemJS",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-systemjs"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-module-transforms": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-validator-identifier": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/helper-transform-fixture-test-runner": "^7.25.9",
+    "core-js": "^3.35.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-systemjs",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-modules-umd
+
+> This plugin transforms ES2015 modules to UMD
+
+See our website [@babel/plugin-transform-modules-umd](https://babeljs.io/docs/babel-plugin-transform-modules-umd) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-modules-umd
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-modules-umd --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,156 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _path = require("path");
+var _helperModuleTransforms = require("@babel/helper-module-transforms");
+var _core = require("@babel/core");
+const buildPrerequisiteAssignment = (0, _core.template)(`
+  GLOBAL_REFERENCE = GLOBAL_REFERENCE || {}
+`);
+const buildWrapper = (0, _core.template)(`
+  (function (global, factory) {
+    if (typeof define === "function" && define.amd) {
+      define(MODULE_NAME, AMD_ARGUMENTS, factory);
+    } else if (typeof exports !== "undefined") {
+      factory(COMMONJS_ARGUMENTS);
+    } else {
+      var mod = { exports: {} };
+      factory(BROWSER_ARGUMENTS);
+
+      GLOBAL_TO_ASSIGN;
+    }
+  })(
+    typeof globalThis !== "undefined" ? globalThis
+      : typeof self !== "undefined" ? self
+      : this,
+    function(IMPORT_NAMES) {
+  })
+`);
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion(7);
+  const {
+    globals,
+    exactGlobals,
+    allowTopLevelThis,
+    strict,
+    strictMode,
+    noInterop,
+    importInterop
+  } = options;
+  const constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
+  const enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
+  function buildBrowserInit(browserGlobals, exactGlobals, filename, moduleName) {
+    const moduleNameOrBasename = moduleName ? moduleName.value : (0, _path.basename)(filename, (0, _path.extname)(filename));
+    let globalToAssign = _core.types.memberExpression(_core.types.identifier("global"), _core.types.identifier(_core.types.toIdentifier(moduleNameOrBasename)));
+    let initAssignments = [];
+    if (exactGlobals) {
+      const globalName = browserGlobals[moduleNameOrBasename];
+      if (globalName) {
+        initAssignments = [];
+        const members = globalName.split(".");
+        globalToAssign = members.slice(1).reduce((accum, curr) => {
+          initAssignments.push(buildPrerequisiteAssignment({
+            GLOBAL_REFERENCE: _core.types.cloneNode(accum)
+          }));
+          return _core.types.memberExpression(accum, _core.types.identifier(curr));
+        }, _core.types.memberExpression(_core.types.identifier("global"), _core.types.identifier(members[0])));
+      }
+    }
+    initAssignments.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", globalToAssign, _core.types.memberExpression(_core.types.identifier("mod"), _core.types.identifier("exports")))));
+    return initAssignments;
+  }
+  function buildBrowserArg(browserGlobals, exactGlobals, source) {
+    let memberExpression;
+    if (exactGlobals) {
+      const globalRef = browserGlobals[source];
+      if (globalRef) {
+        memberExpression = globalRef.split(".").reduce((accum, curr) => _core.types.memberExpression(accum, _core.types.identifier(curr)), _core.types.identifier("global"));
+      } else {
+        memberExpression = _core.types.memberExpression(_core.types.identifier("global"), _core.types.identifier(_core.types.toIdentifier(source)));
+      }
+    } else {
+      const requireName = (0, _path.basename)(source, (0, _path.extname)(source));
+      const globalName = browserGlobals[requireName] || requireName;
+      memberExpression = _core.types.memberExpression(_core.types.identifier("global"), _core.types.identifier(_core.types.toIdentifier(globalName)));
+    }
+    return memberExpression;
+  }
+  return {
+    name: "transform-modules-umd",
+    visitor: {
+      Program: {
+        exit(path) {
+          if (!(0, _helperModuleTransforms.isModule)(path)) return;
+          const browserGlobals = globals || {};
+          const moduleName = (0, _helperModuleTransforms.getModuleName)(this.file.opts, options);
+          let moduleNameLiteral;
+          if (moduleName) moduleNameLiteral = _core.types.stringLiteral(moduleName);
+          const {
+            meta,
+            headers
+          } = (0, _helperModuleTransforms.rewriteModuleStatementsAndPrepareHeader)(path, {
+            constantReexports,
+            enumerableModuleMeta,
+            strict,
+            strictMode,
+            allowTopLevelThis,
+            noInterop,
+            importInterop,
+            filename: this.file.opts.filename
+          });
+          const amdArgs = [];
+          const commonjsArgs = [];
+          const browserArgs = [];
+          const importNames = [];
+          if ((0, _helperModuleTransforms.hasExports)(meta)) {
+            amdArgs.push(_core.types.stringLiteral("exports"));
+            commonjsArgs.push(_core.types.identifier("exports"));
+            browserArgs.push(_core.types.memberExpression(_core.types.identifier("mod"), _core.types.identifier("exports")));
+            importNames.push(_core.types.identifier(meta.exportName));
+          }
+          for (const [source, metadata] of meta.source) {
+            amdArgs.push(_core.types.stringLiteral(source));
+            commonjsArgs.push(_core.types.callExpression(_core.types.identifier("require"), [_core.types.stringLiteral(source)]));
+            browserArgs.push(buildBrowserArg(browserGlobals, exactGlobals, source));
+            importNames.push(_core.types.identifier(metadata.name));
+            if (!(0, _helperModuleTransforms.isSideEffectImport)(metadata)) {
+              const interop = (0, _helperModuleTransforms.wrapInterop)(path, _core.types.identifier(metadata.name), metadata.interop);
+              if (interop) {
+                const header = _core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.identifier(metadata.name), interop));
+                header.loc = meta.loc;
+                headers.push(header);
+              }
+            }
+            headers.push(...(0, _helperModuleTransforms.buildNamespaceInitStatements)(meta, metadata, constantReexports));
+          }
+          (0, _helperModuleTransforms.ensureStatementsHoisted)(headers);
+          path.unshiftContainer("body", headers);
+          const {
+            body,
+            directives
+          } = path.node;
+          path.node.directives = [];
+          path.node.body = [];
+          const umdWrapper = path.pushContainer("body", [buildWrapper({
+            MODULE_NAME: moduleNameLiteral,
+            AMD_ARGUMENTS: _core.types.arrayExpression(amdArgs),
+            COMMONJS_ARGUMENTS: commonjsArgs,
+            BROWSER_ARGUMENTS: browserArgs,
+            IMPORT_NAMES: importNames,
+            GLOBAL_TO_ASSIGN: buildBrowserInit(browserGlobals, exactGlobals, this.filename || "unknown", moduleNameLiteral)
+          })])[0];
+          const umdFactory = umdWrapper.get("expression.arguments")[1].get("body");
+          umdFactory.pushContainer("directives", directives);
+          umdFactory.pushContainer("body", body);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_path","_helperModuleTransforms","_core","buildPrerequisiteAssignment","template","buildWrapper","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","assertVersion","globals","exactGlobals","allowTopLevelThis","strict","strictMode","noInterop","importInterop","constantReexports","assumption","loose","enumerableModuleMeta","buildBrowserInit","browserGlobals","filename","moduleName","moduleNameOrBasename","value","basename","extname","globalToAssign","t","memberExpression","identifier","toIdentifier","initAssignments","globalName","members","split","slice","reduce","accum","curr","push","GLOBAL_REFERENCE","cloneNode","expressionStatement","assignmentExpression","buildBrowserArg","source","globalRef","requireName","name","visitor","Program","exit","path","isModule","getModuleName","file","opts","moduleNameLiteral","stringLiteral","meta","headers","rewriteModuleStatementsAndPrepareHeader","amdArgs","commonjsArgs","browserArgs","importNames","hasExports","exportName","metadata","callExpression","isSideEffectImport","interop","wrapInterop","header","loc","buildNamespaceInitStatements","ensureStatementsHoisted","unshiftContainer","body","directives","node","umdWrapper","pushContainer","MODULE_NAME","AMD_ARGUMENTS","arrayExpression","COMMONJS_ARGUMENTS","BROWSER_ARGUMENTS","IMPORT_NAMES","GLOBAL_TO_ASSIGN","umdFactory","get"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { basename, extname } from \"path\";\nimport {\n  isModule,\n  rewriteModuleStatementsAndPrepareHeader,\n  type RewriteModuleStatementsAndPrepareHeaderOptions,\n  hasExports,\n  isSideEffectImport,\n  buildNamespaceInitStatements,\n  ensureStatementsHoisted,\n  wrapInterop,\n  getModuleName,\n} from \"@babel/helper-module-transforms\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\nimport { types as t, template, type NodePath } from \"@babel/core\";\n\nconst buildPrerequisiteAssignment = template(`\n  GLOBAL_REFERENCE = GLOBAL_REFERENCE || {}\n`);\n// Note: we avoid comparing typeof results with \"object\" or \"symbol\" otherwise\n// they will be processed by `transform-typeof-symbol`, which in return could\n// cause typeof helper used before declaration\nconst buildWrapper = template(`\n  (function (global, factory) {\n    if (typeof define === \"function\" && define.amd) {\n      define(MODULE_NAME, AMD_ARGUMENTS, factory);\n    } else if (typeof exports !== \"undefined\") {\n      factory(COMMONJS_ARGUMENTS);\n    } else {\n      var mod = { exports: {} };\n      factory(BROWSER_ARGUMENTS);\n\n      GLOBAL_TO_ASSIGN;\n    }\n  })(\n    typeof globalThis !== \"undefined\" ? globalThis\n      : typeof self !== \"undefined\" ? self\n      : this,\n    function(IMPORT_NAMES) {\n  })\n`);\n\nexport interface Options extends PluginOptions {\n  allowTopLevelThis?: boolean;\n  exactGlobals?: boolean;\n  globals?: Record<string, string>;\n  importInterop?: RewriteModuleStatementsAndPrepareHeaderOptions[\"importInterop\"];\n  loose?: boolean;\n  noInterop?: boolean;\n  strict?: boolean;\n  strictMode?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const {\n    globals,\n    exactGlobals,\n    allowTopLevelThis,\n    strict,\n    strictMode,\n    noInterop,\n    importInterop,\n  } = options;\n\n  const constantReexports =\n    api.assumption(\"constantReexports\") ?? options.loose;\n  const enumerableModuleMeta =\n    api.assumption(\"enumerableModuleMeta\") ?? options.loose;\n\n  /**\n   * Build the assignment statements that initialize the UMD global.\n   */\n  function buildBrowserInit(\n    browserGlobals: Record<string, string>,\n    exactGlobals: boolean,\n    filename: string,\n    moduleName: t.StringLiteral | void,\n  ) {\n    const moduleNameOrBasename = moduleName\n      ? moduleName.value\n      : basename(filename, extname(filename));\n    let globalToAssign = t.memberExpression(\n      t.identifier(\"global\"),\n      t.identifier(t.toIdentifier(moduleNameOrBasename)),\n    );\n    let initAssignments = [];\n\n    if (exactGlobals) {\n      const globalName = browserGlobals[moduleNameOrBasename];\n\n      if (globalName) {\n        initAssignments = [];\n\n        const members = globalName.split(\".\");\n        globalToAssign = members.slice(1).reduce(\n          (accum, curr) => {\n            initAssignments.push(\n              buildPrerequisiteAssignment({\n                GLOBAL_REFERENCE: t.cloneNode(accum),\n              }),\n            );\n            return t.memberExpression(accum, t.identifier(curr));\n          },\n          t.memberExpression(t.identifier(\"global\"), t.identifier(members[0])),\n        );\n      }\n    }\n\n    initAssignments.push(\n      t.expressionStatement(\n        t.assignmentExpression(\n          \"=\",\n          globalToAssign,\n          t.memberExpression(t.identifier(\"mod\"), t.identifier(\"exports\")),\n        ),\n      ),\n    );\n\n    return initAssignments;\n  }\n\n  /**\n   * Build the member expression that reads from a global for a given source.\n   */\n  function buildBrowserArg(\n    browserGlobals: Record<string, string>,\n    exactGlobals: boolean,\n    source: string,\n  ) {\n    let memberExpression: t.MemberExpression;\n    if (exactGlobals) {\n      const globalRef = browserGlobals[source];\n      if (globalRef) {\n        memberExpression = globalRef\n          .split(\".\")\n          .reduce(\n            (accum: t.Identifier | t.MemberExpression, curr) =>\n              t.memberExpression(accum, t.identifier(curr)),\n            t.identifier(\"global\"),\n          ) as t.MemberExpression;\n      } else {\n        memberExpression = t.memberExpression(\n          t.identifier(\"global\"),\n          t.identifier(t.toIdentifier(source)),\n        );\n      }\n    } else {\n      const requireName = basename(source, extname(source));\n      const globalName = browserGlobals[requireName] || requireName;\n      memberExpression = t.memberExpression(\n        t.identifier(\"global\"),\n        t.identifier(t.toIdentifier(globalName)),\n      );\n    }\n    return memberExpression;\n  }\n\n  return {\n    name: \"transform-modules-umd\",\n\n    visitor: {\n      Program: {\n        exit(path) {\n          if (!isModule(path)) return;\n\n          const browserGlobals = globals || {};\n\n          const moduleName = getModuleName(this.file.opts, options);\n          let moduleNameLiteral: void | t.StringLiteral;\n          if (moduleName) moduleNameLiteral = t.stringLiteral(moduleName);\n\n          const { meta, headers } = rewriteModuleStatementsAndPrepareHeader(\n            path,\n            {\n              constantReexports,\n              enumerableModuleMeta,\n              strict,\n              strictMode,\n              allowTopLevelThis,\n              noInterop,\n              importInterop,\n              filename: this.file.opts.filename,\n            },\n          );\n\n          const amdArgs = [];\n          const commonjsArgs = [];\n          const browserArgs = [];\n          const importNames = [];\n\n          if (hasExports(meta)) {\n            amdArgs.push(t.stringLiteral(\"exports\"));\n            commonjsArgs.push(t.identifier(\"exports\"));\n            browserArgs.push(\n              t.memberExpression(t.identifier(\"mod\"), t.identifier(\"exports\")),\n            );\n            importNames.push(t.identifier(meta.exportName));\n          }\n\n          for (const [source, metadata] of meta.source) {\n            amdArgs.push(t.stringLiteral(source));\n            commonjsArgs.push(\n              t.callExpression(t.identifier(\"require\"), [\n                t.stringLiteral(source),\n              ]),\n            );\n            browserArgs.push(\n              buildBrowserArg(browserGlobals, exactGlobals, source),\n            );\n            importNames.push(t.identifier(metadata.name));\n\n            if (!isSideEffectImport(metadata)) {\n              const interop = wrapInterop(\n                path,\n                t.identifier(metadata.name),\n                metadata.interop,\n              );\n              if (interop) {\n                const header = t.expressionStatement(\n                  t.assignmentExpression(\n                    \"=\",\n                    t.identifier(metadata.name),\n                    interop,\n                  ),\n                );\n                // @ts-expect-error todo(flow->ts)\n                header.loc = meta.loc;\n                headers.push(header);\n              }\n            }\n\n            headers.push(\n              ...buildNamespaceInitStatements(\n                meta,\n                metadata,\n                constantReexports,\n              ),\n            );\n          }\n\n          ensureStatementsHoisted(headers);\n          path.unshiftContainer(\"body\", headers);\n\n          const { body, directives } = path.node;\n          path.node.directives = [];\n          path.node.body = [];\n          const umdWrapper = path.pushContainer(\"body\", [\n            buildWrapper({\n              //todo: buildWrapper does not handle void moduleNameLiteral\n              MODULE_NAME: moduleNameLiteral,\n\n              AMD_ARGUMENTS: t.arrayExpression(amdArgs),\n              COMMONJS_ARGUMENTS: commonjsArgs,\n              BROWSER_ARGUMENTS: browserArgs,\n              IMPORT_NAMES: importNames,\n\n              GLOBAL_TO_ASSIGN: buildBrowserInit(\n                browserGlobals,\n                exactGlobals,\n                this.filename || \"unknown\",\n                moduleNameLiteral,\n              ),\n            }) as t.Statement,\n          ])[0] as NodePath<t.ExpressionStatement>;\n          const umdFactory = (\n            umdWrapper.get(\"expression.arguments\")[1] as NodePath<t.Function>\n          ).get(\"body\") as NodePath<t.BlockStatement>;\n          umdFactory.pushContainer(\"directives\", directives);\n          umdFactory.pushContainer(\"body\", body);\n        },\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-modules-umd/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-modules-umd",
+  "version": "7.25.9",
+  "description": "This plugin transforms ES2015 modules to UMD",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-modules-umd"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-modules-umd",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-module-transforms": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-external-helpers": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-named-capturing-groups-regex
+
+> Compile regular expressions using named groups to ES5.
+
+See our website [@babel/plugin-transform-named-capturing-groups-regex](https://babeljs.io/docs/babel-plugin-transform-named-capturing-groups-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-named-capturing-groups-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-named-capturing-groups-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  const {
+    runtime
+  } = options;
+  if (runtime !== undefined && typeof runtime !== "boolean") {
+    throw new Error("The 'runtime' option must be boolean");
+  }
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-named-capturing-groups-regex",
+    feature: "namedCaptureGroups",
+    options: {
+      runtime
+    }
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","options","runtime","undefined","Error","createRegExpFeaturePlugin","name","feature"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  runtime?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  const { runtime } = options;\n  if (runtime !== undefined && typeof runtime !== \"boolean\") {\n    throw new Error(\"The 'runtime' option must be boolean\");\n  }\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-named-capturing-groups-regex\",\n    feature: \"namedCaptureGroups\",\n    options: { runtime },\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMtC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAChD,MAAM;IAAEC;EAAQ,CAAC,GAAGD,OAAO;EAC3B,IAAIC,OAAO,KAAKC,SAAS,IAAI,OAAOD,OAAO,KAAK,SAAS,EAAE;IACzD,MAAM,IAAIE,KAAK,CAAC,sCAAsC,CAAC;EACzD;EAEA,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,wCAAwC;IAC9CC,OAAO,EAAE,oBAAoB;IAC7BN,OAAO,EAAE;MAAEC;IAAQ;EACrB,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,40 @@
+{
+  "name": "@babel/plugin-transform-named-capturing-groups-regex",
+  "version": "7.25.9",
+  "description": "Compile regular expressions using named groups to ES5.",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-named-capturing-groups-regex",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "regular expressions"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-named-capturing-groups-regex"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "core-js": "^3.30.2"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-new-target/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-new-target/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-new-target/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-new-target/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-new-target/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-new-target/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-new-target
+
+> Transforms new.target meta property
+
+See our website [@babel/plugin-transform-new-target](https://babeljs.io/docs/babel-plugin-transform-new-target) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-new-target
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-new-target --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-new-target/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-new-target/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-new-target/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,71 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-new-target",
+    visitor: {
+      MetaProperty(path) {
+        const meta = path.get("meta");
+        const property = path.get("property");
+        const {
+          scope
+        } = path;
+        if (meta.isIdentifier({
+          name: "new"
+        }) && property.isIdentifier({
+          name: "target"
+        })) {
+          const func = path.findParent(path => {
+            if (path.isClass()) return true;
+            if (path.isFunction() && !path.isArrowFunctionExpression()) {
+              if (path.isClassMethod({
+                kind: "constructor"
+              })) {
+                return false;
+              }
+              return true;
+            }
+            return false;
+          });
+          if (!func) {
+            throw path.buildCodeFrameError("new.target must be under a (non-arrow) function or a class.");
+          }
+          const {
+            node
+          } = func;
+          if (_core.types.isMethod(node)) {
+            path.replaceWith(scope.buildUndefinedNode());
+            return;
+          }
+          const constructor = _core.types.memberExpression(_core.types.thisExpression(), _core.types.identifier("constructor"));
+          if (func.isClass()) {
+            path.replaceWith(constructor);
+            return;
+          }
+          if (!node.id) {
+            node.id = scope.generateUidIdentifier("target");
+          } else {
+            let scope = path.scope;
+            const name = node.id.name;
+            while (scope !== func.parentPath.scope) {
+              if (scope.hasOwnBinding(name) && !scope.bindingIdentifierEquals(name, node.id)) {
+                scope.rename(name);
+              }
+              scope = scope.parent;
+            }
+          }
+          path.replaceWith(_core.types.conditionalExpression(_core.types.binaryExpression("instanceof", _core.types.thisExpression(), _core.types.cloneNode(node.id)), constructor, scope.buildUndefinedNode()));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-new-target/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-new-target/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-new-target/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","MetaProperty","path","meta","get","property","scope","isIdentifier","func","findParent","isClass","isFunction","isArrowFunctionExpression","isClassMethod","kind","buildCodeFrameError","node","t","isMethod","replaceWith","buildUndefinedNode","constructor","memberExpression","thisExpression","identifier","id","generateUidIdentifier","parentPath","hasOwnBinding","bindingIdentifierEquals","rename","parent","conditionalExpression","binaryExpression","cloneNode"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-new-target\",\n\n    visitor: {\n      MetaProperty(path) {\n        const meta = path.get(\"meta\");\n        const property = path.get(\"property\");\n        const { scope } = path;\n\n        if (\n          meta.isIdentifier({ name: \"new\" }) &&\n          property.isIdentifier({ name: \"target\" })\n        ) {\n          const func = path.findParent(path => {\n            if (path.isClass()) return true;\n            if (path.isFunction() && !path.isArrowFunctionExpression()) {\n              if (path.isClassMethod({ kind: \"constructor\" })) {\n                return false;\n              }\n\n              return true;\n            }\n            return false;\n          }) as NodePath<\n            | t.FunctionDeclaration\n            | t.FunctionExpression\n            | t.Class\n            | t.ClassMethod\n            | t.ClassPrivateMethod\n          >;\n\n          if (!func) {\n            throw path.buildCodeFrameError(\n              \"new.target must be under a (non-arrow) function or a class.\",\n            );\n          }\n\n          const { node } = func;\n          if (t.isMethod(node)) {\n            path.replaceWith(scope.buildUndefinedNode());\n            return;\n          }\n\n          const constructor = t.memberExpression(\n            t.thisExpression(),\n            t.identifier(\"constructor\"),\n          );\n\n          if (func.isClass()) {\n            path.replaceWith(constructor);\n            return;\n          }\n\n          if (!node.id) {\n            node.id = scope.generateUidIdentifier(\"target\");\n          } else {\n            // packages/babel-helper-create-class-features-plugin/src/fields.ts#L192 unshadow\n            let scope = path.scope;\n            const name = node.id.name;\n            while (scope !== func.parentPath.scope) {\n              if (\n                scope.hasOwnBinding(name) &&\n                !scope.bindingIdentifierEquals(name, node.id)\n              ) {\n                scope.rename(name);\n              }\n              scope = scope.parent;\n            }\n          }\n\n          path.replaceWith(\n            t.conditionalExpression(\n              t.binaryExpression(\n                \"instanceof\",\n                t.thisExpression(),\n                t.cloneNode(node.id),\n              ),\n              constructor,\n              scope.buildUndefinedNode(),\n            ),\n          );\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-new-target/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-new-target/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-new-target/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-new-target",
+  "version": "7.25.9",
+  "description": "Transforms new.target meta property",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-new-target"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-new-target",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-transform-arrow-functions": "^7.25.9",
+    "@babel/plugin-transform-class-properties": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-nullish-coalescing-operator
+
+> Remove nullish coalescing operator
+
+See our website [@babel/plugin-transform-nullish-coalescing-operator](https://babeljs.io/docs/babel-plugin-transform-nullish-coalescing-operator) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-nullish-coalescing-operator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-nullish-coalescing-operator --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,49 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, {
+  loose = false
+}) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : loose;
+  const pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : false;
+  return {
+    name: "transform-nullish-coalescing-operator",
+    manipulateOptions: (_, parser) => parser.plugins.push("nullishCoalescingOperator"),
+    visitor: {
+      LogicalExpression(path) {
+        const {
+          node,
+          scope
+        } = path;
+        if (node.operator !== "??") {
+          return;
+        }
+        let ref;
+        let assignment;
+        if (pureGetters && scope.path.isPattern() && _core.types.isMemberExpression(node.left) && !node.left.computed && _core.types.isIdentifier(node.left.object) && _core.types.isIdentifier(node.left.property) || _core.types.isIdentifier(node.left) && (pureGetters || scope.hasBinding(node.left.name))) {
+          ref = node.left;
+          assignment = _core.types.cloneNode(node.left);
+        } else if (scope.path.isPattern()) {
+          path.replaceWith(_core.template.statement.ast`(() => ${path.node})()`);
+          return;
+        } else {
+          ref = scope.generateUidIdentifierBasedOnNode(node.left);
+          scope.push({
+            id: _core.types.cloneNode(ref)
+          });
+          assignment = _core.types.assignmentExpression("=", ref, node.left);
+        }
+        path.replaceWith(_core.types.conditionalExpression(noDocumentAll ? _core.types.binaryExpression("!=", assignment, _core.types.nullLiteral()) : _core.types.logicalExpression("&&", _core.types.binaryExpression("!==", assignment, _core.types.nullLiteral()), _core.types.binaryExpression("!==", _core.types.cloneNode(ref), scope.buildUndefinedNode())), _core.types.cloneNode(ref), node.right));
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","loose","_api$assumption","_api$assumption2","assertVersion","noDocumentAll","assumption","pureGetters","name","manipulateOptions","_","parser","plugins","push","visitor","LogicalExpression","path","node","scope","operator","ref","assignment","isPattern","t","isMemberExpression","left","computed","isIdentifier","object","property","hasBinding","cloneNode","replaceWith","template","statement","ast","generateUidIdentifierBasedOnNode","id","assignmentExpression","conditionalExpression","binaryExpression","nullLiteral","logicalExpression","buildUndefinedNode","right"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, template } from \"@babel/core\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, { loose = false }: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n  const noDocumentAll = api.assumption(\"noDocumentAll\") ?? loose;\n  const pureGetters = api.assumption(\"pureGetters\") ?? false;\n\n  return {\n    name: \"transform-nullish-coalescing-operator\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"nullishCoalescingOperator\"),\n\n    visitor: {\n      LogicalExpression(path) {\n        const { node, scope } = path;\n        if (node.operator !== \"??\") {\n          return;\n        }\n\n        let ref;\n        let assignment;\n        // skip creating extra reference when `left` is pure\n        if (\n          (pureGetters &&\n            scope.path.isPattern() &&\n            t.isMemberExpression(node.left) &&\n            !node.left.computed &&\n            t.isIdentifier(node.left.object) &&\n            t.isIdentifier(node.left.property)) ||\n          (t.isIdentifier(node.left) &&\n            (pureGetters ||\n              // globalThis\n              scope.hasBinding(node.left.name)))\n        ) {\n          ref = node.left;\n          assignment = t.cloneNode(node.left);\n        } else if (scope.path.isPattern()) {\n          // Replace `function (a, x = a.b ?? c) {}` to `function (a, x = (() => a.b ?? c)() ){}`\n          // so the temporary variable can be injected in correct scope\n          path.replaceWith(template.statement.ast`(() => ${path.node})()`);\n          // The injected nullish expression will be queued and eventually transformed when visited\n          return;\n        } else {\n          ref = scope.generateUidIdentifierBasedOnNode(node.left);\n          scope.push({ id: t.cloneNode(ref) });\n          assignment = t.assignmentExpression(\"=\", ref, node.left);\n        }\n\n        path.replaceWith(\n          t.conditionalExpression(\n            // We cannot use `!= null` in spec mode because\n            // `document.all == null` and `document.all` is not \"nullish\".\n            noDocumentAll\n              ? t.binaryExpression(\"!=\", assignment, t.nullLiteral())\n              : t.logicalExpression(\n                  \"&&\",\n                  t.binaryExpression(\"!==\", assignment, t.nullLiteral()),\n                  t.binaryExpression(\n                    \"!==\",\n                    t.cloneNode(ref),\n                    scope.buildUndefinedNode(),\n                  ),\n                ),\n            t.cloneNode(ref),\n            node.right,\n          ),\n        );\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-nullish-coalescing-operator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-nullish-coalescing-operator",
+  "version": "7.26.6",
+  "description": "Remove nullish coalescing operator",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-nullish-coalescing-operator"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-nullish-coalescing-operator",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.26.5"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-numeric-separator
+
+> Remove numeric separators from Decimal, Binary, Hex and Octal literals
+
+See our website [@babel/plugin-transform-numeric-separator](https://babeljs.io/docs/babel-plugin-transform-numeric-separator) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-numeric-separator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-numeric-separator --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+function remover({
+  node
+}) {
+  var _extra$raw;
+  const {
+    extra
+  } = node;
+  if (extra != null && (_extra$raw = extra.raw) != null && _extra$raw.includes("_")) {
+    extra.raw = extra.raw.replace(/_/g, "");
+  }
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  return {
+    name: "transform-numeric-separator",
+    manipulateOptions: (_, parser) => parser.plugins.push("numericSeparator"),
+    visitor: {
+      NumericLiteral: remover,
+      BigIntLiteral: remover
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","remover","node","_extra$raw","extra","raw","includes","replace","_default","exports","default","declare","api","assertVersion","name","manipulateOptions","_","parser","plugins","push","visitor","NumericLiteral","BigIntLiteral"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { NodePath, types as t } from \"@babel/core\";\n\n/**\n * Given a bigIntLiteral or NumericLiteral, remove numeric\n * separator `_` from its raw representation\n *\n * @param {NodePath<BigIntLiteral | NumericLiteral>} { node }: A Babel AST node path\n */\nfunction remover({ node }: NodePath<t.BigIntLiteral | t.NumericLiteral>) {\n  const { extra } = node;\n  // @ts-expect-error todo(flow->ts)\n  if (extra?.raw?.includes(\"_\")) {\n    // @ts-expect-error todo(flow->ts)\n    extra.raw = extra.raw.replace(/_/g, \"\");\n  }\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-numeric-separator\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"numericSeparator\"),\n\n    visitor: {\n      NumericLiteral: remover,\n      BigIntLiteral: remover,\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AASA,SAASC,OAAOA,CAAC;EAAEC;AAAmD,CAAC,EAAE;EAAA,IAAAC,UAAA;EACvE,MAAM;IAAEC;EAAM,CAAC,GAAGF,IAAI;EAEtB,IAAIE,KAAK,aAAAD,UAAA,GAALC,KAAK,CAAEC,GAAG,aAAVF,UAAA,CAAYG,QAAQ,CAAC,GAAG,CAAC,EAAE;IAE7BF,KAAK,CAACC,GAAG,GAAGD,KAAK,CAACC,GAAG,CAACE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;EACzC;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,uCAAoB,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,6BAA6B;IACnCC,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,kBAAkB,CAAC;IAE1DC,OAAO,EAAE;MACPC,cAAc,EAAEpB,OAAO;MACvBqB,aAAa,EAAErB;IACjB;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-numeric-separator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-numeric-separator",
+  "version": "7.25.9",
+  "description": "Remove numeric separators from Decimal, Binary, Hex and Octal literals",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-numeric-separator"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-numeric-separator",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-object-rest-spread
+
+> Compile object rest and spread to ES5
+
+See our website [@babel/plugin-transform-object-rest-spread](https://babeljs.io/docs/babel-plugin-transform-object-rest-spread) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-object-rest-spread
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-object-rest-spread --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,466 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+var core = require('@babel/core');
+var pluginTransformParameters = require('@babel/plugin-transform-parameters');
+var helperCompilationTargets = require('@babel/helper-compilation-targets');
+
+function shouldStoreRHSInTemporaryVariable(node) {
+  if (!node) return false;
+  if (node.type === "ArrayPattern") {
+    const nonNullElements = node.elements.filter(element => element !== null);
+    if (nonNullElements.length > 1) return true;else return shouldStoreRHSInTemporaryVariable(nonNullElements[0]);
+  } else if (node.type === "ObjectPattern") {
+    const {
+      properties
+    } = node;
+    if (properties.length > 1) return true;else if (properties.length === 0) return false;else {
+      const firstProperty = properties[0];
+      if (firstProperty.type === "ObjectProperty") {
+        return shouldStoreRHSInTemporaryVariable(firstProperty.value);
+      } else {
+        return shouldStoreRHSInTemporaryVariable(firstProperty);
+      }
+    }
+  } else if (node.type === "AssignmentPattern") {
+    return shouldStoreRHSInTemporaryVariable(node.left);
+  } else if (node.type === "RestElement") {
+    if (node.argument.type === "Identifier") return true;
+    return shouldStoreRHSInTemporaryVariable(node.argument);
+  } else {
+    return false;
+  }
+}
+
+var compatData = {
+  "Object.assign": {
+    chrome: "49",
+    opera: "36",
+    edge: "13",
+    firefox: "36",
+    safari: "10",
+    node: "6",
+    deno: "1",
+    ios: "10",
+    samsung: "5",
+    opera_mobile: "36",
+    electron: "0.37"
+  }
+};
+
+const {
+  isAssignmentPattern,
+  isObjectProperty
+} = core.types;
+{
+  const node = core.types.identifier("a");
+  const property = core.types.objectProperty(core.types.identifier("key"), node);
+  const pattern = core.types.objectPattern([property]);
+  var ZERO_REFS = core.types.isReferenced(node, property, pattern) ? 1 : 0;
+}
+var index = helperPluginUtils.declare((api, opts) => {
+  var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const targets = api.targets();
+  const supportsObjectAssign = !helperCompilationTargets.isRequired("Object.assign", targets, {
+    compatData
+  });
+  const {
+    useBuiltIns = supportsObjectAssign,
+    loose = false
+  } = opts;
+  if (typeof loose !== "boolean") {
+    throw new Error(".loose must be a boolean, or undefined");
+  }
+  const ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : loose;
+  const objectRestNoSymbols = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : loose;
+  const pureGetters = (_api$assumption3 = api.assumption("pureGetters")) != null ? _api$assumption3 : loose;
+  const setSpreadProperties = (_api$assumption4 = api.assumption("setSpreadProperties")) != null ? _api$assumption4 : loose;
+  function getExtendsHelper(file) {
+    return useBuiltIns ? core.types.memberExpression(core.types.identifier("Object"), core.types.identifier("assign")) : file.addHelper("extends");
+  }
+  function hasRestElement(path) {
+    let foundRestElement = false;
+    visitRestElements(path, restElement => {
+      foundRestElement = true;
+      restElement.stop();
+    });
+    return foundRestElement;
+  }
+  function hasObjectPatternRestElement(path) {
+    let foundRestElement = false;
+    visitRestElements(path, restElement => {
+      if (restElement.parentPath.isObjectPattern()) {
+        foundRestElement = true;
+        restElement.stop();
+      }
+    });
+    return foundRestElement;
+  }
+  function visitRestElements(path, visitor) {
+    path.traverse({
+      Expression(path) {
+        const {
+          parent,
+          key
+        } = path;
+        if (isAssignmentPattern(parent) && key === "right" || isObjectProperty(parent) && parent.computed && key === "key") {
+          path.skip();
+        }
+      },
+      RestElement: visitor
+    });
+  }
+  function hasSpread(node) {
+    for (const prop of node.properties) {
+      if (core.types.isSpreadElement(prop)) {
+        return true;
+      }
+    }
+    return false;
+  }
+  function extractNormalizedKeys(node) {
+    const props = node.properties;
+    const keys = [];
+    let allPrimitives = true;
+    let hasTemplateLiteral = false;
+    for (const prop of props) {
+      const {
+        key
+      } = prop;
+      if (core.types.isIdentifier(key) && !prop.computed) {
+        keys.push(core.types.stringLiteral(key.name));
+      } else if (core.types.isTemplateLiteral(key)) {
+        keys.push(core.types.cloneNode(key));
+        hasTemplateLiteral = true;
+      } else if (core.types.isLiteral(key)) {
+        keys.push(core.types.stringLiteral(String(key.value)));
+      } else {
+        keys.push(core.types.cloneNode(key));
+        if (core.types.isMemberExpression(key, {
+          computed: false
+        }) && core.types.isIdentifier(key.object, {
+          name: "Symbol"
+        }) || core.types.isCallExpression(key) && core.types.matchesPattern(key.callee, "Symbol.for")) ; else {
+          allPrimitives = false;
+        }
+      }
+    }
+    return {
+      keys,
+      allPrimitives,
+      hasTemplateLiteral
+    };
+  }
+  function replaceImpureComputedKeys(properties, scope) {
+    const impureComputedPropertyDeclarators = [];
+    for (const propPath of properties) {
+      const key = propPath.get("key");
+      if (propPath.node.computed && !key.isPure()) {
+        const name = scope.generateUidBasedOnNode(key.node);
+        const declarator = core.types.variableDeclarator(core.types.identifier(name), key.node);
+        impureComputedPropertyDeclarators.push(declarator);
+        key.replaceWith(core.types.identifier(name));
+      }
+    }
+    return impureComputedPropertyDeclarators;
+  }
+  function removeUnusedExcludedKeys(path) {
+    const bindings = path.getOuterBindingIdentifierPaths();
+    Object.keys(bindings).forEach(bindingName => {
+      const bindingParentPath = bindings[bindingName].parentPath;
+      if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) {
+        return;
+      }
+      bindingParentPath.remove();
+    });
+  }
+  function createObjectRest(path, file, objRef) {
+    const props = path.get("properties");
+    const last = props[props.length - 1];
+    core.types.assertRestElement(last.node);
+    const restElement = core.types.cloneNode(last.node);
+    last.remove();
+    const impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope);
+    const {
+      keys,
+      allPrimitives,
+      hasTemplateLiteral
+    } = extractNormalizedKeys(path.node);
+    if (keys.length === 0) {
+      return [impureComputedPropertyDeclarators, restElement.argument, core.types.callExpression(getExtendsHelper(file), [core.types.objectExpression([]), core.types.sequenceExpression([core.types.callExpression(file.addHelper("objectDestructuringEmpty"), [core.types.cloneNode(objRef)]), core.types.cloneNode(objRef)])])];
+    }
+    let keyExpression;
+    if (!allPrimitives) {
+      keyExpression = core.types.callExpression(core.types.memberExpression(core.types.arrayExpression(keys), core.types.identifier("map")), [file.addHelper("toPropertyKey")]);
+    } else {
+      keyExpression = core.types.arrayExpression(keys);
+      if (!hasTemplateLiteral && !core.types.isProgram(path.scope.block)) {
+        const program = path.findParent(path => path.isProgram());
+        const id = path.scope.generateUidIdentifier("excluded");
+        program.scope.push({
+          id,
+          init: keyExpression,
+          kind: "const"
+        });
+        keyExpression = core.types.cloneNode(id);
+      }
+    }
+    return [impureComputedPropertyDeclarators, restElement.argument, core.types.callExpression(file.addHelper(`objectWithoutProperties${objectRestNoSymbols ? "Loose" : ""}`), [core.types.cloneNode(objRef), keyExpression])];
+  }
+  function replaceRestElement(parentPath, paramPath, container) {
+    if (paramPath.isAssignmentPattern()) {
+      replaceRestElement(parentPath, paramPath.get("left"), container);
+      return;
+    }
+    if (paramPath.isArrayPattern() && hasRestElement(paramPath)) {
+      const elements = paramPath.get("elements");
+      for (let i = 0; i < elements.length; i++) {
+        replaceRestElement(parentPath, elements[i], container);
+      }
+    }
+    if (paramPath.isObjectPattern() && hasRestElement(paramPath)) {
+      const uid = parentPath.scope.generateUidIdentifier("ref");
+      const declar = core.types.variableDeclaration("let", [core.types.variableDeclarator(paramPath.node, uid)]);
+      if (container) {
+        container.push(declar);
+      } else {
+        parentPath.ensureBlock();
+        parentPath.get("body").unshiftContainer("body", declar);
+      }
+      paramPath.replaceWith(core.types.cloneNode(uid));
+    }
+  }
+  return {
+    name: "transform-object-rest-spread",
+    manipulateOptions: (_, parser) => parser.plugins.push("objectRestSpread"),
+    visitor: {
+      Function(path) {
+        const params = path.get("params");
+        const paramsWithRestElement = new Set();
+        const idsInRestParams = new Set();
+        for (let i = 0; i < params.length; ++i) {
+          const param = params[i];
+          if (hasRestElement(param)) {
+            paramsWithRestElement.add(i);
+            for (const name of Object.keys(param.getBindingIdentifiers())) {
+              idsInRestParams.add(name);
+            }
+          }
+        }
+        let idInRest = false;
+        const IdentifierHandler = function (path, functionScope) {
+          const name = path.node.name;
+          if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) {
+            idInRest = true;
+            path.stop();
+          }
+        };
+        let i;
+        for (i = 0; i < params.length && !idInRest; ++i) {
+          const param = params[i];
+          if (!paramsWithRestElement.has(i)) {
+            if (param.isReferencedIdentifier() || param.isBindingIdentifier()) {
+              IdentifierHandler(param, path.scope);
+            } else {
+              param.traverse({
+                "Scope|TypeAnnotation|TSTypeAnnotation": path => path.skip(),
+                "ReferencedIdentifier|BindingIdentifier": IdentifierHandler
+              }, path.scope);
+            }
+          }
+        }
+        if (!idInRest) {
+          for (let i = 0; i < params.length; ++i) {
+            const param = params[i];
+            if (paramsWithRestElement.has(i)) {
+              replaceRestElement(path, param);
+            }
+          }
+        } else {
+          const shouldTransformParam = idx => idx >= i - 1 || paramsWithRestElement.has(idx);
+          pluginTransformParameters.convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement);
+        }
+      },
+      VariableDeclarator(path, file) {
+        if (!path.get("id").isObjectPattern()) {
+          return;
+        }
+        let insertionPath = path;
+        const originalPath = path;
+        visitRestElements(path.get("id"), path => {
+          if (!path.parentPath.isObjectPattern()) {
+            return;
+          }
+          if (shouldStoreRHSInTemporaryVariable(originalPath.node.id) && !core.types.isIdentifier(originalPath.node.init)) {
+            const initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref");
+            originalPath.insertBefore(core.types.variableDeclarator(initRef, originalPath.node.init));
+            originalPath.replaceWith(core.types.variableDeclarator(originalPath.node.id, core.types.cloneNode(initRef)));
+            return;
+          }
+          let ref = originalPath.node.init;
+          const refPropertyPath = [];
+          let kind;
+          path.findParent(path => {
+            if (path.isObjectProperty()) {
+              refPropertyPath.unshift(path);
+            } else if (path.isVariableDeclarator()) {
+              kind = path.parentPath.node.kind;
+              return true;
+            }
+          });
+          const impureObjRefComputedDeclarators = replaceImpureComputedKeys(refPropertyPath, path.scope);
+          refPropertyPath.forEach(prop => {
+            const {
+              node
+            } = prop;
+            ref = core.types.memberExpression(ref, core.types.cloneNode(node.key), node.computed || core.types.isLiteral(node.key));
+          });
+          const objectPatternPath = path.findParent(path => path.isObjectPattern());
+          const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectRest(objectPatternPath, file, ref);
+          if (pureGetters) {
+            removeUnusedExcludedKeys(objectPatternPath);
+          }
+          core.types.assertIdentifier(argument);
+          insertionPath.insertBefore(impureComputedPropertyDeclarators);
+          insertionPath.insertBefore(impureObjRefComputedDeclarators);
+          insertionPath = insertionPath.insertAfter(core.types.variableDeclarator(argument, callExpression))[0];
+          path.scope.registerBinding(kind, insertionPath);
+          if (objectPatternPath.node.properties.length === 0) {
+            objectPatternPath.findParent(path => path.isObjectProperty() || path.isVariableDeclarator()).remove();
+          }
+        });
+      },
+      ExportNamedDeclaration(path) {
+        const declaration = path.get("declaration");
+        if (!declaration.isVariableDeclaration()) return;
+        const hasRest = declaration.get("declarations").some(path => hasObjectPatternRestElement(path.get("id")));
+        if (!hasRest) return;
+        const specifiers = [];
+        for (const name of Object.keys(path.getOuterBindingIdentifiers(true))) {
+          specifiers.push(core.types.exportSpecifier(core.types.identifier(name), core.types.identifier(name)));
+        }
+        path.replaceWith(declaration.node);
+        path.insertAfter(core.types.exportNamedDeclaration(null, specifiers));
+      },
+      CatchClause(path) {
+        const paramPath = path.get("param");
+        replaceRestElement(path, paramPath);
+      },
+      AssignmentExpression(path, file) {
+        const leftPath = path.get("left");
+        if (leftPath.isObjectPattern() && hasRestElement(leftPath)) {
+          const nodes = [];
+          const refName = path.scope.generateUidBasedOnNode(path.node.right, "ref");
+          nodes.push(core.types.variableDeclaration("var", [core.types.variableDeclarator(core.types.identifier(refName), path.node.right)]));
+          const [impureComputedPropertyDeclarators, argument, callExpression] = createObjectRest(leftPath, file, core.types.identifier(refName));
+          if (impureComputedPropertyDeclarators.length > 0) {
+            nodes.push(core.types.variableDeclaration("var", impureComputedPropertyDeclarators));
+          }
+          const nodeWithoutSpread = core.types.cloneNode(path.node);
+          nodeWithoutSpread.right = core.types.identifier(refName);
+          nodes.push(core.types.expressionStatement(nodeWithoutSpread));
+          nodes.push(core.types.expressionStatement(core.types.assignmentExpression("=", argument, callExpression)));
+          nodes.push(core.types.expressionStatement(core.types.identifier(refName)));
+          path.replaceWithMultiple(nodes);
+        }
+      },
+      ForXStatement(path) {
+        const {
+          node,
+          scope
+        } = path;
+        const leftPath = path.get("left");
+        const left = node.left;
+        if (!hasObjectPatternRestElement(leftPath)) {
+          return;
+        }
+        if (!core.types.isVariableDeclaration(left)) {
+          const temp = scope.generateUidIdentifier("ref");
+          node.left = core.types.variableDeclaration("var", [core.types.variableDeclarator(temp)]);
+          path.ensureBlock();
+          const body = path.node.body;
+          if (body.body.length === 0 && path.isCompletionRecord()) {
+            body.body.unshift(core.types.expressionStatement(scope.buildUndefinedNode()));
+          }
+          body.body.unshift(core.types.expressionStatement(core.types.assignmentExpression("=", left, core.types.cloneNode(temp))));
+        } else {
+          const pattern = left.declarations[0].id;
+          const key = scope.generateUidIdentifier("ref");
+          node.left = core.types.variableDeclaration(left.kind, [core.types.variableDeclarator(key, null)]);
+          path.ensureBlock();
+          const body = node.body;
+          body.body.unshift(core.types.variableDeclaration(node.left.kind, [core.types.variableDeclarator(pattern, core.types.cloneNode(key))]));
+        }
+      },
+      ArrayPattern(path) {
+        const objectPatterns = [];
+        visitRestElements(path, path => {
+          if (!path.parentPath.isObjectPattern()) {
+            return;
+          }
+          const objectPattern = path.parentPath;
+          const uid = path.scope.generateUidIdentifier("ref");
+          objectPatterns.push(core.types.variableDeclarator(objectPattern.node, uid));
+          objectPattern.replaceWith(core.types.cloneNode(uid));
+          path.skip();
+        });
+        if (objectPatterns.length > 0) {
+          const statementPath = path.getStatementParent();
+          const statementNode = statementPath.node;
+          const kind = statementNode.type === "VariableDeclaration" ? statementNode.kind : "var";
+          statementPath.insertAfter(core.types.variableDeclaration(kind, objectPatterns));
+        }
+      },
+      ObjectExpression(path, file) {
+        if (!hasSpread(path.node)) return;
+        let helper;
+        if (setSpreadProperties) {
+          helper = getExtendsHelper(file);
+        } else {
+          {
+            try {
+              helper = file.addHelper("objectSpread2");
+            } catch (_unused) {
+              this.file.declarations["objectSpread2"] = null;
+              helper = file.addHelper("objectSpread");
+            }
+          }
+        }
+        let exp = null;
+        let props = [];
+        function make() {
+          const hadProps = props.length > 0;
+          const obj = core.types.objectExpression(props);
+          props = [];
+          if (!exp) {
+            exp = core.types.callExpression(helper, [obj]);
+            return;
+          }
+          if (pureGetters) {
+            if (hadProps) {
+              exp.arguments.push(obj);
+            }
+            return;
+          }
+          exp = core.types.callExpression(core.types.cloneNode(helper), [exp, ...(hadProps ? [core.types.objectExpression([]), obj] : [])]);
+        }
+        for (const prop of path.node.properties) {
+          if (core.types.isSpreadElement(prop)) {
+            make();
+            exp.arguments.push(prop.argument);
+          } else {
+            props.push(prop);
+          }
+        }
+        if (props.length) make();
+        path.replaceWith(exp);
+      }
+    }
+  };
+});
+
+exports.default = index;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/shouldStoreRHSInTemporaryVariable.ts","../src/compat-data.ts","../src/index.ts"],"sourcesContent":["import type { types as t } from \"@babel/core\";\n\n/**\n * This is a helper function to determine if we should create an intermediate variable\n * such that the RHS of an assignment is not duplicated.\n *\n * See https://github.com/babel/babel/pull/13711#issuecomment-914388382 for discussion\n * on further optimizations.\n */\nexport default function shouldStoreRHSInTemporaryVariable(\n  node: t.LVal,\n): boolean {\n  if (!node) return false;\n  if (node.type === \"ArrayPattern\") {\n    const nonNullElements = node.elements.filter(element => element !== null);\n    if (nonNullElements.length > 1) return true;\n    else return shouldStoreRHSInTemporaryVariable(nonNullElements[0]);\n  } else if (node.type === \"ObjectPattern\") {\n    const { properties } = node;\n    if (properties.length > 1) return true;\n    else if (properties.length === 0) return false;\n    else {\n      const firstProperty = properties[0];\n      if (firstProperty.type === \"ObjectProperty\") {\n        // the value of the property must be an LVal\n        return shouldStoreRHSInTemporaryVariable(firstProperty.value as t.LVal);\n      } else {\n        return shouldStoreRHSInTemporaryVariable(firstProperty);\n      }\n    }\n  } else if (node.type === \"AssignmentPattern\") {\n    return shouldStoreRHSInTemporaryVariable(node.left);\n  } else if (node.type === \"RestElement\") {\n    if (node.argument.type === \"Identifier\") return true;\n    return shouldStoreRHSInTemporaryVariable(node.argument);\n  } else {\n    // node is Identifier or MemberExpression\n    return false;\n  }\n}\n","export default {\n  \"Object.assign\": {\n    chrome: \"49\",\n    opera: \"36\",\n    edge: \"13\",\n    firefox: \"36\",\n    safari: \"10\",\n    node: \"6\",\n    deno: \"1\",\n    ios: \"10\",\n    samsung: \"5\",\n    opera_mobile: \"36\",\n    electron: \"0.37\",\n  },\n};\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\nimport type { PluginPass, NodePath, Scope } from \"@babel/core\";\nimport { convertFunctionParams } from \"@babel/plugin-transform-parameters\";\nimport { isRequired } from \"@babel/helper-compilation-targets\";\nimport shouldStoreRHSInTemporaryVariable from \"./shouldStoreRHSInTemporaryVariable.ts\";\nimport compatData from \"./compat-data.ts\";\n\nconst { isAssignmentPattern, isObjectProperty } = t;\n// @babel/types <=7.3.3 counts FOO as referenced in var { x: FOO }.\n// We need to detect this bug to know if \"unused\" means 0 or 1 references.\nif (!process.env.BABEL_8_BREAKING) {\n  const node = t.identifier(\"a\");\n  const property = t.objectProperty(t.identifier(\"key\"), node);\n  const pattern = t.objectPattern([property]);\n\n  // eslint-disable-next-line no-var\n  var ZERO_REFS = t.isReferenced(node, property, pattern) ? 1 : 0;\n}\n\ntype Param = NodePath<t.Function[\"params\"][number]>;\nexport interface Options {\n  useBuiltIns?: boolean;\n  loose?: boolean;\n}\n\nexport default declare((api, opts: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const targets = api.targets();\n  const supportsObjectAssign = !isRequired(\"Object.assign\", targets, {\n    compatData,\n  });\n\n  const { useBuiltIns = supportsObjectAssign, loose = false } = opts;\n\n  if (typeof loose !== \"boolean\") {\n    throw new Error(\".loose must be a boolean, or undefined\");\n  }\n\n  const ignoreFunctionLength = api.assumption(\"ignoreFunctionLength\") ?? loose;\n  const objectRestNoSymbols = api.assumption(\"objectRestNoSymbols\") ?? loose;\n  const pureGetters = api.assumption(\"pureGetters\") ?? loose;\n  const setSpreadProperties = api.assumption(\"setSpreadProperties\") ?? loose;\n\n  function getExtendsHelper(\n    file: PluginPass,\n  ): t.MemberExpression | t.Identifier {\n    return useBuiltIns\n      ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n      : file.addHelper(\"extends\");\n  }\n\n  function hasRestElement(path: Param) {\n    let foundRestElement = false;\n    visitRestElements(path, restElement => {\n      foundRestElement = true;\n      restElement.stop();\n    });\n    return foundRestElement;\n  }\n\n  function hasObjectPatternRestElement(path: NodePath): boolean {\n    let foundRestElement = false;\n    visitRestElements(path, restElement => {\n      if (restElement.parentPath.isObjectPattern()) {\n        foundRestElement = true;\n        restElement.stop();\n      }\n    });\n    return foundRestElement;\n  }\n\n  function visitRestElements(\n    path: NodePath,\n    visitor: (path: NodePath<t.RestElement>) => any,\n  ) {\n    path.traverse({\n      Expression(path) {\n        const { parent, key } = path;\n        if (\n          (isAssignmentPattern(parent) && key === \"right\") ||\n          (isObjectProperty(parent) && parent.computed && key === \"key\")\n        ) {\n          path.skip();\n        }\n      },\n      RestElement: visitor,\n    });\n  }\n\n  function hasSpread(node: t.ObjectExpression): boolean {\n    for (const prop of node.properties) {\n      if (t.isSpreadElement(prop)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  // returns an array of all keys of an object, and a status flag indicating if all extracted keys\n  // were converted to stringLiterals or not\n  // e.g. extracts {keys: [\"a\", \"b\", \"3\", ++x], allPrimitives: false }\n  // from ast of {a: \"foo\", b, 3: \"bar\", [++x]: \"baz\"}\n  // `allPrimitives: false` doesn't necessarily mean that there is a non-primitive, but just\n  // that we are not sure.\n  function extractNormalizedKeys(node: t.ObjectPattern) {\n    // RestElement has been removed in createObjectRest\n    const props = node.properties as t.ObjectProperty[];\n    const keys: t.Expression[] = [];\n    let allPrimitives = true;\n    let hasTemplateLiteral = false;\n\n    for (const prop of props) {\n      const { key } = prop;\n      if (t.isIdentifier(key) && !prop.computed) {\n        // since a key {a: 3} is equivalent to {\"a\": 3}, use the latter\n        keys.push(t.stringLiteral(key.name));\n      } else if (t.isTemplateLiteral(key)) {\n        keys.push(t.cloneNode(key));\n        hasTemplateLiteral = true;\n      } else if (t.isLiteral(key)) {\n        keys.push(\n          t.stringLiteral(\n            String(\n              // @ts-expect-error prop.key can not be a NullLiteral\n              key.value,\n            ),\n          ),\n        );\n      } else {\n        // @ts-expect-error private name has been handled by destructuring-private\n        keys.push(t.cloneNode(key));\n\n        if (\n          (t.isMemberExpression(key, { computed: false }) &&\n            t.isIdentifier(key.object, { name: \"Symbol\" })) ||\n          (t.isCallExpression(key) &&\n            t.matchesPattern(key.callee, \"Symbol.for\"))\n        ) {\n          // there all return a primitive\n        } else {\n          allPrimitives = false;\n        }\n      }\n    }\n\n    return { keys, allPrimitives, hasTemplateLiteral };\n  }\n\n  // replaces impure computed keys with new identifiers\n  // and returns variable declarators of these new identifiers\n  function replaceImpureComputedKeys(\n    properties: NodePath<t.ObjectProperty>[],\n    scope: Scope,\n  ) {\n    const impureComputedPropertyDeclarators: t.VariableDeclarator[] = [];\n    for (const propPath of properties) {\n      // PrivateName is handled in destructuring-private plugin\n      const key = propPath.get(\"key\") as NodePath<t.Expression>;\n      if (propPath.node.computed && !key.isPure()) {\n        const name = scope.generateUidBasedOnNode(key.node);\n        const declarator = t.variableDeclarator(t.identifier(name), key.node);\n        impureComputedPropertyDeclarators.push(declarator);\n        key.replaceWith(t.identifier(name));\n      }\n    }\n    return impureComputedPropertyDeclarators;\n  }\n\n  function removeUnusedExcludedKeys(path: NodePath<t.ObjectPattern>): void {\n    const bindings = path.getOuterBindingIdentifierPaths();\n\n    Object.keys(bindings).forEach(bindingName => {\n      const bindingParentPath = bindings[bindingName].parentPath;\n      if (\n        path.scope.getBinding(bindingName).references >\n          (process.env.BABEL_8_BREAKING ? 0 : ZERO_REFS) ||\n        !bindingParentPath.isObjectProperty()\n      ) {\n        return;\n      }\n      bindingParentPath.remove();\n    });\n  }\n\n  //expects path to an object pattern\n  function createObjectRest(\n    path: NodePath<t.ObjectPattern>,\n    file: PluginPass,\n    objRef: t.Identifier | t.MemberExpression,\n  ): [\n    t.VariableDeclarator[],\n    t.AssignmentExpression[\"left\"],\n    t.CallExpression,\n  ] {\n    const props = path.get(\"properties\");\n    const last = props[props.length - 1];\n    t.assertRestElement(last.node);\n    const restElement = t.cloneNode(last.node);\n    last.remove();\n\n    const impureComputedPropertyDeclarators = replaceImpureComputedKeys(\n      path.get(\"properties\") as NodePath<t.ObjectProperty>[],\n      path.scope,\n    );\n    const { keys, allPrimitives, hasTemplateLiteral } = extractNormalizedKeys(\n      path.node,\n    );\n\n    if (keys.length === 0) {\n      return [\n        impureComputedPropertyDeclarators,\n        restElement.argument,\n        t.callExpression(getExtendsHelper(file), [\n          t.objectExpression([]),\n          t.sequenceExpression([\n            t.callExpression(file.addHelper(\"objectDestructuringEmpty\"), [\n              t.cloneNode(objRef),\n            ]),\n            t.cloneNode(objRef),\n          ]),\n        ]),\n      ];\n    }\n\n    let keyExpression;\n    if (!allPrimitives) {\n      // map to toPropertyKey to handle the possible non-string values\n      keyExpression = t.callExpression(\n        t.memberExpression(t.arrayExpression(keys), t.identifier(\"map\")),\n        [file.addHelper(\"toPropertyKey\")],\n      );\n    } else {\n      keyExpression = t.arrayExpression(keys);\n\n      if (!hasTemplateLiteral && !t.isProgram(path.scope.block)) {\n        // Hoist definition of excluded keys, so that it's not created each time.\n        const program = path.findParent(path => path.isProgram());\n        const id = path.scope.generateUidIdentifier(\"excluded\");\n\n        program.scope.push({\n          id,\n          init: keyExpression,\n          kind: \"const\",\n        });\n\n        keyExpression = t.cloneNode(id);\n      }\n    }\n\n    return [\n      impureComputedPropertyDeclarators,\n      restElement.argument,\n      t.callExpression(\n        file.addHelper(\n          `objectWithoutProperties${objectRestNoSymbols ? \"Loose\" : \"\"}`,\n        ),\n        [t.cloneNode(objRef), keyExpression],\n      ),\n    ];\n  }\n\n  function replaceRestElement(\n    parentPath: NodePath<t.Function | t.CatchClause>,\n    paramPath: NodePath<\n      t.Function[\"params\"][number] | t.AssignmentPattern[\"left\"]\n    >,\n    container?: t.VariableDeclaration[],\n  ): void {\n    if (paramPath.isAssignmentPattern()) {\n      replaceRestElement(parentPath, paramPath.get(\"left\"), container);\n      return;\n    }\n\n    if (paramPath.isArrayPattern() && hasRestElement(paramPath)) {\n      const elements = paramPath.get(\"elements\");\n\n      for (let i = 0; i < elements.length; i++) {\n        replaceRestElement(parentPath, elements[i], container);\n      }\n    }\n\n    if (paramPath.isObjectPattern() && hasRestElement(paramPath)) {\n      const uid = parentPath.scope.generateUidIdentifier(\"ref\");\n\n      const declar = t.variableDeclaration(\"let\", [\n        t.variableDeclarator(paramPath.node, uid),\n      ]);\n\n      if (container) {\n        container.push(declar);\n      } else {\n        parentPath.ensureBlock();\n        (parentPath.get(\"body\") as NodePath<t.BlockStatement>).unshiftContainer(\n          \"body\",\n          declar,\n        );\n      }\n      paramPath.replaceWith(t.cloneNode(uid));\n    }\n  }\n\n  return {\n    name: \"transform-object-rest-spread\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"objectRestSpread\"),\n\n    visitor: {\n      // function a({ b, ...c }) {}\n      Function(path) {\n        const params = path.get(\"params\");\n        const paramsWithRestElement = new Set<number>();\n        const idsInRestParams = new Set();\n        for (let i = 0; i < params.length; ++i) {\n          const param = params[i];\n          if (hasRestElement(param)) {\n            paramsWithRestElement.add(i);\n            for (const name of Object.keys(param.getBindingIdentifiers())) {\n              idsInRestParams.add(name);\n            }\n          }\n        }\n\n        // if true, a parameter exists that has an id in its initializer\n        // that is also an id bound in a rest parameter\n        // example: f({...R}, a = R)\n        let idInRest = false;\n\n        const IdentifierHandler = function (\n          path: NodePath<t.Identifier>,\n          functionScope: Scope,\n        ) {\n          const name = path.node.name;\n          if (\n            path.scope.getBinding(name) === functionScope.getBinding(name) &&\n            idsInRestParams.has(name)\n          ) {\n            idInRest = true;\n            path.stop();\n          }\n        };\n\n        let i: number;\n        for (i = 0; i < params.length && !idInRest; ++i) {\n          const param = params[i];\n          if (!paramsWithRestElement.has(i)) {\n            if (param.isReferencedIdentifier() || param.isBindingIdentifier()) {\n              IdentifierHandler(param, path.scope);\n            } else {\n              param.traverse(\n                {\n                  \"Scope|TypeAnnotation|TSTypeAnnotation\": path => path.skip(),\n                  \"ReferencedIdentifier|BindingIdentifier\": IdentifierHandler,\n                },\n                path.scope,\n              );\n            }\n          }\n        }\n\n        if (!idInRest) {\n          for (let i = 0; i < params.length; ++i) {\n            const param = params[i];\n            if (paramsWithRestElement.has(i)) {\n              replaceRestElement(path, param);\n            }\n          }\n        } else {\n          const shouldTransformParam = (idx: number) =>\n            idx >= i - 1 || paramsWithRestElement.has(idx);\n          convertFunctionParams(\n            path,\n            ignoreFunctionLength,\n            shouldTransformParam,\n            replaceRestElement,\n          );\n        }\n      },\n\n      // adapted from transform-destructuring/src/index.js#pushObjectRest\n      // const { a, ...b } = c;\n      VariableDeclarator(path, file) {\n        if (!path.get(\"id\").isObjectPattern()) {\n          return;\n        }\n\n        let insertionPath = path;\n        const originalPath = path;\n\n        visitRestElements(path.get(\"id\"), path => {\n          if (!path.parentPath.isObjectPattern()) {\n            // Return early if the parent is not an ObjectPattern, but\n            // (for example) an ArrayPattern or Function, because that\n            // means this RestElement is an not an object property.\n            return;\n          }\n\n          if (\n            // skip single-property case, e.g.\n            // const { ...x } = foo();\n            // since the RHS will not be duplicated\n            shouldStoreRHSInTemporaryVariable(originalPath.node.id) &&\n            !t.isIdentifier(originalPath.node.init)\n          ) {\n            // const { a, ...b } = foo();\n            // to avoid calling foo() twice, as a first step convert it to:\n            // const _foo = foo(),\n            //       { a, ...b } = _foo;\n            const initRef = path.scope.generateUidIdentifierBasedOnNode(\n              originalPath.node.init,\n              \"ref\",\n            );\n            // insert _foo = foo()\n            originalPath.insertBefore(\n              t.variableDeclarator(initRef, originalPath.node.init),\n            );\n            // replace foo() with _foo\n            originalPath.replaceWith(\n              t.variableDeclarator(originalPath.node.id, t.cloneNode(initRef)),\n            );\n\n            return;\n          }\n\n          let ref = originalPath.node.init;\n          const refPropertyPath: NodePath<t.ObjectProperty>[] = [];\n          let kind;\n\n          path.findParent((path: NodePath): boolean => {\n            if (path.isObjectProperty()) {\n              refPropertyPath.unshift(path);\n            } else if (path.isVariableDeclarator()) {\n              kind = path.parentPath.node.kind;\n              return true;\n            }\n          });\n\n          const impureObjRefComputedDeclarators = replaceImpureComputedKeys(\n            refPropertyPath,\n            path.scope,\n          );\n          refPropertyPath.forEach(prop => {\n            const { node } = prop;\n            ref = t.memberExpression(\n              ref,\n              t.cloneNode(node.key),\n              node.computed || t.isLiteral(node.key),\n            );\n          });\n\n          //@ts-expect-error: findParent can not apply assertions on result shape\n          const objectPatternPath: NodePath<t.ObjectPattern> = path.findParent(\n            path => path.isObjectPattern(),\n          );\n\n          const [impureComputedPropertyDeclarators, argument, callExpression] =\n            createObjectRest(\n              objectPatternPath,\n              file,\n              ref as t.MemberExpression,\n            );\n\n          if (pureGetters) {\n            removeUnusedExcludedKeys(objectPatternPath);\n          }\n\n          t.assertIdentifier(argument);\n\n          insertionPath.insertBefore(impureComputedPropertyDeclarators);\n\n          insertionPath.insertBefore(impureObjRefComputedDeclarators);\n\n          insertionPath = insertionPath.insertAfter(\n            t.variableDeclarator(argument, callExpression),\n          )[0] as NodePath<t.VariableDeclarator>;\n\n          path.scope.registerBinding(kind, insertionPath);\n\n          if (objectPatternPath.node.properties.length === 0) {\n            objectPatternPath\n              .findParent(\n                path => path.isObjectProperty() || path.isVariableDeclarator(),\n              )\n              .remove();\n          }\n        });\n      },\n\n      // taken from transform-destructuring/src/index.js#visitor\n      // export var { a, ...b } = c;\n      ExportNamedDeclaration(path) {\n        const declaration = path.get(\"declaration\");\n        if (!declaration.isVariableDeclaration()) return;\n\n        const hasRest = declaration\n          .get(\"declarations\")\n          .some(path => hasObjectPatternRestElement(path.get(\"id\")));\n        if (!hasRest) return;\n\n        const specifiers = [];\n\n        for (const name of Object.keys(path.getOuterBindingIdentifiers(true))) {\n          specifiers.push(\n            t.exportSpecifier(t.identifier(name), t.identifier(name)),\n          );\n        }\n\n        // Split the declaration and export list into two declarations so that the variable\n        // declaration can be split up later without needing to worry about not being a\n        // top-level statement.\n        path.replaceWith(declaration.node);\n        path.insertAfter(t.exportNamedDeclaration(null, specifiers));\n      },\n\n      // try {} catch ({a, ...b}) {}\n      CatchClause(path) {\n        const paramPath = path.get(\"param\");\n        replaceRestElement(path, paramPath);\n      },\n\n      // ({a, ...b} = c);\n      AssignmentExpression(path, file) {\n        const leftPath = path.get(\"left\");\n        if (leftPath.isObjectPattern() && hasRestElement(leftPath)) {\n          const nodes = [];\n\n          const refName = path.scope.generateUidBasedOnNode(\n            path.node.right,\n            \"ref\",\n          );\n\n          nodes.push(\n            t.variableDeclaration(\"var\", [\n              t.variableDeclarator(t.identifier(refName), path.node.right),\n            ]),\n          );\n\n          const [impureComputedPropertyDeclarators, argument, callExpression] =\n            createObjectRest(leftPath, file, t.identifier(refName));\n\n          if (impureComputedPropertyDeclarators.length > 0) {\n            nodes.push(\n              t.variableDeclaration(\"var\", impureComputedPropertyDeclarators),\n            );\n          }\n\n          const nodeWithoutSpread = t.cloneNode(path.node);\n          nodeWithoutSpread.right = t.identifier(refName);\n          nodes.push(t.expressionStatement(nodeWithoutSpread));\n          nodes.push(\n            t.expressionStatement(\n              t.assignmentExpression(\"=\", argument, callExpression),\n            ),\n          );\n          nodes.push(t.expressionStatement(t.identifier(refName)));\n\n          path.replaceWithMultiple(nodes);\n        }\n      },\n\n      // taken from transform-destructuring/src/index.js#visitor\n      ForXStatement(path: NodePath<t.ForXStatement>) {\n        const { node, scope } = path;\n        const leftPath = path.get(\"left\");\n        const left = node.left;\n\n        if (!hasObjectPatternRestElement(leftPath)) {\n          return;\n        }\n\n        if (!t.isVariableDeclaration(left)) {\n          // for ({a, ...b} of []) {}\n          const temp = scope.generateUidIdentifier(\"ref\");\n\n          node.left = t.variableDeclaration(\"var\", [\n            t.variableDeclarator(temp),\n          ]);\n\n          path.ensureBlock();\n          const body = path.node.body as t.BlockStatement;\n\n          if (body.body.length === 0 && path.isCompletionRecord()) {\n            body.body.unshift(\n              t.expressionStatement(scope.buildUndefinedNode()),\n            );\n          }\n\n          body.body.unshift(\n            t.expressionStatement(\n              t.assignmentExpression(\"=\", left, t.cloneNode(temp)),\n            ),\n          );\n        } else {\n          // for (var {a, ...b} of []) {}\n          const pattern = left.declarations[0].id;\n\n          const key = scope.generateUidIdentifier(\"ref\");\n          node.left = t.variableDeclaration(left.kind, [\n            t.variableDeclarator(key, null),\n          ]);\n\n          path.ensureBlock();\n          const body = node.body as t.BlockStatement;\n\n          body.body.unshift(\n            t.variableDeclaration(node.left.kind, [\n              t.variableDeclarator(pattern, t.cloneNode(key)),\n            ]),\n          );\n        }\n      },\n\n      // [{a, ...b}] = c;\n      ArrayPattern(path) {\n        const objectPatterns: t.VariableDeclarator[] = [];\n\n        visitRestElements(path, path => {\n          if (!path.parentPath.isObjectPattern()) {\n            // Return early if the parent is not an ObjectPattern, but\n            // (for example) an ArrayPattern or Function, because that\n            // means this RestElement is an not an object property.\n            return;\n          }\n\n          const objectPattern = path.parentPath;\n\n          const uid = path.scope.generateUidIdentifier(\"ref\");\n          objectPatterns.push(t.variableDeclarator(objectPattern.node, uid));\n\n          objectPattern.replaceWith(t.cloneNode(uid));\n          path.skip();\n        });\n\n        if (objectPatterns.length > 0) {\n          const statementPath = path.getStatementParent();\n          const statementNode = statementPath.node;\n          const kind =\n            statementNode.type === \"VariableDeclaration\"\n              ? statementNode.kind\n              : \"var\";\n          statementPath.insertAfter(\n            t.variableDeclaration(kind, objectPatterns),\n          );\n        }\n      },\n\n      // var a = { ...b, ...c }\n      ObjectExpression(path, file) {\n        if (!hasSpread(path.node)) return;\n\n        let helper: t.Identifier | t.MemberExpression;\n        if (setSpreadProperties) {\n          helper = getExtendsHelper(file);\n        } else {\n          if (process.env.BABEL_8_BREAKING) {\n            helper = file.addHelper(\"objectSpread2\");\n          } else {\n            try {\n              helper = file.addHelper(\"objectSpread2\");\n            } catch {\n              // TODO: This is needed to workaround https://github.com/babel/babel/issues/10187\n              // and https://github.com/babel/babel/issues/10179 for older @babel/core versions\n              // where #10187 isn't fixed.\n              this.file.declarations[\"objectSpread2\"] = null;\n\n              // objectSpread2 has been introduced in v7.5.0\n              // We have to maintain backward compatibility.\n              helper = file.addHelper(\"objectSpread\");\n            }\n          }\n        }\n\n        let exp: t.CallExpression = null;\n        let props: t.ObjectMember[] = [];\n\n        function make() {\n          const hadProps = props.length > 0;\n          const obj = t.objectExpression(props);\n          props = [];\n\n          if (!exp) {\n            exp = t.callExpression(helper, [obj]);\n            return;\n          }\n\n          // When we can assume that getters are pure and don't depend on\n          // the order of evaluation, we can avoid making multiple calls.\n          if (pureGetters) {\n            if (hadProps) {\n              exp.arguments.push(obj);\n            }\n            return;\n          }\n\n          exp = t.callExpression(t.cloneNode(helper), [\n            exp,\n            // If we have static props, we need to insert an empty object\n            // because the odd arguments are copied with [[Get]], not\n            // [[GetOwnProperty]]\n            ...(hadProps ? [t.objectExpression([]), obj] : []),\n          ]);\n        }\n\n        for (const prop of path.node.properties) {\n          if (t.isSpreadElement(prop)) {\n            make();\n            exp.arguments.push(prop.argument);\n          } else {\n            props.push(prop);\n          }\n        }\n\n        if (props.length) make();\n\n        path.replaceWith(exp);\n      },\n    },\n  };\n});\n"],"names":["shouldStoreRHSInTemporaryVariable","node","type","nonNullElements","elements","filter","element","length","properties","firstProperty","value","left","argument","chrome","opera","edge","firefox","safari","deno","ios","samsung","opera_mobile","electron","isAssignmentPattern","isObjectProperty","t","identifier","property","objectProperty","pattern","objectPattern","ZERO_REFS","isReferenced","declare","api","opts","_api$assumption","_api$assumption2","_api$assumption3","_api$assumption4","assertVersion","targets","supportsObjectAssign","isRequired","compatData","useBuiltIns","loose","Error","ignoreFunctionLength","assumption","objectRestNoSymbols","pureGetters","setSpreadProperties","getExtendsHelper","file","memberExpression","addHelper","hasRestElement","path","foundRestElement","visitRestElements","restElement","stop","hasObjectPatternRestElement","parentPath","isObjectPattern","visitor","traverse","Expression","parent","key","computed","skip","RestElement","hasSpread","prop","isSpreadElement","extractNormalizedKeys","props","keys","allPrimitives","hasTemplateLiteral","isIdentifier","push","stringLiteral","name","isTemplateLiteral","cloneNode","isLiteral","String","isMemberExpression","object","isCallExpression","matchesPattern","callee","replaceImpureComputedKeys","scope","impureComputedPropertyDeclarators","propPath","get","isPure","generateUidBasedOnNode","declarator","variableDeclarator","replaceWith","removeUnusedExcludedKeys","bindings","getOuterBindingIdentifierPaths","Object","forEach","bindingName","bindingParentPath","getBinding","references","remove","createObjectRest","objRef","last","assertRestElement","callExpression","objectExpression","sequenceExpression","keyExpression","arrayExpression","isProgram","block","program","findParent","id","generateUidIdentifier","init","kind","replaceRestElement","paramPath","container","isArrayPattern","i","uid","declar","variableDeclaration","ensureBlock","unshiftContainer","manipulateOptions","_","parser","plugins","Function","params","paramsWithRestElement","Set","idsInRestParams","param","add","getBindingIdentifiers","idInRest","IdentifierHandler","functionScope","has","isReferencedIdentifier","isBindingIdentifier","shouldTransformParam","idx","convertFunctionParams","VariableDeclarator","insertionPath","originalPath","initRef","generateUidIdentifierBasedOnNode","insertBefore","ref","refPropertyPath","unshift","isVariableDeclarator","impureObjRefComputedDeclarators","objectPatternPath","assertIdentifier","insertAfter","registerBinding","ExportNamedDeclaration","declaration","isVariableDeclaration","hasRest","some","specifiers","getOuterBindingIdentifiers","exportSpecifier","exportNamedDeclaration","CatchClause","AssignmentExpression","leftPath","nodes","refName","right","nodeWithoutSpread","expressionStatement","assignmentExpression","replaceWithMultiple","ForXStatement","temp","body","isCompletionRecord","buildUndefinedNode","declarations","ArrayPattern","objectPatterns","statementPath","getStatementParent","statementNode","ObjectExpression","helper","_unused","exp","make","hadProps","obj","arguments"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-rest-spread/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+{
+  "name": "@babel/plugin-transform-object-rest-spread",
+  "version": "7.25.9",
+  "description": "Compile object rest and spread to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-object-rest-spread"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-object-rest-spread",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-compilation-targets": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/plugin-transform-parameters": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/parser": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-super/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-super/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-super/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-super/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-super/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-super/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-object-super
+
+> Compile ES2015 object super to ES5
+
+See our website [@babel/plugin-transform-object-super](https://babeljs.io/docs/babel-plugin-transform-object-super) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-object-super
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-object-super --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-super/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-super/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-super/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+var _core = require("@babel/core");
+function replacePropertySuper(path, getObjectRef, file) {
+  const replaceSupers = new _helperReplaceSupers.default({
+    getObjectRef: getObjectRef,
+    methodPath: path,
+    file: file
+  });
+  replaceSupers.replace();
+}
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  const newLets = new Set();
+  return {
+    name: "transform-object-super",
+    visitor: {
+      Loop: {
+        exit(path) {
+          newLets.forEach(v => {
+            if (v.scopePath === path) {
+              path.scope.push({
+                id: v.id,
+                kind: "let"
+              });
+              path.scope.crawl();
+              path.requeue();
+              newLets.delete(v);
+            }
+          });
+        }
+      },
+      ObjectExpression(path, state) {
+        let objectRef;
+        const getObjectRef = () => objectRef = objectRef || path.scope.generateUidIdentifier("obj");
+        path.get("properties").forEach(propPath => {
+          if (!propPath.isMethod()) return;
+          replacePropertySuper(propPath, getObjectRef, state.file);
+        });
+        if (objectRef) {
+          const scopePath = path.findParent(p => p.isFunction() || p.isProgram() || p.isLoop());
+          const useLet = scopePath.isLoop();
+          if (useLet) {
+            newLets.add({
+              scopePath,
+              id: _core.types.cloneNode(objectRef)
+            });
+          } else {
+            path.scope.push({
+              id: _core.types.cloneNode(objectRef),
+              kind: "var"
+            });
+          }
+          path.replaceWith(_core.types.assignmentExpression("=", _core.types.cloneNode(objectRef), path.node));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-super/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-super/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-super/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperReplaceSupers","_core","replacePropertySuper","path","getObjectRef","file","replaceSupers","ReplaceSupers","methodPath","replace","_default","exports","default","declare","api","assertVersion","newLets","Set","name","visitor","Loop","exit","forEach","v","scopePath","scope","push","id","kind","crawl","requeue","delete","ObjectExpression","state","objectRef","generateUidIdentifier","get","propPath","isMethod","findParent","p","isFunction","isProgram","isLoop","useLet","add","t","cloneNode","replaceWith","assignmentExpression","node"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport { types as t } from \"@babel/core\";\nimport type { File, NodePath } from \"@babel/core\";\n\nfunction replacePropertySuper(\n  path: NodePath<t.ObjectMethod>,\n  getObjectRef: () => t.Identifier,\n  file: File,\n) {\n  // @ts-expect-error todo(flow->ts):\n  const replaceSupers = new ReplaceSupers({\n    getObjectRef: getObjectRef,\n    methodPath: path,\n    file: file,\n  });\n\n  replaceSupers.replace();\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n  const newLets = new Set<{\n    scopePath: NodePath;\n    id: t.Identifier;\n  }>();\n\n  return {\n    name: \"transform-object-super\",\n\n    visitor: {\n      Loop: {\n        exit(path) {\n          newLets.forEach(v => {\n            if (v.scopePath === path) {\n              path.scope.push({\n                id: v.id,\n                kind: \"let\",\n              });\n              path.scope.crawl();\n              path.requeue();\n              newLets.delete(v);\n            }\n          });\n        },\n      },\n      ObjectExpression(path, state) {\n        let objectRef: t.Identifier;\n        const getObjectRef = () =>\n          (objectRef = objectRef || path.scope.generateUidIdentifier(\"obj\"));\n\n        path.get(\"properties\").forEach(propPath => {\n          if (!propPath.isMethod()) return;\n\n          replacePropertySuper(propPath, getObjectRef, state.file);\n        });\n\n        if (objectRef) {\n          const scopePath = path.findParent(\n            p => p.isFunction() || p.isProgram() || p.isLoop(),\n          );\n          const useLet = scopePath.isLoop();\n          // For transform-block-scoping\n          if (useLet) {\n            newLets.add({ scopePath, id: t.cloneNode(objectRef) });\n          } else {\n            path.scope.push({\n              id: t.cloneNode(objectRef),\n              kind: \"var\",\n            });\n          }\n\n          path.replaceWith(\n            t.assignmentExpression(\"=\", t.cloneNode(objectRef), path.node),\n          );\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAGA,SAASG,oBAAoBA,CAC3BC,IAA8B,EAC9BC,YAAgC,EAChCC,IAAU,EACV;EAEA,MAAMC,aAAa,GAAG,IAAIC,4BAAa,CAAC;IACtCH,YAAY,EAAEA,YAAY;IAC1BI,UAAU,EAAEL,IAAI;IAChBE,IAAI,EAAEA;EACR,CAAC,CAAC;EAEFC,aAAa,CAACG,OAAO,CAAC,CAAC;AACzB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EACtC,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAGpB,CAAC;EAEJ,OAAO;IACLC,IAAI,EAAE,wBAAwB;IAE9BC,OAAO,EAAE;MACPC,IAAI,EAAE;QACJC,IAAIA,CAAClB,IAAI,EAAE;UACTa,OAAO,CAACM,OAAO,CAACC,CAAC,IAAI;YACnB,IAAIA,CAAC,CAACC,SAAS,KAAKrB,IAAI,EAAE;cACxBA,IAAI,CAACsB,KAAK,CAACC,IAAI,CAAC;gBACdC,EAAE,EAAEJ,CAAC,CAACI,EAAE;gBACRC,IAAI,EAAE;cACR,CAAC,CAAC;cACFzB,IAAI,CAACsB,KAAK,CAACI,KAAK,CAAC,CAAC;cAClB1B,IAAI,CAAC2B,OAAO,CAAC,CAAC;cACdd,OAAO,CAACe,MAAM,CAACR,CAAC,CAAC;YACnB;UACF,CAAC,CAAC;QACJ;MACF,CAAC;MACDS,gBAAgBA,CAAC7B,IAAI,EAAE8B,KAAK,EAAE;QAC5B,IAAIC,SAAuB;QAC3B,MAAM9B,YAAY,GAAGA,CAAA,KAClB8B,SAAS,GAAGA,SAAS,IAAI/B,IAAI,CAACsB,KAAK,CAACU,qBAAqB,CAAC,KAAK,CAAE;QAEpEhC,IAAI,CAACiC,GAAG,CAAC,YAAY,CAAC,CAACd,OAAO,CAACe,QAAQ,IAAI;UACzC,IAAI,CAACA,QAAQ,CAACC,QAAQ,CAAC,CAAC,EAAE;UAE1BpC,oBAAoB,CAACmC,QAAQ,EAAEjC,YAAY,EAAE6B,KAAK,CAAC5B,IAAI,CAAC;QAC1D,CAAC,CAAC;QAEF,IAAI6B,SAAS,EAAE;UACb,MAAMV,SAAS,GAAGrB,IAAI,CAACoC,UAAU,CAC/BC,CAAC,IAAIA,CAAC,CAACC,UAAU,CAAC,CAAC,IAAID,CAAC,CAACE,SAAS,CAAC,CAAC,IAAIF,CAAC,CAACG,MAAM,CAAC,CACnD,CAAC;UACD,MAAMC,MAAM,GAAGpB,SAAS,CAACmB,MAAM,CAAC,CAAC;UAEjC,IAAIC,MAAM,EAAE;YACV5B,OAAO,CAAC6B,GAAG,CAAC;cAAErB,SAAS;cAAEG,EAAE,EAAEmB,WAAC,CAACC,SAAS,CAACb,SAAS;YAAE,CAAC,CAAC;UACxD,CAAC,MAAM;YACL/B,IAAI,CAACsB,KAAK,CAACC,IAAI,CAAC;cACdC,EAAE,EAAEmB,WAAC,CAACC,SAAS,CAACb,SAAS,CAAC;cAC1BN,IAAI,EAAE;YACR,CAAC,CAAC;UACJ;UAEAzB,IAAI,CAAC6C,WAAW,CACdF,WAAC,CAACG,oBAAoB,CAAC,GAAG,EAAEH,WAAC,CAACC,SAAS,CAACb,SAAS,CAAC,EAAE/B,IAAI,CAAC+C,IAAI,CAC/D,CAAC;QACH;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-object-super/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-object-super/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-object-super/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-object-super",
+  "version": "7.25.9",
+  "description": "Compile ES2015 object super to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-object-super"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-object-super",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-replace-supers": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-optional-catch-binding
+
+> Compile optional catch bindings
+
+See our website [@babel/plugin-transform-optional-catch-binding](https://babeljs.io/docs/babel-plugin-transform-optional-catch-binding) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-optional-catch-binding
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-optional-catch-binding --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  return {
+    name: "transform-optional-catch-binding",
+    manipulateOptions: (_, parser) => parser.plugins.push("optionalCatchBinding"),
+    visitor: {
+      CatchClause(path) {
+        if (!path.node.param) {
+          const uid = path.scope.generateUidIdentifier("unused");
+          const paramPath = path.get("param");
+          paramPath.replaceWith(uid);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_default","exports","default","declare","api","assertVersion","name","manipulateOptions","_","parser","plugins","push","visitor","CatchClause","path","node","param","uid","scope","generateUidIdentifier","paramPath","get","replaceWith"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-optional-catch-binding\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"optionalCatchBinding\"),\n\n    visitor: {\n      CatchClause(path) {\n        if (!path.node.param) {\n          const uid = path.scope.generateUidIdentifier(\"unused\");\n          const paramPath = path.get(\"param\");\n          paramPath.replaceWith(uid);\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAAqD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,uCAAoB,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,kCAAkC;IACxCC,iBAAiB,EAEbA,CAACC,CAAC,EAAEC,MAAM,KAAKA,MAAM,CAACC,OAAO,CAACC,IAAI,CAAC,sBAAsB,CAAC;IAE9DC,OAAO,EAAE;MACPC,WAAWA,CAACC,IAAI,EAAE;QAChB,IAAI,CAACA,IAAI,CAACC,IAAI,CAACC,KAAK,EAAE;UACpB,MAAMC,GAAG,GAAGH,IAAI,CAACI,KAAK,CAACC,qBAAqB,CAAC,QAAQ,CAAC;UACtD,MAAMC,SAAS,GAAGN,IAAI,CAACO,GAAG,CAAC,OAAO,CAAC;UACnCD,SAAS,CAACE,WAAW,CAACL,GAAG,CAAC;QAC5B;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-catch-binding/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-optional-catch-binding",
+  "version": "7.25.9",
+  "description": "Compile optional catch bindings",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-optional-catch-binding"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-optional-catch-binding",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-optional-chaining
+
+> Transform optional chaining operators into a series of nil checks
+
+See our website [@babel/plugin-transform-optional-chaining](https://babeljs.io/docs/babel-plugin-transform-optional-chaining) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-optional-chaining
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-optional-chaining --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,244 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+var core = require('@babel/core');
+var helperSkipTransparentExpressionWrappers = require('@babel/helper-skip-transparent-expression-wrappers');
+
+function willPathCastToBoolean(path) {
+  const maybeWrapped = findOutermostTransparentParent(path);
+  const {
+    node,
+    parentPath
+  } = maybeWrapped;
+  if (parentPath.isLogicalExpression()) {
+    const {
+      operator,
+      right
+    } = parentPath.node;
+    if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
+      return willPathCastToBoolean(parentPath);
+    }
+  }
+  if (parentPath.isSequenceExpression()) {
+    const {
+      expressions
+    } = parentPath.node;
+    if (expressions[expressions.length - 1] === node) {
+      return willPathCastToBoolean(parentPath);
+    } else {
+      return true;
+    }
+  }
+  return parentPath.isConditional({
+    test: node
+  }) || parentPath.isUnaryExpression({
+    operator: "!"
+  }) || parentPath.isLoop({
+    test: node
+  });
+}
+function findOutermostTransparentParent(path) {
+  let maybeWrapped = path;
+  path.findParent(p => {
+    if (!helperSkipTransparentExpressionWrappers.isTransparentExprWrapper(p.node)) return true;
+    maybeWrapped = p;
+  });
+  return maybeWrapped;
+}
+
+const last = arr => arr[arr.length - 1];
+function isSimpleMemberExpression(expression) {
+  expression = helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes(expression);
+  return core.types.isIdentifier(expression) || core.types.isSuper(expression) || core.types.isMemberExpression(expression) && !expression.computed && isSimpleMemberExpression(expression.object);
+}
+function needsMemoize(path) {
+  let optionalPath = path;
+  const {
+    scope
+  } = path;
+  while (optionalPath.isOptionalMemberExpression() || optionalPath.isOptionalCallExpression()) {
+    const {
+      node
+    } = optionalPath;
+    const childPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.isOptionalMemberExpression() ? optionalPath.get("object") : optionalPath.get("callee"));
+    if (node.optional) {
+      return !scope.isStatic(childPath.node);
+    }
+    optionalPath = childPath;
+  }
+}
+const NULLISH_CHECK = core.template.expression(`%%check%% === null || %%ref%% === void 0`);
+const NULLISH_CHECK_NO_DDA = core.template.expression(`%%check%% == null`);
+const NULLISH_CHECK_NEG = core.template.expression(`%%check%% !== null && %%ref%% !== void 0`);
+const NULLISH_CHECK_NO_DDA_NEG = core.template.expression(`%%check%% != null`);
+function transformOptionalChain(path, {
+  pureGetters,
+  noDocumentAll
+}, replacementPath, ifNullish, wrapLast) {
+  const {
+    scope
+  } = path;
+  if (scope.path.isPattern() && needsMemoize(path)) {
+    replacementPath.replaceWith(core.template.expression.ast`(() => ${replacementPath.node})()`);
+    return;
+  }
+  const optionals = [];
+  let optionalPath = path;
+  while (optionalPath.isOptionalMemberExpression() || optionalPath.isOptionalCallExpression()) {
+    const {
+      node
+    } = optionalPath;
+    if (node.optional) {
+      optionals.push(node);
+    }
+    if (optionalPath.isOptionalMemberExpression()) {
+      optionalPath.node.type = "MemberExpression";
+      optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("object"));
+    } else if (optionalPath.isOptionalCallExpression()) {
+      optionalPath.node.type = "CallExpression";
+      optionalPath = helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers(optionalPath.get("callee"));
+    }
+  }
+  if (optionals.length === 0) {
+    return;
+  }
+  const checks = [];
+  let tmpVar;
+  for (let i = optionals.length - 1; i >= 0; i--) {
+    const node = optionals[i];
+    const isCall = core.types.isCallExpression(node);
+    const chainWithTypes = isCall ? node.callee : node.object;
+    const chain = helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes(chainWithTypes);
+    let ref;
+    let check;
+    if (isCall && core.types.isIdentifier(chain, {
+      name: "eval"
+    })) {
+      check = ref = chain;
+      node.callee = core.types.sequenceExpression([core.types.numericLiteral(0), ref]);
+    } else if (pureGetters && isCall && isSimpleMemberExpression(chain)) {
+      check = ref = node.callee;
+    } else if (scope.isStatic(chain)) {
+      check = ref = chainWithTypes;
+    } else {
+      if (!tmpVar || isCall) {
+        tmpVar = scope.generateUidIdentifierBasedOnNode(chain);
+        scope.push({
+          id: core.types.cloneNode(tmpVar)
+        });
+      }
+      ref = tmpVar;
+      check = core.types.assignmentExpression("=", core.types.cloneNode(tmpVar), chainWithTypes);
+      if (isCall) {
+        node.callee = ref;
+      } else {
+        node.object = ref;
+      }
+    }
+    if (isCall && core.types.isMemberExpression(chain)) {
+      if (pureGetters && isSimpleMemberExpression(chain)) {
+        node.callee = chainWithTypes;
+      } else {
+        const {
+          object
+        } = chain;
+        let context;
+        if (core.types.isSuper(object)) {
+          context = core.types.thisExpression();
+        } else {
+          const memoized = scope.maybeGenerateMemoised(object);
+          if (memoized) {
+            context = memoized;
+            chain.object = core.types.assignmentExpression("=", memoized, object);
+          } else {
+            context = object;
+          }
+        }
+        node.arguments.unshift(core.types.cloneNode(context));
+        node.callee = core.types.memberExpression(node.callee, core.types.identifier("call"));
+      }
+    }
+    const data = {
+      check: core.types.cloneNode(check),
+      ref: core.types.cloneNode(ref)
+    };
+    Object.defineProperty(data, "ref", {
+      enumerable: false
+    });
+    checks.push(data);
+  }
+  let result = replacementPath.node;
+  if (wrapLast) result = wrapLast(result);
+  const ifNullishBoolean = core.types.isBooleanLiteral(ifNullish);
+  const ifNullishFalse = ifNullishBoolean && ifNullish.value === false;
+  const ifNullishVoid = !ifNullishBoolean && core.types.isUnaryExpression(ifNullish, {
+    operator: "void"
+  });
+  const isEvaluationValueIgnored = core.types.isExpressionStatement(replacementPath.parent) && !replacementPath.isCompletionRecord() || core.types.isSequenceExpression(replacementPath.parent) && last(replacementPath.parent.expressions) !== replacementPath.node;
+  const tpl = ifNullishFalse ? noDocumentAll ? NULLISH_CHECK_NO_DDA_NEG : NULLISH_CHECK_NEG : noDocumentAll ? NULLISH_CHECK_NO_DDA : NULLISH_CHECK;
+  const logicalOp = ifNullishFalse ? "&&" : "||";
+  const check = checks.map(tpl).reduce((expr, check) => core.types.logicalExpression(logicalOp, expr, check));
+  replacementPath.replaceWith(ifNullishBoolean || ifNullishVoid && isEvaluationValueIgnored ? core.types.logicalExpression(logicalOp, check, result) : core.types.conditionalExpression(check, ifNullish, result));
+}
+function transform(path, assumptions) {
+  const {
+    scope
+  } = path;
+  const maybeWrapped = findOutermostTransparentParent(path);
+  const {
+    parentPath
+  } = maybeWrapped;
+  if (parentPath.isUnaryExpression({
+    operator: "delete"
+  })) {
+    transformOptionalChain(path, assumptions, parentPath, core.types.booleanLiteral(true));
+  } else {
+    let wrapLast;
+    if (parentPath.isCallExpression({
+      callee: maybeWrapped.node
+    }) && path.isOptionalMemberExpression()) {
+      wrapLast = replacement => {
+        var _baseRef;
+        const object = helperSkipTransparentExpressionWrappers.skipTransparentExprWrapperNodes(replacement.object);
+        let baseRef;
+        if (!assumptions.pureGetters || !isSimpleMemberExpression(object)) {
+          baseRef = scope.maybeGenerateMemoised(object);
+          if (baseRef) {
+            replacement.object = core.types.assignmentExpression("=", baseRef, object);
+          }
+        }
+        return core.types.callExpression(core.types.memberExpression(replacement, core.types.identifier("bind")), [core.types.cloneNode((_baseRef = baseRef) != null ? _baseRef : object)]);
+      };
+    }
+    transformOptionalChain(path, assumptions, path, willPathCastToBoolean(maybeWrapped) ? core.types.booleanLiteral(false) : scope.buildUndefinedNode(), wrapLast);
+  }
+}
+
+var index = helperPluginUtils.declare((api, options) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const {
+    loose = false
+  } = options;
+  const noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : loose;
+  const pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : loose;
+  return {
+    name: "transform-optional-chaining",
+    manipulateOptions: (_, parser) => parser.plugins.push("optionalChaining"),
+    visitor: {
+      "OptionalCallExpression|OptionalMemberExpression"(path) {
+        transform(path, {
+          noDocumentAll,
+          pureGetters
+        });
+      }
+    }
+  };
+});
+
+exports.default = index;
+exports.transform = transform;
+exports.transformOptionalChain = transformOptionalChain;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/util.ts","../src/transform.ts","../src/index.ts"],"sourcesContent":["import type { NodePath } from \"@babel/core\";\nimport { isTransparentExprWrapper } from \"@babel/helper-skip-transparent-expression-wrappers\";\n/**\n * Test if a NodePath will be cast to boolean when evaluated.\n * It respects transparent expression wrappers defined in\n * \"@babel/helper-skip-transparent-expression-wrappers\"\n *\n * @example\n * // returns true\n * const nodePathADotB = NodePath(\"if (a.b) {}\").get(\"test\"); // a.b\n * willPathCastToBoolean(nodePathADotB)\n * @example\n * // returns false\n * willPathCastToBoolean(NodePath(\"a.b\"))\n * @param {NodePath} path\n * @returns {boolean}\n */\nexport function willPathCastToBoolean(path: NodePath): boolean {\n  const maybeWrapped = findOutermostTransparentParent(path);\n  const { node, parentPath } = maybeWrapped;\n  if (parentPath.isLogicalExpression()) {\n    const { operator, right } = parentPath.node;\n    if (\n      operator === \"&&\" ||\n      operator === \"||\" ||\n      (operator === \"??\" && node === right)\n    ) {\n      return willPathCastToBoolean(parentPath);\n    }\n  }\n  if (parentPath.isSequenceExpression()) {\n    const { expressions } = parentPath.node;\n    if (expressions[expressions.length - 1] === node) {\n      return willPathCastToBoolean(parentPath);\n    } else {\n      // if it is in the middle of a sequence expression, we don't\n      // care the return value so just cast to boolean for smaller\n      // output\n      return true;\n    }\n  }\n  return (\n    parentPath.isConditional({ test: node }) ||\n    parentPath.isUnaryExpression({ operator: \"!\" }) ||\n    parentPath.isLoop({ test: node })\n  );\n}\n\n/**\n * Return the outermost transparent expression wrapper of a given path,\n * otherwise returns path itself.\n * @example\n * const nodePathADotB = NodePath(\"(a.b as any)\").get(\"expression\"); // a.b\n * // returns NodePath(\"(a.b as any)\")\n * findOutermostTransparentParent(nodePathADotB);\n * @param {NodePath} path\n * @returns {NodePath}\n */\nexport function findOutermostTransparentParent(path: NodePath): NodePath {\n  let maybeWrapped = path;\n  path.findParent(p => {\n    if (!isTransparentExprWrapper(p.node)) return true;\n    maybeWrapped = p;\n  });\n  return maybeWrapped;\n}\n","import { types as t, template, type NodePath } from \"@babel/core\";\nimport {\n  skipTransparentExprWrapperNodes,\n  skipTransparentExprWrappers,\n} from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport {\n  willPathCastToBoolean,\n  findOutermostTransparentParent,\n} from \"./util.ts\";\n\n// TODO(Babel 9): Use .at(-1)\nconst last = <T>(arr: T[]) => arr[arr.length - 1];\n\nfunction isSimpleMemberExpression(\n  expression: t.Expression | t.Super,\n): expression is t.Identifier | t.Super | t.MemberExpression {\n  expression = skipTransparentExprWrapperNodes(expression);\n  return (\n    t.isIdentifier(expression) ||\n    t.isSuper(expression) ||\n    (t.isMemberExpression(expression) &&\n      !expression.computed &&\n      isSimpleMemberExpression(expression.object))\n  );\n}\n\n/**\n * Test if a given optional chain `path` needs to be memoized\n * @param {NodePath} path\n * @returns {boolean}\n */\nfunction needsMemoize(\n  path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n) {\n  let optionalPath: NodePath = path;\n  const { scope } = path;\n  while (\n    optionalPath.isOptionalMemberExpression() ||\n    optionalPath.isOptionalCallExpression()\n  ) {\n    const { node } = optionalPath;\n    const childPath = skipTransparentExprWrappers(\n      optionalPath.isOptionalMemberExpression()\n        ? optionalPath.get(\"object\")\n        : optionalPath.get(\"callee\"),\n    );\n    if (node.optional) {\n      return !scope.isStatic(childPath.node);\n    }\n\n    optionalPath = childPath;\n  }\n}\n\nconst NULLISH_CHECK = template.expression(\n  `%%check%% === null || %%ref%% === void 0`,\n);\nconst NULLISH_CHECK_NO_DDA = template.expression(`%%check%% == null`);\nconst NULLISH_CHECK_NEG = template.expression(\n  `%%check%% !== null && %%ref%% !== void 0`,\n);\nconst NULLISH_CHECK_NO_DDA_NEG = template.expression(`%%check%% != null`);\n\ninterface OptionalChainAssumptions {\n  pureGetters: boolean;\n  noDocumentAll: boolean;\n}\n\nexport function transformOptionalChain(\n  path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n  { pureGetters, noDocumentAll }: OptionalChainAssumptions,\n  replacementPath: NodePath<t.Expression>,\n  ifNullish: t.Expression,\n  wrapLast?: (value: t.Expression) => t.Expression,\n) {\n  const { scope } = path;\n\n  // Replace `function (a, x = a.b?.c) {}` to `function (a, x = (() => a.b?.c)() ){}`\n  // so the temporary variable can be injected in correct scope\n  if (scope.path.isPattern() && needsMemoize(path)) {\n    replacementPath.replaceWith(\n      template.expression.ast`(() => ${replacementPath.node})()`,\n    );\n    // The injected optional chain will be queued and eventually transformed when visited\n    return;\n  }\n\n  const optionals = [];\n\n  let optionalPath = path;\n  while (\n    optionalPath.isOptionalMemberExpression() ||\n    optionalPath.isOptionalCallExpression()\n  ) {\n    const { node } = optionalPath;\n    if (node.optional) {\n      optionals.push(node);\n    }\n    if (optionalPath.isOptionalMemberExpression()) {\n      // @ts-expect-error todo(flow->ts) avoid changing more type\n      optionalPath.node.type = \"MemberExpression\";\n      // @ts-expect-error todo(flow->ts)\n      optionalPath = skipTransparentExprWrappers(optionalPath.get(\"object\"));\n    } else if (optionalPath.isOptionalCallExpression()) {\n      // @ts-expect-error todo(flow->ts) avoid changing more type\n      optionalPath.node.type = \"CallExpression\";\n      // @ts-expect-error todo(flow->ts)\n      optionalPath = skipTransparentExprWrappers(optionalPath.get(\"callee\"));\n    }\n  }\n\n  if (optionals.length === 0) {\n    // Malformed AST: there was an OptionalMemberExpression node\n    // with no actual optional elements.\n    return;\n  }\n\n  const checks = [];\n\n  let tmpVar;\n\n  for (let i = optionals.length - 1; i >= 0; i--) {\n    const node = optionals[i] as unknown as\n      | t.MemberExpression\n      | t.CallExpression;\n\n    const isCall = t.isCallExpression(node);\n\n    const chainWithTypes = isCall\n      ? // V8 intrinsics must not be an optional call\n        (node.callee as t.Expression)\n      : node.object;\n    const chain = skipTransparentExprWrapperNodes(chainWithTypes);\n\n    let ref;\n    let check;\n    if (isCall && t.isIdentifier(chain, { name: \"eval\" })) {\n      check = ref = chain;\n      // `eval?.()` is an indirect eval call transformed to `(0,eval)()`\n      node.callee = t.sequenceExpression([t.numericLiteral(0), ref]);\n    } else if (pureGetters && isCall && isSimpleMemberExpression(chain)) {\n      // If we assume getters are pure (avoiding a Function#call) and we are at the call,\n      // we can avoid a needless memoize. We only do this if the callee is a simple member\n      // expression, to avoid multiple calls to nested call expressions.\n      check = ref = node.callee;\n    } else if (scope.isStatic(chain)) {\n      check = ref = chainWithTypes;\n    } else {\n      // We cannot reuse the tmpVar for calls, because we need to\n      // store both the method and the receiver.\n      if (!tmpVar || isCall) {\n        tmpVar = scope.generateUidIdentifierBasedOnNode(chain);\n        scope.push({ id: t.cloneNode(tmpVar) });\n      }\n      ref = tmpVar;\n      check = t.assignmentExpression(\n        \"=\",\n        t.cloneNode(tmpVar),\n        // Here `chainWithTypes` MUST NOT be cloned because it could be\n        // updated when generating the memoised context of a call\n        // expression. It must be an Expression when `ref` is an identifier\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n        chainWithTypes as t.Expression,\n      );\n\n      if (isCall) {\n        node.callee = ref;\n      } else {\n        node.object = ref;\n      }\n    }\n\n    // Ensure call expressions have the proper `this`\n    // `foo.bar()` has context `foo`.\n    if (isCall && t.isMemberExpression(chain)) {\n      if (pureGetters && isSimpleMemberExpression(chain)) {\n        // To avoid a Function#call, we can instead re-grab the property from the context object.\n        // `a.?b.?()` translates roughly to `_a.b != null && _a.b()`\n        node.callee = chainWithTypes;\n      } else {\n        // Otherwise, we need to memoize the context object, and change the call into a Function#call.\n        // `a.?b.?()` translates roughly to `(_b = _a.b) != null && _b.call(_a)`\n        const { object } = chain;\n        let context: t.Expression;\n        if (t.isSuper(object)) {\n          context = t.thisExpression();\n        } else {\n          const memoized = scope.maybeGenerateMemoised(object);\n          if (memoized) {\n            context = memoized;\n            chain.object = t.assignmentExpression(\"=\", memoized, object);\n          } else {\n            context = object;\n          }\n        }\n\n        node.arguments.unshift(t.cloneNode(context));\n        // @ts-expect-error node.callee can not be an V8IntrinsicIdentifier: V8 intrinsic is disallowed in optional chain\n        node.callee = t.memberExpression(node.callee, t.identifier(\"call\"));\n      }\n    }\n\n    const data = { check: t.cloneNode(check), ref: t.cloneNode(ref) };\n    // We make `ref` non-enumerable, so that @babel/template doesn't throw\n    // in the noDocumentAll template if it's not used.\n    Object.defineProperty(data, \"ref\", { enumerable: false });\n    checks.push(data);\n  }\n\n  let result = replacementPath.node;\n  if (wrapLast) result = wrapLast(result);\n\n  const ifNullishBoolean = t.isBooleanLiteral(ifNullish);\n  const ifNullishFalse = ifNullishBoolean && ifNullish.value === false;\n  const ifNullishVoid =\n    !ifNullishBoolean && t.isUnaryExpression(ifNullish, { operator: \"void\" });\n\n  const isEvaluationValueIgnored =\n    (t.isExpressionStatement(replacementPath.parent) &&\n      !replacementPath.isCompletionRecord()) ||\n    (t.isSequenceExpression(replacementPath.parent) &&\n      last(replacementPath.parent.expressions) !== replacementPath.node);\n\n  // prettier-ignore\n  const tpl = ifNullishFalse\n    ? (noDocumentAll ? NULLISH_CHECK_NO_DDA_NEG : NULLISH_CHECK_NEG)\n    : (noDocumentAll ? NULLISH_CHECK_NO_DDA : NULLISH_CHECK);\n  const logicalOp = ifNullishFalse ? \"&&\" : \"||\";\n\n  const check = checks\n    .map(tpl)\n    .reduce((expr, check) => t.logicalExpression(logicalOp, expr, check));\n\n  replacementPath.replaceWith(\n    ifNullishBoolean || (ifNullishVoid && isEvaluationValueIgnored)\n      ? t.logicalExpression(logicalOp, check, result)\n      : t.conditionalExpression(check, ifNullish, result),\n  );\n}\n\nexport function transform(\n  path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n  assumptions: OptionalChainAssumptions,\n) {\n  const { scope } = path;\n\n  // maybeWrapped points to the outermost transparent expression wrapper\n  // or the path itself\n  const maybeWrapped = findOutermostTransparentParent(path);\n  const { parentPath } = maybeWrapped;\n\n  if (parentPath.isUnaryExpression({ operator: \"delete\" })) {\n    transformOptionalChain(\n      path,\n      assumptions,\n      parentPath,\n      t.booleanLiteral(true),\n    );\n  } else {\n    let wrapLast;\n    if (\n      parentPath.isCallExpression({ callee: maybeWrapped.node }) &&\n      // note that the first condition must implies that `path.optional` is `true`,\n      // otherwise the parentPath should be an OptionalCallExpression\n      path.isOptionalMemberExpression()\n    ) {\n      // Ensure (a?.b)() has proper `this`\n      wrapLast = (replacement: t.MemberExpression) => {\n        // `(a?.b)()` to `(a == null ? undefined : a.b.bind(a))()`\n        // object must not be Super as super?.foo is invalid\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n        const object = skipTransparentExprWrapperNodes(\n          replacement.object,\n        ) as t.Expression;\n        let baseRef: t.Expression;\n        if (!assumptions.pureGetters || !isSimpleMemberExpression(object)) {\n          // memoize the context object when getters are not always pure\n          // or the object is not a simple member expression\n          // `(a?.b.c)()` to `(a == null ? undefined : (_a$b = a.b).c.bind(_a$b))()`\n          baseRef = scope.maybeGenerateMemoised(object);\n          if (baseRef) {\n            replacement.object = t.assignmentExpression(\"=\", baseRef, object);\n          }\n        }\n        return t.callExpression(\n          t.memberExpression(replacement, t.identifier(\"bind\")),\n          [t.cloneNode(baseRef ?? object)],\n        );\n      };\n    }\n\n    transformOptionalChain(\n      path,\n      assumptions,\n      path,\n      willPathCastToBoolean(maybeWrapped)\n        ? t.booleanLiteral(false)\n        : scope.buildUndefinedNode(),\n      wrapLast,\n    );\n  }\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { transform, transformOptionalChain } from \"./transform.ts\";\nimport type { NodePath, types as t } from \"@babel/core\";\n\nexport interface Options {\n  loose?: boolean;\n}\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { loose = false } = options;\n  const noDocumentAll = api.assumption(\"noDocumentAll\") ?? loose;\n  const pureGetters = api.assumption(\"pureGetters\") ?? loose;\n\n  return {\n    name: \"transform-optional-chaining\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"optionalChaining\"),\n\n    visitor: {\n      \"OptionalCallExpression|OptionalMemberExpression\"(\n        path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n      ) {\n        transform(path, { noDocumentAll, pureGetters });\n      },\n    },\n  };\n});\n\nexport { transform, transformOptionalChain };\n"],"names":["willPathCastToBoolean","path","maybeWrapped","findOutermostTransparentParent","node","parentPath","isLogicalExpression","operator","right","isSequenceExpression","expressions","length","isConditional","test","isUnaryExpression","isLoop","findParent","p","isTransparentExprWrapper","last","arr","isSimpleMemberExpression","expression","skipTransparentExprWrapperNodes","t","isIdentifier","isSuper","isMemberExpression","computed","object","needsMemoize","optionalPath","scope","isOptionalMemberExpression","isOptionalCallExpression","childPath","skipTransparentExprWrappers","get","optional","isStatic","NULLISH_CHECK","template","NULLISH_CHECK_NO_DDA","NULLISH_CHECK_NEG","NULLISH_CHECK_NO_DDA_NEG","transformOptionalChain","pureGetters","noDocumentAll","replacementPath","ifNullish","wrapLast","isPattern","replaceWith","ast","optionals","push","type","checks","tmpVar","i","isCall","isCallExpression","chainWithTypes","callee","chain","ref","check","name","sequenceExpression","numericLiteral","generateUidIdentifierBasedOnNode","id","cloneNode","assignmentExpression","context","thisExpression","memoized","maybeGenerateMemoised","arguments","unshift","memberExpression","identifier","data","Object","defineProperty","enumerable","result","ifNullishBoolean","isBooleanLiteral","ifNullishFalse","value","ifNullishVoid","isEvaluationValueIgnored","isExpressionStatement","parent","isCompletionRecord","tpl","logicalOp","map","reduce","expr","logicalExpression","conditionalExpression","transform","assumptions","booleanLiteral","replacement","_baseRef","baseRef","callExpression","buildUndefinedNode","declare","api","options","_api$assumption","_api$assumption2","assertVersion","loose","assumption","manipulateOptions","_","parser","plugins","visitor","OptionalCallExpression|OptionalMemberExpression"],"mappings":"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"}
Index: imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-optional-chaining/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+{
+  "name": "@babel/plugin-transform-optional-chaining",
+  "version": "7.25.9",
+  "description": "Transform optional chaining operators into a series of nil checks",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-optional-chaining"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-optional-chaining",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/plugin-transform-block-scoping": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-parameters
+
+> Compile ES2015 default and rest parameters to ES5
+
+See our website [@babel/plugin-transform-parameters](https://babeljs.io/docs/babel-plugin-transform-parameters) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-parameters
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-parameters --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "convertFunctionParams", {
+  enumerable: true,
+  get: function () {
+    return _params.default;
+  }
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _params = require("./params.js");
+var _rest = require("./rest.js");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion(7);
+  const ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : options.loose;
+  const noNewArrows = (_api$assumption2 = api.assumption("noNewArrows")) != null ? _api$assumption2 : true;
+  return {
+    name: "transform-parameters",
+    visitor: {
+      Function(path) {
+        if (path.isArrowFunctionExpression() && path.get("params").some(param => param.isRestElement() || param.isAssignmentPattern())) {
+          path.arrowFunctionToExpression({
+            allowInsertArrowWithRest: false,
+            noNewArrows
+          });
+          if (!path.isFunctionExpression()) return;
+        }
+        const convertedRest = (0, _rest.default)(path);
+        const convertedParams = (0, _params.default)(path, ignoreFunctionLength);
+        if (convertedRest || convertedParams) {
+          path.scope.crawl();
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_params","_rest","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","assertVersion","ignoreFunctionLength","assumption","loose","noNewArrows","name","visitor","Function","path","isArrowFunctionExpression","get","some","param","isRestElement","isAssignmentPattern","arrowFunctionToExpression","allowInsertArrowWithRest","isFunctionExpression","convertedRest","convertFunctionRest","convertedParams","convertFunctionParams","scope","crawl"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport convertFunctionParams from \"./params.ts\";\nimport convertFunctionRest from \"./rest.ts\";\nexport { convertFunctionParams };\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const ignoreFunctionLength =\n    api.assumption(\"ignoreFunctionLength\") ?? options.loose;\n  // Todo(BABEL 8): Consider default it to false\n  const noNewArrows = api.assumption(\"noNewArrows\") ?? true;\n\n  return {\n    name: \"transform-parameters\",\n\n    visitor: {\n      Function(path) {\n        if (\n          path.isArrowFunctionExpression() &&\n          path\n            .get(\"params\")\n            .some(param => param.isRestElement() || param.isAssignmentPattern())\n        ) {\n          // default/rest visitors require access to `arguments`, so it cannot be an arrow\n          path.arrowFunctionToExpression({\n            allowInsertArrowWithRest: false,\n            noNewArrows,\n          });\n\n          // In some cases arrowFunctionToExpression replaces the function with a wrapper.\n          // Return early; the wrapped function will be visited later in the AST traversal.\n          if (!path.isFunctionExpression()) return;\n        }\n\n        const convertedRest = convertFunctionRest(path);\n        const convertedParams = convertFunctionParams(\n          path,\n          ignoreFunctionLength,\n        );\n\n        if (convertedRest || convertedParams) {\n          // Manually reprocess this scope to ensure that the moved params are updated.\n          path.scope.crawl();\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAA4C,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAO7B,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAAA,IAAAC,eAAA,EAAAC,gBAAA;EAChDH,GAAG,CAACI,aAAa,CAAkB,CAAE,CAAC;EAEtC,MAAMC,oBAAoB,IAAAH,eAAA,GACxBF,GAAG,CAACM,UAAU,CAAC,sBAAsB,CAAC,YAAAJ,eAAA,GAAID,OAAO,CAACM,KAAK;EAEzD,MAAMC,WAAW,IAAAL,gBAAA,GAAGH,GAAG,CAACM,UAAU,CAAC,aAAa,CAAC,YAAAH,gBAAA,GAAI,IAAI;EAEzD,OAAO;IACLM,IAAI,EAAE,sBAAsB;IAE5BC,OAAO,EAAE;MACPC,QAAQA,CAACC,IAAI,EAAE;QACb,IACEA,IAAI,CAACC,yBAAyB,CAAC,CAAC,IAChCD,IAAI,CACDE,GAAG,CAAC,QAAQ,CAAC,CACbC,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACC,aAAa,CAAC,CAAC,IAAID,KAAK,CAACE,mBAAmB,CAAC,CAAC,CAAC,EACtE;UAEAN,IAAI,CAACO,yBAAyB,CAAC;YAC7BC,wBAAwB,EAAE,KAAK;YAC/BZ;UACF,CAAC,CAAC;UAIF,IAAI,CAACI,IAAI,CAACS,oBAAoB,CAAC,CAAC,EAAE;QACpC;QAEA,MAAMC,aAAa,GAAG,IAAAC,aAAmB,EAACX,IAAI,CAAC;QAC/C,MAAMY,eAAe,GAAG,IAAAC,eAAqB,EAC3Cb,IAAI,EACJP,oBACF,CAAC;QAED,IAAIiB,aAAa,IAAIE,eAAe,EAAE;UAEpCZ,IAAI,CAACc,KAAK,CAACC,KAAK,CAAC,CAAC;QACpB;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/params.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/params.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/params.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,144 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = convertFunctionParams;
+var _core = require("@babel/core");
+var _shadowUtils = require("./shadow-utils.js");
+const buildDefaultParam = _core.template.statement(`
+  let VARIABLE_NAME =
+    arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ?
+      arguments[ARGUMENT_KEY]
+    :
+      DEFAULT_VALUE;
+`);
+const buildLooseDefaultParam = _core.template.statement(`
+  if (ASSIGNMENT_IDENTIFIER === UNDEFINED) {
+    ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE;
+  }
+`);
+const buildLooseDestructuredDefaultParam = _core.template.statement(`
+  let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;
+`);
+const buildSafeArgumentsAccess = _core.template.statement(`
+  let $0 = arguments.length > $1 ? arguments[$1] : undefined;
+`);
+function convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement) {
+  const params = path.get("params");
+  const isSimpleParameterList = params.every(param => param.isIdentifier());
+  if (isSimpleParameterList) return false;
+  const {
+    node,
+    scope
+  } = path;
+  const body = [];
+  const shadowedParams = new Set();
+  for (const param of params) {
+    (0, _shadowUtils.collectShadowedParamsNames)(param, scope, shadowedParams);
+  }
+  const state = {
+    needsOuterBinding: false,
+    scope
+  };
+  if (shadowedParams.size === 0) {
+    for (const param of params) {
+      if (!param.isIdentifier()) param.traverse(_shadowUtils.iifeVisitor, state);
+      if (state.needsOuterBinding) break;
+    }
+  }
+  let firstOptionalIndex = null;
+  for (let i = 0; i < params.length; i++) {
+    const param = params[i];
+    if (shouldTransformParam && !shouldTransformParam(i)) {
+      continue;
+    }
+    const transformedRestNodes = [];
+    if (replaceRestElement) {
+      replaceRestElement(path, param, transformedRestNodes);
+    }
+    const paramIsAssignmentPattern = param.isAssignmentPattern();
+    if (paramIsAssignmentPattern && (ignoreFunctionLength || _core.types.isMethod(node, {
+      kind: "set"
+    }))) {
+      const left = param.get("left");
+      const right = param.get("right");
+      const undefinedNode = scope.buildUndefinedNode();
+      if (left.isIdentifier()) {
+        body.push(buildLooseDefaultParam({
+          ASSIGNMENT_IDENTIFIER: _core.types.cloneNode(left.node),
+          DEFAULT_VALUE: right.node,
+          UNDEFINED: undefinedNode
+        }));
+        param.replaceWith(left.node);
+      } else if (left.isObjectPattern() || left.isArrayPattern()) {
+        const paramName = scope.generateUidIdentifier();
+        body.push(buildLooseDestructuredDefaultParam({
+          ASSIGNMENT_IDENTIFIER: left.node,
+          DEFAULT_VALUE: right.node,
+          PARAMETER_NAME: _core.types.cloneNode(paramName),
+          UNDEFINED: undefinedNode
+        }));
+        param.replaceWith(paramName);
+      }
+    } else if (paramIsAssignmentPattern) {
+      if (firstOptionalIndex === null) firstOptionalIndex = i;
+      const left = param.get("left");
+      const right = param.get("right");
+      const defNode = buildDefaultParam({
+        VARIABLE_NAME: left.node,
+        DEFAULT_VALUE: right.node,
+        ARGUMENT_KEY: _core.types.numericLiteral(i)
+      });
+      body.push(defNode);
+    } else if (firstOptionalIndex !== null) {
+      const defNode = buildSafeArgumentsAccess([param.node, _core.types.numericLiteral(i)]);
+      body.push(defNode);
+    } else if (param.isObjectPattern() || param.isArrayPattern()) {
+      const uid = path.scope.generateUidIdentifier("ref");
+      uid.typeAnnotation = param.node.typeAnnotation;
+      const defNode = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(param.node, uid)]);
+      body.push(defNode);
+      param.replaceWith(_core.types.cloneNode(uid));
+    }
+    if (transformedRestNodes) {
+      for (const transformedNode of transformedRestNodes) {
+        body.push(transformedNode);
+      }
+    }
+  }
+  if (firstOptionalIndex !== null) {
+    node.params = node.params.slice(0, firstOptionalIndex);
+  }
+  path.ensureBlock();
+  const path2 = path;
+  const {
+    async,
+    generator
+  } = node;
+  if (generator || state.needsOuterBinding || shadowedParams.size > 0) {
+    body.push((0, _shadowUtils.buildScopeIIFE)(shadowedParams, path2.node.body));
+    path.set("body", _core.types.blockStatement(body));
+    const bodyPath = path2.get("body.body");
+    const arrowPath = bodyPath[bodyPath.length - 1].get("argument.callee");
+    arrowPath.arrowFunctionToExpression();
+    arrowPath.node.generator = generator;
+    arrowPath.node.async = async;
+    node.generator = false;
+    node.async = false;
+    if (async) {
+      path2.node.body = _core.template.statement.ast`{
+        try {
+          ${path2.node.body.body}
+        } catch (e) {
+          return Promise.reject(e);
+        }
+      }`;
+    }
+  } else {
+    path2.get("body").unshiftContainer("body", body);
+  }
+  return true;
+}
+
+//# sourceMappingURL=params.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/params.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/params.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/params.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_shadowUtils","buildDefaultParam","template","statement","buildLooseDefaultParam","buildLooseDestructuredDefaultParam","buildSafeArgumentsAccess","convertFunctionParams","path","ignoreFunctionLength","shouldTransformParam","replaceRestElement","params","get","isSimpleParameterList","every","param","isIdentifier","node","scope","body","shadowedParams","Set","collectShadowedParamsNames","state","needsOuterBinding","size","traverse","iifeVisitor","firstOptionalIndex","i","length","transformedRestNodes","paramIsAssignmentPattern","isAssignmentPattern","t","isMethod","kind","left","right","undefinedNode","buildUndefinedNode","push","ASSIGNMENT_IDENTIFIER","cloneNode","DEFAULT_VALUE","UNDEFINED","replaceWith","isObjectPattern","isArrayPattern","paramName","generateUidIdentifier","PARAMETER_NAME","defNode","VARIABLE_NAME","ARGUMENT_KEY","numericLiteral","uid","typeAnnotation","variableDeclaration","variableDeclarator","transformedNode","slice","ensureBlock","path2","async","generator","buildScopeIIFE","set","blockStatement","bodyPath","arrowPath","arrowFunctionToExpression","ast","unshiftContainer"],"sources":["../src/params.ts"],"sourcesContent":["import { template, types as t, type NodePath } from \"@babel/core\";\n\nimport {\n  iifeVisitor,\n  collectShadowedParamsNames,\n  buildScopeIIFE,\n} from \"./shadow-utils.ts\";\n\nconst buildDefaultParam = template.statement(`\n  let VARIABLE_NAME =\n    arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ?\n      arguments[ARGUMENT_KEY]\n    :\n      DEFAULT_VALUE;\n`);\n\nconst buildLooseDefaultParam = template.statement(`\n  if (ASSIGNMENT_IDENTIFIER === UNDEFINED) {\n    ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE;\n  }\n`);\n\nconst buildLooseDestructuredDefaultParam = template.statement(`\n  let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;\n`);\n\nconst buildSafeArgumentsAccess = template.statement(`\n  let $0 = arguments.length > $1 ? arguments[$1] : undefined;\n`);\n\n// last 2 parameters are optional -- they are used by transform-object-rest-spread/src/index.js\nexport default function convertFunctionParams(\n  path: NodePath<t.Function>,\n  ignoreFunctionLength: boolean | void,\n  shouldTransformParam?: (index: number) => boolean,\n  replaceRestElement?: (\n    path: NodePath<t.Function>,\n    paramPath: NodePath<t.Function[\"params\"][number]>,\n    transformedRestNodes: t.Statement[],\n  ) => void,\n) {\n  const params = path.get(\"params\");\n\n  const isSimpleParameterList = params.every(param => param.isIdentifier());\n  if (isSimpleParameterList) return false;\n\n  const { node, scope } = path;\n\n  const body = [];\n  const shadowedParams = new Set<string>();\n\n  for (const param of params) {\n    collectShadowedParamsNames(param, scope, shadowedParams);\n  }\n\n  const state = {\n    needsOuterBinding: false,\n    scope,\n  };\n  if (shadowedParams.size === 0) {\n    for (const param of params) {\n      if (!param.isIdentifier()) param.traverse(iifeVisitor, state);\n      if (state.needsOuterBinding) break;\n    }\n  }\n\n  let firstOptionalIndex = null;\n\n  for (let i = 0; i < params.length; i++) {\n    const param = params[i];\n\n    if (shouldTransformParam && !shouldTransformParam(i)) {\n      continue;\n    }\n    const transformedRestNodes: t.Statement[] = [];\n    if (replaceRestElement) {\n      replaceRestElement(path, param, transformedRestNodes);\n    }\n\n    const paramIsAssignmentPattern = param.isAssignmentPattern();\n    if (\n      paramIsAssignmentPattern &&\n      (ignoreFunctionLength || t.isMethod(node, { kind: \"set\" }))\n    ) {\n      const left = param.get(\"left\");\n      const right = param.get(\"right\");\n\n      const undefinedNode = scope.buildUndefinedNode();\n\n      if (left.isIdentifier()) {\n        body.push(\n          buildLooseDefaultParam({\n            ASSIGNMENT_IDENTIFIER: t.cloneNode(left.node),\n            DEFAULT_VALUE: right.node,\n            UNDEFINED: undefinedNode,\n          }),\n        );\n        param.replaceWith(left.node);\n      } else if (left.isObjectPattern() || left.isArrayPattern()) {\n        const paramName = scope.generateUidIdentifier();\n        body.push(\n          buildLooseDestructuredDefaultParam({\n            ASSIGNMENT_IDENTIFIER: left.node,\n            DEFAULT_VALUE: right.node,\n            PARAMETER_NAME: t.cloneNode(paramName),\n            UNDEFINED: undefinedNode,\n          }),\n        );\n        param.replaceWith(paramName);\n      }\n    } else if (paramIsAssignmentPattern) {\n      if (firstOptionalIndex === null) firstOptionalIndex = i;\n\n      const left = param.get(\"left\");\n      const right = param.get(\"right\");\n\n      const defNode = buildDefaultParam({\n        VARIABLE_NAME: left.node,\n        DEFAULT_VALUE: right.node,\n        ARGUMENT_KEY: t.numericLiteral(i),\n      });\n      body.push(defNode);\n    } else if (firstOptionalIndex !== null) {\n      const defNode = buildSafeArgumentsAccess([\n        param.node,\n        t.numericLiteral(i),\n      ]);\n      body.push(defNode);\n    } else if (param.isObjectPattern() || param.isArrayPattern()) {\n      const uid = path.scope.generateUidIdentifier(\"ref\");\n      uid.typeAnnotation = param.node.typeAnnotation;\n\n      const defNode = t.variableDeclaration(\"let\", [\n        t.variableDeclarator(param.node, uid),\n      ]);\n      body.push(defNode);\n\n      param.replaceWith(t.cloneNode(uid));\n    }\n\n    if (transformedRestNodes) {\n      for (const transformedNode of transformedRestNodes) {\n        body.push(transformedNode);\n      }\n    }\n  }\n\n  // we need to cut off all trailing parameters\n  if (firstOptionalIndex !== null) {\n    node.params = node.params.slice(0, firstOptionalIndex);\n  }\n\n  // ensure it's a block, useful for arrow functions\n  path.ensureBlock();\n  const path2 = path as NodePath<typeof path.node & { body: t.BlockStatement }>;\n\n  const { async, generator } = node;\n  if (generator || state.needsOuterBinding || shadowedParams.size > 0) {\n    body.push(buildScopeIIFE(shadowedParams, path2.node.body));\n\n    path.set(\"body\", t.blockStatement(body as t.Statement[]));\n\n    // We inject an arrow and then transform it to a normal function, to be\n    // sure that we correctly handle this and arguments.\n    const bodyPath = path2.get(\"body.body\");\n    const arrowPath = bodyPath[bodyPath.length - 1].get(\n      \"argument.callee\",\n    ) as NodePath<t.ArrowFunctionExpression>;\n\n    // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n    arrowPath.arrowFunctionToExpression();\n\n    arrowPath.node.generator = generator;\n    arrowPath.node.async = async;\n\n    node.generator = false;\n    node.async = false;\n    if (async) {\n      // If the default value of a parameter throws, it must reject asynchronously.\n      path2.node.body = template.statement.ast`{\n        try {\n          ${path2.node.body.body}\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }` as t.BlockStatement;\n    }\n  } else {\n    path2.get(\"body\").unshiftContainer(\"body\", body);\n  }\n\n  return true;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/rest.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/rest.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/rest.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,284 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = convertFunctionRest;
+var _core = require("@babel/core");
+var _shadowUtils = require("./shadow-utils.js");
+const buildRest = _core.template.statement(`
+  for (var LEN = ARGUMENTS.length,
+           ARRAY = new Array(ARRAY_LEN),
+           KEY = START;
+       KEY < LEN;
+       KEY++) {
+    ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];
+  }
+`);
+const restIndex = _core.template.expression(`
+  (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX]
+`);
+const restIndexImpure = _core.template.expression(`
+  REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF]
+`);
+const restLength = _core.template.expression(`
+  ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET
+`);
+function referencesRest(path, state) {
+  if (path.node.name === state.name) {
+    return path.scope.bindingIdentifierEquals(state.name, state.outerBinding);
+  }
+  return false;
+}
+const memberExpressionOptimisationVisitor = {
+  Scope(path, state) {
+    if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {
+      path.skip();
+    }
+  },
+  Flow(path) {
+    if (path.isTypeCastExpression()) return;
+    path.skip();
+  },
+  Function(path, state) {
+    const oldNoOptimise = state.noOptimise;
+    state.noOptimise = true;
+    path.traverse(memberExpressionOptimisationVisitor, state);
+    state.noOptimise = oldNoOptimise;
+    path.skip();
+  },
+  ReferencedIdentifier(path, state) {
+    const {
+      node
+    } = path;
+    if (node.name === "arguments") {
+      state.deopted = true;
+    }
+    if (!referencesRest(path, state)) return;
+    if (state.noOptimise) {
+      state.deopted = true;
+    } else {
+      const {
+        parentPath
+      } = path;
+      if (parentPath.listKey === "params" && parentPath.key < state.offset) {
+        return;
+      }
+      if (parentPath.isMemberExpression({
+        object: node
+      })) {
+        const grandparentPath = parentPath.parentPath;
+        const argsOptEligible = !state.deopted && !(grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left || grandparentPath.isLVal() || grandparentPath.isForXStatement() || grandparentPath.isUpdateExpression() || grandparentPath.isUnaryExpression({
+          operator: "delete"
+        }) || (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee);
+        if (argsOptEligible) {
+          if (parentPath.node.computed) {
+            if (parentPath.get("property").isBaseType("number")) {
+              state.candidates.push({
+                cause: "indexGetter",
+                path
+              });
+              return;
+            }
+          } else if (parentPath.node.property.name === "length") {
+            state.candidates.push({
+              cause: "lengthGetter",
+              path
+            });
+            return;
+          }
+        }
+      }
+      if (state.offset === 0 && parentPath.isSpreadElement()) {
+        const call = parentPath.parentPath;
+        if (call.isCallExpression() && call.node.arguments.length === 1) {
+          state.candidates.push({
+            cause: "argSpread",
+            path
+          });
+          return;
+        }
+      }
+      state.references.push(path);
+    }
+  },
+  BindingIdentifier(path, state) {
+    if (referencesRest(path, state)) {
+      state.deopted = true;
+    }
+  }
+};
+function getParamsCount(node) {
+  let count = node.params.length;
+  if (count > 0 && _core.types.isIdentifier(node.params[0], {
+    name: "this"
+  })) {
+    count -= 1;
+  }
+  return count;
+}
+function hasRest(node) {
+  const length = node.params.length;
+  return length > 0 && _core.types.isRestElement(node.params[length - 1]);
+}
+function optimiseIndexGetter(path, argsId, offset) {
+  const offsetLiteral = _core.types.numericLiteral(offset);
+  let index;
+  const parent = path.parent;
+  if (_core.types.isNumericLiteral(parent.property)) {
+    index = _core.types.numericLiteral(parent.property.value + offset);
+  } else if (offset === 0) {
+    index = parent.property;
+  } else {
+    index = _core.types.binaryExpression("+", parent.property, _core.types.cloneNode(offsetLiteral));
+  }
+  const {
+    scope,
+    parentPath
+  } = path;
+  if (!scope.isPure(index)) {
+    const temp = scope.generateUidIdentifierBasedOnNode(index);
+    scope.push({
+      id: temp,
+      kind: "var"
+    });
+    parentPath.replaceWith(restIndexImpure({
+      ARGUMENTS: argsId,
+      OFFSET: offsetLiteral,
+      INDEX: index,
+      REF: _core.types.cloneNode(temp)
+    }));
+  } else {
+    parentPath.replaceWith(restIndex({
+      ARGUMENTS: argsId,
+      OFFSET: offsetLiteral,
+      INDEX: index
+    }));
+    const replacedParentPath = parentPath;
+    const offsetTestPath = replacedParentPath.get("test");
+    const valRes = offsetTestPath.get("left").evaluate();
+    if (valRes.confident) {
+      if (valRes.value === true) {
+        replacedParentPath.replaceWith(scope.buildUndefinedNode());
+      } else {
+        offsetTestPath.replaceWith(offsetTestPath.get("right"));
+      }
+    }
+  }
+}
+function optimiseLengthGetter(path, argsId, offset) {
+  if (offset) {
+    path.parentPath.replaceWith(restLength({
+      ARGUMENTS: argsId,
+      OFFSET: _core.types.numericLiteral(offset)
+    }));
+  } else {
+    path.replaceWith(argsId);
+  }
+}
+function convertFunctionRest(path) {
+  const {
+    node,
+    scope
+  } = path;
+  if (!hasRest(node)) return false;
+  const restPath = path.get(`params.${node.params.length - 1}.argument`);
+  if (!restPath.isIdentifier()) {
+    const shadowedParams = new Set();
+    (0, _shadowUtils.collectShadowedParamsNames)(restPath, path.scope, shadowedParams);
+    let needsIIFE = shadowedParams.size > 0;
+    if (!needsIIFE) {
+      const state = {
+        needsOuterBinding: false,
+        scope
+      };
+      restPath.traverse(_shadowUtils.iifeVisitor, state);
+      needsIIFE = state.needsOuterBinding;
+    }
+    if (needsIIFE) {
+      path.ensureBlock();
+      path.set("body", _core.types.blockStatement([(0, _shadowUtils.buildScopeIIFE)(shadowedParams, path.node.body)]));
+    }
+  }
+  let rest = restPath.node;
+  node.params.pop();
+  if (_core.types.isPattern(rest)) {
+    const pattern = rest;
+    rest = scope.generateUidIdentifier("ref");
+    const declar = _core.types.variableDeclaration("let", [_core.types.variableDeclarator(pattern, rest)]);
+    path.ensureBlock();
+    node.body.body.unshift(declar);
+  } else if (rest.name === "arguments") {
+    scope.rename(rest.name);
+  }
+  const argsId = _core.types.identifier("arguments");
+  const paramsCount = getParamsCount(node);
+  const state = {
+    references: [],
+    offset: paramsCount,
+    argumentsNode: argsId,
+    outerBinding: scope.getBindingIdentifier(rest.name),
+    candidates: [],
+    name: rest.name,
+    deopted: false
+  };
+  path.traverse(memberExpressionOptimisationVisitor, state);
+  if (!state.deopted && !state.references.length) {
+    for (const {
+      path,
+      cause
+    } of state.candidates) {
+      const clonedArgsId = _core.types.cloneNode(argsId);
+      switch (cause) {
+        case "indexGetter":
+          optimiseIndexGetter(path, clonedArgsId, state.offset);
+          break;
+        case "lengthGetter":
+          optimiseLengthGetter(path, clonedArgsId, state.offset);
+          break;
+        default:
+          path.replaceWith(clonedArgsId);
+      }
+    }
+    return true;
+  }
+  state.references.push(...state.candidates.map(({
+    path
+  }) => path));
+  const start = _core.types.numericLiteral(paramsCount);
+  const key = scope.generateUidIdentifier("key");
+  const len = scope.generateUidIdentifier("len");
+  let arrKey, arrLen;
+  if (paramsCount) {
+    arrKey = _core.types.binaryExpression("-", _core.types.cloneNode(key), _core.types.cloneNode(start));
+    arrLen = _core.types.conditionalExpression(_core.types.binaryExpression(">", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.binaryExpression("-", _core.types.cloneNode(len), _core.types.cloneNode(start)), _core.types.numericLiteral(0));
+  } else {
+    arrKey = _core.types.identifier(key.name);
+    arrLen = _core.types.identifier(len.name);
+  }
+  const loop = buildRest({
+    ARGUMENTS: argsId,
+    ARRAY_KEY: arrKey,
+    ARRAY_LEN: arrLen,
+    START: start,
+    ARRAY: rest,
+    KEY: key,
+    LEN: len
+  });
+  if (state.deopted) {
+    node.body.body.unshift(loop);
+  } else {
+    let target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent();
+    target.findParent(path => {
+      if (path.isLoop()) {
+        target = path;
+      } else {
+        return path.isFunction();
+      }
+    });
+    target.insertBefore(loop);
+  }
+  return true;
+}
+
+//# sourceMappingURL=rest.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/rest.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/rest.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/rest.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","_shadowUtils","buildRest","template","statement","restIndex","expression","restIndexImpure","restLength","referencesRest","path","state","node","name","scope","bindingIdentifierEquals","outerBinding","memberExpressionOptimisationVisitor","Scope","skip","Flow","isTypeCastExpression","Function","oldNoOptimise","noOptimise","traverse","ReferencedIdentifier","deopted","parentPath","listKey","key","offset","isMemberExpression","object","grandparentPath","argsOptEligible","isAssignmentExpression","left","isLVal","isForXStatement","isUpdateExpression","isUnaryExpression","operator","isCallExpression","isNewExpression","callee","computed","get","isBaseType","candidates","push","cause","property","isSpreadElement","call","arguments","length","references","BindingIdentifier","getParamsCount","count","params","t","isIdentifier","hasRest","isRestElement","optimiseIndexGetter","argsId","offsetLiteral","numericLiteral","index","parent","isNumericLiteral","value","binaryExpression","cloneNode","isPure","temp","generateUidIdentifierBasedOnNode","id","kind","replaceWith","ARGUMENTS","OFFSET","INDEX","REF","replacedParentPath","offsetTestPath","valRes","evaluate","confident","buildUndefinedNode","optimiseLengthGetter","convertFunctionRest","restPath","shadowedParams","Set","collectShadowedParamsNames","needsIIFE","size","needsOuterBinding","iifeVisitor","ensureBlock","set","blockStatement","buildScopeIIFE","body","rest","pop","isPattern","pattern","generateUidIdentifier","declar","variableDeclaration","variableDeclarator","unshift","rename","identifier","paramsCount","argumentsNode","getBindingIdentifier","clonedArgsId","map","start","len","arrKey","arrLen","conditionalExpression","loop","ARRAY_KEY","ARRAY_LEN","START","ARRAY","KEY","LEN","target","getEarliestCommonAncestorFrom","getStatementParent","findParent","isLoop","isFunction","insertBefore"],"sources":["../src/rest.ts"],"sourcesContent":["import { template, types as t } from \"@babel/core\";\nimport type { NodePath, Visitor } from \"@babel/core\";\n\nimport {\n  iifeVisitor,\n  collectShadowedParamsNames,\n  buildScopeIIFE,\n} from \"./shadow-utils.ts\";\n\nconst buildRest = template.statement(`\n  for (var LEN = ARGUMENTS.length,\n           ARRAY = new Array(ARRAY_LEN),\n           KEY = START;\n       KEY < LEN;\n       KEY++) {\n    ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n  }\n`);\n\nconst restIndex = template.expression(`\n  (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX]\n`);\n\nconst restIndexImpure = template.expression(`\n  REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF]\n`);\n\nconst restLength = template.expression(`\n  ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n`);\n\nfunction referencesRest(\n  path: NodePath<t.Identifier | t.JSXIdentifier>,\n  state: State,\n) {\n  if (path.node.name === state.name) {\n    // Check rest parameter is not shadowed by a binding in another scope.\n    return path.scope.bindingIdentifierEquals(state.name, state.outerBinding);\n  }\n\n  return false;\n}\n\ntype Candidate = {\n  cause: \"argSpread\" | \"indexGetter\" | \"lengthGetter\";\n  path: NodePath<t.Identifier | t.JSXIdentifier>;\n};\n\ntype State = {\n  references: NodePath<t.Identifier | t.JSXIdentifier>[];\n  offset: number;\n\n  argumentsNode: t.Identifier;\n  outerBinding: t.Identifier;\n\n  // candidate member expressions we could optimise if there are no other references\n  candidates: Candidate[];\n\n  // local rest binding name\n  name: string;\n\n  /*\n  It may be possible to optimize the output code in certain ways, such as\n  not generating code to initialize an array (perhaps substituting direct\n  references to arguments[i] or arguments.length for reads of the\n  corresponding rest parameter property) or positioning the initialization\n  code so that it may not have to execute depending on runtime conditions.\n\n  This property tracks eligibility for optimization. \"deopted\" means give up\n  and don't perform optimization. For example, when any of rest's elements /\n  properties is assigned to at the top level, or referenced at all in a\n  nested function.\n  */\n  deopted: boolean;\n  noOptimise?: boolean;\n};\n\nconst memberExpressionOptimisationVisitor: Visitor<State> = {\n  Scope(path, state) {\n    // check if this scope has a local binding that will shadow the rest parameter\n    if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {\n      path.skip();\n    }\n  },\n\n  Flow(path: NodePath<t.Flow>) {\n    // Do not skip TypeCastExpressions as the contain valid non flow code\n    if (path.isTypeCastExpression()) return;\n    // don't touch reference in type annotations\n    path.skip();\n  },\n\n  Function(path, state) {\n    // Detect whether any reference to rest is contained in nested functions to\n    // determine if deopt is necessary.\n    const oldNoOptimise = state.noOptimise;\n    state.noOptimise = true;\n    path.traverse(memberExpressionOptimisationVisitor, state);\n    state.noOptimise = oldNoOptimise;\n\n    // Skip because optimizing references to rest would refer to the `arguments`\n    // of the nested function.\n    path.skip();\n  },\n\n  ReferencedIdentifier(path, state) {\n    const { node } = path;\n\n    // we can't guarantee the purity of arguments\n    if (node.name === \"arguments\") {\n      state.deopted = true;\n    }\n\n    // is this a referenced identifier and is it referencing the rest parameter?\n    if (!referencesRest(path, state)) return;\n\n    if (state.noOptimise) {\n      state.deopted = true;\n    } else {\n      const { parentPath } = path;\n\n      // Is this identifier the right hand side of a default parameter?\n      if (\n        parentPath.listKey === \"params\" &&\n        (parentPath.key as number) < state.offset\n      ) {\n        return;\n      }\n\n      // ex: `args[0]`\n      // ex: `args.whatever`\n      if (parentPath.isMemberExpression({ object: node })) {\n        const grandparentPath = parentPath.parentPath;\n\n        const argsOptEligible =\n          !state.deopted &&\n          !(\n            // ex: `args[0] = \"whatever\"`\n            (\n              (grandparentPath.isAssignmentExpression() &&\n                parentPath.node === grandparentPath.node.left) ||\n              // ex: `[args[0]] = [\"whatever\"]`\n              grandparentPath.isLVal() ||\n              // ex: `for (rest[0] in this)`\n              // ex: `for (rest[0] of this)`\n              grandparentPath.isForXStatement() ||\n              // ex: `++args[0]`\n              // ex: `args[0]--`\n              grandparentPath.isUpdateExpression() ||\n              // ex: `delete args[0]`\n              grandparentPath.isUnaryExpression({ operator: \"delete\" }) ||\n              // ex: `args[0]()`\n              // ex: `new args[0]()`\n              // ex: `new args[0]`\n              ((grandparentPath.isCallExpression() ||\n                grandparentPath.isNewExpression()) &&\n                parentPath.node === grandparentPath.node.callee)\n            )\n          );\n\n        if (argsOptEligible) {\n          if (parentPath.node.computed) {\n            // if we know that this member expression is referencing a number then\n            // we can safely optimise it\n            if (parentPath.get(\"property\").isBaseType(\"number\")) {\n              state.candidates.push({ cause: \"indexGetter\", path });\n              return;\n            }\n          } else if (\n            // @ts-expect-error .length must not be a private name\n            parentPath.node.property.name === \"length\"\n          ) {\n            // args.length\n            state.candidates.push({ cause: \"lengthGetter\", path });\n            return;\n          }\n        }\n      }\n\n      // we can only do these optimizations if the rest variable would match\n      // the arguments exactly\n      // optimise single spread args in calls\n      // ex: fn(...args)\n      if (state.offset === 0 && parentPath.isSpreadElement()) {\n        const call = parentPath.parentPath;\n        if (call.isCallExpression() && call.node.arguments.length === 1) {\n          state.candidates.push({ cause: \"argSpread\", path });\n          return;\n        }\n      }\n\n      state.references.push(path);\n    }\n  },\n\n  /**\n   * Deopt on use of a binding identifier with the same name as our rest param.\n   *\n   * See https://github.com/babel/babel/issues/2091\n   */\n\n  BindingIdentifier(path, state) {\n    if (referencesRest(path, state)) {\n      state.deopted = true;\n    }\n  },\n};\n\nfunction getParamsCount(node: t.Function) {\n  let count = node.params.length;\n  // skip the first parameter if it is a TypeScript 'this parameter'\n  if (count > 0 && t.isIdentifier(node.params[0], { name: \"this\" })) {\n    count -= 1;\n  }\n  return count;\n}\n\nfunction hasRest(node: t.Function) {\n  const length = node.params.length;\n  return length > 0 && t.isRestElement(node.params[length - 1]);\n}\n\nfunction optimiseIndexGetter(\n  path: NodePath<t.Identifier | t.JSXIdentifier>,\n  argsId: t.Identifier,\n  offset: number,\n) {\n  const offsetLiteral = t.numericLiteral(offset);\n  let index;\n  const parent = path.parent as t.MemberExpression;\n\n  if (t.isNumericLiteral(parent.property)) {\n    index = t.numericLiteral(parent.property.value + offset);\n  } else if (offset === 0) {\n    // Avoid unnecessary '+ 0'\n    index = parent.property;\n  } else {\n    index = t.binaryExpression(\n      \"+\",\n      parent.property,\n      t.cloneNode(offsetLiteral),\n    );\n  }\n\n  const { scope, parentPath } = path;\n  if (!scope.isPure(index)) {\n    const temp = scope.generateUidIdentifierBasedOnNode(index);\n    scope.push({ id: temp, kind: \"var\" });\n    parentPath.replaceWith(\n      restIndexImpure({\n        ARGUMENTS: argsId,\n        OFFSET: offsetLiteral,\n        INDEX: index,\n        REF: t.cloneNode(temp),\n      }),\n    );\n  } else {\n    parentPath.replaceWith(\n      restIndex({\n        ARGUMENTS: argsId,\n        OFFSET: offsetLiteral,\n        INDEX: index,\n      }),\n    );\n    const replacedParentPath = parentPath as NodePath<t.ConditionalExpression>;\n\n    // See if we can statically evaluate the first test (i.e. index < offset)\n    // and optimize the AST accordingly.\n    const offsetTestPath = replacedParentPath.get(\n      \"test\",\n    ) as NodePath<t.BinaryExpression>;\n    const valRes = offsetTestPath.get(\"left\").evaluate();\n    if (valRes.confident) {\n      if (valRes.value === true) {\n        replacedParentPath.replaceWith(scope.buildUndefinedNode());\n      } else {\n        offsetTestPath.replaceWith(offsetTestPath.get(\"right\"));\n      }\n    }\n  }\n}\n\nfunction optimiseLengthGetter(\n  path: NodePath<t.Identifier | t.JSXIdentifier>,\n  argsId: t.Identifier,\n  offset: number,\n) {\n  if (offset) {\n    path.parentPath.replaceWith(\n      restLength({\n        ARGUMENTS: argsId,\n        OFFSET: t.numericLiteral(offset),\n      }),\n    );\n  } else {\n    path.replaceWith(argsId);\n  }\n}\n\nexport default function convertFunctionRest(path: NodePath<t.Function>) {\n  const { node, scope } = path;\n  if (!hasRest(node)) return false;\n\n  const restPath = path.get(\n    `params.${node.params.length - 1}.argument`,\n  ) as NodePath<t.ArrayPattern | t.ObjectPattern | t.Identifier>;\n\n  if (!restPath.isIdentifier()) {\n    const shadowedParams = new Set<string>();\n    collectShadowedParamsNames(restPath, path.scope, shadowedParams);\n\n    let needsIIFE = shadowedParams.size > 0;\n    if (!needsIIFE) {\n      const state = {\n        needsOuterBinding: false,\n        scope,\n      };\n      restPath.traverse(iifeVisitor, state);\n      needsIIFE = state.needsOuterBinding;\n    }\n\n    if (needsIIFE) {\n      path.ensureBlock();\n      path.set(\n        \"body\",\n        t.blockStatement([\n          buildScopeIIFE(shadowedParams, path.node.body as t.BlockStatement),\n        ]),\n      );\n    }\n  }\n\n  let rest = restPath.node;\n  node.params.pop(); // This returns 'rest'\n\n  if (t.isPattern(rest)) {\n    const pattern = rest;\n    rest = scope.generateUidIdentifier(\"ref\");\n\n    const declar = t.variableDeclaration(\"let\", [\n      t.variableDeclarator(pattern, rest),\n    ]);\n    path.ensureBlock();\n    (node.body as t.BlockStatement).body.unshift(declar);\n  } else if (rest.name === \"arguments\") {\n    scope.rename(rest.name);\n  }\n\n  const argsId = t.identifier(\"arguments\");\n  const paramsCount = getParamsCount(node);\n\n  // check and optimise for extremely common cases\n  const state: State = {\n    references: [],\n    offset: paramsCount,\n    argumentsNode: argsId,\n    outerBinding: scope.getBindingIdentifier(rest.name),\n    candidates: [],\n    name: rest.name,\n    deopted: false,\n  };\n\n  path.traverse(memberExpressionOptimisationVisitor, state);\n\n  // There are only \"shorthand\" references\n  if (!state.deopted && !state.references.length) {\n    for (const { path, cause } of state.candidates) {\n      const clonedArgsId = t.cloneNode(argsId);\n      switch (cause) {\n        case \"indexGetter\":\n          optimiseIndexGetter(path, clonedArgsId, state.offset);\n          break;\n        case \"lengthGetter\":\n          optimiseLengthGetter(path, clonedArgsId, state.offset);\n          break;\n        default:\n          path.replaceWith(clonedArgsId);\n      }\n    }\n    return true;\n  }\n\n  state.references.push(...state.candidates.map(({ path }) => path));\n\n  const start = t.numericLiteral(paramsCount);\n  const key = scope.generateUidIdentifier(\"key\");\n  const len = scope.generateUidIdentifier(\"len\");\n\n  let arrKey, arrLen;\n  if (paramsCount) {\n    // this method has additional params, so we need to subtract\n    // the index of the current argument position from the\n    // position in the array that we want to populate\n    arrKey = t.binaryExpression(\"-\", t.cloneNode(key), t.cloneNode(start));\n\n    // we need to work out the size of the array that we're\n    // going to store all the rest parameters\n    //\n    // we need to add a check to avoid constructing the array\n    // with <0 if there are less arguments than params as it'll\n    // cause an error\n    arrLen = t.conditionalExpression(\n      t.binaryExpression(\">\", t.cloneNode(len), t.cloneNode(start)),\n      t.binaryExpression(\"-\", t.cloneNode(len), t.cloneNode(start)),\n      t.numericLiteral(0),\n    );\n  } else {\n    arrKey = t.identifier(key.name);\n    arrLen = t.identifier(len.name);\n  }\n\n  const loop = buildRest({\n    ARGUMENTS: argsId,\n    ARRAY_KEY: arrKey,\n    ARRAY_LEN: arrLen,\n    START: start,\n    ARRAY: rest,\n    KEY: key,\n    LEN: len,\n  });\n\n  if (state.deopted) {\n    (node.body as t.BlockStatement).body.unshift(loop);\n  } else {\n    let target = path\n      .getEarliestCommonAncestorFrom(state.references)\n      .getStatementParent();\n\n    // don't perform the allocation inside a loop\n    target.findParent(path => {\n      if (path.isLoop()) {\n        target = path;\n      } else {\n        // Stop crawling up if this is a function.\n        return path.isFunction();\n      }\n    });\n\n    target.insertBefore(loop);\n  }\n\n  return true;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/shadow-utils.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/shadow-utils.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/shadow-utils.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,64 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.buildScopeIIFE = buildScopeIIFE;
+exports.collectShadowedParamsNames = collectShadowedParamsNames;
+exports.iifeVisitor = void 0;
+var _core = require("@babel/core");
+const iifeVisitor = exports.iifeVisitor = {
+  "ReferencedIdentifier|BindingIdentifier"(path, state) {
+    const {
+      scope,
+      node
+    } = path;
+    const {
+      name
+    } = node;
+    if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) {
+      state.needsOuterBinding = true;
+      path.stop();
+    }
+  },
+  "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": path => path.skip()
+};
+function collectShadowedParamsNames(param, functionScope, shadowedParams) {
+  for (const name of Object.keys(param.getBindingIdentifiers())) {
+    var _functionScope$bindin;
+    const constantViolations = (_functionScope$bindin = functionScope.bindings[name]) == null ? void 0 : _functionScope$bindin.constantViolations;
+    if (constantViolations) {
+      for (const redeclarator of constantViolations) {
+        const node = redeclarator.node;
+        switch (node.type) {
+          case "VariableDeclarator":
+            {
+              if (node.init === null) {
+                const declaration = redeclarator.parentPath;
+                if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) {
+                  redeclarator.remove();
+                  break;
+                }
+              }
+              shadowedParams.add(name);
+              break;
+            }
+          case "FunctionDeclaration":
+            shadowedParams.add(name);
+            break;
+        }
+      }
+    }
+  }
+}
+function buildScopeIIFE(shadowedParams, body) {
+  const args = [];
+  const params = [];
+  for (const name of shadowedParams) {
+    args.push(_core.types.identifier(name));
+    params.push(_core.types.identifier(name));
+  }
+  return _core.types.returnStatement(_core.types.callExpression(_core.types.arrowFunctionExpression(params, body), args));
+}
+
+//# sourceMappingURL=shadow-utils.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/shadow-utils.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/shadow-utils.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/lib/shadow-utils.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_core","require","iifeVisitor","exports","ReferencedIdentifier|BindingIdentifier","path","state","scope","node","name","getBinding","parent","hasOwnBinding","needsOuterBinding","stop","skip","collectShadowedParamsNames","param","functionScope","shadowedParams","Object","keys","getBindingIdentifiers","_functionScope$bindin","constantViolations","bindings","redeclarator","type","init","declaration","parentPath","isFor","get","remove","add","buildScopeIIFE","body","args","params","push","t","identifier","returnStatement","callExpression","arrowFunctionExpression"],"sources":["../src/shadow-utils.ts"],"sourcesContent":["import { types as t } from \"@babel/core\";\nimport type { NodePath, Scope, Visitor } from \"@babel/core\";\n\ntype State = {\n  needsOuterBinding: boolean;\n  scope: Scope;\n};\n\nexport const iifeVisitor: Visitor<State> = {\n  \"ReferencedIdentifier|BindingIdentifier\"(\n    path: NodePath<t.Identifier>,\n    state,\n  ) {\n    const { scope, node } = path;\n    const { name } = node;\n\n    if (\n      name === \"eval\" ||\n      (scope.getBinding(name) === state.scope.parent.getBinding(name) &&\n        state.scope.hasOwnBinding(name))\n    ) {\n      state.needsOuterBinding = true;\n      path.stop();\n    }\n  },\n  // type annotations don't use or introduce \"real\" bindings\n  \"TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration\":\n    (path: NodePath) => path.skip(),\n};\n\nexport function collectShadowedParamsNames(\n  param: NodePath<t.Function[\"params\"][number]>,\n  functionScope: Scope,\n  shadowedParams: Set<string>,\n) {\n  for (const name of Object.keys(param.getBindingIdentifiers())) {\n    const constantViolations = functionScope.bindings[name]?.constantViolations;\n    if (constantViolations) {\n      for (const redeclarator of constantViolations) {\n        const node = redeclarator.node;\n        // If a constant violation is a var or a function declaration,\n        // we first check to see if it's a var without an init.\n        // If so, we remove that declarator.\n        // Otherwise, we have to wrap it in an IIFE.\n        switch (node.type) {\n          case \"VariableDeclarator\": {\n            if (node.init === null) {\n              const declaration = redeclarator.parentPath;\n              // The following uninitialized var declarators should not be removed\n              // for (var x in {})\n              // for (var x;;)\n              if (\n                !declaration.parentPath.isFor() ||\n                declaration.parentPath.get(\"body\") === declaration\n              ) {\n                redeclarator.remove();\n                break;\n              }\n            }\n\n            shadowedParams.add(name);\n            break;\n          }\n          case \"FunctionDeclaration\":\n            shadowedParams.add(name);\n            break;\n        }\n      }\n    }\n  }\n}\n\nexport function buildScopeIIFE(\n  shadowedParams: Set<string>,\n  body: t.BlockStatement,\n) {\n  const args = [];\n  const params = [];\n\n  for (const name of shadowedParams) {\n    // We create them twice; the other option is to use t.cloneNode\n    args.push(t.identifier(name));\n    params.push(t.identifier(name));\n  }\n\n  return t.returnStatement(\n    t.callExpression(t.arrowFunctionExpression(params, body), args),\n  );\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAQO,MAAMC,WAA2B,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzC,wCAAwCE,CACtCC,IAA4B,EAC5BC,KAAK,EACL;IACA,MAAM;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGH,IAAI;IAC5B,MAAM;MAAEI;IAAK,CAAC,GAAGD,IAAI;IAErB,IACEC,IAAI,KAAK,MAAM,IACdF,KAAK,CAACG,UAAU,CAACD,IAAI,CAAC,KAAKH,KAAK,CAACC,KAAK,CAACI,MAAM,CAACD,UAAU,CAACD,IAAI,CAAC,IAC7DH,KAAK,CAACC,KAAK,CAACK,aAAa,CAACH,IAAI,CAAE,EAClC;MACAH,KAAK,CAACO,iBAAiB,GAAG,IAAI;MAC9BR,IAAI,CAACS,IAAI,CAAC,CAAC;IACb;EACF,CAAC;EAED,qFAAqF,EAClFT,IAAc,IAAKA,IAAI,CAACU,IAAI,CAAC;AAClC,CAAC;AAEM,SAASC,0BAA0BA,CACxCC,KAA6C,EAC7CC,aAAoB,EACpBC,cAA2B,EAC3B;EACA,KAAK,MAAMV,IAAI,IAAIW,MAAM,CAACC,IAAI,CAACJ,KAAK,CAACK,qBAAqB,CAAC,CAAC,CAAC,EAAE;IAAA,IAAAC,qBAAA;IAC7D,MAAMC,kBAAkB,IAAAD,qBAAA,GAAGL,aAAa,CAACO,QAAQ,CAAChB,IAAI,CAAC,qBAA5Bc,qBAAA,CAA8BC,kBAAkB;IAC3E,IAAIA,kBAAkB,EAAE;MACtB,KAAK,MAAME,YAAY,IAAIF,kBAAkB,EAAE;QAC7C,MAAMhB,IAAI,GAAGkB,YAAY,CAAClB,IAAI;QAK9B,QAAQA,IAAI,CAACmB,IAAI;UACf,KAAK,oBAAoB;YAAE;cACzB,IAAInB,IAAI,CAACoB,IAAI,KAAK,IAAI,EAAE;gBACtB,MAAMC,WAAW,GAAGH,YAAY,CAACI,UAAU;gBAI3C,IACE,CAACD,WAAW,CAACC,UAAU,CAACC,KAAK,CAAC,CAAC,IAC/BF,WAAW,CAACC,UAAU,CAACE,GAAG,CAAC,MAAM,CAAC,KAAKH,WAAW,EAClD;kBACAH,YAAY,CAACO,MAAM,CAAC,CAAC;kBACrB;gBACF;cACF;cAEAd,cAAc,CAACe,GAAG,CAACzB,IAAI,CAAC;cACxB;YACF;UACA,KAAK,qBAAqB;YACxBU,cAAc,CAACe,GAAG,CAACzB,IAAI,CAAC;YACxB;QACJ;MACF;IACF;EACF;AACF;AAEO,SAAS0B,cAAcA,CAC5BhB,cAA2B,EAC3BiB,IAAsB,EACtB;EACA,MAAMC,IAAI,GAAG,EAAE;EACf,MAAMC,MAAM,GAAG,EAAE;EAEjB,KAAK,MAAM7B,IAAI,IAAIU,cAAc,EAAE;IAEjCkB,IAAI,CAACE,IAAI,CAACC,WAAC,CAACC,UAAU,CAAChC,IAAI,CAAC,CAAC;IAC7B6B,MAAM,CAACC,IAAI,CAACC,WAAC,CAACC,UAAU,CAAChC,IAAI,CAAC,CAAC;EACjC;EAEA,OAAO+B,WAAC,CAACE,eAAe,CACtBF,WAAC,CAACG,cAAc,CAACH,WAAC,CAACI,uBAAuB,CAACN,MAAM,EAAEF,IAAI,CAAC,EAAEC,IAAI,CAChE,CAAC;AACH","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-parameters/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-parameters/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-parameters/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-parameters",
+  "version": "7.25.9",
+  "description": "Compile ES2015 default and rest parameters to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-parameters"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-parameters",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-methods/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-methods/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-methods/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-methods/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-methods/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-methods/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-private-methods
+
+> This plugin transforms private class methods
+
+See our website [@babel/plugin-transform-private-methods](https://babeljs.io/docs/babel-plugin-transform-private-methods) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-private-methods
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-private-methods --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-methods/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-methods/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-methods/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  return (0, _helperCreateClassFeaturesPlugin.createClassFeaturePlugin)({
+    name: "transform-private-methods",
+    api,
+    feature: _helperCreateClassFeaturesPlugin.FEATURES.privateMethods,
+    loose: options.loose,
+    manipulateOptions(opts, parserOpts) {
+      {
+        parserOpts.plugins.push("classPrivateMethods");
+      }
+    }
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-methods/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-methods/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-methods/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperCreateClassFeaturesPlugin","_default","exports","default","declare","api","options","assertVersion","createClassFeaturePlugin","name","feature","FEATURES","privateMethods","loose","manipulateOptions","opts","parserOpts","plugins","push"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  createClassFeaturePlugin,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createClassFeaturePlugin({\n    name: \"transform-private-methods\",\n\n    api,\n    feature: FEATURES.privateMethods,\n    loose: options.loose,\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-ignore(Babel 7 vs Babel 8) This plugin has been removed\n        parserOpts.plugins.push(\"classPrivateMethods\");\n      }\n    },\n  });\n});\n"],"mappings":";;;;;;AAEA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,gCAAA,GAAAD,OAAA;AAGoD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMrC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAChDD,GAAG,CAACE,aAAa,uCAAoB,CAAC;EAEtC,OAAO,IAAAC,yDAAwB,EAAC;IAC9BC,IAAI,EAAE,2BAA2B;IAEjCJ,GAAG;IACHK,OAAO,EAAEC,yCAAQ,CAACC,cAAc;IAChCC,KAAK,EAAEP,OAAO,CAACO,KAAK;IAEpBC,iBAAiBA,CAACC,IAAI,EAAEC,UAAU,EAAE;MACC;QAEjCA,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC,qBAAqB,CAAC;MAChD;IACF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-methods/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-methods/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-methods/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-private-methods",
+  "version": "7.25.9",
+  "description": "This plugin transforms private class methods",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-private-methods"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-private-methods",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-create-class-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-private-property-in-object
+
+> This plugin transforms checks for a private property in an object
+
+See our website [@babel/plugin-transform-private-property-in-object](https://babeljs.io/docs/babel-plugin-transform-private-property-in-object) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-private-property-in-object
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-private-property-in-object --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,126 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, opt) => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const {
+    types: t,
+    template
+  } = api;
+  const {
+    loose
+  } = opt;
+  const classWeakSets = new WeakMap();
+  const fieldsWeakSets = new WeakMap();
+  function unshadow(name, targetScope, scope) {
+    while (scope !== targetScope) {
+      if (scope.hasOwnBinding(name)) scope.rename(name);
+      scope = scope.parent;
+    }
+  }
+  function injectToFieldInit(fieldPath, expr, before = false) {
+    if (fieldPath.node.value) {
+      const value = fieldPath.get("value");
+      if (before) {
+        value.insertBefore(expr);
+      } else {
+        value.insertAfter(expr);
+      }
+    } else {
+      fieldPath.set("value", t.unaryExpression("void", expr));
+    }
+  }
+  function injectInitialization(classPath, init) {
+    let firstFieldPath;
+    let constructorPath;
+    for (const el of classPath.get("body.body")) {
+      if ((el.isClassProperty() || el.isClassPrivateProperty()) && !el.node.static) {
+        firstFieldPath = el;
+        break;
+      }
+      if (!constructorPath && el.isClassMethod({
+        kind: "constructor"
+      })) {
+        constructorPath = el;
+      }
+    }
+    if (firstFieldPath) {
+      injectToFieldInit(firstFieldPath, init, true);
+    } else {
+      (0, _helperCreateClassFeaturesPlugin.injectInitialization)(classPath, constructorPath, [t.expressionStatement(init)]);
+    }
+  }
+  function getWeakSetId(weakSets, outerClass, reference, name = "", inject) {
+    let id = weakSets.get(reference.node);
+    if (!id) {
+      id = outerClass.scope.generateUidIdentifier(`${name || ""} brandCheck`);
+      weakSets.set(reference.node, id);
+      inject(reference, template.expression.ast`${t.cloneNode(id)}.add(this)`);
+      const newExpr = t.newExpression(t.identifier("WeakSet"), []);
+      (0, _helperAnnotateAsPure.default)(newExpr);
+      outerClass.insertBefore(template.ast`var ${id} = ${newExpr}`);
+    }
+    return t.cloneNode(id);
+  }
+  return {
+    name: "transform-private-property-in-object",
+    manipulateOptions: (_, parser) => parser.plugins.push("privateIn"),
+    pre() {
+      (0, _helperCreateClassFeaturesPlugin.enableFeature)(this.file, _helperCreateClassFeaturesPlugin.FEATURES.privateIn, loose);
+    },
+    visitor: {
+      BinaryExpression(path, state) {
+        const {
+          node
+        } = path;
+        const {
+          file
+        } = state;
+        if (node.operator !== "in") return;
+        if (!t.isPrivateName(node.left)) return;
+        const {
+          name
+        } = node.left.id;
+        let privateElement;
+        const outerClass = path.findParent(path => {
+          if (!path.isClass()) return false;
+          privateElement = path.get("body.body").find(({
+            node
+          }) => t.isPrivate(node) && node.key.id.name === name);
+          return !!privateElement;
+        });
+        if (outerClass.parentPath.scope.path.isPattern()) {
+          outerClass.replaceWith(template.ast`(() => ${outerClass.node})()`);
+          return;
+        }
+        if (privateElement.node.type === "ClassPrivateMethod") {
+          if (privateElement.node.static) {
+            if (outerClass.node.id) {
+              unshadow(outerClass.node.id.name, outerClass.scope, path.scope);
+            } else {
+              outerClass.set("id", path.scope.generateUidIdentifier("class"));
+            }
+            path.replaceWith(template.expression.ast`
+                ${t.cloneNode(outerClass.node.id)} === ${(0, _helperCreateClassFeaturesPlugin.buildCheckInRHS)(node.right, file)}
+              `);
+          } else {
+            var _outerClass$node$id;
+            const id = getWeakSetId(classWeakSets, outerClass, outerClass, (_outerClass$node$id = outerClass.node.id) == null ? void 0 : _outerClass$node$id.name, injectInitialization);
+            path.replaceWith(template.expression.ast`${id}.has(${(0, _helperCreateClassFeaturesPlugin.buildCheckInRHS)(node.right, file)})`);
+          }
+        } else {
+          const id = getWeakSetId(fieldsWeakSets, outerClass, privateElement, privateElement.node.key.id.name, injectToFieldInit);
+          path.replaceWith(template.expression.ast`${id}.has(${(0, _helperCreateClassFeaturesPlugin.buildCheckInRHS)(node.right, file)})`);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperCreateClassFeaturesPlugin","_helperAnnotateAsPure","_default","exports","default","declare","api","opt","assertVersion","types","t","template","loose","classWeakSets","WeakMap","fieldsWeakSets","unshadow","name","targetScope","scope","hasOwnBinding","rename","parent","injectToFieldInit","fieldPath","expr","before","node","value","get","insertBefore","insertAfter","set","unaryExpression","injectInitialization","classPath","init","firstFieldPath","constructorPath","el","isClassProperty","isClassPrivateProperty","static","isClassMethod","kind","injectConstructorInit","expressionStatement","getWeakSetId","weakSets","outerClass","reference","inject","id","generateUidIdentifier","expression","ast","cloneNode","newExpr","newExpression","identifier","annotateAsPure","manipulateOptions","_","parser","plugins","push","pre","enableFeature","file","FEATURES","privateIn","visitor","BinaryExpression","path","state","operator","isPrivateName","left","privateElement","findParent","isClass","find","isPrivate","key","parentPath","isPattern","replaceWith","type","buildCheckInRHS","right","_outerClass$node$id"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  enableFeature,\n  FEATURES,\n  injectInitialization as injectConstructorInit,\n  buildCheckInRHS,\n} from \"@babel/helper-create-class-features-plugin\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport type { NodePath, Scope, types as t } from \"@babel/core\";\n\nexport interface Options {\n  loose?: boolean;\n}\nexport default declare((api, opt: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n  const { types: t, template } = api;\n  const { loose } = opt;\n\n  // NOTE: When using the class fields or private methods plugins,\n  // they will also take care of '#priv in obj' checks when visiting\n  // the ClassExpression or ClassDeclaration nodes.\n  // The visitor of this plugin is only effective when not compiling\n  // private fields and methods.\n\n  const classWeakSets: WeakMap<t.Class, t.Identifier> = new WeakMap();\n  const fieldsWeakSets: WeakMap<\n    t.ClassPrivateProperty | t.ClassPrivateMethod,\n    t.Identifier\n  > = new WeakMap();\n\n  function unshadow(name: string, targetScope: Scope, scope: Scope) {\n    while (scope !== targetScope) {\n      if (scope.hasOwnBinding(name)) scope.rename(name);\n      scope = scope.parent;\n    }\n  }\n\n  function injectToFieldInit(\n    fieldPath: NodePath<t.ClassPrivateProperty | t.ClassProperty>,\n    expr: t.Expression,\n    before = false,\n  ) {\n    if (fieldPath.node.value) {\n      const value = fieldPath.get(\"value\");\n      if (before) {\n        value.insertBefore(expr);\n      } else {\n        value.insertAfter(expr);\n      }\n    } else {\n      fieldPath.set(\"value\", t.unaryExpression(\"void\", expr));\n    }\n  }\n\n  function injectInitialization(\n    classPath: NodePath<t.Class>,\n    init: t.Expression,\n  ) {\n    let firstFieldPath;\n    let constructorPath;\n\n    for (const el of classPath.get(\"body.body\")) {\n      if (\n        (el.isClassProperty() || el.isClassPrivateProperty()) &&\n        !el.node.static\n      ) {\n        firstFieldPath = el;\n        break;\n      }\n      if (!constructorPath && el.isClassMethod({ kind: \"constructor\" })) {\n        constructorPath = el;\n      }\n    }\n\n    if (firstFieldPath) {\n      injectToFieldInit(firstFieldPath, init, true);\n    } else {\n      injectConstructorInit(classPath, constructorPath, [\n        t.expressionStatement(init),\n      ]);\n    }\n  }\n\n  function getWeakSetId<Ref extends t.Node>(\n    weakSets: WeakMap<t.Node, t.Identifier>,\n    outerClass: NodePath<t.Class>,\n    reference: NodePath<Ref>,\n    name = \"\",\n    inject: (\n      reference: NodePath<Ref>,\n      expression: t.Expression,\n      before?: boolean,\n    ) => void,\n  ) {\n    let id = weakSets.get(reference.node);\n\n    if (!id) {\n      id = outerClass.scope.generateUidIdentifier(`${name || \"\"} brandCheck`);\n      weakSets.set(reference.node, id);\n\n      inject(reference, template.expression.ast`${t.cloneNode(id)}.add(this)`);\n\n      const newExpr = t.newExpression(t.identifier(\"WeakSet\"), []);\n      annotateAsPure(newExpr);\n\n      outerClass.insertBefore(template.ast`var ${id} = ${newExpr}`);\n    }\n\n    return t.cloneNode(id);\n  }\n\n  return {\n    name: \"transform-private-property-in-object\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"privateIn\"),\n    pre() {\n      // Enable this in @babel/helper-create-class-features-plugin, so that it\n      // can be handled by the private fields and methods transform.\n      enableFeature(this.file, FEATURES.privateIn, loose);\n    },\n    visitor: {\n      BinaryExpression(path, state) {\n        const { node } = path;\n        const { file } = state;\n        if (node.operator !== \"in\") return;\n        if (!t.isPrivateName(node.left)) return;\n\n        const { name } = node.left.id;\n\n        let privateElement: NodePath<\n          t.ClassPrivateMethod | t.ClassPrivateProperty\n        >;\n        const outerClass = path.findParent(path => {\n          if (!path.isClass()) return false;\n\n          privateElement = path.get(\"body.body\").find(\n            ({ node }) =>\n              // fixme: Support class accessor property\n              t.isPrivate(node) && node.key.id.name === name,\n          ) as NodePath<t.ClassPrivateMethod | t.ClassPrivateProperty>;\n\n          return !!privateElement;\n        }) as NodePath<t.Class>;\n\n        if (outerClass.parentPath.scope.path.isPattern()) {\n          outerClass.replaceWith(\n            template.ast`(() => ${outerClass.node})()` as t.Statement,\n          );\n          // The injected class will be queued and eventually transformed when visited\n          return;\n        }\n\n        if (privateElement.node.type === \"ClassPrivateMethod\") {\n          if (privateElement.node.static) {\n            if (outerClass.node.id) {\n              unshadow(outerClass.node.id.name, outerClass.scope, path.scope);\n            } else {\n              outerClass.set(\"id\", path.scope.generateUidIdentifier(\"class\"));\n            }\n            path.replaceWith(\n              template.expression.ast`\n                ${t.cloneNode(outerClass.node.id)} === ${buildCheckInRHS(\n                  node.right,\n                  file,\n                )}\n              `,\n            );\n          } else {\n            const id = getWeakSetId(\n              classWeakSets,\n              outerClass,\n              outerClass,\n              outerClass.node.id?.name,\n              injectInitialization,\n            );\n\n            path.replaceWith(\n              template.expression.ast`${id}.has(${buildCheckInRHS(\n                node.right,\n                file,\n              )})`,\n            );\n          }\n        } else {\n          // Private fields might not all be initialized: see the 'halfConstructed'\n          // example at https://v8.dev/features/private-brand-checks.\n\n          const id = getWeakSetId<t.ClassPrivateProperty>(\n            fieldsWeakSets,\n            outerClass,\n            privateElement as NodePath<t.ClassPrivateProperty>,\n            privateElement.node.key.id.name,\n            injectToFieldInit,\n          );\n\n          path.replaceWith(\n            template.expression.ast`${id}.has(${buildCheckInRHS(\n              node.right,\n              file,\n            )})`,\n          );\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-private-property-in-object/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+{
+  "name": "@babel/plugin-transform-private-property-in-object",
+  "version": "7.25.9",
+  "description": "This plugin transforms checks for a private property in an object",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-private-property-in-object"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-private-property-in-object",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "@babel/helper-create-class-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-property-literals/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-property-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-property-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-property-literals/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-property-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-property-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-property-literals
+
+> Ensure that reserved words are quoted in object property keys
+
+See our website [@babel/plugin-transform-property-literals](https://babeljs.io/docs/babel-plugin-transform-property-literals) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-property-literals
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-property-literals --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-property-literals/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-property-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-property-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-property-literals",
+    visitor: {
+      ObjectProperty: {
+        exit({
+          node
+        }) {
+          const key = node.key;
+          if (!node.computed && _core.types.isIdentifier(key) && !_core.types.isValidES3Identifier(key.name)) {
+            node.key = _core.types.stringLiteral(key.name);
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-property-literals/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-property-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-property-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","ObjectProperty","exit","node","key","computed","t","isIdentifier","isValidES3Identifier","stringLiteral"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-property-literals\",\n\n    visitor: {\n      ObjectProperty: {\n        exit({ node }) {\n          const key = node.key;\n          if (\n            !node.computed &&\n            t.isIdentifier(key) &&\n            !t.isValidES3Identifier(key.name)\n          ) {\n            // default: \"bar\" -> \"default\": \"bar\"\n            node.key = t.stringLiteral(key.name);\n          }\n        },\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAyC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1B,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,6BAA6B;IAEnCC,OAAO,EAAE;MACPC,cAAc,EAAE;QACdC,IAAIA,CAAC;UAAEC;QAAK,CAAC,EAAE;UACb,MAAMC,GAAG,GAAGD,IAAI,CAACC,GAAG;UACpB,IACE,CAACD,IAAI,CAACE,QAAQ,IACdC,WAAC,CAACC,YAAY,CAACH,GAAG,CAAC,IACnB,CAACE,WAAC,CAACE,oBAAoB,CAACJ,GAAG,CAACL,IAAI,CAAC,EACjC;YAEAI,IAAI,CAACC,GAAG,GAAGE,WAAC,CAACG,aAAa,CAACL,GAAG,CAACL,IAAI,CAAC;UACtC;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-property-literals/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-property-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-property-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-property-literals",
+  "version": "7.25.9",
+  "description": "Ensure that reserved words are quoted in object property keys",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-property-literals"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-property-literals",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-react-display-name
+
+> Add displayName to React.createClass calls
+
+See our website [@babel/plugin-transform-react-display-name](https://babeljs.io/docs/babel-plugin-transform-react-display-name) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-react-display-name
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-react-display-name --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,92 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _path = require("path");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  function addDisplayName(id, call) {
+    const props = call.arguments[0].properties;
+    let safe = true;
+    for (let i = 0; i < props.length; i++) {
+      const prop = props[i];
+      if (_core.types.isSpreadElement(prop)) {
+        continue;
+      }
+      const key = _core.types.toComputedKey(prop);
+      if (_core.types.isStringLiteral(key, {
+        value: "displayName"
+      })) {
+        safe = false;
+        break;
+      }
+    }
+    if (safe) {
+      props.unshift(_core.types.objectProperty(_core.types.identifier("displayName"), _core.types.stringLiteral(id)));
+    }
+  }
+  const isCreateClassCallExpression = _core.types.buildMatchMemberExpression("React.createClass");
+  const isCreateClassAddon = callee => _core.types.isIdentifier(callee, {
+    name: "createReactClass"
+  });
+  function isCreateClass(node) {
+    if (!node || !_core.types.isCallExpression(node)) return false;
+    if (!isCreateClassCallExpression(node.callee) && !isCreateClassAddon(node.callee)) {
+      return false;
+    }
+    const args = node.arguments;
+    if (args.length !== 1) return false;
+    const first = args[0];
+    if (!_core.types.isObjectExpression(first)) return false;
+    return true;
+  }
+  return {
+    name: "transform-react-display-name",
+    visitor: {
+      ExportDefaultDeclaration({
+        node
+      }, state) {
+        if (isCreateClass(node.declaration)) {
+          const filename = state.filename || "unknown";
+          let displayName = _path.basename(filename, _path.extname(filename));
+          if (displayName === "index") {
+            displayName = _path.basename(_path.dirname(filename));
+          }
+          addDisplayName(displayName, node.declaration);
+        }
+      },
+      CallExpression(path) {
+        const {
+          node
+        } = path;
+        if (!isCreateClass(node)) return;
+        let id;
+        path.find(function (path) {
+          if (path.isAssignmentExpression()) {
+            id = path.node.left;
+          } else if (path.isObjectProperty()) {
+            id = path.node.key;
+          } else if (path.isVariableDeclarator()) {
+            id = path.node.id;
+          } else if (path.isStatement()) {
+            return true;
+          }
+          if (id) return true;
+        });
+        if (!id) return;
+        if (_core.types.isMemberExpression(id)) {
+          id = id.property;
+        }
+        if (_core.types.isIdentifier(id)) {
+          addDisplayName(id.name, node);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_path","_core","_default","exports","default","declare","api","assertVersion","addDisplayName","id","call","props","arguments","properties","safe","i","length","prop","t","isSpreadElement","key","toComputedKey","isStringLiteral","value","unshift","objectProperty","identifier","stringLiteral","isCreateClassCallExpression","buildMatchMemberExpression","isCreateClassAddon","callee","isIdentifier","name","isCreateClass","node","isCallExpression","args","first","isObjectExpression","visitor","ExportDefaultDeclaration","state","declaration","filename","displayName","path","basename","extname","dirname","CallExpression","find","isAssignmentExpression","left","isObjectProperty","isVariableDeclarator","isStatement","isMemberExpression","property"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport path from \"path\";\nimport { types as t } from \"@babel/core\";\n\ntype ReactCreateClassCall = t.CallExpression & {\n  arguments: [t.ObjectExpression];\n};\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  function addDisplayName(id: string, call: ReactCreateClassCall) {\n    const props = call.arguments[0].properties;\n    let safe = true;\n\n    for (let i = 0; i < props.length; i++) {\n      const prop = props[i];\n      if (t.isSpreadElement(prop)) {\n        continue;\n      }\n      const key = t.toComputedKey(prop);\n      if (t.isStringLiteral(key, { value: \"displayName\" })) {\n        safe = false;\n        break;\n      }\n    }\n\n    if (safe) {\n      props.unshift(\n        t.objectProperty(t.identifier(\"displayName\"), t.stringLiteral(id)),\n      );\n    }\n  }\n\n  const isCreateClassCallExpression =\n    t.buildMatchMemberExpression(\"React.createClass\");\n  const isCreateClassAddon = (callee: t.CallExpression[\"callee\"]) =>\n    t.isIdentifier(callee, { name: \"createReactClass\" });\n\n  function isCreateClass(node?: t.Node): node is ReactCreateClassCall {\n    if (!node || !t.isCallExpression(node)) return false;\n\n    // not createReactClass nor React.createClass call member object\n    if (\n      !isCreateClassCallExpression(node.callee) &&\n      !isCreateClassAddon(node.callee)\n    ) {\n      return false;\n    }\n\n    // no call arguments\n    const args = node.arguments;\n    if (args.length !== 1) return false;\n\n    // first node arg is not an object\n    const first = args[0];\n    if (!t.isObjectExpression(first)) return false;\n\n    return true;\n  }\n\n  return {\n    name: \"transform-react-display-name\",\n\n    visitor: {\n      ExportDefaultDeclaration({ node }, state) {\n        if (isCreateClass(node.declaration)) {\n          const filename = state.filename || \"unknown\";\n\n          let displayName = path.basename(filename, path.extname(filename));\n\n          // ./{module name}/index.js\n          if (displayName === \"index\") {\n            displayName = path.basename(path.dirname(filename));\n          }\n\n          addDisplayName(displayName, node.declaration);\n        }\n      },\n\n      CallExpression(path) {\n        const { node } = path;\n        if (!isCreateClass(node)) return;\n\n        let id: t.LVal | t.Expression | t.PrivateName | null;\n\n        // crawl up the ancestry looking for possible candidates for displayName inference\n        path.find(function (path) {\n          if (path.isAssignmentExpression()) {\n            id = path.node.left;\n          } else if (path.isObjectProperty()) {\n            id = path.node.key;\n          } else if (path.isVariableDeclarator()) {\n            id = path.node.id;\n          } else if (path.isStatement()) {\n            // we've hit a statement, we should stop crawling up\n            return true;\n          }\n\n          // we've got an id! no need to continue\n          if (id) return true;\n        });\n\n        // ensure that we have an identifier we can inherit from\n        if (!id) return;\n\n        // foo.bar -> bar\n        if (t.isMemberExpression(id)) {\n          id = id.property;\n        }\n\n        // identifiers are the only thing we can reliably get a name from\n        if (t.isIdentifier(id)) {\n          addDisplayName(id.name, node);\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-display-name/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-react-display-name",
+  "version": "7.25.9",
+  "description": "Add displayName to React.createClass calls",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-react-display-name"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-react-display-name",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-react-jsx-development
+
+> Turn JSX into React function calls in development
+
+See our website [@babel/plugin-transform-react-jsx-development](https://babeljs.io/docs/babel-plugin-transform-react-jsx-development) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-react-jsx-development
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-react-jsx-development --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,10 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _development = require("@babel/plugin-transform-react-jsx/lib/development");
+var _default = exports.default = _development.default;
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_development","require","_default","exports","default","plugin"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\n\nimport plugin from \"@babel/plugin-transform-react-jsx/lib/development\";\n// We need to explicitly annotate this export because\n// @babel/plugin-transform-react-jsx/lib/development has no type definitions\n// (it's not a public entry point)\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\nexport default plugin as typeof import(\"@babel/plugin-transform-react-jsx\").default;\n"],"mappings":";;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AAAuE,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAKxDC,oBAAM","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-development/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,33 @@
+{
+  "name": "@babel/plugin-transform-react-jsx-development",
+  "version": "7.25.9",
+  "description": "Turn JSX into React function calls in development",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-react-jsx-development"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/plugin-transform-react-jsx": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-self/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-self/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-self/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,26 +1,40 @@
 {
-  "name": "@babel/plugin-transform-react-jsx-self",
-  "version": "7.25.9",
-  "description": "Add a __self prop to all JSX Elements",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-react-jsx-self"
+  "_from": "@babel/plugin-transform-react-jsx-self@^7.25.9",
+  "_id": "@babel/plugin-transform-react-jsx-self@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==",
+  "_location": "/@babel/plugin-transform-react-jsx-self",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/plugin-transform-react-jsx-self@^7.25.9",
+    "name": "@babel/plugin-transform-react-jsx-self",
+    "escapedName": "@babel%2fplugin-transform-react-jsx-self",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx-self",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@vitejs/plugin-react"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz",
+  "_shasum": "c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858",
+  "_spec": "@babel/plugin-transform-react-jsx-self@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@vitejs/plugin-react",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.25.9"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "deprecated": false,
+  "description": "Add a __self prop to all JSX Elements",
   "devDependencies": {
     "@babel/core": "^7.25.9",
@@ -31,5 +45,23 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)",
-  "type": "commonjs"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx-self",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-react-jsx-self",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-react-jsx-self"
+  },
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-source/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-source/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx-source/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,26 +1,40 @@
 {
-  "name": "@babel/plugin-transform-react-jsx-source",
-  "version": "7.25.9",
-  "description": "Add a __source prop to all JSX Elements",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-plugin-transform-react-jsx-source"
+  "_from": "@babel/plugin-transform-react-jsx-source@^7.25.9",
+  "_id": "@babel/plugin-transform-react-jsx-source@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==",
+  "_location": "/@babel/plugin-transform-react-jsx-source",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/plugin-transform-react-jsx-source@^7.25.9",
+    "name": "@babel/plugin-transform-react-jsx-source",
+    "escapedName": "@babel%2fplugin-transform-react-jsx-source",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx-source",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_requiredBy": [
+    "/@vitejs/plugin-react"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz",
+  "_shasum": "4c6b8daa520b5f155b5fb55547d7c9fa91417503",
+  "_spec": "@babel/plugin-transform-react-jsx-source@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@vitejs/plugin-react",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "main": "./lib/index.js",
-  "keywords": [
-    "babel-plugin"
-  ],
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "@babel/helper-plugin-utils": "^7.25.9"
   },
-  "peerDependencies": {
-    "@babel/core": "^7.0.0-0"
-  },
+  "deprecated": false,
+  "description": "Add a __source prop to all JSX Elements",
   "devDependencies": {
     "@babel/core": "^7.25.9",
@@ -31,5 +45,23 @@
     "node": ">=6.9.0"
   },
-  "author": "The Babel Team (https://babel.dev/team)",
-  "type": "commonjs"
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx-source",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "license": "MIT",
+  "main": "./lib/index.js",
+  "name": "@babel/plugin-transform-react-jsx-source",
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-react-jsx-source"
+  },
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-react-jsx
+
+> Turn JSX into React function calls
+
+See our website [@babel/plugin-transform-react-jsx](https://babeljs.io/docs/babel-plugin-transform-react-jsx) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-react-jsx
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-react-jsx --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/create-plugin.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/create-plugin.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/create-plugin.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,505 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = createPlugin;
+var _pluginSyntaxJsx = require("@babel/plugin-syntax-jsx");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _helperModuleImports = require("@babel/helper-module-imports");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+const DEFAULT = {
+  importSource: "react",
+  runtime: "automatic",
+  pragma: "React.createElement",
+  pragmaFrag: "React.Fragment"
+};
+const JSX_SOURCE_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsxImportSource\s+(\S+)\s*$/m;
+const JSX_RUNTIME_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsxRuntime\s+(\S+)\s*$/m;
+const JSX_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsx\s+(\S+)\s*$/m;
+const JSX_FRAG_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsxFrag\s+(\S+)\s*$/m;
+const get = (pass, name) => pass.get(`@babel/plugin-react-jsx/${name}`);
+const set = (pass, name, v) => pass.set(`@babel/plugin-react-jsx/${name}`, v);
+function hasProto(node) {
+  return node.properties.some(value => _core.types.isObjectProperty(value, {
+    computed: false,
+    shorthand: false
+  }) && (_core.types.isIdentifier(value.key, {
+    name: "__proto__"
+  }) || _core.types.isStringLiteral(value.key, {
+    value: "__proto__"
+  })));
+}
+function createPlugin({
+  name,
+  development
+}) {
+  return (0, _helperPluginUtils.declare)((_, options) => {
+    const {
+      pure: PURE_ANNOTATION,
+      throwIfNamespace = true,
+      filter,
+      runtime: RUNTIME_DEFAULT = development ? "automatic" : "classic",
+      importSource: IMPORT_SOURCE_DEFAULT = DEFAULT.importSource,
+      pragma: PRAGMA_DEFAULT = DEFAULT.pragma,
+      pragmaFrag: PRAGMA_FRAG_DEFAULT = DEFAULT.pragmaFrag
+    } = options;
+    {
+      var {
+        useSpread = false,
+        useBuiltIns = false
+      } = options;
+      if (RUNTIME_DEFAULT === "classic") {
+        if (typeof useSpread !== "boolean") {
+          throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useSpread (defaults to false)");
+        }
+        if (typeof useBuiltIns !== "boolean") {
+          throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useBuiltIns (defaults to false)");
+        }
+        if (useSpread && useBuiltIns) {
+          throw new Error("transform-react-jsx currently only accepts useBuiltIns or useSpread " + "but not both");
+        }
+      }
+    }
+    const injectMetaPropertiesVisitor = {
+      JSXOpeningElement(path, state) {
+        const attributes = [];
+        if (isThisAllowed(path.scope)) {
+          attributes.push(_core.types.jsxAttribute(_core.types.jsxIdentifier("__self"), _core.types.jsxExpressionContainer(_core.types.thisExpression())));
+        }
+        attributes.push(_core.types.jsxAttribute(_core.types.jsxIdentifier("__source"), _core.types.jsxExpressionContainer(makeSource(path, state))));
+        path.pushContainer("attributes", attributes);
+      }
+    };
+    return {
+      name,
+      inherits: _pluginSyntaxJsx.default,
+      visitor: {
+        JSXNamespacedName(path) {
+          if (throwIfNamespace) {
+            throw path.buildCodeFrameError(`Namespace tags are not supported by default. React's JSX doesn't support namespace tags. \
+You can set \`throwIfNamespace: false\` to bypass this warning.`);
+          }
+        },
+        JSXSpreadChild(path) {
+          throw path.buildCodeFrameError("Spread children are not supported in React.");
+        },
+        Program: {
+          enter(path, state) {
+            const {
+              file
+            } = state;
+            let runtime = RUNTIME_DEFAULT;
+            let source = IMPORT_SOURCE_DEFAULT;
+            let pragma = PRAGMA_DEFAULT;
+            let pragmaFrag = PRAGMA_FRAG_DEFAULT;
+            let sourceSet = !!options.importSource;
+            let pragmaSet = !!options.pragma;
+            let pragmaFragSet = !!options.pragmaFrag;
+            if (file.ast.comments) {
+              for (const comment of file.ast.comments) {
+                const sourceMatches = JSX_SOURCE_ANNOTATION_REGEX.exec(comment.value);
+                if (sourceMatches) {
+                  source = sourceMatches[1];
+                  sourceSet = true;
+                }
+                const runtimeMatches = JSX_RUNTIME_ANNOTATION_REGEX.exec(comment.value);
+                if (runtimeMatches) {
+                  runtime = runtimeMatches[1];
+                }
+                const jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value);
+                if (jsxMatches) {
+                  pragma = jsxMatches[1];
+                  pragmaSet = true;
+                }
+                const jsxFragMatches = JSX_FRAG_ANNOTATION_REGEX.exec(comment.value);
+                if (jsxFragMatches) {
+                  pragmaFrag = jsxFragMatches[1];
+                  pragmaFragSet = true;
+                }
+              }
+            }
+            set(state, "runtime", runtime);
+            if (runtime === "classic") {
+              if (sourceSet) {
+                throw path.buildCodeFrameError(`importSource cannot be set when runtime is classic.`);
+              }
+              const createElement = toMemberExpression(pragma);
+              const fragment = toMemberExpression(pragmaFrag);
+              set(state, "id/createElement", () => _core.types.cloneNode(createElement));
+              set(state, "id/fragment", () => _core.types.cloneNode(fragment));
+              set(state, "defaultPure", pragma === DEFAULT.pragma);
+            } else if (runtime === "automatic") {
+              if (pragmaSet || pragmaFragSet) {
+                throw path.buildCodeFrameError(`pragma and pragmaFrag cannot be set when runtime is automatic.`);
+              }
+              const define = (name, id) => set(state, name, createImportLazily(state, path, id, source));
+              define("id/jsx", development ? "jsxDEV" : "jsx");
+              define("id/jsxs", development ? "jsxDEV" : "jsxs");
+              define("id/createElement", "createElement");
+              define("id/fragment", "Fragment");
+              set(state, "defaultPure", source === DEFAULT.importSource);
+            } else {
+              throw path.buildCodeFrameError(`Runtime must be either "classic" or "automatic".`);
+            }
+            if (development) {
+              path.traverse(injectMetaPropertiesVisitor, state);
+            }
+          }
+        },
+        JSXFragment: {
+          exit(path, file) {
+            let callExpr;
+            if (get(file, "runtime") === "classic") {
+              callExpr = buildCreateElementFragmentCall(path, file);
+            } else {
+              callExpr = buildJSXFragmentCall(path, file);
+            }
+            path.replaceWith(_core.types.inherits(callExpr, path.node));
+          }
+        },
+        JSXElement: {
+          exit(path, file) {
+            let callExpr;
+            if (get(file, "runtime") === "classic" || shouldUseCreateElement(path)) {
+              callExpr = buildCreateElementCall(path, file);
+            } else {
+              callExpr = buildJSXElementCall(path, file);
+            }
+            path.replaceWith(_core.types.inherits(callExpr, path.node));
+          }
+        },
+        JSXAttribute(path) {
+          if (_core.types.isJSXElement(path.node.value)) {
+            path.node.value = _core.types.jsxExpressionContainer(path.node.value);
+          }
+        }
+      }
+    };
+    function isDerivedClass(classPath) {
+      return classPath.node.superClass !== null;
+    }
+    function isThisAllowed(scope) {
+      do {
+        const {
+          path
+        } = scope;
+        if (path.isFunctionParent() && !path.isArrowFunctionExpression()) {
+          if (!path.isMethod()) {
+            return true;
+          }
+          if (path.node.kind !== "constructor") {
+            return true;
+          }
+          return !isDerivedClass(path.parentPath.parentPath);
+        }
+        if (path.isTSModuleBlock()) {
+          return false;
+        }
+      } while (scope = scope.parent);
+      return true;
+    }
+    function call(pass, name, args) {
+      const node = _core.types.callExpression(get(pass, `id/${name}`)(), args);
+      if (PURE_ANNOTATION != null ? PURE_ANNOTATION : get(pass, "defaultPure")) (0, _helperAnnotateAsPure.default)(node);
+      return node;
+    }
+    function shouldUseCreateElement(path) {
+      const openingPath = path.get("openingElement");
+      const attributes = openingPath.node.attributes;
+      let seenPropsSpread = false;
+      for (let i = 0; i < attributes.length; i++) {
+        const attr = attributes[i];
+        if (seenPropsSpread && _core.types.isJSXAttribute(attr) && attr.name.name === "key") {
+          return true;
+        } else if (_core.types.isJSXSpreadAttribute(attr)) {
+          seenPropsSpread = true;
+        }
+      }
+      return false;
+    }
+    function convertJSXIdentifier(node, parent) {
+      if (_core.types.isJSXIdentifier(node)) {
+        if (node.name === "this" && _core.types.isReferenced(node, parent)) {
+          return _core.types.thisExpression();
+        } else if (_core.types.isValidIdentifier(node.name, false)) {
+          node.type = "Identifier";
+          return node;
+        } else {
+          return _core.types.stringLiteral(node.name);
+        }
+      } else if (_core.types.isJSXMemberExpression(node)) {
+        return _core.types.memberExpression(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node));
+      } else if (_core.types.isJSXNamespacedName(node)) {
+        return _core.types.stringLiteral(`${node.namespace.name}:${node.name.name}`);
+      }
+      return node;
+    }
+    function convertAttributeValue(node) {
+      if (_core.types.isJSXExpressionContainer(node)) {
+        return node.expression;
+      } else {
+        return node;
+      }
+    }
+    function accumulateAttribute(array, attribute) {
+      if (_core.types.isJSXSpreadAttribute(attribute.node)) {
+        const arg = attribute.node.argument;
+        if (_core.types.isObjectExpression(arg) && !hasProto(arg)) {
+          array.push(...arg.properties);
+        } else {
+          array.push(_core.types.spreadElement(arg));
+        }
+        return array;
+      }
+      const value = convertAttributeValue(attribute.node.name.name !== "key" ? attribute.node.value || _core.types.booleanLiteral(true) : attribute.node.value);
+      if (attribute.node.name.name === "key" && value === null) {
+        throw attribute.buildCodeFrameError('Please provide an explicit key value. Using "key" as a shorthand for "key={true}" is not allowed.');
+      }
+      if (_core.types.isStringLiteral(value) && !_core.types.isJSXExpressionContainer(attribute.node.value)) {
+        var _value$extra;
+        value.value = value.value.replace(/\n\s+/g, " ");
+        (_value$extra = value.extra) == null || delete _value$extra.raw;
+      }
+      if (_core.types.isJSXNamespacedName(attribute.node.name)) {
+        attribute.node.name = _core.types.stringLiteral(attribute.node.name.namespace.name + ":" + attribute.node.name.name.name);
+      } else if (_core.types.isValidIdentifier(attribute.node.name.name, false)) {
+        attribute.node.name.type = "Identifier";
+      } else {
+        attribute.node.name = _core.types.stringLiteral(attribute.node.name.name);
+      }
+      array.push(_core.types.inherits(_core.types.objectProperty(attribute.node.name, value), attribute.node));
+      return array;
+    }
+    function buildChildrenProperty(children) {
+      let childrenNode;
+      if (children.length === 1) {
+        childrenNode = children[0];
+      } else if (children.length > 1) {
+        childrenNode = _core.types.arrayExpression(children);
+      } else {
+        return undefined;
+      }
+      return _core.types.objectProperty(_core.types.identifier("children"), childrenNode);
+    }
+    function buildJSXElementCall(path, file) {
+      const openingPath = path.get("openingElement");
+      const args = [getTag(openingPath)];
+      const attribsArray = [];
+      const extracted = Object.create(null);
+      for (const attr of openingPath.get("attributes")) {
+        if (attr.isJSXAttribute() && _core.types.isJSXIdentifier(attr.node.name)) {
+          const {
+            name
+          } = attr.node.name;
+          switch (name) {
+            case "__source":
+            case "__self":
+              if (extracted[name]) throw sourceSelfError(path, name);
+            case "key":
+              {
+                const keyValue = convertAttributeValue(attr.node.value);
+                if (keyValue === null) {
+                  throw attr.buildCodeFrameError('Please provide an explicit key value. Using "key" as a shorthand for "key={true}" is not allowed.');
+                }
+                extracted[name] = keyValue;
+                break;
+              }
+            default:
+              attribsArray.push(attr);
+          }
+        } else {
+          attribsArray.push(attr);
+        }
+      }
+      const children = _core.types.react.buildChildren(path.node);
+      let attribs;
+      if (attribsArray.length || children.length) {
+        attribs = buildJSXOpeningElementAttributes(attribsArray, children);
+      } else {
+        attribs = _core.types.objectExpression([]);
+      }
+      args.push(attribs);
+      if (development) {
+        var _extracted$key;
+        args.push((_extracted$key = extracted.key) != null ? _extracted$key : path.scope.buildUndefinedNode(), _core.types.booleanLiteral(children.length > 1));
+        if (extracted.__source) {
+          args.push(extracted.__source);
+          if (extracted.__self) args.push(extracted.__self);
+        } else if (extracted.__self) {
+          args.push(path.scope.buildUndefinedNode(), extracted.__self);
+        }
+      } else if (extracted.key !== undefined) {
+        args.push(extracted.key);
+      }
+      return call(file, children.length > 1 ? "jsxs" : "jsx", args);
+    }
+    function buildJSXOpeningElementAttributes(attribs, children) {
+      const props = attribs.reduce(accumulateAttribute, []);
+      if ((children == null ? void 0 : children.length) > 0) {
+        props.push(buildChildrenProperty(children));
+      }
+      return _core.types.objectExpression(props);
+    }
+    function buildJSXFragmentCall(path, file) {
+      const args = [get(file, "id/fragment")()];
+      const children = _core.types.react.buildChildren(path.node);
+      args.push(_core.types.objectExpression(children.length > 0 ? [buildChildrenProperty(children)] : []));
+      if (development) {
+        args.push(path.scope.buildUndefinedNode(), _core.types.booleanLiteral(children.length > 1));
+      }
+      return call(file, children.length > 1 ? "jsxs" : "jsx", args);
+    }
+    function buildCreateElementFragmentCall(path, file) {
+      if (filter && !filter(path.node, file)) return;
+      return call(file, "createElement", [get(file, "id/fragment")(), _core.types.nullLiteral(), ..._core.types.react.buildChildren(path.node)]);
+    }
+    function buildCreateElementCall(path, file) {
+      const openingPath = path.get("openingElement");
+      return call(file, "createElement", [getTag(openingPath), buildCreateElementOpeningElementAttributes(file, path, openingPath.get("attributes")), ..._core.types.react.buildChildren(path.node)]);
+    }
+    function getTag(openingPath) {
+      const tagExpr = convertJSXIdentifier(openingPath.node.name, openingPath.node);
+      let tagName;
+      if (_core.types.isIdentifier(tagExpr)) {
+        tagName = tagExpr.name;
+      } else if (_core.types.isStringLiteral(tagExpr)) {
+        tagName = tagExpr.value;
+      }
+      if (_core.types.react.isCompatTag(tagName)) {
+        return _core.types.stringLiteral(tagName);
+      } else {
+        return tagExpr;
+      }
+    }
+    function buildCreateElementOpeningElementAttributes(file, path, attribs) {
+      const runtime = get(file, "runtime");
+      {
+        if (runtime !== "automatic") {
+          const objs = [];
+          const props = attribs.reduce(accumulateAttribute, []);
+          if (!useSpread) {
+            let start = 0;
+            props.forEach((prop, i) => {
+              if (_core.types.isSpreadElement(prop)) {
+                if (i > start) {
+                  objs.push(_core.types.objectExpression(props.slice(start, i)));
+                }
+                objs.push(prop.argument);
+                start = i + 1;
+              }
+            });
+            if (props.length > start) {
+              objs.push(_core.types.objectExpression(props.slice(start)));
+            }
+          } else if (props.length) {
+            objs.push(_core.types.objectExpression(props));
+          }
+          if (!objs.length) {
+            return _core.types.nullLiteral();
+          }
+          if (objs.length === 1) {
+            if (!(_core.types.isSpreadElement(props[0]) && _core.types.isObjectExpression(props[0].argument))) {
+              return objs[0];
+            }
+          }
+          if (!_core.types.isObjectExpression(objs[0])) {
+            objs.unshift(_core.types.objectExpression([]));
+          }
+          const helper = useBuiltIns ? _core.types.memberExpression(_core.types.identifier("Object"), _core.types.identifier("assign")) : file.addHelper("extends");
+          return _core.types.callExpression(helper, objs);
+        }
+      }
+      const props = [];
+      const found = Object.create(null);
+      for (const attr of attribs) {
+        const {
+          node
+        } = attr;
+        const name = _core.types.isJSXAttribute(node) && _core.types.isJSXIdentifier(node.name) && node.name.name;
+        if (runtime === "automatic" && (name === "__source" || name === "__self")) {
+          if (found[name]) throw sourceSelfError(path, name);
+          found[name] = true;
+        }
+        accumulateAttribute(props, attr);
+      }
+      return props.length === 1 && _core.types.isSpreadElement(props[0]) && !_core.types.isObjectExpression(props[0].argument) ? props[0].argument : props.length > 0 ? _core.types.objectExpression(props) : _core.types.nullLiteral();
+    }
+  });
+  function getSource(source, importName) {
+    switch (importName) {
+      case "Fragment":
+        return `${source}/${development ? "jsx-dev-runtime" : "jsx-runtime"}`;
+      case "jsxDEV":
+        return `${source}/jsx-dev-runtime`;
+      case "jsx":
+      case "jsxs":
+        return `${source}/jsx-runtime`;
+      case "createElement":
+        return source;
+    }
+  }
+  function createImportLazily(pass, path, importName, source) {
+    return () => {
+      const actualSource = getSource(source, importName);
+      if ((0, _helperModuleImports.isModule)(path)) {
+        let reference = get(pass, `imports/${importName}`);
+        if (reference) return _core.types.cloneNode(reference);
+        reference = (0, _helperModuleImports.addNamed)(path, importName, actualSource, {
+          importedInterop: "uncompiled",
+          importPosition: "after"
+        });
+        set(pass, `imports/${importName}`, reference);
+        return reference;
+      } else {
+        let reference = get(pass, `requires/${actualSource}`);
+        if (reference) {
+          reference = _core.types.cloneNode(reference);
+        } else {
+          reference = (0, _helperModuleImports.addNamespace)(path, actualSource, {
+            importedInterop: "uncompiled"
+          });
+          set(pass, `requires/${actualSource}`, reference);
+        }
+        return _core.types.memberExpression(reference, _core.types.identifier(importName));
+      }
+    };
+  }
+}
+function toMemberExpression(id) {
+  return id.split(".").map(name => _core.types.identifier(name)).reduce((object, property) => _core.types.memberExpression(object, property));
+}
+function makeSource(path, state) {
+  const location = path.node.loc;
+  if (!location) {
+    return path.scope.buildUndefinedNode();
+  }
+  if (!state.fileNameIdentifier) {
+    const {
+      filename = ""
+    } = state;
+    const fileNameIdentifier = path.scope.generateUidIdentifier("_jsxFileName");
+    path.scope.getProgramParent().push({
+      id: fileNameIdentifier,
+      init: _core.types.stringLiteral(filename)
+    });
+    state.fileNameIdentifier = fileNameIdentifier;
+  }
+  return makeTrace(_core.types.cloneNode(state.fileNameIdentifier), location.start.line, location.start.column);
+}
+function makeTrace(fileNameIdentifier, lineNumber, column0Based) {
+  const fileLineLiteral = lineNumber != null ? _core.types.numericLiteral(lineNumber) : _core.types.nullLiteral();
+  const fileColumnLiteral = column0Based != null ? _core.types.numericLiteral(column0Based + 1) : _core.types.nullLiteral();
+  return _core.template.expression.ast`{
+    fileName: ${fileNameIdentifier},
+    lineNumber: ${fileLineLiteral},
+    columnNumber: ${fileColumnLiteral},
+  }`;
+}
+function sourceSelfError(path, name) {
+  const pluginName = `transform-react-jsx-${name.slice(2)}`;
+  return path.buildCodeFrameError(`Duplicate ${name} prop found. You are most likely using the deprecated ${pluginName} Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config.`);
+}
+
+//# sourceMappingURL=create-plugin.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/create-plugin.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/create-plugin.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/create-plugin.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_pluginSyntaxJsx","require","_helperPluginUtils","_core","_helperModuleImports","_helperAnnotateAsPure","DEFAULT","importSource","runtime","pragma","pragmaFrag","JSX_SOURCE_ANNOTATION_REGEX","JSX_RUNTIME_ANNOTATION_REGEX","JSX_ANNOTATION_REGEX","JSX_FRAG_ANNOTATION_REGEX","get","pass","name","set","v","hasProto","node","properties","some","value","t","isObjectProperty","computed","shorthand","isIdentifier","key","isStringLiteral","createPlugin","development","declare","_","options","pure","PURE_ANNOTATION","throwIfNamespace","filter","RUNTIME_DEFAULT","IMPORT_SOURCE_DEFAULT","PRAGMA_DEFAULT","PRAGMA_FRAG_DEFAULT","useSpread","useBuiltIns","Error","injectMetaPropertiesVisitor","JSXOpeningElement","path","state","attributes","isThisAllowed","scope","push","jsxAttribute","jsxIdentifier","jsxExpressionContainer","thisExpression","makeSource","pushContainer","inherits","jsx","visitor","JSXNamespacedName","buildCodeFrameError","JSXSpreadChild","Program","enter","file","source","sourceSet","pragmaSet","pragmaFragSet","ast","comments","comment","sourceMatches","exec","runtimeMatches","jsxMatches","jsxFragMatches","createElement","toMemberExpression","fragment","cloneNode","define","id","createImportLazily","traverse","JSXFragment","exit","callExpr","buildCreateElementFragmentCall","buildJSXFragmentCall","replaceWith","JSXElement","shouldUseCreateElement","buildCreateElementCall","buildJSXElementCall","JSXAttribute","isJSXElement","isDerivedClass","classPath","superClass","isFunctionParent","isArrowFunctionExpression","isMethod","kind","parentPath","isTSModuleBlock","parent","call","args","callExpression","annotateAsPure","openingPath","seenPropsSpread","i","length","attr","isJSXAttribute","isJSXSpreadAttribute","convertJSXIdentifier","isJSXIdentifier","isReferenced","isValidIdentifier","type","stringLiteral","isJSXMemberExpression","memberExpression","object","property","isJSXNamespacedName","namespace","convertAttributeValue","isJSXExpressionContainer","expression","accumulateAttribute","array","attribute","arg","argument","isObjectExpression","spreadElement","booleanLiteral","_value$extra","replace","extra","raw","objectProperty","buildChildrenProperty","children","childrenNode","arrayExpression","undefined","identifier","getTag","attribsArray","extracted","Object","create","sourceSelfError","keyValue","react","buildChildren","attribs","buildJSXOpeningElementAttributes","objectExpression","_extracted$key","buildUndefinedNode","__source","__self","props","reduce","nullLiteral","buildCreateElementOpeningElementAttributes","tagExpr","tagName","isCompatTag","objs","start","forEach","prop","isSpreadElement","slice","unshift","helper","addHelper","found","getSource","importName","actualSource","isModule","reference","addNamed","importedInterop","importPosition","addNamespace","split","map","location","loc","fileNameIdentifier","filename","generateUidIdentifier","getProgramParent","init","makeTrace","line","column","lineNumber","column0Based","fileLineLiteral","numericLiteral","fileColumnLiteral","template","pluginName"],"sources":["../src/create-plugin.ts"],"sourcesContent":["import jsx from \"@babel/plugin-syntax-jsx\";\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginPass, NodePath, Scope, Visitor } from \"@babel/core\";\nimport { addNamed, addNamespace, isModule } from \"@babel/helper-module-imports\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport type {\n  CallExpression,\n  Class,\n  Expression,\n  Identifier,\n  JSXAttribute,\n  JSXElement,\n  JSXFragment,\n  JSXOpeningElement,\n  JSXSpreadAttribute,\n  MemberExpression,\n  ObjectExpression,\n  Program,\n} from \"@babel/types\";\n\nconst DEFAULT = {\n  importSource: \"react\",\n  runtime: \"automatic\",\n  pragma: \"React.createElement\",\n  pragmaFrag: \"React.Fragment\",\n};\n\nconst JSX_SOURCE_ANNOTATION_REGEX =\n  /^\\s*(?:\\*\\s*)?@jsxImportSource\\s+(\\S+)\\s*$/m;\nconst JSX_RUNTIME_ANNOTATION_REGEX = /^\\s*(?:\\*\\s*)?@jsxRuntime\\s+(\\S+)\\s*$/m;\n\nconst JSX_ANNOTATION_REGEX = /^\\s*(?:\\*\\s*)?@jsx\\s+(\\S+)\\s*$/m;\nconst JSX_FRAG_ANNOTATION_REGEX = /^\\s*(?:\\*\\s*)?@jsxFrag\\s+(\\S+)\\s*$/m;\n\nconst get = (pass: PluginPass, name: string) =>\n  pass.get(`@babel/plugin-react-jsx/${name}`);\nconst set = (pass: PluginPass, name: string, v: any) =>\n  pass.set(`@babel/plugin-react-jsx/${name}`, v);\n\nfunction hasProto(node: t.ObjectExpression) {\n  return node.properties.some(\n    value =>\n      t.isObjectProperty(value, { computed: false, shorthand: false }) &&\n      (t.isIdentifier(value.key, { name: \"__proto__\" }) ||\n        t.isStringLiteral(value.key, { value: \"__proto__\" })),\n  );\n}\n\nexport interface Options {\n  filter?: (node: t.Node, pass: PluginPass) => boolean;\n  importSource?: string;\n  pragma?: string;\n  pragmaFrag?: string;\n  pure?: string;\n  runtime?: \"automatic\" | \"classic\";\n  throwIfNamespace?: boolean;\n  useBuiltIns: boolean;\n  useSpread?: boolean;\n}\nexport default function createPlugin({\n  name,\n  development,\n}: {\n  name: string;\n  development: boolean;\n}) {\n  return declare((_, options: Options) => {\n    const {\n      pure: PURE_ANNOTATION,\n\n      throwIfNamespace = true,\n\n      filter,\n\n      runtime: RUNTIME_DEFAULT = process.env.BABEL_8_BREAKING\n        ? \"automatic\"\n        : development\n          ? \"automatic\"\n          : \"classic\",\n\n      importSource: IMPORT_SOURCE_DEFAULT = DEFAULT.importSource,\n      pragma: PRAGMA_DEFAULT = DEFAULT.pragma,\n      pragmaFrag: PRAGMA_FRAG_DEFAULT = DEFAULT.pragmaFrag,\n    } = options;\n\n    if (process.env.BABEL_8_BREAKING) {\n      if (\"useSpread\" in options) {\n        throw new Error(\n          '@babel/plugin-transform-react-jsx: Since Babel 8, an inline object with spread elements is always used, and the \"useSpread\" option is no longer available. Please remove it from your config.',\n        );\n      }\n\n      if (\"useBuiltIns\" in options) {\n        const useBuiltInsFormatted = JSON.stringify(options.useBuiltIns);\n        throw new Error(\n          `@babel/plugin-transform-react-jsx: Since \"useBuiltIns\" is removed in Babel 8, you can remove it from the config.\n- Babel 8 now transforms JSX spread to object spread. If you need to transpile object spread with\n\\`useBuiltIns: ${useBuiltInsFormatted}\\`, you can use the following config\n{\n  \"plugins\": [\n    \"@babel/plugin-transform-react-jsx\"\n    [\"@babel/plugin-transform-object-rest-spread\", { \"loose\": true, \"useBuiltIns\": ${useBuiltInsFormatted} }]\n  ]\n}`,\n        );\n      }\n\n      if (filter != null && RUNTIME_DEFAULT === \"automatic\") {\n        throw new Error(\n          '@babel/plugin-transform-react-jsx: \"filter\" option can not be used with automatic runtime. If you are upgrading from Babel 7, please specify `runtime: \"classic\"`.',\n        );\n      }\n    } else {\n      // eslint-disable-next-line no-var\n      var { useSpread = false, useBuiltIns = false } = options;\n\n      if (RUNTIME_DEFAULT === \"classic\") {\n        if (typeof useSpread !== \"boolean\") {\n          throw new Error(\n            \"transform-react-jsx currently only accepts a boolean option for \" +\n              \"useSpread (defaults to false)\",\n          );\n        }\n\n        if (typeof useBuiltIns !== \"boolean\") {\n          throw new Error(\n            \"transform-react-jsx currently only accepts a boolean option for \" +\n              \"useBuiltIns (defaults to false)\",\n          );\n        }\n\n        if (useSpread && useBuiltIns) {\n          throw new Error(\n            \"transform-react-jsx currently only accepts useBuiltIns or useSpread \" +\n              \"but not both\",\n          );\n        }\n      }\n    }\n\n    const injectMetaPropertiesVisitor: Visitor<PluginPass> = {\n      JSXOpeningElement(path, state) {\n        const attributes = [];\n        if (isThisAllowed(path.scope)) {\n          attributes.push(\n            t.jsxAttribute(\n              t.jsxIdentifier(\"__self\"),\n              t.jsxExpressionContainer(t.thisExpression()),\n            ),\n          );\n        }\n        attributes.push(\n          t.jsxAttribute(\n            t.jsxIdentifier(\"__source\"),\n            t.jsxExpressionContainer(makeSource(path, state)),\n          ),\n        );\n        path.pushContainer(\"attributes\", attributes);\n      },\n    };\n\n    return {\n      name,\n      inherits: jsx,\n      visitor: {\n        JSXNamespacedName(path) {\n          if (throwIfNamespace) {\n            throw path.buildCodeFrameError(\n              `Namespace tags are not supported by default. React's JSX doesn't support namespace tags. \\\nYou can set \\`throwIfNamespace: false\\` to bypass this warning.`,\n            );\n          }\n        },\n\n        JSXSpreadChild(path) {\n          throw path.buildCodeFrameError(\n            \"Spread children are not supported in React.\",\n          );\n        },\n\n        Program: {\n          enter(path, state) {\n            const { file } = state;\n            let runtime: string = RUNTIME_DEFAULT;\n\n            let source: string = IMPORT_SOURCE_DEFAULT;\n            let pragma: string = PRAGMA_DEFAULT;\n            let pragmaFrag: string = PRAGMA_FRAG_DEFAULT;\n\n            let sourceSet = !!options.importSource;\n            let pragmaSet = !!options.pragma;\n            let pragmaFragSet = !!options.pragmaFrag;\n\n            if (file.ast.comments) {\n              for (const comment of file.ast.comments) {\n                const sourceMatches = JSX_SOURCE_ANNOTATION_REGEX.exec(\n                  comment.value,\n                );\n                if (sourceMatches) {\n                  source = sourceMatches[1];\n                  sourceSet = true;\n                }\n\n                const runtimeMatches = JSX_RUNTIME_ANNOTATION_REGEX.exec(\n                  comment.value,\n                );\n                if (runtimeMatches) {\n                  runtime = runtimeMatches[1];\n                }\n\n                const jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value);\n                if (jsxMatches) {\n                  pragma = jsxMatches[1];\n                  pragmaSet = true;\n                }\n                const jsxFragMatches = JSX_FRAG_ANNOTATION_REGEX.exec(\n                  comment.value,\n                );\n                if (jsxFragMatches) {\n                  pragmaFrag = jsxFragMatches[1];\n                  pragmaFragSet = true;\n                }\n              }\n            }\n\n            set(state, \"runtime\", runtime);\n            if (runtime === \"classic\") {\n              if (sourceSet) {\n                throw path.buildCodeFrameError(\n                  `importSource cannot be set when runtime is classic.`,\n                );\n              }\n\n              const createElement = toMemberExpression(pragma);\n              const fragment = toMemberExpression(pragmaFrag);\n\n              set(state, \"id/createElement\", () => t.cloneNode(createElement));\n              set(state, \"id/fragment\", () => t.cloneNode(fragment));\n\n              set(state, \"defaultPure\", pragma === DEFAULT.pragma);\n            } else if (runtime === \"automatic\") {\n              if (pragmaSet || pragmaFragSet) {\n                throw path.buildCodeFrameError(\n                  `pragma and pragmaFrag cannot be set when runtime is automatic.`,\n                );\n              }\n\n              const define = (name: string, id: string) =>\n                set(state, name, createImportLazily(state, path, id, source));\n\n              define(\"id/jsx\", development ? \"jsxDEV\" : \"jsx\");\n              define(\"id/jsxs\", development ? \"jsxDEV\" : \"jsxs\");\n              define(\"id/createElement\", \"createElement\");\n              define(\"id/fragment\", \"Fragment\");\n\n              set(state, \"defaultPure\", source === DEFAULT.importSource);\n            } else {\n              throw path.buildCodeFrameError(\n                `Runtime must be either \"classic\" or \"automatic\".`,\n              );\n            }\n\n            if (development) {\n              path.traverse(injectMetaPropertiesVisitor, state);\n            }\n          },\n\n          // TODO(Babel 8): Decide if this should be removed or brought back.\n          // see: https://github.com/babel/babel/pull/12253#discussion_r513086528\n          //\n          // exit(path, state) {\n          //   if (\n          //     get(state, \"runtime\") === \"classic\" &&\n          //     get(state, \"pragmaSet\") &&\n          //     get(state, \"usedFragment\") &&\n          //     !get(state, \"pragmaFragSet\")\n          //   ) {\n          //     throw new Error(\n          //       \"transform-react-jsx: pragma has been set but \" +\n          //         \"pragmaFrag has not been set\",\n          //     );\n          //   }\n          // },\n        },\n\n        JSXFragment: {\n          exit(path, file) {\n            let callExpr;\n            if (get(file, \"runtime\") === \"classic\") {\n              callExpr = buildCreateElementFragmentCall(path, file);\n            } else {\n              callExpr = buildJSXFragmentCall(path, file);\n            }\n\n            path.replaceWith(t.inherits(callExpr, path.node));\n          },\n        },\n\n        JSXElement: {\n          exit(path, file) {\n            let callExpr;\n            if (\n              get(file, \"runtime\") === \"classic\" ||\n              shouldUseCreateElement(path)\n            ) {\n              callExpr = buildCreateElementCall(path, file);\n            } else {\n              callExpr = buildJSXElementCall(path, file);\n            }\n\n            path.replaceWith(t.inherits(callExpr, path.node));\n          },\n        },\n\n        JSXAttribute(path) {\n          if (t.isJSXElement(path.node.value)) {\n            path.node.value = t.jsxExpressionContainer(path.node.value);\n          }\n        },\n      },\n    };\n\n    // Returns whether the class has specified a superclass.\n    function isDerivedClass(classPath: NodePath<Class>) {\n      return classPath.node.superClass !== null;\n    }\n\n    // Returns whether `this` is allowed at given scope.\n    function isThisAllowed(scope: Scope) {\n      // This specifically skips arrow functions as they do not rewrite `this`.\n      do {\n        const { path } = scope;\n        if (path.isFunctionParent() && !path.isArrowFunctionExpression()) {\n          if (!path.isMethod()) {\n            // If the closest parent is a regular function, `this` will be rebound, therefore it is fine to use `this`.\n            return true;\n          }\n          // Current node is within a method, so we need to check if the method is a constructor.\n          if (path.node.kind !== \"constructor\") {\n            // We are not in a constructor, therefore it is always fine to use `this`.\n            return true;\n          }\n          // Now we are in a constructor. If it is a derived class, we do not reference `this`.\n          return !isDerivedClass(path.parentPath.parentPath as NodePath<Class>);\n        }\n        if (path.isTSModuleBlock()) {\n          // If the closest parent is a TS Module block, `this` will not be allowed.\n          return false;\n        }\n      } while ((scope = scope.parent));\n      // We are not in a method or function. It is fine to use `this`.\n      return true;\n    }\n\n    function call(\n      pass: PluginPass,\n      name: string,\n      args: CallExpression[\"arguments\"],\n    ) {\n      const node = t.callExpression(get(pass, `id/${name}`)(), args);\n      if (PURE_ANNOTATION ?? get(pass, \"defaultPure\")) annotateAsPure(node);\n      return node;\n    }\n\n    // We want to use React.createElement, even in the case of\n    // jsx, for <div {...props} key={key} /> to distinguish it\n    // from <div key={key} {...props} />. This is an intermediary\n    // step while we deprecate key spread from props. Afterwards,\n    // we will stop using createElement in the transform.\n    function shouldUseCreateElement(path: NodePath<JSXElement>) {\n      const openingPath = path.get(\"openingElement\");\n      const attributes = openingPath.node.attributes;\n\n      let seenPropsSpread = false;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes[i];\n        if (\n          seenPropsSpread &&\n          t.isJSXAttribute(attr) &&\n          attr.name.name === \"key\"\n        ) {\n          return true;\n        } else if (t.isJSXSpreadAttribute(attr)) {\n          seenPropsSpread = true;\n        }\n      }\n      return false;\n    }\n\n    function convertJSXIdentifier(\n      node: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n      parent: t.JSXOpeningElement | t.JSXMemberExpression,\n    ): t.ThisExpression | t.StringLiteral | t.MemberExpression | t.Identifier {\n      if (t.isJSXIdentifier(node)) {\n        if (node.name === \"this\" && t.isReferenced(node, parent)) {\n          return t.thisExpression();\n        } else if (t.isValidIdentifier(node.name, false)) {\n          // @ts-expect-error cast AST type to Identifier\n          node.type = \"Identifier\";\n          return node as unknown as t.Identifier;\n        } else {\n          return t.stringLiteral(node.name);\n        }\n      } else if (t.isJSXMemberExpression(node)) {\n        return t.memberExpression(\n          convertJSXIdentifier(node.object, node),\n          convertJSXIdentifier(node.property, node),\n        );\n      } else if (t.isJSXNamespacedName(node)) {\n        /**\n         * If the flag \"throwIfNamespace\" is false\n         * print XMLNamespace like string literal\n         */\n        return t.stringLiteral(`${node.namespace.name}:${node.name.name}`);\n      }\n\n      // todo: this branch should be unreachable\n      return node;\n    }\n\n    function convertAttributeValue(\n      node: t.JSXAttribute[\"value\"] | t.BooleanLiteral,\n    ) {\n      if (t.isJSXExpressionContainer(node)) {\n        return node.expression;\n      } else {\n        return node;\n      }\n    }\n\n    function accumulateAttribute(\n      array: ObjectExpression[\"properties\"],\n      attribute: NodePath<JSXAttribute | JSXSpreadAttribute>,\n    ) {\n      if (t.isJSXSpreadAttribute(attribute.node)) {\n        const arg = attribute.node.argument;\n        // Collect properties into props array if spreading object expression\n        if (t.isObjectExpression(arg) && !hasProto(arg)) {\n          array.push(...arg.properties);\n        } else {\n          array.push(t.spreadElement(arg));\n        }\n        return array;\n      }\n\n      const value = convertAttributeValue(\n        attribute.node.name.name !== \"key\"\n          ? attribute.node.value || t.booleanLiteral(true)\n          : attribute.node.value,\n      );\n\n      if (attribute.node.name.name === \"key\" && value === null) {\n        throw attribute.buildCodeFrameError(\n          'Please provide an explicit key value. Using \"key\" as a shorthand for \"key={true}\" is not allowed.',\n        );\n      }\n\n      if (\n        t.isStringLiteral(value) &&\n        !t.isJSXExpressionContainer(attribute.node.value)\n      ) {\n        value.value = value.value.replace(/\\n\\s+/g, \" \");\n\n        // \"raw\" JSXText should not be used from a StringLiteral because it needs to be escaped.\n        delete value.extra?.raw;\n      }\n\n      if (t.isJSXNamespacedName(attribute.node.name)) {\n        // @ts-expect-error mutating AST\n        attribute.node.name = t.stringLiteral(\n          attribute.node.name.namespace.name +\n            \":\" +\n            attribute.node.name.name.name,\n        );\n      } else if (t.isValidIdentifier(attribute.node.name.name, false)) {\n        // @ts-expect-error mutating AST\n        attribute.node.name.type = \"Identifier\";\n      } else {\n        // @ts-expect-error mutating AST\n        attribute.node.name = t.stringLiteral(attribute.node.name.name);\n      }\n\n      array.push(\n        t.inherits(\n          t.objectProperty(\n            // @ts-expect-error The attribute.node.name is an Identifier now\n            attribute.node.name,\n            value,\n          ),\n          attribute.node,\n        ),\n      );\n      return array;\n    }\n\n    function buildChildrenProperty(children: Expression[]) {\n      let childrenNode;\n      if (children.length === 1) {\n        childrenNode = children[0];\n      } else if (children.length > 1) {\n        childrenNode = t.arrayExpression(children);\n      } else {\n        return undefined;\n      }\n\n      return t.objectProperty(t.identifier(\"children\"), childrenNode);\n    }\n\n    // Builds JSX into:\n    // Production: React.jsx(type, arguments, key)\n    // Development: React.jsxDEV(type, arguments, key, isStaticChildren, source, self)\n    function buildJSXElementCall(path: NodePath<JSXElement>, file: PluginPass) {\n      const openingPath = path.get(\"openingElement\");\n      const args: t.Expression[] = [getTag(openingPath)];\n\n      const attribsArray = [];\n      const extracted = Object.create(null);\n\n      // for React.jsx, key, __source (dev), and __self (dev) is passed in as\n      // a separate argument rather than in the args object. We go through the\n      // props and filter out these three keywords so we can pass them in\n      // as separate arguments later\n      for (const attr of openingPath.get(\"attributes\")) {\n        if (attr.isJSXAttribute() && t.isJSXIdentifier(attr.node.name)) {\n          const { name } = attr.node.name;\n          switch (name) {\n            case \"__source\":\n            case \"__self\":\n              if (extracted[name]) throw sourceSelfError(path, name);\n            /* falls through */\n            case \"key\": {\n              const keyValue = convertAttributeValue(attr.node.value);\n              if (keyValue === null) {\n                throw attr.buildCodeFrameError(\n                  'Please provide an explicit key value. Using \"key\" as a shorthand for \"key={true}\" is not allowed.',\n                );\n              }\n\n              extracted[name] = keyValue;\n              break;\n            }\n            default:\n              attribsArray.push(attr);\n          }\n        } else {\n          attribsArray.push(attr);\n        }\n      }\n\n      const children = t.react.buildChildren(path.node);\n\n      let attribs: t.ObjectExpression;\n\n      if (attribsArray.length || children.length) {\n        attribs = buildJSXOpeningElementAttributes(\n          attribsArray,\n          //@ts-expect-error The children here contains JSXSpreadChild,\n          // which will be thrown later\n          children,\n        );\n      } else {\n        // attributes should never be null\n        attribs = t.objectExpression([]);\n      }\n\n      args.push(attribs);\n\n      if (development) {\n        // isStaticChildren, __source, and __self are only used in development\n        // automatically include __source and __self in this plugin\n        // so we can eliminate the need for separate Babel plugins in Babel 8\n        args.push(\n          extracted.key ?? path.scope.buildUndefinedNode(),\n          t.booleanLiteral(children.length > 1),\n        );\n        if (extracted.__source) {\n          args.push(extracted.__source);\n          if (extracted.__self) args.push(extracted.__self);\n        } else if (extracted.__self) {\n          args.push(path.scope.buildUndefinedNode(), extracted.__self);\n        }\n      } else if (extracted.key !== undefined) {\n        args.push(extracted.key);\n      }\n\n      return call(file, children.length > 1 ? \"jsxs\" : \"jsx\", args);\n    }\n\n    // Builds props for React.jsx. This function adds children into the props\n    // and ensures that props is always an object\n    function buildJSXOpeningElementAttributes(\n      attribs: NodePath<JSXAttribute | JSXSpreadAttribute>[],\n      children: Expression[],\n    ) {\n      const props = attribs.reduce(accumulateAttribute, []);\n\n      // In React.jsx, children is no longer a separate argument, but passed in\n      // through the argument object\n      if (children?.length > 0) {\n        props.push(buildChildrenProperty(children));\n      }\n\n      return t.objectExpression(props);\n    }\n\n    // Builds JSX Fragment <></> into\n    // Production: React.jsx(type, arguments)\n    // Development: React.jsxDEV(type, { children })\n    function buildJSXFragmentCall(\n      path: NodePath<JSXFragment>,\n      file: PluginPass,\n    ) {\n      const args = [get(file, \"id/fragment\")()];\n\n      const children = t.react.buildChildren(path.node);\n\n      args.push(\n        t.objectExpression(\n          children.length > 0\n            ? [\n                buildChildrenProperty(\n                  //@ts-expect-error The children here contains JSXSpreadChild,\n                  // which will be thrown later\n                  children,\n                ),\n              ]\n            : [],\n        ),\n      );\n\n      if (development) {\n        args.push(\n          path.scope.buildUndefinedNode(),\n          t.booleanLiteral(children.length > 1),\n        );\n      }\n\n      return call(file, children.length > 1 ? \"jsxs\" : \"jsx\", args);\n    }\n\n    // Builds JSX Fragment <></> into\n    // React.createElement(React.Fragment, null, ...children)\n    function buildCreateElementFragmentCall(\n      path: NodePath<JSXFragment>,\n      file: PluginPass,\n    ) {\n      if (filter && !filter(path.node, file)) return;\n\n      return call(file, \"createElement\", [\n        get(file, \"id/fragment\")(),\n        t.nullLiteral(),\n        ...t.react.buildChildren(path.node),\n      ]);\n    }\n\n    // Builds JSX into:\n    // Production: React.createElement(type, arguments, children)\n    // Development: React.createElement(type, arguments, children, source, self)\n    function buildCreateElementCall(\n      path: NodePath<JSXElement>,\n      file: PluginPass,\n    ) {\n      const openingPath = path.get(\"openingElement\");\n\n      return call(file, \"createElement\", [\n        getTag(openingPath),\n        buildCreateElementOpeningElementAttributes(\n          file,\n          path,\n          openingPath.get(\"attributes\"),\n        ),\n        // @ts-expect-error JSXSpreadChild has been transformed in convertAttributeValue\n        ...t.react.buildChildren(path.node),\n      ]);\n    }\n\n    function getTag(openingPath: NodePath<JSXOpeningElement>) {\n      const tagExpr = convertJSXIdentifier(\n        openingPath.node.name,\n        openingPath.node,\n      );\n\n      let tagName: string;\n      if (t.isIdentifier(tagExpr)) {\n        tagName = tagExpr.name;\n      } else if (t.isStringLiteral(tagExpr)) {\n        tagName = tagExpr.value;\n      }\n\n      if (t.react.isCompatTag(tagName)) {\n        return t.stringLiteral(tagName);\n      } else {\n        return tagExpr;\n      }\n    }\n\n    /**\n     * The logic for this is quite terse. It's because we need to\n     * support spread elements. We loop over all attributes,\n     * breaking on spreads, we then push a new object containing\n     * all prior attributes to an array for later processing.\n     */\n    function buildCreateElementOpeningElementAttributes(\n      file: PluginPass,\n      path: NodePath<JSXElement>,\n      attribs: NodePath<JSXAttribute | JSXSpreadAttribute>[],\n    ) {\n      const runtime = get(file, \"runtime\");\n      if (!process.env.BABEL_8_BREAKING) {\n        if (runtime !== \"automatic\") {\n          const objs = [];\n          const props = attribs.reduce(accumulateAttribute, []);\n\n          if (!useSpread) {\n            // Convert syntax to use multiple objects instead of spread\n            let start = 0;\n            props.forEach((prop, i) => {\n              if (t.isSpreadElement(prop)) {\n                if (i > start) {\n                  objs.push(t.objectExpression(props.slice(start, i)));\n                }\n                objs.push(prop.argument);\n                start = i + 1;\n              }\n            });\n            if (props.length > start) {\n              objs.push(t.objectExpression(props.slice(start)));\n            }\n          } else if (props.length) {\n            objs.push(t.objectExpression(props));\n          }\n\n          if (!objs.length) {\n            return t.nullLiteral();\n          }\n\n          if (objs.length === 1) {\n            if (\n              !(\n                t.isSpreadElement(props[0]) &&\n                // If an object expression is spread element's argument\n                // it is very likely to contain __proto__ and we should stop\n                // optimizing spread element\n                t.isObjectExpression(props[0].argument)\n              )\n            ) {\n              return objs[0];\n            }\n          }\n\n          // looks like we have multiple objects\n          if (!t.isObjectExpression(objs[0])) {\n            objs.unshift(t.objectExpression([]));\n          }\n\n          const helper = useBuiltIns\n            ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n            : file.addHelper(\"extends\");\n\n          // spread it\n          return t.callExpression(helper, objs);\n        }\n      }\n\n      const props: ObjectExpression[\"properties\"] = [];\n      const found = Object.create(null);\n\n      for (const attr of attribs) {\n        const { node } = attr;\n        const name =\n          t.isJSXAttribute(node) &&\n          t.isJSXIdentifier(node.name) &&\n          node.name.name;\n\n        if (\n          runtime === \"automatic\" &&\n          (name === \"__source\" || name === \"__self\")\n        ) {\n          if (found[name]) throw sourceSelfError(path, name);\n          found[name] = true;\n        }\n\n        accumulateAttribute(props, attr);\n      }\n\n      return props.length === 1 &&\n        t.isSpreadElement(props[0]) &&\n        // If an object expression is spread element's argument\n        // it is very likely to contain __proto__ and we should stop\n        // optimizing spread element\n        !t.isObjectExpression(props[0].argument)\n        ? props[0].argument\n        : props.length > 0\n          ? t.objectExpression(props)\n          : t.nullLiteral();\n    }\n  });\n\n  function getSource(source: string, importName: string) {\n    switch (importName) {\n      case \"Fragment\":\n        return `${source}/${development ? \"jsx-dev-runtime\" : \"jsx-runtime\"}`;\n      case \"jsxDEV\":\n        return `${source}/jsx-dev-runtime`;\n      case \"jsx\":\n      case \"jsxs\":\n        return `${source}/jsx-runtime`;\n      case \"createElement\":\n        return source;\n    }\n  }\n\n  function createImportLazily(\n    pass: PluginPass,\n    path: NodePath<Program>,\n    importName: string,\n    source: string,\n  ): () => Identifier | MemberExpression {\n    return () => {\n      const actualSource = getSource(source, importName);\n      if (isModule(path)) {\n        let reference = get(pass, `imports/${importName}`);\n        if (reference) return t.cloneNode(reference);\n\n        reference = addNamed(path, importName, actualSource, {\n          importedInterop: \"uncompiled\",\n          importPosition: \"after\",\n        });\n        set(pass, `imports/${importName}`, reference);\n\n        return reference;\n      } else {\n        let reference = get(pass, `requires/${actualSource}`);\n        if (reference) {\n          reference = t.cloneNode(reference);\n        } else {\n          reference = addNamespace(path, actualSource, {\n            importedInterop: \"uncompiled\",\n          });\n          set(pass, `requires/${actualSource}`, reference);\n        }\n\n        return t.memberExpression(reference, t.identifier(importName));\n      }\n    };\n  }\n}\n\nfunction toMemberExpression(id: string): Identifier | MemberExpression {\n  return (\n    id\n      .split(\".\")\n      .map(name => t.identifier(name))\n      // @ts-expect-error - The Array#reduce does not have a signature\n      // where the type of initial value differs from callback return type\n      .reduce((object, property) => t.memberExpression(object, property))\n  );\n}\n\nfunction makeSource(path: NodePath, state: PluginPass) {\n  const location = path.node.loc;\n  if (!location) {\n    // the element was generated and doesn't have location information\n    return path.scope.buildUndefinedNode();\n  }\n\n  // @ts-expect-error todo: avoid mutating PluginPass\n  if (!state.fileNameIdentifier) {\n    const { filename = \"\" } = state;\n\n    const fileNameIdentifier = path.scope.generateUidIdentifier(\"_jsxFileName\");\n    path.scope.getProgramParent().push({\n      id: fileNameIdentifier,\n      init: t.stringLiteral(filename),\n    });\n    // @ts-expect-error todo: avoid mutating PluginPass\n    state.fileNameIdentifier = fileNameIdentifier;\n  }\n\n  return makeTrace(\n    t.cloneNode(\n      // @ts-expect-error todo: avoid mutating PluginPass\n      state.fileNameIdentifier,\n    ),\n    location.start.line,\n    location.start.column,\n  );\n}\n\nfunction makeTrace(\n  fileNameIdentifier: Identifier,\n  lineNumber?: number,\n  column0Based?: number,\n) {\n  const fileLineLiteral =\n    lineNumber != null ? t.numericLiteral(lineNumber) : t.nullLiteral();\n\n  const fileColumnLiteral =\n    column0Based != null ? t.numericLiteral(column0Based + 1) : t.nullLiteral();\n\n  return template.expression.ast`{\n    fileName: ${fileNameIdentifier},\n    lineNumber: ${fileLineLiteral},\n    columnNumber: ${fileColumnLiteral},\n  }`;\n}\n\nfunction sourceSelfError(path: NodePath, name: string) {\n  const pluginName = `transform-react-jsx-${name.slice(2)}`;\n\n  return path.buildCodeFrameError(\n    `Duplicate ${name} prop found. You are most likely using the deprecated ${pluginName} Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config.`,\n  );\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/development.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/development.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/development.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _createPlugin = require("./create-plugin.js");
+var _default = exports.default = (0, _createPlugin.default)({
+  name: "transform-react-jsx/development",
+  development: true
+});
+
+//# sourceMappingURL=development.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/development.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/development.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/development.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_createPlugin","require","_default","exports","default","createPlugin","name","development"],"sources":["../src/development.ts"],"sourcesContent":["import createPlugin from \"./create-plugin.ts\";\n\nexport default createPlugin({\n  name: \"transform-react-jsx/development\",\n  development: true,\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAA8C,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE/B,IAAAC,qBAAY,EAAC;EAC1BC,IAAI,EAAE,iCAAiC;EACvCC,WAAW,EAAE;AACf,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _createPlugin = require("./create-plugin.js");
+var _default = exports.default = (0, _createPlugin.default)({
+  name: "transform-react-jsx",
+  development: false
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_createPlugin","require","_default","exports","default","createPlugin","name","development"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\n\nimport createPlugin from \"./create-plugin.ts\";\n\nexport default createPlugin({\n  name: \"transform-react-jsx\",\n  development: false,\n});\n\nexport type { Options } from \"./create-plugin.ts\";\n"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AAA8C,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE/B,IAAAC,qBAAY,EAAC;EAC1BC,IAAI,EAAE,qBAAqB;EAC3BC,WAAW,EAAE;AACf,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-jsx/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,39 @@
+{
+  "name": "@babel/plugin-transform-react-jsx",
+  "version": "7.25.9",
+  "description": "Turn JSX into React function calls",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-react-jsx"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "@babel/helper-module-imports": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/plugin-syntax-jsx": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-react-pure-annotations
+
+> Mark top-level React method calls as pure for tree shaking
+
+See our website [@babel/plugin-transform-react-pure-annotations](https://babeljs.io/docs/babel-plugin-transform-react-pure-annotations) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-react-pure-annotations
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-react-pure-annotations --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,49 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");
+var _core = require("@babel/core");
+const PURE_CALLS = [["react", new Set(["cloneElement", "createContext", "createElement", "createFactory", "createRef", "forwardRef", "isValidElement", "memo", "lazy"])], ["react-dom", new Set(["createPortal"])]];
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-react-pure-annotations",
+    visitor: {
+      CallExpression(path) {
+        if (isReactCall(path)) {
+          (0, _helperAnnotateAsPure.default)(path);
+        }
+      }
+    }
+  };
+});
+function isReactCall(path) {
+  const calleePath = path.get("callee");
+  if (!calleePath.isMemberExpression()) {
+    for (const [module, methods] of PURE_CALLS) {
+      for (const method of methods) {
+        if (calleePath.referencesImport(module, method)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  const object = calleePath.get("object");
+  const callee = calleePath.node;
+  if (!callee.computed && _core.types.isIdentifier(callee.property)) {
+    const propertyName = callee.property.name;
+    for (const [module, methods] of PURE_CALLS) {
+      if (object.referencesImport(module, "default") || object.referencesImport(module, "*")) {
+        return methods.has(propertyName);
+      }
+    }
+  }
+  return false;
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperAnnotateAsPure","_core","PURE_CALLS","Set","_default","exports","default","declare","api","assertVersion","name","visitor","CallExpression","path","isReactCall","annotateAsPure","calleePath","get","isMemberExpression","module","methods","method","referencesImport","object","callee","node","computed","t","isIdentifier","property","propertyName","has"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\n// Mapping of React top-level methods that are pure.\n// This plugin adds a /*#__PURE__#/ annotation to calls to these methods,\n// so that terser and other minifiers can safely remove them during dead\n// code elimination.\n// See https://reactjs.org/docs/react-api.html\nconst PURE_CALLS: [string, Set<string>][] = [\n  [\n    \"react\",\n    new Set([\n      \"cloneElement\",\n      \"createContext\",\n      \"createElement\",\n      \"createFactory\",\n      \"createRef\",\n      \"forwardRef\",\n      \"isValidElement\",\n      \"memo\",\n      \"lazy\",\n    ]),\n  ],\n  [\"react-dom\", new Set([\"createPortal\"])],\n];\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-react-pure-annotations\",\n    visitor: {\n      CallExpression(path) {\n        if (isReactCall(path)) {\n          annotateAsPure(path);\n        }\n      },\n    },\n  };\n});\n\nfunction isReactCall(path: NodePath<t.CallExpression>) {\n  // If the callee is not a member expression, then check if it matches\n  // a named import, e.g. `import {forwardRef} from 'react'`.\n  const calleePath = path.get(\"callee\");\n  if (!calleePath.isMemberExpression()) {\n    for (const [module, methods] of PURE_CALLS) {\n      for (const method of methods) {\n        if (calleePath.referencesImport(module, method)) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  // Otherwise, check if the member expression's object matches\n  // a default import (`import React from 'react'`) or namespace\n  // import (`import * as React from 'react'), and check if the\n  // property matches one of the pure methods.\n  const object = calleePath.get(\"object\");\n  const callee = calleePath.node;\n  if (!callee.computed && t.isIdentifier(callee.property)) {\n    const propertyName = callee.property.name;\n    for (const [module, methods] of PURE_CALLS) {\n      if (\n        object.referencesImport(module, \"default\") ||\n        object.referencesImport(module, \"*\")\n      ) {\n        return methods.has(propertyName);\n      }\n    }\n  }\n\n  return false;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAOA,MAAMG,UAAmC,GAAG,CAC1C,CACE,OAAO,EACP,IAAIC,GAAG,CAAC,CACN,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,MAAM,CACP,CAAC,CACH,EACD,CAAC,WAAW,EAAE,IAAIA,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CACzC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,kCAAkC;IACxCC,OAAO,EAAE;MACPC,cAAcA,CAACC,IAAI,EAAE;QACnB,IAAIC,WAAW,CAACD,IAAI,CAAC,EAAE;UACrB,IAAAE,6BAAc,EAACF,IAAI,CAAC;QACtB;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC;AAEF,SAASC,WAAWA,CAACD,IAAgC,EAAE;EAGrD,MAAMG,UAAU,GAAGH,IAAI,CAACI,GAAG,CAAC,QAAQ,CAAC;EACrC,IAAI,CAACD,UAAU,CAACE,kBAAkB,CAAC,CAAC,EAAE;IACpC,KAAK,MAAM,CAACC,MAAM,EAAEC,OAAO,CAAC,IAAIlB,UAAU,EAAE;MAC1C,KAAK,MAAMmB,MAAM,IAAID,OAAO,EAAE;QAC5B,IAAIJ,UAAU,CAACM,gBAAgB,CAACH,MAAM,EAAEE,MAAM,CAAC,EAAE;UAC/C,OAAO,IAAI;QACb;MACF;IACF;IAEA,OAAO,KAAK;EACd;EAMA,MAAME,MAAM,GAAGP,UAAU,CAACC,GAAG,CAAC,QAAQ,CAAC;EACvC,MAAMO,MAAM,GAAGR,UAAU,CAACS,IAAI;EAC9B,IAAI,CAACD,MAAM,CAACE,QAAQ,IAAIC,WAAC,CAACC,YAAY,CAACJ,MAAM,CAACK,QAAQ,CAAC,EAAE;IACvD,MAAMC,YAAY,GAAGN,MAAM,CAACK,QAAQ,CAACnB,IAAI;IACzC,KAAK,MAAM,CAACS,MAAM,EAAEC,OAAO,CAAC,IAAIlB,UAAU,EAAE;MAC1C,IACEqB,MAAM,CAACD,gBAAgB,CAACH,MAAM,EAAE,SAAS,CAAC,IAC1CI,MAAM,CAACD,gBAAgB,CAACH,MAAM,EAAE,GAAG,CAAC,EACpC;QACA,OAAOC,OAAO,CAACW,GAAG,CAACD,YAAY,CAAC;MAClC;IACF;EACF;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-react-pure-annotations/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-react-pure-annotations",
+  "version": "7.25.9",
+  "description": "Mark top-level React method calls as pure for tree shaking",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-react-pure-annotations"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-annotate-as-pure": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-regenerator/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regenerator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regenerator/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-regenerator/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regenerator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regenerator/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-regenerator
+
+> Explode async and generator functions into a state machine.
+
+See our website [@babel/plugin-transform-regenerator](https://babeljs.io/docs/babel-plugin-transform-regenerator) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-regenerator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-regenerator --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-regenerator/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regenerator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regenerator/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,45 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _regeneratorTransform = require("regenerator-transform");
+var _default = exports.default = (0, _helperPluginUtils.declare)(({
+  types: t,
+  assertVersion
+}) => {
+  assertVersion(7);
+  return {
+    name: "transform-regenerator",
+    inherits: _regeneratorTransform.default,
+    visitor: {
+      CallExpression(path) {
+        {
+          var _this$availableHelper;
+          if (!((_this$availableHelper = this.availableHelper) != null && _this$availableHelper.call(this, "regeneratorRuntime"))) {
+            return;
+          }
+        }
+        const callee = path.get("callee");
+        if (!callee.isMemberExpression()) return;
+        const obj = callee.get("object");
+        if (obj.isIdentifier({
+          name: "regeneratorRuntime"
+        })) {
+          const helper = this.addHelper("regeneratorRuntime");
+          {
+            if (t.isArrowFunctionExpression(helper)) {
+              obj.replaceWith(helper.body);
+              return;
+            }
+          }
+          obj.replaceWith(t.callExpression(helper, []));
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-regenerator/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regenerator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regenerator/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_regeneratorTransform","_default","exports","default","declare","types","t","assertVersion","name","inherits","regeneratorTransform","visitor","CallExpression","path","_this$availableHelper","availableHelper","call","callee","get","isMemberExpression","obj","isIdentifier","helper","addHelper","isArrowFunctionExpression","replaceWith","body","callExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport type { types as t } from \"@babel/core\";\nimport regeneratorTransform from \"regenerator-transform\";\n\nexport default declare(({ types: t, assertVersion }) => {\n  assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-regenerator\",\n\n    inherits: regeneratorTransform.default,\n\n    visitor: {\n      // We visit CallExpression so that we always transform\n      // regeneratorRuntime.*() before babel-plugin-polyfill-regenerator.\n      CallExpression(path) {\n        if (!process.env.BABEL_8_BREAKING) {\n          if (!this.availableHelper?.(\"regeneratorRuntime\")) {\n            // When using an older @babel/helpers version, fallback\n            // to the old behavior.\n            // TODO: Remove this in Babel 8.\n            return;\n          }\n        }\n\n        const callee = path.get(\"callee\");\n        if (!callee.isMemberExpression()) return;\n\n        const obj = callee.get(\"object\");\n        if (obj.isIdentifier({ name: \"regeneratorRuntime\" })) {\n          const helper = this.addHelper(\"regeneratorRuntime\") as\n            | t.Identifier\n            | t.ArrowFunctionExpression;\n\n          if (!process.env.BABEL_8_BREAKING) {\n            if (\n              // TODO: Remove this in Babel 8, it's necessary to\n              // avoid the IIFE when using older Babel versions.\n              t.isArrowFunctionExpression(helper)\n            ) {\n              obj.replaceWith(helper.body);\n              return;\n            }\n          }\n\n          obj.replaceWith(t.callExpression(helper, []));\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AAEA,IAAAC,qBAAA,GAAAD,OAAA;AAAyD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1C,IAAAC,0BAAO,EAAC,CAAC;EAAEC,KAAK,EAAEC,CAAC;EAAEC;AAAc,CAAC,KAAK;EACtDA,aAAa,CAAkB,CAAE,CAAC;EAElC,OAAO;IACLC,IAAI,EAAE,uBAAuB;IAE7BC,QAAQ,EAAEC,qBAAoB,CAACP,OAAO;IAEtCQ,OAAO,EAAE;MAGPC,cAAcA,CAACC,IAAI,EAAE;QACgB;UAAA,IAAAC,qBAAA;UACjC,IAAI,GAAAA,qBAAA,GAAC,IAAI,CAACC,eAAe,aAApBD,qBAAA,CAAAE,IAAA,KAAI,EAAmB,oBAAoB,CAAC,GAAE;YAIjD;UACF;QACF;QAEA,MAAMC,MAAM,GAAGJ,IAAI,CAACK,GAAG,CAAC,QAAQ,CAAC;QACjC,IAAI,CAACD,MAAM,CAACE,kBAAkB,CAAC,CAAC,EAAE;QAElC,MAAMC,GAAG,GAAGH,MAAM,CAACC,GAAG,CAAC,QAAQ,CAAC;QAChC,IAAIE,GAAG,CAACC,YAAY,CAAC;UAAEb,IAAI,EAAE;QAAqB,CAAC,CAAC,EAAE;UACpD,MAAMc,MAAM,GAAG,IAAI,CAACC,SAAS,CAAC,oBAAoB,CAErB;UAEM;YACjC,IAGEjB,CAAC,CAACkB,yBAAyB,CAACF,MAAM,CAAC,EACnC;cACAF,GAAG,CAACK,WAAW,CAACH,MAAM,CAACI,IAAI,CAAC;cAC5B;YACF;UACF;UAEAN,GAAG,CAACK,WAAW,CAACnB,CAAC,CAACqB,cAAc,CAACL,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/C;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-regenerator/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regenerator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regenerator/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,32 @@
+{
+  "name": "@babel/plugin-transform-regenerator",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "description": "Explode async and generator functions into a state machine.",
+  "version": "7.25.9",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-regenerator",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-regenerator"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "regenerator-transform": "^0.15.2"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-regexp-modifiers
+
+> Compile inline regular expression modifiers
+
+See our website [@babel/plugin-transform-regexp-modifiers](https://babeljs.io/docs/babel-plugin-transform-regexp-modifiers) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-regexp-modifiers
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-regexp-modifiers --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.19.0 || >8.0.0-alpha <8.0.0-beta");
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-regexp-modifiers",
+    feature: "modifiers"
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","assertVersion","createRegExpFeaturePlugin","name","feature"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.19.0\"));\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-regexp-modifiers\",\n    feature: \"modifiers\",\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,sCAA4B,CAAC;EAE9C,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,4BAA4B;IAClCC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-regexp-modifiers/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,45 @@
+{
+  "name": "@babel/plugin-transform-regexp-modifiers",
+  "version": "7.26.0",
+  "description": "Compile inline regular expression modifiers",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-regexp-modifiers",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "regular expressions"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-regexp-modifiers"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-reserved-words
+
+> Ensure that no reserved words are used.
+
+See our website [@babel/plugin-transform-reserved-words](https://babeljs.io/docs/babel-plugin-transform-reserved-words) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-reserved-words
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-reserved-words --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-reserved-words",
+    visitor: {
+      "BindingIdentifier|ReferencedIdentifier"(path) {
+        if (!_core.types.isValidES3Identifier(path.node.name)) {
+          path.scope.rename(path.node.name);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","BindingIdentifier|ReferencedIdentifier","path","t","isValidES3Identifier","node","scope","rename"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-reserved-words\",\n\n    visitor: {\n      \"BindingIdentifier|ReferencedIdentifier\"(path: NodePath<t.Identifier>) {\n        if (!t.isValidES3Identifier(path.node.name)) {\n          path.scope.rename(path.node.name);\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAwD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEzC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,0BAA0B;IAEhCC,OAAO,EAAE;MACP,wCAAwCC,CAACC,IAA4B,EAAE;QACrE,IAAI,CAACC,WAAC,CAACC,oBAAoB,CAACF,IAAI,CAACG,IAAI,CAACN,IAAI,CAAC,EAAE;UAC3CG,IAAI,CAACI,KAAK,CAACC,MAAM,CAACL,IAAI,CAACG,IAAI,CAACN,IAAI,CAAC;QACnC;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-reserved-words/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-reserved-words",
+  "version": "7.25.9",
+  "description": "Ensure that no reserved words are used.",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-reserved-words"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-reserved-words",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-shorthand-properties
+
+> Compile ES2015 shorthand properties to ES5
+
+See our website [@babel/plugin-transform-shorthand-properties](https://babeljs.io/docs/babel-plugin-transform-shorthand-properties) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-shorthand-properties
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-shorthand-properties --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,50 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-shorthand-properties",
+    visitor: {
+      ObjectMethod(path) {
+        const {
+          node
+        } = path;
+        if (node.kind === "method") {
+          const func = _core.types.functionExpression(null, node.params, node.body, node.generator, node.async);
+          func.returnType = node.returnType;
+          const computedKey = _core.types.toComputedKey(node);
+          if (_core.types.isStringLiteral(computedKey, {
+            value: "__proto__"
+          })) {
+            path.replaceWith(_core.types.objectProperty(computedKey, func, true));
+          } else {
+            path.replaceWith(_core.types.objectProperty(node.key, func, node.computed));
+          }
+        }
+      },
+      ObjectProperty(path) {
+        const {
+          node
+        } = path;
+        if (node.shorthand) {
+          const computedKey = _core.types.toComputedKey(node);
+          if (_core.types.isStringLiteral(computedKey, {
+            value: "__proto__"
+          })) {
+            path.replaceWith(_core.types.objectProperty(computedKey, node.value, true));
+          } else {
+            node.shorthand = false;
+          }
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","ObjectMethod","path","node","kind","func","t","functionExpression","params","body","generator","async","returnType","computedKey","toComputedKey","isStringLiteral","value","replaceWith","objectProperty","key","computed","ObjectProperty","shorthand"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-shorthand-properties\",\n\n    visitor: {\n      ObjectMethod(path) {\n        const { node } = path;\n        if (node.kind === \"method\") {\n          const func = t.functionExpression(\n            null,\n            node.params,\n            node.body,\n            node.generator,\n            node.async,\n          );\n          func.returnType = node.returnType;\n\n          const computedKey = t.toComputedKey(node);\n          if (t.isStringLiteral(computedKey, { value: \"__proto__\" })) {\n            path.replaceWith(t.objectProperty(computedKey, func, true));\n          } else {\n            path.replaceWith(t.objectProperty(node.key, func, node.computed));\n          }\n        }\n      },\n\n      ObjectProperty(path) {\n        const { node } = path;\n        if (node.shorthand) {\n          const computedKey = t.toComputedKey(node);\n          if (t.isStringLiteral(computedKey, { value: \"__proto__\" })) {\n            path.replaceWith(t.objectProperty(computedKey, node.value, true));\n          } else {\n            node.shorthand = false;\n          }\n        }\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAyC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1B,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,gCAAgC;IAEtCC,OAAO,EAAE;MACPC,YAAYA,CAACC,IAAI,EAAE;QACjB,MAAM;UAAEC;QAAK,CAAC,GAAGD,IAAI;QACrB,IAAIC,IAAI,CAACC,IAAI,KAAK,QAAQ,EAAE;UAC1B,MAAMC,IAAI,GAAGC,WAAC,CAACC,kBAAkB,CAC/B,IAAI,EACJJ,IAAI,CAACK,MAAM,EACXL,IAAI,CAACM,IAAI,EACTN,IAAI,CAACO,SAAS,EACdP,IAAI,CAACQ,KACP,CAAC;UACDN,IAAI,CAACO,UAAU,GAAGT,IAAI,CAACS,UAAU;UAEjC,MAAMC,WAAW,GAAGP,WAAC,CAACQ,aAAa,CAACX,IAAI,CAAC;UACzC,IAAIG,WAAC,CAACS,eAAe,CAACF,WAAW,EAAE;YAAEG,KAAK,EAAE;UAAY,CAAC,CAAC,EAAE;YAC1Dd,IAAI,CAACe,WAAW,CAACX,WAAC,CAACY,cAAc,CAACL,WAAW,EAAER,IAAI,EAAE,IAAI,CAAC,CAAC;UAC7D,CAAC,MAAM;YACLH,IAAI,CAACe,WAAW,CAACX,WAAC,CAACY,cAAc,CAACf,IAAI,CAACgB,GAAG,EAAEd,IAAI,EAAEF,IAAI,CAACiB,QAAQ,CAAC,CAAC;UACnE;QACF;MACF,CAAC;MAEDC,cAAcA,CAACnB,IAAI,EAAE;QACnB,MAAM;UAAEC;QAAK,CAAC,GAAGD,IAAI;QACrB,IAAIC,IAAI,CAACmB,SAAS,EAAE;UAClB,MAAMT,WAAW,GAAGP,WAAC,CAACQ,aAAa,CAACX,IAAI,CAAC;UACzC,IAAIG,WAAC,CAACS,eAAe,CAACF,WAAW,EAAE;YAAEG,KAAK,EAAE;UAAY,CAAC,CAAC,EAAE;YAC1Dd,IAAI,CAACe,WAAW,CAACX,WAAC,CAACY,cAAc,CAACL,WAAW,EAAEV,IAAI,CAACa,KAAK,EAAE,IAAI,CAAC,CAAC;UACnE,CAAC,MAAM;YACLb,IAAI,CAACmB,SAAS,GAAG,KAAK;UACxB;QACF;MACF;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-shorthand-properties/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-shorthand-properties",
+  "version": "7.25.9",
+  "description": "Compile ES2015 shorthand properties to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-shorthand-properties"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-shorthand-properties",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-spread/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-spread/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-spread/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-spread/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-spread/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-spread/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-spread
+
+> Compile ES2015 spread to ES5
+
+See our website [@babel/plugin-transform-spread](https://babeljs.io/docs/babel-plugin-transform-spread) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-spread
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-spread --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-spread/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-spread/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-spread/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,167 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _helperSkipTransparentExpressionWrappers = require("@babel/helper-skip-transparent-expression-wrappers");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _options$allowArrayLi;
+  api.assertVersion(7);
+  const iterableIsArray = (_api$assumption = api.assumption("iterableIsArray")) != null ? _api$assumption : options.loose;
+  const arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable");
+  function getSpreadLiteral(spread, scope) {
+    if (iterableIsArray && !_core.types.isIdentifier(spread.argument, {
+      name: "arguments"
+    })) {
+      return spread.argument;
+    } else {
+      const node = spread.argument;
+      if (_core.types.isIdentifier(node)) {
+        const binding = scope.getBinding(node.name);
+        if (binding != null && binding.constant && binding.path.isGenericType("Array")) {
+          return node;
+        }
+      }
+      if (_core.types.isArrayExpression(node)) {
+        return node;
+      }
+      if (_core.types.isIdentifier(node, {
+        name: "arguments"
+      })) {
+        return _core.template.expression.ast`
+          Array.prototype.slice.call(${node})
+        `;
+      }
+      const args = [node];
+      let helperName = "toConsumableArray";
+      if (arrayLikeIsIterable) {
+        args.unshift(scope.path.hub.addHelper(helperName));
+        helperName = "maybeArrayLike";
+      }
+      return _core.types.callExpression(scope.path.hub.addHelper(helperName), args);
+    }
+  }
+  function hasHole(spread) {
+    return spread.elements.includes(null);
+  }
+  function hasSpread(nodes) {
+    for (let i = 0; i < nodes.length; i++) {
+      if (_core.types.isSpreadElement(nodes[i])) {
+        return true;
+      }
+    }
+    return false;
+  }
+  function push(_props, nodes) {
+    if (!_props.length) return _props;
+    nodes.push(_core.types.arrayExpression(_props));
+    return [];
+  }
+  function build(props, scope, file) {
+    const nodes = [];
+    let _props = [];
+    for (const prop of props) {
+      if (_core.types.isSpreadElement(prop)) {
+        _props = push(_props, nodes);
+        let spreadLiteral = getSpreadLiteral(prop, scope);
+        if (_core.types.isArrayExpression(spreadLiteral) && hasHole(spreadLiteral)) {
+          spreadLiteral = _core.types.callExpression(file.addHelper("arrayWithoutHoles"), [spreadLiteral]);
+        }
+        nodes.push(spreadLiteral);
+      } else {
+        _props.push(prop);
+      }
+    }
+    push(_props, nodes);
+    return nodes;
+  }
+  return {
+    name: "transform-spread",
+    visitor: {
+      ArrayExpression(path) {
+        const {
+          node,
+          scope
+        } = path;
+        const elements = node.elements;
+        if (!hasSpread(elements)) return;
+        const nodes = build(elements, scope, this.file);
+        let first = nodes[0];
+        if (nodes.length === 1 && first !== elements[0].argument) {
+          path.replaceWith(first);
+          return;
+        }
+        if (!_core.types.isArrayExpression(first)) {
+          first = _core.types.arrayExpression([]);
+        } else {
+          nodes.shift();
+        }
+        path.replaceWith(_core.types.callExpression(_core.types.memberExpression(first, _core.types.identifier("concat")), nodes));
+      },
+      CallExpression(path) {
+        const {
+          node,
+          scope
+        } = path;
+        const args = node.arguments;
+        if (!hasSpread(args)) return;
+        const calleePath = (0, _helperSkipTransparentExpressionWrappers.skipTransparentExprWrappers)(path.get("callee"));
+        if (calleePath.isSuper()) {
+          throw path.buildCodeFrameError("It's not possible to compile spread arguments in `super()` without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
+        }
+        let contextLiteral = scope.buildUndefinedNode();
+        node.arguments = [];
+        let nodes;
+        if (args.length === 1 && _core.types.isIdentifier(args[0].argument, {
+          name: "arguments"
+        })) {
+          nodes = [args[0].argument];
+        } else {
+          nodes = build(args, scope, this.file);
+        }
+        const first = nodes.shift();
+        if (nodes.length) {
+          node.arguments.push(_core.types.callExpression(_core.types.memberExpression(first, _core.types.identifier("concat")), nodes));
+        } else {
+          node.arguments.push(first);
+        }
+        const callee = calleePath.node;
+        if (_core.types.isMemberExpression(callee)) {
+          const temp = scope.maybeGenerateMemoised(callee.object);
+          if (temp) {
+            callee.object = _core.types.assignmentExpression("=", temp, callee.object);
+            contextLiteral = temp;
+          } else {
+            contextLiteral = _core.types.cloneNode(callee.object);
+          }
+        }
+        node.callee = _core.types.memberExpression(node.callee, _core.types.identifier("apply"));
+        if (_core.types.isSuper(contextLiteral)) {
+          contextLiteral = _core.types.thisExpression();
+        }
+        node.arguments.unshift(_core.types.cloneNode(contextLiteral));
+      },
+      NewExpression(path) {
+        const {
+          node,
+          scope
+        } = path;
+        if (!hasSpread(node.arguments)) return;
+        const nodes = build(node.arguments, scope, this.file);
+        const first = nodes.shift();
+        let args;
+        if (nodes.length) {
+          args = _core.types.callExpression(_core.types.memberExpression(first, _core.types.identifier("concat")), nodes);
+        } else {
+          args = first;
+        }
+        path.replaceWith(_core.types.callExpression(path.hub.addHelper("construct"), [node.callee, args]));
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-spread/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-spread/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-spread/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_helperSkipTransparentExpressionWrappers","_core","_default","exports","default","declare","api","options","_api$assumption","_options$allowArrayLi","assertVersion","iterableIsArray","assumption","loose","arrayLikeIsIterable","allowArrayLike","getSpreadLiteral","spread","scope","t","isIdentifier","argument","name","node","binding","getBinding","constant","path","isGenericType","isArrayExpression","template","expression","ast","args","helperName","unshift","hub","addHelper","callExpression","hasHole","elements","includes","hasSpread","nodes","i","length","isSpreadElement","push","_props","arrayExpression","build","props","file","prop","spreadLiteral","visitor","ArrayExpression","first","replaceWith","shift","memberExpression","identifier","CallExpression","arguments","calleePath","skipTransparentExprWrappers","get","isSuper","buildCodeFrameError","contextLiteral","buildUndefinedNode","callee","isMemberExpression","temp","maybeGenerateMemoised","object","assignmentExpression","cloneNode","thisExpression","NewExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport { types as t, template } from \"@babel/core\";\nimport type { File, NodePath, Scope } from \"@babel/core\";\n\ntype ListElement = t.SpreadElement | t.Expression;\n\nexport interface Options {\n  allowArrayLike?: boolean;\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const iterableIsArray = api.assumption(\"iterableIsArray\") ?? options.loose;\n  const arrayLikeIsIterable =\n    options.allowArrayLike ?? api.assumption(\"arrayLikeIsIterable\");\n\n  function getSpreadLiteral(\n    spread: t.SpreadElement,\n    scope: Scope,\n  ): t.Expression {\n    if (\n      iterableIsArray &&\n      !t.isIdentifier(spread.argument, { name: \"arguments\" })\n    ) {\n      return spread.argument;\n    } else {\n      const node = spread.argument;\n\n      if (t.isIdentifier(node)) {\n        const binding = scope.getBinding(node.name);\n        if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n          return node;\n        }\n      }\n\n      if (t.isArrayExpression(node)) {\n        return node;\n      }\n\n      if (t.isIdentifier(node, { name: \"arguments\" })) {\n        return template.expression.ast`\n          Array.prototype.slice.call(${node})\n        `;\n      }\n\n      const args = [node];\n      let helperName = \"toConsumableArray\";\n\n      if (arrayLikeIsIterable) {\n        args.unshift(scope.path.hub.addHelper(helperName));\n        helperName = \"maybeArrayLike\";\n      }\n\n      return t.callExpression(scope.path.hub.addHelper(helperName), args);\n    }\n  }\n\n  function hasHole(spread: t.ArrayExpression): boolean {\n    return spread.elements.includes(null);\n  }\n\n  function hasSpread(nodes: Array<t.Node>): boolean {\n    for (let i = 0; i < nodes.length; i++) {\n      if (t.isSpreadElement(nodes[i])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  function push(_props: Array<ListElement>, nodes: Array<t.Expression>) {\n    if (!_props.length) return _props;\n    nodes.push(t.arrayExpression(_props));\n    return [];\n  }\n\n  function build(\n    props: Array<ListElement>,\n    scope: Scope,\n    file: File,\n  ): t.Expression[] {\n    const nodes: Array<t.Expression> = [];\n    let _props: Array<ListElement> = [];\n\n    for (const prop of props) {\n      if (t.isSpreadElement(prop)) {\n        _props = push(_props, nodes);\n        let spreadLiteral = getSpreadLiteral(prop, scope);\n\n        if (t.isArrayExpression(spreadLiteral) && hasHole(spreadLiteral)) {\n          spreadLiteral = t.callExpression(\n            file.addHelper(\n              process.env.BABEL_8_BREAKING\n                ? \"arrayLikeToArray\"\n                : \"arrayWithoutHoles\",\n            ),\n            [spreadLiteral],\n          );\n        }\n\n        nodes.push(spreadLiteral);\n      } else {\n        _props.push(prop);\n      }\n    }\n\n    push(_props, nodes);\n\n    return nodes;\n  }\n\n  return {\n    name: \"transform-spread\",\n\n    visitor: {\n      ArrayExpression(path): void {\n        const { node, scope } = path;\n        const elements = node.elements;\n        if (!hasSpread(elements)) return;\n\n        const nodes = build(elements, scope, this.file);\n        let first = nodes[0];\n\n        // If there is only one element in the ArrayExpression and\n        // the element was transformed (Array.prototype.slice.call or toConsumableArray)\n        // we know that the transformed code already takes care of cloning the array.\n        // So we can simply return that element.\n        if (\n          nodes.length === 1 &&\n          first !== (elements[0] as t.SpreadElement).argument\n        ) {\n          path.replaceWith(first);\n          return;\n        }\n\n        // If the first element is a ArrayExpression we can directly call\n        // concat on it.\n        // `[..].concat(..)`\n        // If not then we have to use `[].concat(arr)` and not `arr.concat`\n        // because `arr` could be extended/modified (e.g. Immutable) and we do not know exactly\n        // what concat would produce.\n        if (!t.isArrayExpression(first)) {\n          first = t.arrayExpression([]);\n        } else {\n          nodes.shift();\n        }\n\n        path.replaceWith(\n          t.callExpression(\n            t.memberExpression(first, t.identifier(\"concat\")),\n            nodes,\n          ),\n        );\n      },\n      CallExpression(path): void {\n        const { node, scope } = path;\n\n        const args = node.arguments as Array<ListElement>;\n        if (!hasSpread(args)) return;\n        const calleePath = skipTransparentExprWrappers(\n          path.get(\"callee\") as NodePath<t.Expression>,\n        );\n        if (calleePath.isSuper()) {\n          // NOTE: spread and classes have almost the same compat data, so this is very unlikely to happen in practice.\n          throw path.buildCodeFrameError(\n            \"It's not possible to compile spread arguments in `super()` without compiling classes.\\n\" +\n              \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n          );\n        }\n        let contextLiteral: t.Expression | t.Super = scope.buildUndefinedNode();\n        node.arguments = [];\n\n        let nodes: t.Expression[];\n        if (\n          args.length === 1 &&\n          t.isIdentifier((args[0] as t.SpreadElement).argument, {\n            name: \"arguments\",\n          })\n        ) {\n          nodes = [(args[0] as t.SpreadElement).argument];\n        } else {\n          nodes = build(args, scope, this.file);\n        }\n\n        const first = nodes.shift();\n        if (nodes.length) {\n          node.arguments.push(\n            t.callExpression(\n              t.memberExpression(first, t.identifier(\"concat\")),\n              nodes,\n            ),\n          );\n        } else {\n          node.arguments.push(first);\n        }\n\n        const callee = calleePath.node as t.MemberExpression;\n\n        if (t.isMemberExpression(callee)) {\n          const temp = scope.maybeGenerateMemoised(callee.object);\n          if (temp) {\n            callee.object = t.assignmentExpression(\n              \"=\",\n              temp,\n              // object must not be Super when `temp` is an identifier\n              // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n              callee.object as t.Expression,\n            );\n            contextLiteral = temp;\n          } else {\n            contextLiteral = t.cloneNode(callee.object);\n          }\n        }\n\n        // We use the original callee here, to preserve any types/parentheses\n        node.callee = t.memberExpression(\n          node.callee as t.Expression,\n          t.identifier(\"apply\"),\n        );\n        if (t.isSuper(contextLiteral)) {\n          contextLiteral = t.thisExpression();\n        }\n\n        node.arguments.unshift(t.cloneNode(contextLiteral));\n      },\n\n      NewExpression(path): void {\n        const { node, scope } = path;\n        if (!hasSpread(node.arguments)) return;\n\n        const nodes = build(\n          node.arguments as Array<ListElement>,\n          scope,\n          this.file,\n        );\n\n        const first = nodes.shift();\n\n        let args: t.Expression;\n        if (nodes.length) {\n          args = t.callExpression(\n            t.memberExpression(first, t.identifier(\"concat\")),\n            nodes,\n          );\n        } else {\n          args = first;\n        }\n\n        path.replaceWith(\n          t.callExpression(path.hub.addHelper(\"construct\"), [\n            node.callee as t.Expression,\n            args,\n          ]),\n        );\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-spread/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-spread/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-spread/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-spread",
+  "version": "7.25.9",
+  "description": "Compile ES2015 spread to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-spread"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-spread",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-sticky-regex
+
+> Compile ES2015 sticky regex to an ES5 RegExp constructor
+
+See our website [@babel/plugin-transform-sticky-regex](https://babeljs.io/docs/babel-plugin-transform-sticky-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-sticky-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-sticky-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-sticky-regex",
+    visitor: {
+      RegExpLiteral(path) {
+        const {
+          node
+        } = path;
+        if (!node.flags.includes("y")) return;
+        path.replaceWith(_core.types.newExpression(_core.types.identifier("RegExp"), [_core.types.stringLiteral(node.pattern), _core.types.stringLiteral(node.flags)]));
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","RegExpLiteral","path","node","flags","includes","replaceWith","t","newExpression","identifier","stringLiteral","pattern"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-sticky-regex\",\n\n    visitor: {\n      RegExpLiteral(path) {\n        const { node } = path;\n        if (!node.flags.includes(\"y\")) return;\n\n        path.replaceWith(\n          t.newExpression(t.identifier(\"RegExp\"), [\n            t.stringLiteral(node.pattern),\n            t.stringLiteral(node.flags),\n          ]),\n        );\n      },\n    },\n  };\n});\n"],"mappings":";;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAAyC,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1B,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO;IACLC,IAAI,EAAE,wBAAwB;IAE9BC,OAAO,EAAE;MACPC,aAAaA,CAACC,IAAI,EAAE;QAClB,MAAM;UAAEC;QAAK,CAAC,GAAGD,IAAI;QACrB,IAAI,CAACC,IAAI,CAACC,KAAK,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAE/BH,IAAI,CAACI,WAAW,CACdC,WAAC,CAACC,aAAa,CAACD,WAAC,CAACE,UAAU,CAAC,QAAQ,CAAC,EAAE,CACtCF,WAAC,CAACG,aAAa,CAACP,IAAI,CAACQ,OAAO,CAAC,EAC7BJ,WAAC,CAACG,aAAa,CAACP,IAAI,CAACC,KAAK,CAAC,CAC5B,CACH,CAAC;MACH;IACF;EACF,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-sticky-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-sticky-regex",
+  "version": "7.25.9",
+  "description": "Compile ES2015 sticky regex to an ES5 RegExp constructor",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-sticky-regex"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-sticky-regex",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-template-literals/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-template-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-template-literals/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-template-literals/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-template-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-template-literals/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-template-literals
+
+> Compile ES2015 template literals to ES5
+
+See our website [@babel/plugin-transform-template-literals](https://babeljs.io/docs/babel-plugin-transform-template-literals) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-template-literals
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-template-literals --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-template-literals/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-template-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-template-literals/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,108 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  var _api$assumption, _api$assumption2;
+  api.assertVersion(7);
+  const ignoreToPrimitiveHint = (_api$assumption = api.assumption("ignoreToPrimitiveHint")) != null ? _api$assumption : options.loose;
+  const mutableTemplateObject = (_api$assumption2 = api.assumption("mutableTemplateObject")) != null ? _api$assumption2 : options.loose;
+  let helperName = "taggedTemplateLiteral";
+  if (mutableTemplateObject) helperName += "Loose";
+  function buildConcatCallExpressions(items) {
+    let avail = true;
+    return items.reduce(function (left, right) {
+      let canBeInserted = _core.types.isLiteral(right);
+      if (!canBeInserted && avail) {
+        canBeInserted = true;
+        avail = false;
+      }
+      if (canBeInserted && _core.types.isCallExpression(left)) {
+        left.arguments.push(right);
+        return left;
+      }
+      return _core.types.callExpression(_core.types.memberExpression(left, _core.types.identifier("concat")), [right]);
+    });
+  }
+  return {
+    name: "transform-template-literals",
+    visitor: {
+      TaggedTemplateExpression(path) {
+        const {
+          node
+        } = path;
+        const {
+          quasi
+        } = node;
+        const strings = [];
+        const raws = [];
+        let isStringsRawEqual = true;
+        for (const elem of quasi.quasis) {
+          const {
+            raw,
+            cooked
+          } = elem.value;
+          const value = cooked == null ? path.scope.buildUndefinedNode() : _core.types.stringLiteral(cooked);
+          strings.push(value);
+          raws.push(_core.types.stringLiteral(raw));
+          if (raw !== cooked) {
+            isStringsRawEqual = false;
+          }
+        }
+        const helperArgs = [_core.types.arrayExpression(strings)];
+        if (!isStringsRawEqual) {
+          helperArgs.push(_core.types.arrayExpression(raws));
+        }
+        const tmp = path.scope.generateUidIdentifier("templateObject");
+        path.scope.getProgramParent().push({
+          id: _core.types.cloneNode(tmp)
+        });
+        path.replaceWith(_core.types.callExpression(node.tag, [_core.template.expression.ast`
+              ${_core.types.cloneNode(tmp)} || (
+                ${tmp} = ${this.addHelper(helperName)}(${helperArgs})
+              )
+            `, ...quasi.expressions]));
+      },
+      TemplateLiteral(path) {
+        if (path.parent.type === "TSLiteralType") {
+          return;
+        }
+        const nodes = [];
+        const expressions = path.get("expressions");
+        let index = 0;
+        for (const elem of path.node.quasis) {
+          if (elem.value.cooked) {
+            nodes.push(_core.types.stringLiteral(elem.value.cooked));
+          }
+          if (index < expressions.length) {
+            const expr = expressions[index++];
+            const node = expr.node;
+            if (!_core.types.isStringLiteral(node, {
+              value: ""
+            })) {
+              nodes.push(node);
+            }
+          }
+        }
+        if (!_core.types.isStringLiteral(nodes[0]) && !(ignoreToPrimitiveHint && _core.types.isStringLiteral(nodes[1]))) {
+          nodes.unshift(_core.types.stringLiteral(""));
+        }
+        let root = nodes[0];
+        if (ignoreToPrimitiveHint) {
+          for (let i = 1; i < nodes.length; i++) {
+            root = _core.types.binaryExpression("+", root, nodes[i]);
+          }
+        } else if (nodes.length > 1) {
+          root = buildConcatCallExpressions(nodes);
+        }
+        path.replaceWith(root);
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-template-literals/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-template-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-template-literals/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","options","_api$assumption","_api$assumption2","assertVersion","ignoreToPrimitiveHint","assumption","loose","mutableTemplateObject","helperName","buildConcatCallExpressions","items","avail","reduce","left","right","canBeInserted","t","isLiteral","isCallExpression","arguments","push","callExpression","memberExpression","identifier","name","visitor","TaggedTemplateExpression","path","node","quasi","strings","raws","isStringsRawEqual","elem","quasis","raw","cooked","value","scope","buildUndefinedNode","stringLiteral","helperArgs","arrayExpression","tmp","generateUidIdentifier","getProgramParent","id","cloneNode","replaceWith","tag","template","expression","ast","addHelper","expressions","TemplateLiteral","parent","type","nodes","get","index","length","expr","isStringLiteral","unshift","root","i","binaryExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t, type NodePath } from \"@babel/core\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const ignoreToPrimitiveHint =\n    api.assumption(\"ignoreToPrimitiveHint\") ?? options.loose;\n  const mutableTemplateObject =\n    api.assumption(\"mutableTemplateObject\") ?? options.loose;\n\n  let helperName = \"taggedTemplateLiteral\";\n  if (mutableTemplateObject) helperName += \"Loose\";\n\n  /**\n   * This function groups the objects into multiple calls to `.concat()` in\n   * order to preserve execution order of the primitive conversion, e.g.\n   *\n   *   \"\".concat(obj.foo, \"foo\", obj2.foo, \"foo2\")\n   *\n   * would evaluate both member expressions _first_ then, `concat` will\n   * convert each one to a primitive, whereas\n   *\n   *   \"\".concat(obj.foo, \"foo\").concat(obj2.foo, \"foo2\")\n   *\n   * would evaluate the member, then convert it to a primitive, then evaluate\n   * the second member and convert that one, which reflects the spec behavior\n   * of template literals.\n   */\n  function buildConcatCallExpressions(items: t.Expression[]): t.CallExpression {\n    let avail = true;\n    // @ts-expect-error items must not be empty\n    return items.reduce(function (left, right) {\n      let canBeInserted = t.isLiteral(right);\n\n      if (!canBeInserted && avail) {\n        canBeInserted = true;\n        avail = false;\n      }\n      if (canBeInserted && t.isCallExpression(left)) {\n        left.arguments.push(right);\n        return left;\n      }\n      return t.callExpression(\n        t.memberExpression(left, t.identifier(\"concat\")),\n        [right],\n      );\n    });\n  }\n\n  return {\n    name: \"transform-template-literals\",\n\n    visitor: {\n      TaggedTemplateExpression(path) {\n        const { node } = path;\n        const { quasi } = node;\n\n        const strings = [];\n        const raws = [];\n\n        // Flag variable to check if contents of strings and raw are equal\n        let isStringsRawEqual = true;\n\n        for (const elem of quasi.quasis) {\n          const { raw, cooked } = elem.value;\n          const value =\n            cooked == null\n              ? path.scope.buildUndefinedNode()\n              : t.stringLiteral(cooked);\n\n          strings.push(value);\n          raws.push(t.stringLiteral(raw));\n\n          if (raw !== cooked) {\n            // false even if one of raw and cooked are not equal\n            isStringsRawEqual = false;\n          }\n        }\n\n        const helperArgs = [t.arrayExpression(strings)];\n        // only add raw arrayExpression if there is any difference between raws and strings\n        if (!isStringsRawEqual) {\n          helperArgs.push(t.arrayExpression(raws));\n        }\n\n        const tmp = path.scope.generateUidIdentifier(\"templateObject\");\n        path.scope.getProgramParent().push({ id: t.cloneNode(tmp) });\n\n        path.replaceWith(\n          t.callExpression(node.tag, [\n            template.expression.ast`\n              ${t.cloneNode(tmp)} || (\n                ${tmp} = ${this.addHelper(helperName)}(${helperArgs})\n              )\n            `,\n            // @ts-expect-error Fixme: quasi.expressions may contain TSAnyKeyword\n            ...quasi.expressions,\n          ]),\n        );\n      },\n\n      TemplateLiteral(path) {\n        // Skip TemplateLiteral in TSLiteralType\n        if (path.parent.type === \"TSLiteralType\") {\n          return;\n        }\n        const nodes: t.Expression[] = [];\n        const expressions = path.get(\"expressions\") as NodePath<t.Expression>[];\n\n        let index = 0;\n        for (const elem of path.node.quasis) {\n          if (elem.value.cooked) {\n            nodes.push(t.stringLiteral(elem.value.cooked));\n          }\n\n          if (index < expressions.length) {\n            const expr = expressions[index++];\n            const node = expr.node;\n            if (!t.isStringLiteral(node, { value: \"\" })) {\n              nodes.push(node);\n            }\n          }\n        }\n\n        // since `+` is left-to-right associative\n        // ensure the first node is a string if first/second isn't\n        if (\n          !t.isStringLiteral(nodes[0]) &&\n          !(ignoreToPrimitiveHint && t.isStringLiteral(nodes[1]))\n        ) {\n          nodes.unshift(t.stringLiteral(\"\"));\n        }\n        let root = nodes[0];\n\n        if (ignoreToPrimitiveHint) {\n          for (let i = 1; i < nodes.length; i++) {\n            root = t.binaryExpression(\"+\", root, nodes[i]);\n          }\n        } else if (nodes.length > 1) {\n          root = buildConcatCallExpressions(nodes);\n        }\n\n        path.replaceWith(root);\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-template-literals/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-template-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-template-literals/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-template-literals",
+  "version": "7.25.9",
+  "description": "Compile ES2015 template literals to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-template-literals"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "keywords": [
+    "babel-plugin"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-template-literals",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-typeof-symbol
+
+> This transformer wraps all typeof expressions with a method that replicates native behaviour. (ie. returning “symbol” for symbols)
+
+See our website [@babel/plugin-transform-typeof-symbol](https://babeljs.io/docs/babel-plugin-transform-typeof-symbol) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-typeof-symbol
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-typeof-symbol --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,61 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return {
+    name: "transform-typeof-symbol",
+    visitor: {
+      Scope({
+        scope
+      }) {
+        if (!scope.getBinding("Symbol")) {
+          return;
+        }
+        scope.rename("Symbol");
+      },
+      UnaryExpression(path) {
+        const {
+          node,
+          parent
+        } = path;
+        if (node.operator !== "typeof") return;
+        if (path.parentPath.isBinaryExpression() && _core.types.EQUALITY_BINARY_OPERATORS.includes(parent.operator)) {
+          const opposite = path.getOpposite();
+          if (opposite.isStringLiteral() && opposite.node.value !== "symbol" && opposite.node.value !== "object") {
+            return;
+          }
+        }
+        let isUnderHelper = path.findParent(path => {
+          if (path.isFunction()) {
+            var _path$get;
+            return ((_path$get = path.get("body.directives.0")) == null ? void 0 : _path$get.node.value.value) === "@babel/helpers - typeof";
+          }
+        });
+        if (isUnderHelper) return;
+        const helper = this.addHelper("typeof");
+        isUnderHelper = path.findParent(path => {
+          return path.isVariableDeclarator() && path.node.id === helper || path.isFunctionDeclaration() && path.node.id && path.node.id.name === helper.name;
+        });
+        if (isUnderHelper) {
+          return;
+        }
+        const call = _core.types.callExpression(helper, [node.argument]);
+        const arg = path.get("argument");
+        if (arg.isIdentifier() && !path.scope.hasBinding(arg.node.name, true)) {
+          const unary = _core.types.unaryExpression("typeof", _core.types.cloneNode(node.argument));
+          path.replaceWith(_core.types.conditionalExpression(_core.types.binaryExpression("===", unary, _core.types.stringLiteral("undefined")), _core.types.stringLiteral("undefined"), call));
+        } else {
+          path.replaceWith(call);
+        }
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","name","visitor","Scope","scope","getBinding","rename","UnaryExpression","path","node","parent","operator","parentPath","isBinaryExpression","t","EQUALITY_BINARY_OPERATORS","includes","opposite","getOpposite","isStringLiteral","value","isUnderHelper","findParent","isFunction","_path$get","get","helper","addHelper","isVariableDeclarator","id","isFunctionDeclaration","call","callExpression","argument","arg","isIdentifier","hasBinding","unary","unaryExpression","cloneNode","replaceWith","conditionalExpression","binaryExpression","stringLiteral"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-typeof-symbol\",\n\n    visitor: {\n      Scope({ scope }) {\n        if (!scope.getBinding(\"Symbol\")) {\n          return;\n        }\n\n        scope.rename(\"Symbol\");\n      },\n\n      UnaryExpression(path) {\n        const { node, parent } = path;\n        if (node.operator !== \"typeof\") return;\n\n        if (\n          path.parentPath.isBinaryExpression() &&\n          t.EQUALITY_BINARY_OPERATORS.includes(\n            (parent as t.BinaryExpression).operator,\n          )\n        ) {\n          // optimise `typeof foo === \"string\"` since we can determine that they'll never\n          // need to handle symbols\n          const opposite = path.getOpposite();\n          if (\n            opposite.isStringLiteral() &&\n            opposite.node.value !== \"symbol\" &&\n            opposite.node.value !== \"object\"\n          ) {\n            return;\n          }\n        }\n\n        let isUnderHelper = path.findParent(path => {\n          if (path.isFunction()) {\n            return (\n              path.get(\"body.directives.0\")?.node.value.value ===\n              \"@babel/helpers - typeof\"\n            );\n          }\n        });\n\n        if (isUnderHelper) return;\n\n        const helper = this.addHelper(\"typeof\");\n\n        // TODO: This is needed for backward compatibility with\n        // @babel/helpers <= 7.8.3.\n        // Remove in Babel 8\n        isUnderHelper = path.findParent(path => {\n          return (\n            (path.isVariableDeclarator() && path.node.id === helper) ||\n            (path.isFunctionDeclaration() &&\n              path.node.id &&\n              path.node.id.name === helper.name)\n          );\n        });\n\n        if (isUnderHelper) {\n          return;\n        }\n\n        const call = t.callExpression(helper, [node.argument]);\n        const arg = path.get(\"argument\");\n        if (arg.isIdentifier() && !path.scope.hasBinding(arg.node.name, true)) {\n          const unary = t.unaryExpression(\"typeof\", t.cloneNode(node.argument));\n          path.replaceWith(\n            t.conditionalExpression(\n              t.binaryExpression(\"===\", unary, t.stringLiteral(\"undefined\")),\n              t.stringLiteral(\"undefined\"),\n              call,\n            ),\n          );\n        } else {\n          path.replaceWith(call);\n        }\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-typeof-symbol/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+{
+  "name": "@babel/plugin-transform-typeof-symbol",
+  "version": "7.25.9",
+  "description": "This transformer wraps all typeof expressions with a method that replicates native behaviour. (ie. returning “symbol” for symbols)",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-typeof-symbol"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/runtime": "^7.25.9",
+    "@babel/runtime-corejs2": "^7.24.0",
+    "@babel/runtime-corejs3": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-typeof-symbol",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-unicode-escapes
+
+> Compile ES2015 Unicode escapes to ES5
+
+See our website [@babel/plugin-transform-unicode-escapes](https://babeljs.io/docs/babel-plugin-transform-unicode-escapes) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-unicode-escapes
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-unicode-escapes --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,118 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _core = require("@babel/core");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  const surrogate = /[\ud800-\udfff]/g;
+  const unicodeEscape = /(\\+)u\{([0-9a-fA-F]+)\}/g;
+  function escape(code) {
+    {
+      let str = code.toString(16);
+      while (str.length < 4) str = "0" + str;
+      return "\\u" + str;
+    }
+  }
+  function replacer(match, backslashes, code) {
+    if (backslashes.length % 2 === 0) {
+      return match;
+    }
+    const char = String.fromCodePoint(parseInt(code, 16));
+    const escaped = backslashes.slice(0, -1) + escape(char.charCodeAt(0));
+    return char.length === 1 ? escaped : escaped + escape(char.charCodeAt(1));
+  }
+  function replaceUnicodeEscapes(str) {
+    return str.replace(unicodeEscape, replacer);
+  }
+  function getUnicodeEscape(str) {
+    let match;
+    while (match = unicodeEscape.exec(str)) {
+      if (match[1].length % 2 === 0) continue;
+      unicodeEscape.lastIndex = 0;
+      return match[0];
+    }
+    return null;
+  }
+  return {
+    name: "transform-unicode-escapes",
+    manipulateOptions({
+      generatorOpts
+    }) {
+      var _generatorOpts$jsescO, _generatorOpts$jsescO2;
+      if (!generatorOpts.jsescOption) {
+        generatorOpts.jsescOption = {};
+      }
+      (_generatorOpts$jsescO2 = (_generatorOpts$jsescO = generatorOpts.jsescOption).minimal) != null ? _generatorOpts$jsescO2 : _generatorOpts$jsescO.minimal = false;
+    },
+    visitor: {
+      Identifier(path) {
+        const {
+          node,
+          key
+        } = path;
+        const {
+          name
+        } = node;
+        const replaced = name.replace(surrogate, c => {
+          return `_u${c.charCodeAt(0).toString(16)}`;
+        });
+        if (name === replaced) return;
+        const str = _core.types.inherits(_core.types.stringLiteral(name), node);
+        if (key === "key") {
+          path.replaceWith(str);
+          return;
+        }
+        const {
+          parentPath,
+          scope
+        } = path;
+        if (parentPath.isMemberExpression({
+          property: node
+        }) || parentPath.isOptionalMemberExpression({
+          property: node
+        })) {
+          parentPath.node.computed = true;
+          path.replaceWith(str);
+          return;
+        }
+        const binding = scope.getBinding(name);
+        if (binding) {
+          scope.rename(name, scope.generateUid(replaced));
+          return;
+        }
+        throw path.buildCodeFrameError(`Can't reference '${name}' as a bare identifier`);
+      },
+      "StringLiteral|DirectiveLiteral"(path) {
+        const {
+          node
+        } = path;
+        const {
+          extra
+        } = node;
+        if (extra != null && extra.raw) extra.raw = replaceUnicodeEscapes(extra.raw);
+      },
+      TemplateElement(path) {
+        const {
+          node,
+          parentPath
+        } = path;
+        const {
+          value
+        } = node;
+        const firstEscape = getUnicodeEscape(value.raw);
+        if (!firstEscape) return;
+        const grandParent = parentPath.parentPath;
+        if (grandParent.isTaggedTemplateExpression()) {
+          throw path.buildCodeFrameError(`Can't replace Unicode escape '${firstEscape}' inside tagged template literals. You can enable '@babel/plugin-transform-template-literals' to compile them to classic strings.`);
+        }
+        value.raw = replaceUnicodeEscapes(value.raw);
+      }
+    }
+  };
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperPluginUtils","require","_core","_default","exports","default","declare","api","assertVersion","surrogate","unicodeEscape","escape","code","str","toString","length","replacer","match","backslashes","char","String","fromCodePoint","parseInt","escaped","slice","charCodeAt","replaceUnicodeEscapes","replace","getUnicodeEscape","exec","lastIndex","name","manipulateOptions","generatorOpts","_generatorOpts$jsescO","_generatorOpts$jsescO2","jsescOption","minimal","visitor","Identifier","path","node","key","replaced","c","t","inherits","stringLiteral","replaceWith","parentPath","scope","isMemberExpression","property","isOptionalMemberExpression","computed","binding","getBinding","rename","generateUid","buildCodeFrameError","StringLiteral|DirectiveLiteral","extra","raw","TemplateElement","value","firstEscape","grandParent","isTaggedTemplateExpression"],"sources":["../src/index.ts"],"sourcesContent":["import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, type NodePath } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const surrogate = /[\\ud800-\\udfff]/g;\n  const unicodeEscape = /(\\\\+)u\\{([0-9a-fA-F]+)\\}/g;\n\n  function escape(code: number) {\n    if (process.env.BABEL_8_BREAKING) {\n      return \"\\\\u\" + code.toString(16).padStart(4, \"0\");\n    } else {\n      let str = code.toString(16);\n      while (str.length < 4) str = \"0\" + str;\n      return \"\\\\u\" + str;\n    }\n  }\n\n  function replacer(match: string, backslashes: string, code: string) {\n    if (backslashes.length % 2 === 0) {\n      return match;\n    }\n\n    const char = String.fromCodePoint(parseInt(code, 16));\n    const escaped = backslashes.slice(0, -1) + escape(char.charCodeAt(0));\n\n    return char.length === 1 ? escaped : escaped + escape(char.charCodeAt(1));\n  }\n\n  function replaceUnicodeEscapes(str: string) {\n    return str.replace(unicodeEscape, replacer);\n  }\n\n  function getUnicodeEscape(str: string) {\n    let match;\n    while ((match = unicodeEscape.exec(str))) {\n      if (match[1].length % 2 === 0) continue;\n      unicodeEscape.lastIndex = 0;\n      return match[0];\n    }\n    return null;\n  }\n\n  return {\n    name: \"transform-unicode-escapes\",\n    manipulateOptions({ generatorOpts }) {\n      // Babel 8 will enable jsesc minimal mode by default, which outputs\n      // unescaped unicode string\n      if (!generatorOpts.jsescOption) {\n        generatorOpts.jsescOption = {};\n      }\n      generatorOpts.jsescOption.minimal ??= false;\n    },\n    visitor: {\n      Identifier(path) {\n        const { node, key } = path;\n        const { name } = node;\n        const replaced = name.replace(surrogate, c => {\n          return `_u${c.charCodeAt(0).toString(16)}`;\n        });\n        if (name === replaced) return;\n\n        const str = t.inherits(t.stringLiteral(name), node);\n\n        if (key === \"key\") {\n          path.replaceWith(str);\n          return;\n        }\n\n        const { parentPath, scope } = path;\n        if (\n          parentPath.isMemberExpression({ property: node }) ||\n          parentPath.isOptionalMemberExpression({ property: node })\n        ) {\n          parentPath.node.computed = true;\n          path.replaceWith(str);\n          return;\n        }\n\n        const binding = scope.getBinding(name);\n        if (binding) {\n          scope.rename(name, scope.generateUid(replaced));\n          return;\n        }\n\n        throw path.buildCodeFrameError(\n          `Can't reference '${name}' as a bare identifier`,\n        );\n      },\n\n      \"StringLiteral|DirectiveLiteral\"(\n        path: NodePath<t.StringLiteral | t.DirectiveLiteral>,\n      ) {\n        const { node } = path;\n        const { extra } = node;\n\n        if (extra?.raw) extra.raw = replaceUnicodeEscapes(extra.raw as string);\n      },\n\n      TemplateElement(path) {\n        const { node, parentPath } = path;\n        const { value } = node;\n\n        const firstEscape = getUnicodeEscape(value.raw);\n        if (!firstEscape) return;\n\n        const grandParent = parentPath.parentPath;\n        if (grandParent.isTaggedTemplateExpression()) {\n          throw path.buildCodeFrameError(\n            `Can't replace Unicode escape '${firstEscape}' inside tagged template literals. You can enable '@babel/plugin-transform-template-literals' to compile them to classic strings.`,\n          );\n        }\n\n        value.raw = replaceUnicodeEscapes(value.raw);\n      },\n    },\n  };\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-escapes/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+{
+  "name": "@babel/plugin-transform-unicode-escapes",
+  "version": "7.25.9",
+  "description": "Compile ES2015 Unicode escapes to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-unicode-escapes"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-escapes",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-unicode-property-regex
+
+> Compile Unicode property escapes in Unicode regular expressions to ES5.
+
+See our website [@babel/plugin-transform-unicode-property-regex](https://babeljs.io/docs/babel-plugin-transform-unicode-property-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-unicode-property-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-unicode-property-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)((api, options) => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  const {
+    useUnicodeFlag = true
+  } = options;
+  if (typeof useUnicodeFlag !== "boolean") {
+    throw new Error(".useUnicodeFlag must be a boolean, or undefined");
+  }
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-unicode-property-regex",
+    feature: "unicodePropertyEscape",
+    options: {
+      useUnicodeFlag
+    }
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","options","assertVersion","useUnicodeFlag","Error","createRegExpFeaturePlugin","name","feature"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  useUnicodeFlag?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { useUnicodeFlag = true } = options;\n  if (typeof useUnicodeFlag !== \"boolean\") {\n    throw new Error(\".useUnicodeFlag must be a boolean, or undefined\");\n  }\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-unicode-property-regex\",\n    feature: \"unicodePropertyEscape\",\n    options: { useUnicodeFlag },\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAMtC,IAAAC,0BAAO,EAAC,CAACC,GAAG,EAAEC,OAAgB,KAAK;EAChDD,GAAG,CAACE,aAAa,uCAAoB,CAAC;EAEtC,MAAM;IAAEC,cAAc,GAAG;EAAK,CAAC,GAAGF,OAAO;EACzC,IAAI,OAAOE,cAAc,KAAK,SAAS,EAAE;IACvC,MAAM,IAAIC,KAAK,CAAC,iDAAiD,CAAC;EACpE;EAEA,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,kCAAkC;IACxCC,OAAO,EAAE,uBAAuB;IAChCN,OAAO,EAAE;MAAEE;IAAe;EAC5B,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-property-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,41 @@
+{
+  "name": "@babel/plugin-transform-unicode-property-regex",
+  "version": "7.25.9",
+  "description": "Compile Unicode property escapes in Unicode regular expressions to ES5.",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-property-regex",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "regular expressions",
+    "unicode properties",
+    "unicode"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-unicode-property-regex"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-unicode-regex
+
+> Compile ES2015 Unicode regex to ES5
+
+See our website [@babel/plugin-transform-unicode-regex](https://babeljs.io/docs/babel-plugin-transform-unicode-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-unicode-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-unicode-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion(7);
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-unicode-regex",
+    feature: "unicodeFlag"
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","assertVersion","createRegExpFeaturePlugin","name","feature"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-unicode-regex\",\n    feature: \"unicodeFlag\",\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,CAAkB,CAAE,CAAC;EAEtC,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,yBAAyB;IAC/BC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+{
+  "name": "@babel/plugin-transform-unicode-regex",
+  "version": "7.25.9",
+  "description": "Compile ES2015 Unicode regex to ES5",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-unicode-regex"
+  },
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin"
+  ],
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-regex",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/plugin-transform-unicode-sets-regex
+
+> Compile regular expressions' unicodeSets (v) flag.
+
+See our website [@babel/plugin-transform-unicode-sets-regex](https://babeljs.io/docs/babel-plugin-transform-unicode-sets-regex) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-transform-unicode-sets-regex
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-transform-unicode-sets-regex --dev
+```
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _helperCreateRegexpFeaturesPlugin = require("@babel/helper-create-regexp-features-plugin");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+var _default = exports.default = (0, _helperPluginUtils.declare)(api => {
+  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");
+  return (0, _helperCreateRegexpFeaturesPlugin.createRegExpFeaturePlugin)({
+    name: "transform-unicode-sets-regex",
+    feature: "unicodeSetsFlag",
+    manipulateOptions(opts, parserOpts) {
+      {
+        parserOpts.plugins.push("regexpUnicodeSets");
+      }
+    }
+  });
+});
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCreateRegexpFeaturesPlugin","require","_helperPluginUtils","_default","exports","default","declare","api","assertVersion","createRegExpFeaturePlugin","name","feature","manipulateOptions","opts","parserOpts","plugins","push"],"sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable @babel/development/plugin-name */\nimport { createRegExpFeaturePlugin } from \"@babel/helper-create-regexp-features-plugin\";\nimport { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createRegExpFeaturePlugin({\n    name: \"transform-unicode-sets-regex\",\n    feature: \"unicodeSetsFlag\",\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-ignore(Babel 7 vs Babel 8) This plugin has been removed\n        parserOpts.plugins.push(\"regexpUnicodeSets\");\n      }\n    },\n  });\n});\n"],"mappings":";;;;;;AACA,IAAAA,iCAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAAqD,IAAAE,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEtC,IAAAC,0BAAO,EAACC,GAAG,IAAI;EAC5BA,GAAG,CAACC,aAAa,uCAAoB,CAAC;EAEtC,OAAO,IAAAC,2DAAyB,EAAC;IAC/BC,IAAI,EAAE,8BAA8B;IACpCC,OAAO,EAAE,iBAAiB;IAC1BC,iBAAiBA,CAACC,IAAI,EAAEC,UAAU,EAAE;MACC;QAEjCA,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC,mBAAmB,CAAC;MAC9C;IACF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/plugin-transform-unicode-sets-regex/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,52 @@
+{
+  "name": "@babel/plugin-transform-unicode-sets-regex",
+  "version": "7.25.9",
+  "description": "Compile regular expressions' unicodeSets (v) flag.",
+  "homepage": "https://babel.dev/docs/en/next/babel-plugin-transform-unicode-sets-regex",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "main": "./lib/index.js",
+  "keywords": [
+    "babel-plugin",
+    "regex",
+    "regexp",
+    "unicode",
+    "sets",
+    "properties",
+    "property",
+    "string",
+    "strings",
+    "regular expressions"
+  ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-plugin-transform-unicode-sets-regex"
+  },
+  "bugs": "https://github.com/babel/babel/issues",
+  "dependencies": {
+    "@babel/helper-create-regexp-features-plugin": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.25.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "author": "The Babel Team (https://babel.dev/team)",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "default": "./lib/index.js"
+    },
+    "./package.json": "./package.json"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/preset-env/CONTRIBUTING.md
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/CONTRIBUTING.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/CONTRIBUTING.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,94 @@
+# Contributing
+
+## Adding a new plugin or polyfill to support (when approved in the next ECMAScript version)
+
+### Update [`plugin-features.js`](https://github.com/babel/babel/blob/main/packages/babel-compat-data/scripts/data/plugin-features.js)
+
+*Example:*
+
+If you were going to add `**` which is in ES2016:
+
+Find the relevant entries on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-exponentiation_(**)_operator):
+
+`exponentiation (**) operator`
+
+Find the corresponding babel plugin:
+
+`@babel/plugin-transform-exponentiation-operator`
+
+And add them in this structure:
+
+```js
+// es2016
+"@babel/plugin-transform-exponentiation-operator": {
+  features: [
+    "exponentiation (**) operator",
+  ],
+},
+```
+
+### Update data for `core-js@2` polyfilling
+
+*Example:*
+
+In case you want to add `Object.values` which is in ES2017:
+
+Find the relevant feature and subfeature on [compat-table](https://kangax.github.io/compat-table/es2016plus/#test-Object_static_methods_Object.values)
+and split it with `/`:
+
+`Object static methods / Object.values`
+
+Find the corresponding module on [`core-js@2`](https://github.com/zloirock/core-js/tree/v2/modules):
+
+`es7.object.values.js`
+
+Find required ES version in [`corejs2-built-in-features.js`](https://github.com/babel/babel/blob/main/packages/babel-preset-env/data/corejs2-built-in-features.js) and add the new feature:
+
+```js
+const es = {
+  //...
+  "es7.object.values": "Object static methods / Object.values"
+}
+```
+
+If you want to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related `core-js` modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs2/built-in-definitions.js).
+
+### Update data for `core-js@3` polyfilling
+
+Just update the version of [`core-js-compat`](https://github.com/zloirock/core-js/tree/main/packages/core-js-compat) in dependencies.
+
+If you want to transform a new built-in by `useBuiltIns: 'usage'`, add mapping to related [`core-js`](https://github.com/zloirock/core-js/tree/main/packages/core-js/modules) modules to [this file](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/built-in-definitions.js).
+
+If you want to mark a new proposal as shipped, add it to [this list](https://github.com/babel/babel/blob/main/packages/babel-preset-env/polyfills/corejs3/shipped-proposals.js).
+
+### Update [`plugins.json`](https://github.com/babel/babel/blob/main/packages/babel-preset-env/data/plugins.json)
+
+Until `compat-table` is a standalone npm module for data we are using the git commit in `packages/babel-compat-data/scripts/download-compat-table.sh`
+
+`COMPAT_TABLE_COMMIT=[latest-commit-hash]`,
+
+So we update and then run `npm run build-data`. If there are no changes, then `plugins.json` will be the same.
+
+## Tests
+
+### Running tests
+See general [CONTRIBUTING.md](https://github.com/babel/babel/blob/main/CONTRIBUTING.md#running-lintingtests).
+
+### Writing tests
+
+#### General
+
+All the tests for `@babel/preset-env` exist in the `test/fixtures` folder. The
+test setup and conventions are exactly the same as testing a Babel plugin, so
+please read our [documentation on writing tests](https://github.com/babel/babel/blob/main/CONTRIBUTING.md#babel-plugin-x).
+
+#### Testing the `debug` option
+
+Testing debug output to `stdout` is similar. Under the `test/debug-fixtures`,
+create a folder with a descriptive name of your test, and add the following:
+
+* Add a `options.json` file (just as the other tests, this is essentially a
+`.babelrc`) with the desired test configuration (required)
+* Add a `stdout.txt` file with the expected debug output. For added
+convenience, if there is no `stdout.txt` present, the test runner will
+generate one for you.
Index: imaps-frontend/node_modules/@babel/preset-env/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/preset-env/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/preset-env
+
+> A Babel preset for each environment.
+
+See our website [@babel/preset-env](https://babeljs.io/docs/babel-preset-env) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20preset-env%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/preset-env
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/preset-env --dev
+```
Index: imaps-frontend/node_modules/@babel/preset-env/data/built-in-modules.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/built-in-modules.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/built-in-modules.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/compat-data/native-modules");
Index: imaps-frontend/node_modules/@babel/preset-env/data/built-in-modules.json.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/built-in-modules.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/built-in-modules.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/compat-data/native-modules");
Index: imaps-frontend/node_modules/@babel/preset-env/data/built-ins.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/built-ins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/built-ins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+// TODO: Remove in Babel 8
+// https://github.com/vuejs/vue-cli/issues/3671
+
+module.exports = require("./corejs2-built-ins.json");
Index: imaps-frontend/node_modules/@babel/preset-env/data/built-ins.json.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/built-ins.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/built-ins.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+// TODO: Remove in Babel 8
+// https://github.com/vuejs/vue-cli/issues/3671
+
+module.exports = require("./corejs2-built-ins.json");
Index: imaps-frontend/node_modules/@babel/preset-env/data/core-js-compat.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/core-js-compat.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/core-js-compat.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("core-js-compat/data.json");
Index: imaps-frontend/node_modules/@babel/preset-env/data/corejs2-built-ins.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/corejs2-built-ins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/corejs2-built-ins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/compat-data/corejs2-built-ins");
Index: imaps-frontend/node_modules/@babel/preset-env/data/corejs2-built-ins.json.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/corejs2-built-ins.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/corejs2-built-ins.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/compat-data/corejs2-built-ins");
Index: imaps-frontend/node_modules/@babel/preset-env/data/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{ "type": "commonjs" }
Index: imaps-frontend/node_modules/@babel/preset-env/data/plugins.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/plugins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/plugins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/compat-data/plugins");
Index: imaps-frontend/node_modules/@babel/preset-env/data/plugins.json.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/plugins.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/plugins.json.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/compat-data/plugins");
Index: imaps-frontend/node_modules/@babel/preset-env/data/shipped-proposals.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/shipped-proposals.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/shipped-proposals.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+// TODO: Remove in Babel 8
+
+const { pluginSyntaxMap, proposalPlugins, proposalSyntaxPlugins } = require("../lib/shipped-proposals");
+module.exports = { pluginSyntaxMap, proposalPlugins, proposalSyntaxPlugins };
Index: imaps-frontend/node_modules/@babel/preset-env/data/unreleased-labels.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/data/unreleased-labels.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/data/unreleased-labels.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+// TODO: Remove in Babel 8
+
+module.exports = require("@babel/helper-compilation-targets").unreleasedLabels;
Index: imaps-frontend/node_modules/@babel/preset-env/lib/available-plugins.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/available-plugins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/available-plugins.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,171 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.minVersions = exports.legacyBabel7SyntaxPlugins = exports.default = void 0;
+var _babel7AvailablePlugins = require("./babel-7-available-plugins.cjs");
+var _pluginTransformAsyncGeneratorFunctions = require("@babel/plugin-transform-async-generator-functions");
+var _pluginTransformAsyncToGenerator = require("@babel/plugin-transform-async-to-generator");
+var _pluginTransformArrowFunctions = require("@babel/plugin-transform-arrow-functions");
+var _pluginTransformBlockScopedFunctions = require("@babel/plugin-transform-block-scoped-functions");
+var _pluginTransformBlockScoping = require("@babel/plugin-transform-block-scoping");
+var _pluginTransformClasses = require("@babel/plugin-transform-classes");
+var _pluginTransformClassProperties = require("@babel/plugin-transform-class-properties");
+var _pluginTransformClassStaticBlock = require("@babel/plugin-transform-class-static-block");
+var _pluginTransformComputedProperties = require("@babel/plugin-transform-computed-properties");
+var _pluginTransformDestructuring = require("@babel/plugin-transform-destructuring");
+var _pluginTransformDotallRegex = require("@babel/plugin-transform-dotall-regex");
+var _pluginTransformDuplicateKeys = require("@babel/plugin-transform-duplicate-keys");
+var _pluginTransformDuplicateNamedCapturingGroupsRegex = require("@babel/plugin-transform-duplicate-named-capturing-groups-regex");
+var _pluginTransformDynamicImport = require("@babel/plugin-transform-dynamic-import");
+var _pluginTransformExponentiationOperator = require("@babel/plugin-transform-exponentiation-operator");
+var _pluginTransformExportNamespaceFrom = require("@babel/plugin-transform-export-namespace-from");
+var _pluginTransformForOf = require("@babel/plugin-transform-for-of");
+var _pluginTransformFunctionName = require("@babel/plugin-transform-function-name");
+var _pluginTransformJsonStrings = require("@babel/plugin-transform-json-strings");
+var _pluginTransformLiterals = require("@babel/plugin-transform-literals");
+var _pluginTransformLogicalAssignmentOperators = require("@babel/plugin-transform-logical-assignment-operators");
+var _pluginTransformMemberExpressionLiterals = require("@babel/plugin-transform-member-expression-literals");
+var _pluginTransformModulesAmd = require("@babel/plugin-transform-modules-amd");
+var _pluginTransformModulesCommonjs = require("@babel/plugin-transform-modules-commonjs");
+var _pluginTransformModulesSystemjs = require("@babel/plugin-transform-modules-systemjs");
+var _pluginTransformModulesUmd = require("@babel/plugin-transform-modules-umd");
+var _pluginTransformNamedCapturingGroupsRegex = require("@babel/plugin-transform-named-capturing-groups-regex");
+var _pluginTransformNewTarget = require("@babel/plugin-transform-new-target");
+var _pluginTransformNullishCoalescingOperator = require("@babel/plugin-transform-nullish-coalescing-operator");
+var _pluginTransformNumericSeparator = require("@babel/plugin-transform-numeric-separator");
+var _pluginTransformObjectRestSpread = require("@babel/plugin-transform-object-rest-spread");
+var _pluginTransformObjectSuper = require("@babel/plugin-transform-object-super");
+var _pluginTransformOptionalCatchBinding = require("@babel/plugin-transform-optional-catch-binding");
+var _pluginTransformOptionalChaining = require("@babel/plugin-transform-optional-chaining");
+var _pluginTransformParameters = require("@babel/plugin-transform-parameters");
+var _pluginTransformPrivateMethods = require("@babel/plugin-transform-private-methods");
+var _pluginTransformPrivatePropertyInObject = require("@babel/plugin-transform-private-property-in-object");
+var _pluginTransformPropertyLiterals = require("@babel/plugin-transform-property-literals");
+var _pluginTransformRegenerator = require("@babel/plugin-transform-regenerator");
+var _pluginTransformRegexpModifiers = require("@babel/plugin-transform-regexp-modifiers");
+var _pluginTransformReservedWords = require("@babel/plugin-transform-reserved-words");
+var _pluginTransformShorthandProperties = require("@babel/plugin-transform-shorthand-properties");
+var _pluginTransformSpread = require("@babel/plugin-transform-spread");
+var _pluginTransformStickyRegex = require("@babel/plugin-transform-sticky-regex");
+var _pluginTransformTemplateLiterals = require("@babel/plugin-transform-template-literals");
+var _pluginTransformTypeofSymbol = require("@babel/plugin-transform-typeof-symbol");
+var _pluginTransformUnicodeEscapes = require("@babel/plugin-transform-unicode-escapes");
+var _pluginTransformUnicodePropertyRegex = require("@babel/plugin-transform-unicode-property-regex");
+var _pluginTransformUnicodeRegex = require("@babel/plugin-transform-unicode-regex");
+var _pluginTransformUnicodeSetsRegex = require("@babel/plugin-transform-unicode-sets-regex");
+var _index = require("@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js");
+var _index2 = require("@babel/preset-modules/lib/plugins/transform-edge-default-parameters/index.js");
+var _index3 = require("@babel/preset-modules/lib/plugins/transform-edge-function-name/index.js");
+var _pluginBugfixFirefoxClassInComputedClassKey = require("@babel/plugin-bugfix-firefox-class-in-computed-class-key");
+var _index4 = require("@babel/preset-modules/lib/plugins/transform-tagged-template-caching/index.js");
+var _index5 = require("@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js");
+var _index6 = require("@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js");
+var _pluginBugfixSafariIdDestructuringCollisionInFunctionExpression = require("@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression");
+var _pluginBugfixSafariClassFieldInitializerScope = require("@babel/plugin-bugfix-safari-class-field-initializer-scope");
+var _pluginBugfixV8SpreadParametersInOptionalChaining = require("@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining");
+var _pluginBugfixV8StaticClassFieldsRedefineReadonly = require("@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly");
+const availablePlugins = exports.default = {
+  "bugfix/transform-async-arrows-in-class": () => _index,
+  "bugfix/transform-edge-default-parameters": () => _index2,
+  "bugfix/transform-edge-function-name": () => _index3,
+  "bugfix/transform-firefox-class-in-computed-class-key": () => _pluginBugfixFirefoxClassInComputedClassKey.default,
+  "bugfix/transform-safari-block-shadowing": () => _index5,
+  "bugfix/transform-safari-class-field-initializer-scope": () => _pluginBugfixSafariClassFieldInitializerScope.default,
+  "bugfix/transform-safari-for-shadowing": () => _index6,
+  "bugfix/transform-safari-id-destructuring-collision-in-function-expression": () => _pluginBugfixSafariIdDestructuringCollisionInFunctionExpression.default,
+  "bugfix/transform-tagged-template-caching": () => _index4,
+  "bugfix/transform-v8-spread-parameters-in-optional-chaining": () => _pluginBugfixV8SpreadParametersInOptionalChaining.default,
+  "bugfix/transform-v8-static-class-fields-redefine-readonly": () => _pluginBugfixV8StaticClassFieldsRedefineReadonly.default,
+  "transform-arrow-functions": () => _pluginTransformArrowFunctions.default,
+  "transform-async-generator-functions": () => _pluginTransformAsyncGeneratorFunctions.default,
+  "transform-async-to-generator": () => _pluginTransformAsyncToGenerator.default,
+  "transform-block-scoped-functions": () => _pluginTransformBlockScopedFunctions.default,
+  "transform-block-scoping": () => _pluginTransformBlockScoping.default,
+  "transform-class-properties": () => _pluginTransformClassProperties.default,
+  "transform-class-static-block": () => _pluginTransformClassStaticBlock.default,
+  "transform-classes": () => _pluginTransformClasses.default,
+  "transform-computed-properties": () => _pluginTransformComputedProperties.default,
+  "transform-destructuring": () => _pluginTransformDestructuring.default,
+  "transform-dotall-regex": () => _pluginTransformDotallRegex.default,
+  "transform-duplicate-keys": () => _pluginTransformDuplicateKeys.default,
+  "transform-duplicate-named-capturing-groups-regex": () => _pluginTransformDuplicateNamedCapturingGroupsRegex.default,
+  "transform-dynamic-import": () => _pluginTransformDynamicImport.default,
+  "transform-exponentiation-operator": () => _pluginTransformExponentiationOperator.default,
+  "transform-export-namespace-from": () => _pluginTransformExportNamespaceFrom.default,
+  "transform-for-of": () => _pluginTransformForOf.default,
+  "transform-function-name": () => _pluginTransformFunctionName.default,
+  "transform-json-strings": () => _pluginTransformJsonStrings.default,
+  "transform-literals": () => _pluginTransformLiterals.default,
+  "transform-logical-assignment-operators": () => _pluginTransformLogicalAssignmentOperators.default,
+  "transform-member-expression-literals": () => _pluginTransformMemberExpressionLiterals.default,
+  "transform-modules-amd": () => _pluginTransformModulesAmd.default,
+  "transform-modules-commonjs": () => _pluginTransformModulesCommonjs.default,
+  "transform-modules-systemjs": () => _pluginTransformModulesSystemjs.default,
+  "transform-modules-umd": () => _pluginTransformModulesUmd.default,
+  "transform-named-capturing-groups-regex": () => _pluginTransformNamedCapturingGroupsRegex.default,
+  "transform-new-target": () => _pluginTransformNewTarget.default,
+  "transform-nullish-coalescing-operator": () => _pluginTransformNullishCoalescingOperator.default,
+  "transform-numeric-separator": () => _pluginTransformNumericSeparator.default,
+  "transform-object-rest-spread": () => _pluginTransformObjectRestSpread.default,
+  "transform-object-super": () => _pluginTransformObjectSuper.default,
+  "transform-optional-catch-binding": () => _pluginTransformOptionalCatchBinding.default,
+  "transform-optional-chaining": () => _pluginTransformOptionalChaining.default,
+  "transform-parameters": () => _pluginTransformParameters.default,
+  "transform-private-methods": () => _pluginTransformPrivateMethods.default,
+  "transform-private-property-in-object": () => _pluginTransformPrivatePropertyInObject.default,
+  "transform-property-literals": () => _pluginTransformPropertyLiterals.default,
+  "transform-regenerator": () => _pluginTransformRegenerator.default,
+  "transform-regexp-modifiers": () => _pluginTransformRegexpModifiers.default,
+  "transform-reserved-words": () => _pluginTransformReservedWords.default,
+  "transform-shorthand-properties": () => _pluginTransformShorthandProperties.default,
+  "transform-spread": () => _pluginTransformSpread.default,
+  "transform-sticky-regex": () => _pluginTransformStickyRegex.default,
+  "transform-template-literals": () => _pluginTransformTemplateLiterals.default,
+  "transform-typeof-symbol": () => _pluginTransformTypeofSymbol.default,
+  "transform-unicode-escapes": () => _pluginTransformUnicodeEscapes.default,
+  "transform-unicode-property-regex": () => _pluginTransformUnicodePropertyRegex.default,
+  "transform-unicode-regex": () => _pluginTransformUnicodeRegex.default,
+  "transform-unicode-sets-regex": () => _pluginTransformUnicodeSetsRegex.default
+};
+const minVersions = exports.minVersions = {};
+let legacyBabel7SyntaxPlugins = exports.legacyBabel7SyntaxPlugins = void 0;
+{
+  Object.assign(minVersions, {
+    "bugfix/transform-safari-id-destructuring-collision-in-function-expression": "7.16.0",
+    "bugfix/transform-v8-static-class-fields-redefine-readonly": "7.12.0",
+    "syntax-import-attributes": "7.22.0",
+    "transform-class-static-block": "7.12.0",
+    "transform-duplicate-named-capturing-groups-regex": "7.19.0",
+    "transform-private-property-in-object": "7.10.0",
+    "transform-regexp-modifiers": "7.19.0"
+  });
+  const syntax = name => () => () => ({
+    manipulateOptions: (_, p) => p.plugins.push(name)
+  });
+  const legacyBabel7SyntaxPluginsLoaders = {
+    "syntax-async-generators": syntax("asyncGenerators"),
+    "syntax-class-properties": syntax("classProperties"),
+    "syntax-class-static-block": syntax("classStaticBlock"),
+    "syntax-dynamic-import": syntax("dynamicImport"),
+    "syntax-export-namespace-from": syntax("exportNamespaceFrom"),
+    "syntax-import-meta": syntax("importMeta"),
+    "syntax-json-strings": syntax("jsonStrings"),
+    "syntax-logical-assignment-operators": syntax("logicalAssignment"),
+    "syntax-nullish-coalescing-operator": syntax("nullishCoalescingOperator"),
+    "syntax-numeric-separator": syntax("numericSeparator"),
+    "syntax-object-rest-spread": syntax("objectRestSpread"),
+    "syntax-optional-catch-binding": syntax("optionalCatchBinding"),
+    "syntax-optional-chaining": syntax("optionalChaining"),
+    "syntax-private-property-in-object": syntax("privateIn"),
+    "syntax-top-level-await": syntax("topLevelAwait"),
+    "syntax-unicode-sets-regex": () => require("@babel/plugin-syntax-unicode-sets-regex"),
+    "syntax-import-assertions": _babel7AvailablePlugins["syntax-import-assertions"],
+    "syntax-import-attributes": _babel7AvailablePlugins["syntax-import-attributes"]
+  };
+  Object.assign(availablePlugins, legacyBabel7SyntaxPluginsLoaders);
+  exports.legacyBabel7SyntaxPlugins = legacyBabel7SyntaxPlugins = new Set(Object.keys(legacyBabel7SyntaxPluginsLoaders));
+}
+
+//# sourceMappingURL=available-plugins.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/available-plugins.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/available-plugins.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/available-plugins.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_babel7AvailablePlugins","require","_pluginTransformAsyncGeneratorFunctions","_pluginTransformAsyncToGenerator","_pluginTransformArrowFunctions","_pluginTransformBlockScopedFunctions","_pluginTransformBlockScoping","_pluginTransformClasses","_pluginTransformClassProperties","_pluginTransformClassStaticBlock","_pluginTransformComputedProperties","_pluginTransformDestructuring","_pluginTransformDotallRegex","_pluginTransformDuplicateKeys","_pluginTransformDuplicateNamedCapturingGroupsRegex","_pluginTransformDynamicImport","_pluginTransformExponentiationOperator","_pluginTransformExportNamespaceFrom","_pluginTransformForOf","_pluginTransformFunctionName","_pluginTransformJsonStrings","_pluginTransformLiterals","_pluginTransformLogicalAssignmentOperators","_pluginTransformMemberExpressionLiterals","_pluginTransformModulesAmd","_pluginTransformModulesCommonjs","_pluginTransformModulesSystemjs","_pluginTransformModulesUmd","_pluginTransformNamedCapturingGroupsRegex","_pluginTransformNewTarget","_pluginTransformNullishCoalescingOperator","_pluginTransformNumericSeparator","_pluginTransformObjectRestSpread","_pluginTransformObjectSuper","_pluginTransformOptionalCatchBinding","_pluginTransformOptionalChaining","_pluginTransformParameters","_pluginTransformPrivateMethods","_pluginTransformPrivatePropertyInObject","_pluginTransformPropertyLiterals","_pluginTransformRegenerator","_pluginTransformRegexpModifiers","_pluginTransformReservedWords","_pluginTransformShorthandProperties","_pluginTransformSpread","_pluginTransformStickyRegex","_pluginTransformTemplateLiterals","_pluginTransformTypeofSymbol","_pluginTransformUnicodeEscapes","_pluginTransformUnicodePropertyRegex","_pluginTransformUnicodeRegex","_pluginTransformUnicodeSetsRegex","_index","_index2","_index3","_pluginBugfixFirefoxClassInComputedClassKey","_index4","_index5","_index6","_pluginBugfixSafariIdDestructuringCollisionInFunctionExpression","_pluginBugfixSafariClassFieldInitializerScope","_pluginBugfixV8SpreadParametersInOptionalChaining","_pluginBugfixV8StaticClassFieldsRedefineReadonly","availablePlugins","exports","default","bugfix/transform-async-arrows-in-class","bugfixAsyncArrowsInClass","bugfix/transform-edge-default-parameters","bugfixEdgeDefaultParameters","bugfix/transform-edge-function-name","bugfixEdgeFunctionName","bugfix/transform-firefox-class-in-computed-class-key","bugfixFirefoxClassInComputedKey","bugfix/transform-safari-block-shadowing","bugfixSafariBlockShadowing","bugfix/transform-safari-class-field-initializer-scope","bugfixSafariClassFieldInitializerScope","bugfix/transform-safari-for-shadowing","bugfixSafariForShadowing","bugfix/transform-safari-id-destructuring-collision-in-function-expression","bugfixSafariIdDestructuringCollisionInFunctionExpression","bugfix/transform-tagged-template-caching","bugfixTaggedTemplateCaching","bugfix/transform-v8-spread-parameters-in-optional-chaining","bugfixV8SpreadParametersInOptionalChaining","bugfix/transform-v8-static-class-fields-redefine-readonly","bugfixV8StaticClassFieldsRedefineReadonly","transform-arrow-functions","transformArrowFunctions","transform-async-generator-functions","transformAsyncGeneratorFunctions","transform-async-to-generator","transformAsyncToGenerator","transform-block-scoped-functions","transformBlockScopedFunctions","transform-block-scoping","transformBlockScoping","transform-class-properties","transformClassProperties","transform-class-static-block","transformClassStaticBlock","transform-classes","transformClasses","transform-computed-properties","transformComputedProperties","transform-destructuring","transformDestructuring","transform-dotall-regex","transformDotallRegex","transform-duplicate-keys","transformDuplicateKeys","transform-duplicate-named-capturing-groups-regex","transformDuplicateNamedCapturingGroupsRegex","transform-dynamic-import","transformDynamicImport","transform-exponentiation-operator","transformExponentialOperator","transform-export-namespace-from","transformExportNamespaceFrom","transform-for-of","transformForOf","transform-function-name","transformFunctionName","transform-json-strings","transformJsonStrings","transform-literals","transformLiterals","transform-logical-assignment-operators","transformLogicalAssignmentOperators","transform-member-expression-literals","transformMemberExpressionLiterals","transform-modules-amd","transformModulesAmd","transform-modules-commonjs","transformModulesCommonjs","transform-modules-systemjs","transformModulesSystemjs","transform-modules-umd","transformModulesUmd","transform-named-capturing-groups-regex","transformNamedCapturingGroupsRegex","transform-new-target","transformNewTarget","transform-nullish-coalescing-operator","transformNullishCoalescingOperator","transform-numeric-separator","transformNumericSeparator","transform-object-rest-spread","transformObjectRestSpread","transform-object-super","transformObjectSuper","transform-optional-catch-binding","transformOptionalCatchBinding","transform-optional-chaining","transformOptionalChaining","transform-parameters","transformParameters","transform-private-methods","transformPrivateMethods","transform-private-property-in-object","transformPrivatePropertyInObject","transform-property-literals","transformPropertyLiterals","transform-regenerator","transformRegenerator","transform-regexp-modifiers","transformRegExpModifiers","transform-reserved-words","transformReservedWords","transform-shorthand-properties","transformShorthandProperties","transform-spread","transformSpread","transform-sticky-regex","transformStickyRegex","transform-template-literals","transformTemplateLiterals","transform-typeof-symbol","transformTypeofSymbol","transform-unicode-escapes","transformUnicodeEscapes","transform-unicode-property-regex","transformUnicodePropertyRegex","transform-unicode-regex","transformUnicodeRegex","transform-unicode-sets-regex","transformUnicodeSetsRegex","minVersions","legacyBabel7SyntaxPlugins","Object","assign","syntax","name","manipulateOptions","_","p","plugins","push","legacyBabel7SyntaxPluginsLoaders","syntax-unicode-sets-regex","otherBabel7Plugins","Set","keys"],"sources":["../src/available-plugins.ts"],"sourcesContent":["/* eslint sort-keys: \"error\" */\n\nimport otherBabel7Plugins from \"./babel-7-available-plugins.cjs\";\n\nimport transformAsyncGeneratorFunctions from \"@babel/plugin-transform-async-generator-functions\";\nimport transformAsyncToGenerator from \"@babel/plugin-transform-async-to-generator\";\nimport transformArrowFunctions from \"@babel/plugin-transform-arrow-functions\";\nimport transformBlockScopedFunctions from \"@babel/plugin-transform-block-scoped-functions\";\nimport transformBlockScoping from \"@babel/plugin-transform-block-scoping\";\nimport transformClasses from \"@babel/plugin-transform-classes\";\nimport transformClassProperties from \"@babel/plugin-transform-class-properties\";\nimport transformClassStaticBlock from \"@babel/plugin-transform-class-static-block\";\nimport transformComputedProperties from \"@babel/plugin-transform-computed-properties\";\nimport transformDestructuring from \"@babel/plugin-transform-destructuring\";\nimport transformDotallRegex from \"@babel/plugin-transform-dotall-regex\";\nimport transformDuplicateKeys from \"@babel/plugin-transform-duplicate-keys\";\nimport transformDuplicateNamedCapturingGroupsRegex from \"@babel/plugin-transform-duplicate-named-capturing-groups-regex\";\nimport transformDynamicImport from \"@babel/plugin-transform-dynamic-import\";\nimport transformExponentialOperator from \"@babel/plugin-transform-exponentiation-operator\";\nimport transformExportNamespaceFrom from \"@babel/plugin-transform-export-namespace-from\";\nimport transformForOf from \"@babel/plugin-transform-for-of\";\nimport transformFunctionName from \"@babel/plugin-transform-function-name\";\nimport transformJsonStrings from \"@babel/plugin-transform-json-strings\";\nimport transformLiterals from \"@babel/plugin-transform-literals\";\nimport transformLogicalAssignmentOperators from \"@babel/plugin-transform-logical-assignment-operators\";\nimport transformMemberExpressionLiterals from \"@babel/plugin-transform-member-expression-literals\";\nimport transformModulesAmd from \"@babel/plugin-transform-modules-amd\";\nimport transformModulesCommonjs from \"@babel/plugin-transform-modules-commonjs\";\nimport transformModulesSystemjs from \"@babel/plugin-transform-modules-systemjs\";\nimport transformModulesUmd from \"@babel/plugin-transform-modules-umd\";\nimport transformNamedCapturingGroupsRegex from \"@babel/plugin-transform-named-capturing-groups-regex\";\nimport transformNewTarget from \"@babel/plugin-transform-new-target\";\nimport transformNullishCoalescingOperator from \"@babel/plugin-transform-nullish-coalescing-operator\";\nimport transformNumericSeparator from \"@babel/plugin-transform-numeric-separator\";\nimport transformObjectRestSpread from \"@babel/plugin-transform-object-rest-spread\";\nimport transformObjectSuper from \"@babel/plugin-transform-object-super\";\nimport transformOptionalCatchBinding from \"@babel/plugin-transform-optional-catch-binding\";\nimport transformOptionalChaining from \"@babel/plugin-transform-optional-chaining\";\nimport transformParameters from \"@babel/plugin-transform-parameters\";\nimport transformPrivateMethods from \"@babel/plugin-transform-private-methods\";\nimport transformPrivatePropertyInObject from \"@babel/plugin-transform-private-property-in-object\";\nimport transformPropertyLiterals from \"@babel/plugin-transform-property-literals\";\nimport transformRegenerator from \"@babel/plugin-transform-regenerator\";\nimport transformRegExpModifiers from \"@babel/plugin-transform-regexp-modifiers\";\nimport transformReservedWords from \"@babel/plugin-transform-reserved-words\";\nimport transformShorthandProperties from \"@babel/plugin-transform-shorthand-properties\";\nimport transformSpread from \"@babel/plugin-transform-spread\";\nimport transformStickyRegex from \"@babel/plugin-transform-sticky-regex\";\nimport transformTemplateLiterals from \"@babel/plugin-transform-template-literals\";\nimport transformTypeofSymbol from \"@babel/plugin-transform-typeof-symbol\";\nimport transformUnicodeEscapes from \"@babel/plugin-transform-unicode-escapes\";\nimport transformUnicodePropertyRegex from \"@babel/plugin-transform-unicode-property-regex\";\nimport transformUnicodeRegex from \"@babel/plugin-transform-unicode-regex\";\nimport transformUnicodeSetsRegex from \"@babel/plugin-transform-unicode-sets-regex\";\n\nimport bugfixAsyncArrowsInClass from \"@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js\";\nimport bugfixEdgeDefaultParameters from \"@babel/preset-modules/lib/plugins/transform-edge-default-parameters/index.js\";\nimport bugfixEdgeFunctionName from \"@babel/preset-modules/lib/plugins/transform-edge-function-name/index.js\";\nimport bugfixFirefoxClassInComputedKey from \"@babel/plugin-bugfix-firefox-class-in-computed-class-key\";\nimport bugfixTaggedTemplateCaching from \"@babel/preset-modules/lib/plugins/transform-tagged-template-caching/index.js\";\nimport bugfixSafariBlockShadowing from \"@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js\";\nimport bugfixSafariForShadowing from \"@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js\";\nimport bugfixSafariIdDestructuringCollisionInFunctionExpression from \"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression\";\nimport bugfixSafariClassFieldInitializerScope from \"@babel/plugin-bugfix-safari-class-field-initializer-scope\";\nimport bugfixV8SpreadParametersInOptionalChaining from \"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining\";\nimport bugfixV8StaticClassFieldsRedefineReadonly from \"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly\";\n\nexport { availablePlugins as default };\nconst availablePlugins = {\n  \"bugfix/transform-async-arrows-in-class\": () => bugfixAsyncArrowsInClass,\n  \"bugfix/transform-edge-default-parameters\": () => bugfixEdgeDefaultParameters,\n  \"bugfix/transform-edge-function-name\": () => bugfixEdgeFunctionName,\n  \"bugfix/transform-firefox-class-in-computed-class-key\": () =>\n    bugfixFirefoxClassInComputedKey,\n  \"bugfix/transform-safari-block-shadowing\": () => bugfixSafariBlockShadowing,\n  \"bugfix/transform-safari-class-field-initializer-scope\": () =>\n    bugfixSafariClassFieldInitializerScope,\n  \"bugfix/transform-safari-for-shadowing\": () => bugfixSafariForShadowing,\n  \"bugfix/transform-safari-id-destructuring-collision-in-function-expression\":\n    () => bugfixSafariIdDestructuringCollisionInFunctionExpression,\n  \"bugfix/transform-tagged-template-caching\": () => bugfixTaggedTemplateCaching,\n  \"bugfix/transform-v8-spread-parameters-in-optional-chaining\": () =>\n    bugfixV8SpreadParametersInOptionalChaining,\n  \"bugfix/transform-v8-static-class-fields-redefine-readonly\": () =>\n    bugfixV8StaticClassFieldsRedefineReadonly,\n  \"transform-arrow-functions\": () => transformArrowFunctions,\n  \"transform-async-generator-functions\": () => transformAsyncGeneratorFunctions,\n  \"transform-async-to-generator\": () => transformAsyncToGenerator,\n  \"transform-block-scoped-functions\": () => transformBlockScopedFunctions,\n  \"transform-block-scoping\": () => transformBlockScoping,\n  \"transform-class-properties\": () => transformClassProperties,\n  \"transform-class-static-block\": () => transformClassStaticBlock,\n  \"transform-classes\": () => transformClasses,\n  \"transform-computed-properties\": () => transformComputedProperties,\n  \"transform-destructuring\": () => transformDestructuring,\n  \"transform-dotall-regex\": () => transformDotallRegex,\n  \"transform-duplicate-keys\": () => transformDuplicateKeys,\n  \"transform-duplicate-named-capturing-groups-regex\": () =>\n    transformDuplicateNamedCapturingGroupsRegex,\n  \"transform-dynamic-import\": () => transformDynamicImport,\n  \"transform-exponentiation-operator\": () => transformExponentialOperator,\n  \"transform-export-namespace-from\": () => transformExportNamespaceFrom,\n  \"transform-for-of\": () => transformForOf,\n  \"transform-function-name\": () => transformFunctionName,\n  \"transform-json-strings\": () => transformJsonStrings,\n  \"transform-literals\": () => transformLiterals,\n  \"transform-logical-assignment-operators\": () =>\n    transformLogicalAssignmentOperators,\n  \"transform-member-expression-literals\": () =>\n    transformMemberExpressionLiterals,\n  \"transform-modules-amd\": () => transformModulesAmd,\n  \"transform-modules-commonjs\": () => transformModulesCommonjs,\n  \"transform-modules-systemjs\": () => transformModulesSystemjs,\n  \"transform-modules-umd\": () => transformModulesUmd,\n  \"transform-named-capturing-groups-regex\": () =>\n    transformNamedCapturingGroupsRegex,\n  \"transform-new-target\": () => transformNewTarget,\n  \"transform-nullish-coalescing-operator\": () =>\n    transformNullishCoalescingOperator,\n  \"transform-numeric-separator\": () => transformNumericSeparator,\n  \"transform-object-rest-spread\": () => transformObjectRestSpread,\n  \"transform-object-super\": () => transformObjectSuper,\n  \"transform-optional-catch-binding\": () => transformOptionalCatchBinding,\n  \"transform-optional-chaining\": () => transformOptionalChaining,\n  \"transform-parameters\": () => transformParameters,\n  \"transform-private-methods\": () => transformPrivateMethods,\n  \"transform-private-property-in-object\": () =>\n    transformPrivatePropertyInObject,\n  \"transform-property-literals\": () => transformPropertyLiterals,\n  \"transform-regenerator\": () => transformRegenerator,\n  \"transform-regexp-modifiers\": () => transformRegExpModifiers,\n  \"transform-reserved-words\": () => transformReservedWords,\n  \"transform-shorthand-properties\": () => transformShorthandProperties,\n  \"transform-spread\": () => transformSpread,\n  \"transform-sticky-regex\": () => transformStickyRegex,\n  \"transform-template-literals\": () => transformTemplateLiterals,\n  \"transform-typeof-symbol\": () => transformTypeofSymbol,\n  \"transform-unicode-escapes\": () => transformUnicodeEscapes,\n  \"transform-unicode-property-regex\": () => transformUnicodePropertyRegex,\n  \"transform-unicode-regex\": () => transformUnicodeRegex,\n  \"transform-unicode-sets-regex\": () => transformUnicodeSetsRegex,\n};\n\nexport const minVersions = {};\n// TODO(Babel 8): Remove this\nexport let legacyBabel7SyntaxPlugins: Set<string>;\n\nif (!process.env.BABEL_8_BREAKING) {\n  /* eslint-disable no-restricted-globals */\n\n  Object.assign(minVersions, {\n    \"bugfix/transform-safari-id-destructuring-collision-in-function-expression\":\n      \"7.16.0\",\n    \"bugfix/transform-v8-static-class-fields-redefine-readonly\": \"7.12.0\",\n    \"syntax-import-attributes\": \"7.22.0\",\n    \"transform-class-static-block\": \"7.12.0\",\n    \"transform-duplicate-named-capturing-groups-regex\": \"7.19.0\",\n    \"transform-private-property-in-object\": \"7.10.0\",\n    \"transform-regexp-modifiers\": \"7.19.0\",\n  });\n\n  // This is a factory to create a plugin that enables a parser plugin\n  const syntax =\n    (name: ParserPlugin) => (): typeof transformJsonStrings => () => ({\n      manipulateOptions: (_, p) => p.plugins.push(name),\n    });\n  type ParserPlugin = Parameters<\n    ReturnType<typeof transformJsonStrings>[\"manipulateOptions\"]\n  >[1][\"plugins\"][number];\n\n  const legacyBabel7SyntaxPluginsLoaders = {\n    \"syntax-async-generators\": syntax(\"asyncGenerators\"),\n    \"syntax-class-properties\": syntax(\"classProperties\"),\n    \"syntax-class-static-block\": syntax(\"classStaticBlock\"),\n    \"syntax-dynamic-import\": syntax(\"dynamicImport\"),\n    \"syntax-export-namespace-from\": syntax(\"exportNamespaceFrom\"),\n    \"syntax-import-meta\": syntax(\"importMeta\"),\n    \"syntax-json-strings\": syntax(\"jsonStrings\"),\n    \"syntax-logical-assignment-operators\": syntax(\"logicalAssignment\"),\n    \"syntax-nullish-coalescing-operator\": syntax(\"nullishCoalescingOperator\"),\n    \"syntax-numeric-separator\": syntax(\"numericSeparator\"),\n    \"syntax-object-rest-spread\": syntax(\"objectRestSpread\"),\n    \"syntax-optional-catch-binding\": syntax(\"optionalCatchBinding\"),\n    \"syntax-optional-chaining\": syntax(\"optionalChaining\"),\n    \"syntax-private-property-in-object\": syntax(\"privateIn\"),\n    \"syntax-top-level-await\": syntax(\"topLevelAwait\"),\n\n    // These are CJS plugins that depend on a package from the monorepo, so it\n    // breaks using ESM. Given that ESM builds are new enough to have this\n    // syntax enabled by default, we can safely skip enabling it.\n\n    \"syntax-unicode-sets-regex\":\n      USE_ESM || IS_STANDALONE\n        ? () => () => ({})\n        : () => require(\"@babel/plugin-syntax-unicode-sets-regex\"),\n\n    // We need to keep these plugins because they do not simply enable a\n    // feature, but can affect the AST shape (.attributes vs .assertions).\n    // TLA is only used for local development with ESM, since we cannot\n    // require() monorepo files in that case.\n    // eslint-disable-next-line sort-keys\n    \"syntax-import-assertions\":\n      USE_ESM && !IS_STANDALONE\n        ? await import(\"@babel/plugin-syntax-import-assertions\").then(\n            m => () => m.default,\n          )\n        : otherBabel7Plugins[\"syntax-import-assertions\"],\n    \"syntax-import-attributes\":\n      USE_ESM && !IS_STANDALONE\n        ? await import(\"@babel/plugin-syntax-import-attributes\").then(\n            m => () => m.default,\n          )\n        : otherBabel7Plugins[\"syntax-import-attributes\"],\n  };\n\n  Object.assign(availablePlugins, legacyBabel7SyntaxPluginsLoaders);\n\n  legacyBabel7SyntaxPlugins = new Set(\n    Object.keys(legacyBabel7SyntaxPluginsLoaders),\n  );\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/babel-7-available-plugins.cjs
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/babel-7-available-plugins.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/babel-7-available-plugins.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,9 @@
+{
+  const availablePlugins = {
+    "syntax-import-assertions": () => require("@babel/plugin-syntax-import-assertions"),
+    "syntax-import-attributes": () => require("@babel/plugin-syntax-import-attributes")
+  };
+  module.exports = availablePlugins;
+}
+
+//# sourceMappingURL=babel-7-available-plugins.cjs.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/babel-7-available-plugins.cjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/babel-7-available-plugins.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/babel-7-available-plugins.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["availablePlugins","syntax-import-assertions","require","syntax-import-attributes","module","exports"],"sources":["../src/babel-7-available-plugins.cjs"],"sourcesContent":["// TODO(Babel 8): Remove this file\n\nif (!process.env.BABEL_8_BREAKING) {\n  // We need to keep these plugins because they do not simply enable a\n  // feature, but can affect the AST shape (.attributes vs .assertions).\n  // TLA is only used for local development with ESM.\n  const availablePlugins = {\n    \"syntax-import-assertions\": () =>\n      require(\"@babel/plugin-syntax-import-assertions\"),\n    \"syntax-import-attributes\": () =>\n      require(\"@babel/plugin-syntax-import-attributes\"),\n  };\n\n  module.exports = availablePlugins;\n}\n"],"mappings":"AAEmC;EAIjC,MAAMA,gBAAgB,GAAG;IACvB,0BAA0B,EAAEC,CAAA,KAC1BC,OAAO,CAAC,wCAAwC,CAAC;IACnD,0BAA0B,EAAEC,CAAA,KAC1BD,OAAO,CAAC,wCAAwC;EACpD,CAAC;EAEDE,MAAM,CAACC,OAAO,GAAGL,gBAAgB;AACnC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/debug.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/debug.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/debug.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.logPlugin = void 0;
+var _helperCompilationTargets = require("@babel/helper-compilation-targets");
+var _plugins = require("@babel/compat-data/plugins");
+const logPlugin = (item, targetVersions, list) => {
+  const filteredList = (0, _helperCompilationTargets.getInclusionReasons)(item, targetVersions, list);
+  const support = list[item];
+  {
+    if (item.startsWith("transform-")) {
+      const proposalName = `proposal-${item.slice(10)}`;
+      if (proposalName === "proposal-dynamic-import" || hasOwnProperty.call(_plugins, proposalName)) {
+        item = proposalName;
+      }
+    }
+  }
+  if (!support) {
+    console.log(`  ${item}`);
+    return;
+  }
+  let formattedTargets = `{`;
+  let first = true;
+  for (const target of Object.keys(filteredList)) {
+    if (!first) formattedTargets += `,`;
+    first = false;
+    formattedTargets += ` ${target}`;
+    if (support[target]) formattedTargets += ` < ${support[target]}`;
+  }
+  formattedTargets += ` }`;
+  console.log(`  ${item} ${formattedTargets}`);
+};
+exports.logPlugin = logPlugin;
+
+//# sourceMappingURL=debug.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/debug.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/debug.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/debug.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCompilationTargets","require","_plugins","logPlugin","item","targetVersions","list","filteredList","getInclusionReasons","support","startsWith","proposalName","slice","hasOwnProperty","call","compatData","console","log","formattedTargets","first","target","Object","keys","exports"],"sources":["../src/debug.ts"],"sourcesContent":["import {\n  getInclusionReasons,\n  type Targets,\n  type Target,\n} from \"@babel/helper-compilation-targets\";\nimport compatData from \"@babel/compat-data/plugins\";\n\n// Outputs a message that shows which target(s) caused an item to be included:\n// transform-foo { \"edge\":\"13\", \"firefox\":\"49\", \"ie\":\"10\" }\nexport const logPlugin = (\n  item: string,\n  targetVersions: Targets,\n  list: { [key: string]: Targets },\n) => {\n  const filteredList = getInclusionReasons(item, targetVersions, list);\n\n  const support = list[item];\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // It's needed to keep outputting proposal- in the debug log.\n    if (item.startsWith(\"transform-\")) {\n      const proposalName = `proposal-${item.slice(10)}`;\n      if (\n        proposalName === \"proposal-dynamic-import\" ||\n        Object.hasOwn(compatData, proposalName)\n      ) {\n        item = proposalName;\n      }\n    }\n  }\n\n  if (!support) {\n    console.log(`  ${item}`);\n    return;\n  }\n\n  let formattedTargets = `{`;\n  let first = true;\n  for (const target of Object.keys(filteredList) as Target[]) {\n    if (!first) formattedTargets += `,`;\n    first = false;\n    formattedTargets += ` ${target}`;\n    if (support[target]) formattedTargets += ` < ${support[target]}`;\n  }\n  formattedTargets += ` }`;\n\n  console.log(`  ${item} ${formattedTargets}`);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,yBAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AAIO,MAAME,SAAS,GAAGA,CACvBC,IAAY,EACZC,cAAuB,EACvBC,IAAgC,KAC7B;EACH,MAAMC,YAAY,GAAG,IAAAC,6CAAmB,EAACJ,IAAI,EAAEC,cAAc,EAAEC,IAAI,CAAC;EAEpE,MAAMG,OAAO,GAAGH,IAAI,CAACF,IAAI,CAAC;EAES;IAEjC,IAAIA,IAAI,CAACM,UAAU,CAAC,YAAY,CAAC,EAAE;MACjC,MAAMC,YAAY,GAAG,YAAYP,IAAI,CAACQ,KAAK,CAAC,EAAE,CAAC,EAAE;MACjD,IACED,YAAY,KAAK,yBAAyB,IAC1CE,cAAA,CAAAC,IAAA,CAAcC,QAAU,EAAEJ,YAAY,CAAC,EACvC;QACAP,IAAI,GAAGO,YAAY;MACrB;IACF;EACF;EAEA,IAAI,CAACF,OAAO,EAAE;IACZO,OAAO,CAACC,GAAG,CAAC,KAAKb,IAAI,EAAE,CAAC;IACxB;EACF;EAEA,IAAIc,gBAAgB,GAAG,GAAG;EAC1B,IAAIC,KAAK,GAAG,IAAI;EAChB,KAAK,MAAMC,MAAM,IAAIC,MAAM,CAACC,IAAI,CAACf,YAAY,CAAC,EAAc;IAC1D,IAAI,CAACY,KAAK,EAAED,gBAAgB,IAAI,GAAG;IACnCC,KAAK,GAAG,KAAK;IACbD,gBAAgB,IAAI,IAAIE,MAAM,EAAE;IAChC,IAAIX,OAAO,CAACW,MAAM,CAAC,EAAEF,gBAAgB,IAAI,MAAMT,OAAO,CAACW,MAAM,CAAC,EAAE;EAClE;EACAF,gBAAgB,IAAI,IAAI;EAExBF,OAAO,CAACC,GAAG,CAAC,KAAKb,IAAI,IAAIc,gBAAgB,EAAE,CAAC;AAC9C,CAAC;AAACK,OAAA,CAAApB,SAAA,GAAAA,SAAA","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/filter-items.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/filter-items.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/filter-items.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.addProposalSyntaxPlugins = addProposalSyntaxPlugins;
+exports.removeUnnecessaryItems = removeUnnecessaryItems;
+exports.removeUnsupportedItems = removeUnsupportedItems;
+var _semver = require("semver");
+var _availablePlugins = require("./available-plugins.js");
+function addProposalSyntaxPlugins(items, proposalSyntaxPlugins) {
+  proposalSyntaxPlugins.forEach(plugin => {
+    items.add(plugin);
+  });
+}
+function removeUnnecessaryItems(items, overlapping) {
+  items.forEach(item => {
+    var _overlapping$item;
+    (_overlapping$item = overlapping[item]) == null || _overlapping$item.forEach(name => items.delete(name));
+  });
+}
+function removeUnsupportedItems(items, babelVersion) {
+  items.forEach(item => {
+    if (hasOwnProperty.call(_availablePlugins.minVersions, item) && _semver.lt(babelVersion, _availablePlugins.minVersions[item])) {
+      items.delete(item);
+    } else if (babelVersion[0] === "8" && _availablePlugins.legacyBabel7SyntaxPlugins.has(item)) {
+      items.delete(item);
+    }
+  });
+}
+
+//# sourceMappingURL=filter-items.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/filter-items.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/filter-items.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/filter-items.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_semver","require","_availablePlugins","addProposalSyntaxPlugins","items","proposalSyntaxPlugins","forEach","plugin","add","removeUnnecessaryItems","overlapping","item","_overlapping$item","name","delete","removeUnsupportedItems","babelVersion","hasOwnProperty","call","minVersions","semver","lt","legacyBabel7SyntaxPlugins","has"],"sources":["../src/filter-items.ts"],"sourcesContent":["import semver from \"semver\";\nimport { minVersions, legacyBabel7SyntaxPlugins } from \"./available-plugins.ts\";\n\nexport function addProposalSyntaxPlugins(\n  items: Set<string>,\n  proposalSyntaxPlugins: readonly string[],\n) {\n  proposalSyntaxPlugins.forEach(plugin => {\n    items.add(plugin);\n  });\n}\nexport function removeUnnecessaryItems(\n  items: Set<string>,\n  overlapping: { [name: string]: string[] },\n) {\n  items.forEach(item => {\n    overlapping[item]?.forEach(name => items.delete(name));\n  });\n}\nexport function removeUnsupportedItems(\n  items: Set<string>,\n  babelVersion: string,\n) {\n  items.forEach(item => {\n    if (\n      Object.hasOwn(minVersions, item) &&\n      semver.lt(\n        babelVersion,\n        // @ts-expect-error we have checked minVersions[item] in has call\n        minVersions[item],\n      )\n    ) {\n      items.delete(item);\n    } else if (\n      !process.env.BABEL_8_BREAKING &&\n      babelVersion[0] === \"8\" &&\n      legacyBabel7SyntaxPlugins.has(item)\n    ) {\n      items.delete(item);\n    }\n  });\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEO,SAASE,wBAAwBA,CACtCC,KAAkB,EAClBC,qBAAwC,EACxC;EACAA,qBAAqB,CAACC,OAAO,CAACC,MAAM,IAAI;IACtCH,KAAK,CAACI,GAAG,CAACD,MAAM,CAAC;EACnB,CAAC,CAAC;AACJ;AACO,SAASE,sBAAsBA,CACpCL,KAAkB,EAClBM,WAAyC,EACzC;EACAN,KAAK,CAACE,OAAO,CAACK,IAAI,IAAI;IAAA,IAAAC,iBAAA;IACpB,CAAAA,iBAAA,GAAAF,WAAW,CAACC,IAAI,CAAC,aAAjBC,iBAAA,CAAmBN,OAAO,CAACO,IAAI,IAAIT,KAAK,CAACU,MAAM,CAACD,IAAI,CAAC,CAAC;EACxD,CAAC,CAAC;AACJ;AACO,SAASE,sBAAsBA,CACpCX,KAAkB,EAClBY,YAAoB,EACpB;EACAZ,KAAK,CAACE,OAAO,CAACK,IAAI,IAAI;IACpB,IACEM,cAAA,CAAAC,IAAA,CAAcC,6BAAW,EAAER,IAAI,CAAC,IAChCS,OAAM,CAACC,EAAE,CACPL,YAAY,EAEZG,6BAAW,CAACR,IAAI,CAClB,CAAC,EACD;MACAP,KAAK,CAACU,MAAM,CAACH,IAAI,CAAC;IACpB,CAAC,MAAM,IAELK,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,IACvBM,2CAAyB,CAACC,GAAG,CAACZ,IAAI,CAAC,EACnC;MACAP,KAAK,CAACU,MAAM,CAACH,IAAI,CAAC;IACpB;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,347 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+exports.isPluginRequired = isPluginRequired;
+exports.transformIncludesAndExcludes = void 0;
+var _semver = require("semver");
+var _debug = require("./debug.js");
+var _filterItems = require("./filter-items.js");
+var _moduleTransformations = require("./module-transformations.js");
+var _normalizeOptions = require("./normalize-options.js");
+var _shippedProposals = require("./shipped-proposals.js");
+var _pluginsCompatData = require("./plugins-compat-data.js");
+var _babelPluginPolyfillCorejs = require("babel-plugin-polyfill-corejs3");
+var _babel7Plugins = require("./polyfills/babel-7-plugins.cjs");
+var _helperCompilationTargets = require("@babel/helper-compilation-targets");
+var _availablePlugins = require("./available-plugins.js");
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+const pluginCoreJS3 = _babelPluginPolyfillCorejs.default || _babelPluginPolyfillCorejs;
+function isPluginRequired(targets, support) {
+  return (0, _helperCompilationTargets.isRequired)("fake-name", targets, {
+    compatData: {
+      "fake-name": support
+    }
+  });
+}
+function filterStageFromList(list, stageList) {
+  return Object.keys(list).reduce((result, item) => {
+    if (!stageList.has(item)) {
+      result[item] = list[item];
+    }
+    return result;
+  }, {});
+}
+const pluginLists = {
+  withProposals: {
+    withoutBugfixes: _pluginsCompatData.plugins,
+    withBugfixes: Object.assign({}, _pluginsCompatData.plugins, _pluginsCompatData.pluginsBugfixes)
+  },
+  withoutProposals: {
+    withoutBugfixes: filterStageFromList(_pluginsCompatData.plugins, _shippedProposals.proposalPlugins),
+    withBugfixes: filterStageFromList(Object.assign({}, _pluginsCompatData.plugins, _pluginsCompatData.pluginsBugfixes), _shippedProposals.proposalPlugins)
+  }
+};
+function getPluginList(proposals, bugfixes) {
+  if (proposals) {
+    if (bugfixes) return pluginLists.withProposals.withBugfixes;else return pluginLists.withProposals.withoutBugfixes;
+  } else {
+    if (bugfixes) return pluginLists.withoutProposals.withBugfixes;else return pluginLists.withoutProposals.withoutBugfixes;
+  }
+}
+const getPlugin = pluginName => {
+  const plugin = _availablePlugins.default[pluginName]();
+  if (!plugin) {
+    throw new Error(`Could not find plugin "${pluginName}". Ensure there is an entry in ./available-plugins.js for it.`);
+  }
+  return plugin;
+};
+const transformIncludesAndExcludes = opts => {
+  return opts.reduce((result, opt) => {
+    const target = /^(?:es|es6|es7|esnext|web)\./.test(opt) ? "builtIns" : "plugins";
+    result[target].add(opt);
+    return result;
+  }, {
+    all: opts,
+    plugins: new Set(),
+    builtIns: new Set()
+  });
+};
+exports.transformIncludesAndExcludes = transformIncludesAndExcludes;
+function getSpecialModulesPluginNames(modules, shouldTransformDynamicImport, babelVersion) {
+  const modulesPluginNames = [];
+  if (modules) {
+    modulesPluginNames.push(_moduleTransformations.default[modules]);
+  }
+  if (shouldTransformDynamicImport) {
+    if (modules && modules !== "umd") {
+      modulesPluginNames.push("transform-dynamic-import");
+    } else {
+      console.warn("Dynamic import can only be transformed when transforming ES" + " modules to AMD, CommonJS or SystemJS.");
+    }
+  }
+  if (babelVersion[0] !== "8") {
+    if (!shouldTransformDynamicImport) {
+      modulesPluginNames.push("syntax-dynamic-import");
+    }
+    modulesPluginNames.push("syntax-top-level-await");
+    modulesPluginNames.push("syntax-import-meta");
+  }
+  return modulesPluginNames;
+}
+const getCoreJSOptions = ({
+  useBuiltIns,
+  corejs,
+  polyfillTargets,
+  include,
+  exclude,
+  proposals,
+  shippedProposals,
+  debug
+}) => ({
+  method: `${useBuiltIns}-global`,
+  version: corejs ? corejs.toString() : undefined,
+  targets: polyfillTargets,
+  include,
+  exclude,
+  proposals,
+  shippedProposals,
+  debug,
+  "#__secret_key__@babel/preset-env__compatibility": {
+    noRuntimeName: true
+  }
+});
+{
+  var getPolyfillPlugins = ({
+    useBuiltIns,
+    corejs,
+    polyfillTargets,
+    include,
+    exclude,
+    proposals,
+    shippedProposals,
+    regenerator,
+    debug
+  }) => {
+    const polyfillPlugins = [];
+    if (useBuiltIns === "usage" || useBuiltIns === "entry") {
+      const pluginOptions = getCoreJSOptions({
+        useBuiltIns,
+        corejs,
+        polyfillTargets,
+        include,
+        exclude,
+        proposals,
+        shippedProposals,
+        debug
+      });
+      if (corejs) {
+        {
+          if (useBuiltIns === "usage") {
+            if (corejs.major === 2) {
+              polyfillPlugins.push([_babel7Plugins.pluginCoreJS2, pluginOptions], [_babel7Plugins.legacyBabelPolyfillPlugin, {
+                usage: true
+              }]);
+            } else {
+              polyfillPlugins.push([pluginCoreJS3, pluginOptions], [_babel7Plugins.legacyBabelPolyfillPlugin, {
+                usage: true,
+                deprecated: true
+              }]);
+            }
+            if (regenerator) {
+              polyfillPlugins.push([_babel7Plugins.pluginRegenerator, {
+                method: "usage-global",
+                debug
+              }]);
+            }
+          } else {
+            if (corejs.major === 2) {
+              polyfillPlugins.push([_babel7Plugins.legacyBabelPolyfillPlugin, {
+                regenerator
+              }], [_babel7Plugins.pluginCoreJS2, pluginOptions]);
+            } else {
+              polyfillPlugins.push([pluginCoreJS3, pluginOptions], [_babel7Plugins.legacyBabelPolyfillPlugin, {
+                deprecated: true
+              }]);
+              if (!regenerator) {
+                polyfillPlugins.push([_babel7Plugins.removeRegeneratorEntryPlugin, pluginOptions]);
+              }
+            }
+          }
+        }
+      }
+    }
+    return polyfillPlugins;
+  };
+  {
+    exports.getPolyfillPlugins = getPolyfillPlugins;
+  }
+}
+function getLocalTargets(optionsTargets, ignoreBrowserslistConfig, configPath, browserslistEnv, api) {
+  if (optionsTargets != null && optionsTargets.esmodules && optionsTargets.browsers) {
+    console.warn(`
+@babel/preset-env: esmodules and browsers targets have been specified together.
+\`browsers\` target, \`${optionsTargets.browsers.toString()}\` will be ignored.
+`);
+  }
+  return (0, _helperCompilationTargets.default)(optionsTargets, {
+    ignoreBrowserslistConfig,
+    configPath,
+    browserslistEnv,
+    onBrowserslistConfigFound(config) {
+      api.addExternalDependency(config);
+    }
+  });
+}
+function supportsStaticESM(caller) {
+  return !!(caller != null && caller.supportsStaticESM);
+}
+function supportsDynamicImport(caller) {
+  return !!(caller != null && caller.supportsDynamicImport);
+}
+function supportsExportNamespaceFrom(caller) {
+  return !!(caller != null && caller.supportsExportNamespaceFrom);
+}
+var _default = exports.default = (0, _helperPluginUtils.declarePreset)((api, opts) => {
+  api.assertVersion(7);
+  const babelTargets = api.targets();
+  ;
+  const {
+    bugfixes,
+    configPath,
+    debug,
+    exclude: optionsExclude,
+    forceAllTransforms,
+    ignoreBrowserslistConfig,
+    include: optionsInclude,
+    modules: optionsModules,
+    shippedProposals,
+    targets: optionsTargets,
+    useBuiltIns,
+    corejs: {
+      version: corejs,
+      proposals
+    },
+    browserslistEnv
+  } = (0, _normalizeOptions.default)(opts);
+  {
+    var {
+      loose,
+      spec = false
+    } = opts;
+  }
+  let targets = babelTargets;
+  if (_semver.lt(api.version, "7.13.0") || opts.targets || opts.configPath || opts.browserslistEnv || opts.ignoreBrowserslistConfig) {
+    {
+      var hasUglifyTarget = false;
+      if (optionsTargets != null && optionsTargets.uglify) {
+        hasUglifyTarget = true;
+        delete optionsTargets.uglify;
+        console.warn(`
+The uglify target has been deprecated. Set the top level
+option \`forceAllTransforms: true\` instead.
+`);
+      }
+    }
+    targets = getLocalTargets(optionsTargets, ignoreBrowserslistConfig, configPath, browserslistEnv, api);
+  }
+  const transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;
+  const include = transformIncludesAndExcludes(optionsInclude);
+  const exclude = transformIncludesAndExcludes(optionsExclude);
+  const compatData = getPluginList(shippedProposals, bugfixes);
+  const modules = optionsModules === "auto" ? api.caller(supportsStaticESM) ? false : "commonjs" : optionsModules;
+  const shouldTransformDynamicImport = optionsModules === "auto" ? !api.caller(supportsDynamicImport) : !!modules;
+  if (!exclude.plugins.has("transform-export-namespace-from") && (optionsModules === "auto" ? !api.caller(supportsExportNamespaceFrom) : !!modules)) {
+    include.plugins.add("transform-export-namespace-from");
+  }
+  const pluginNames = (0, _helperCompilationTargets.filterItems)(compatData, include.plugins, exclude.plugins, transformTargets, getSpecialModulesPluginNames(modules, shouldTransformDynamicImport, api.version), !loose ? undefined : ["transform-typeof-symbol"], _shippedProposals.pluginSyntaxMap);
+  if (shippedProposals) {
+    (0, _filterItems.addProposalSyntaxPlugins)(pluginNames, _shippedProposals.proposalSyntaxPlugins);
+  }
+  (0, _filterItems.removeUnsupportedItems)(pluginNames, api.version);
+  (0, _filterItems.removeUnnecessaryItems)(pluginNames, _pluginsCompatData.overlappingPlugins);
+  const polyfillPlugins = getPolyfillPlugins({
+    useBuiltIns,
+    corejs,
+    polyfillTargets: targets,
+    include: include.builtIns,
+    exclude: exclude.builtIns,
+    proposals,
+    shippedProposals,
+    regenerator: pluginNames.has("transform-regenerator"),
+    debug
+  });
+  const pluginUseBuiltIns = useBuiltIns !== false;
+  const plugins = Array.from(pluginNames).map(pluginName => {
+    if (pluginName === "transform-class-properties" || pluginName === "transform-private-methods" || pluginName === "transform-private-property-in-object") {
+      return [getPlugin(pluginName), {
+        loose: loose ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error" : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error"
+      }];
+    }
+    if (pluginName === "syntax-import-attributes") {
+      return [getPlugin(pluginName), {
+        deprecatedAssertSyntax: true
+      }];
+    }
+    return [getPlugin(pluginName), {
+      spec,
+      loose,
+      useBuiltIns: pluginUseBuiltIns
+    }];
+  }).concat(polyfillPlugins);
+  if (debug) {
+    console.log("@babel/preset-env: `DEBUG` option");
+    console.log("\nUsing targets:");
+    console.log(JSON.stringify((0, _helperCompilationTargets.prettifyTargets)(targets), null, 2));
+    console.log(`\nUsing modules transform: ${optionsModules.toString()}`);
+    console.log("\nUsing plugins:");
+    pluginNames.forEach(pluginName => {
+      (0, _debug.logPlugin)(pluginName, targets, compatData);
+    });
+    if (!useBuiltIns) {
+      console.log("\nUsing polyfills: No polyfills were added, since the `useBuiltIns` option was not set.");
+    }
+  }
+  return {
+    plugins
+  };
+});
+{
+  exports.getModulesPluginNames = ({
+    modules,
+    transformations,
+    shouldTransformESM,
+    shouldTransformDynamicImport,
+    shouldTransformExportNamespaceFrom
+  }) => {
+    const modulesPluginNames = [];
+    if (modules !== false && transformations[modules]) {
+      if (shouldTransformESM) {
+        modulesPluginNames.push(transformations[modules]);
+      }
+      if (shouldTransformDynamicImport) {
+        if (shouldTransformESM && modules !== "umd") {
+          modulesPluginNames.push("transform-dynamic-import");
+        } else {
+          console.warn("Dynamic import can only be transformed when transforming ES" + " modules to AMD, CommonJS or SystemJS.");
+        }
+      }
+    }
+    if (shouldTransformExportNamespaceFrom) {
+      modulesPluginNames.push("transform-export-namespace-from");
+    }
+    if (!shouldTransformDynamicImport) {
+      modulesPluginNames.push("syntax-dynamic-import");
+    }
+    if (!shouldTransformExportNamespaceFrom) {
+      modulesPluginNames.push("syntax-export-namespace-from");
+    }
+    modulesPluginNames.push("syntax-top-level-await");
+    modulesPluginNames.push("syntax-import-meta");
+    return modulesPluginNames;
+  };
+}
+
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_semver","require","_debug","_filterItems","_moduleTransformations","_normalizeOptions","_shippedProposals","_pluginsCompatData","_babelPluginPolyfillCorejs","_babel7Plugins","_helperCompilationTargets","_availablePlugins","_helperPluginUtils","pluginCoreJS3","_pluginCoreJS3","default","isPluginRequired","targets","support","isRequired","compatData","filterStageFromList","list","stageList","Object","keys","reduce","result","item","has","pluginLists","withProposals","withoutBugfixes","pluginsList","withBugfixes","assign","pluginsBugfixesList","withoutProposals","proposalPlugins","getPluginList","proposals","bugfixes","getPlugin","pluginName","plugin","availablePlugins","Error","transformIncludesAndExcludes","opts","opt","target","test","add","all","plugins","Set","builtIns","exports","getSpecialModulesPluginNames","modules","shouldTransformDynamicImport","babelVersion","modulesPluginNames","push","moduleTransformations","console","warn","getCoreJSOptions","useBuiltIns","corejs","polyfillTargets","include","exclude","shippedProposals","debug","method","version","toString","undefined","noRuntimeName","getPolyfillPlugins","regenerator","polyfillPlugins","pluginOptions","major","babel7","pluginCoreJS2","legacyBabelPolyfillPlugin","usage","deprecated","pluginRegenerator","removeRegeneratorEntryPlugin","getLocalTargets","optionsTargets","ignoreBrowserslistConfig","configPath","browserslistEnv","api","esmodules","browsers","getTargets","onBrowserslistConfigFound","config","addExternalDependency","supportsStaticESM","caller","supportsDynamicImport","supportsExportNamespaceFrom","_default","declarePreset","assertVersion","babelTargets","optionsExclude","forceAllTransforms","optionsInclude","optionsModules","normalizeOptions","loose","spec","semver","lt","hasUglifyTarget","uglify","transformTargets","pluginNames","filterItems","pluginSyntaxMap","addProposalSyntaxPlugins","proposalSyntaxPlugins","removeUnsupportedItems","removeUnnecessaryItems","overlappingPlugins","pluginUseBuiltIns","Array","from","map","deprecatedAssertSyntax","concat","log","JSON","stringify","prettifyTargets","forEach","logPlugin","getModulesPluginNames","transformations","shouldTransformESM","shouldTransformExportNamespaceFrom"],"sources":["../src/index.ts"],"sourcesContent":["import semver, { type SemVer } from \"semver\";\nimport { logPlugin } from \"./debug.ts\";\nimport {\n  addProposalSyntaxPlugins,\n  removeUnnecessaryItems,\n  removeUnsupportedItems,\n} from \"./filter-items.ts\";\nimport moduleTransformations from \"./module-transformations.ts\";\nimport normalizeOptions from \"./normalize-options.ts\";\nimport {\n  pluginSyntaxMap,\n  proposalPlugins,\n  proposalSyntaxPlugins,\n} from \"./shipped-proposals.ts\";\nimport {\n  plugins as pluginsList,\n  pluginsBugfixes as pluginsBugfixesList,\n  overlappingPlugins,\n} from \"./plugins-compat-data.ts\";\n\nimport type { CallerMetadata, PresetAPI } from \"@babel/core\";\n\nimport _pluginCoreJS3 from \"babel-plugin-polyfill-corejs3\";\n// TODO(Babel 8): Just use the default import\nconst pluginCoreJS3 = _pluginCoreJS3.default || _pluginCoreJS3;\n\n// TODO(Babel 8): Remove this\nimport babel7 from \"./polyfills/babel-7-plugins.cjs\";\n\nimport getTargets, {\n  prettifyTargets,\n  filterItems,\n  isRequired,\n} from \"@babel/helper-compilation-targets\";\nimport type { Targets, InputTargets } from \"@babel/helper-compilation-targets\";\nimport availablePlugins from \"./available-plugins.ts\";\nimport { declarePreset } from \"@babel/helper-plugin-utils\";\n\nimport type { BuiltInsOption, ModuleOption, Options } from \"./types.ts\";\nexport type { Options };\n\n// TODO: Remove in Babel 8\nexport function isPluginRequired(targets: Targets, support: Targets) {\n  return isRequired(\"fake-name\", targets, {\n    compatData: { \"fake-name\": support },\n  });\n}\n\nfunction filterStageFromList(\n  list: { [feature: string]: Targets },\n  stageList: Set<string>,\n) {\n  return Object.keys(list).reduce((result, item) => {\n    if (!stageList.has(item)) {\n      // @ts-expect-error todo: refine result types\n      result[item] = list[item];\n    }\n\n    return result;\n  }, {});\n}\n\nconst pluginLists = {\n  withProposals: {\n    withoutBugfixes: pluginsList,\n    withBugfixes: Object.assign({}, pluginsList, pluginsBugfixesList),\n  },\n  withoutProposals: {\n    withoutBugfixes: filterStageFromList(pluginsList, proposalPlugins),\n    withBugfixes: filterStageFromList(\n      Object.assign({}, pluginsList, pluginsBugfixesList),\n      proposalPlugins,\n    ),\n  },\n};\n\nfunction getPluginList(proposals: boolean, bugfixes: boolean) {\n  if (proposals) {\n    if (bugfixes) return pluginLists.withProposals.withBugfixes;\n    else return pluginLists.withProposals.withoutBugfixes;\n  } else {\n    if (bugfixes) return pluginLists.withoutProposals.withBugfixes;\n    else return pluginLists.withoutProposals.withoutBugfixes;\n  }\n}\n\nconst getPlugin = (pluginName: string) => {\n  const plugin =\n    // @ts-expect-error plugin name is constructed from available plugin list\n    availablePlugins[pluginName]();\n\n  if (!plugin) {\n    throw new Error(\n      `Could not find plugin \"${pluginName}\". Ensure there is an entry in ./available-plugins.js for it.`,\n    );\n  }\n\n  return plugin;\n};\n\nexport const transformIncludesAndExcludes = (opts: Array<string>): any => {\n  return opts.reduce(\n    (result, opt) => {\n      const target = /^(?:es|es6|es7|esnext|web)\\./.test(opt)\n        ? \"builtIns\"\n        : \"plugins\";\n      result[target].add(opt);\n      return result;\n    },\n    {\n      all: opts,\n      plugins: new Set(),\n      builtIns: new Set(),\n    },\n  );\n};\n\nfunction getSpecialModulesPluginNames(\n  modules: Exclude<ModuleOption, \"auto\">,\n  shouldTransformDynamicImport: boolean,\n  babelVersion: string,\n) {\n  const modulesPluginNames = [];\n  if (modules) {\n    modulesPluginNames.push(moduleTransformations[modules]);\n  }\n\n  if (shouldTransformDynamicImport) {\n    if (modules && modules !== \"umd\") {\n      modulesPluginNames.push(\"transform-dynamic-import\");\n    } else {\n      console.warn(\n        \"Dynamic import can only be transformed when transforming ES\" +\n          \" modules to AMD, CommonJS or SystemJS.\",\n      );\n    }\n  }\n\n  if (!process.env.BABEL_8_BREAKING && babelVersion[0] !== \"8\") {\n    // Enable module-related syntax plugins for older Babel versions\n    if (!shouldTransformDynamicImport) {\n      modulesPluginNames.push(\"syntax-dynamic-import\");\n    }\n    modulesPluginNames.push(\"syntax-top-level-await\");\n    modulesPluginNames.push(\"syntax-import-meta\");\n  }\n\n  return modulesPluginNames;\n}\n\nconst getCoreJSOptions = ({\n  useBuiltIns,\n  corejs,\n  polyfillTargets,\n  include,\n  exclude,\n  proposals,\n  shippedProposals,\n  debug,\n}: {\n  useBuiltIns: BuiltInsOption;\n  corejs: SemVer | null | false;\n  polyfillTargets: Targets;\n  include: Set<string>;\n  exclude: Set<string>;\n  proposals: boolean;\n  shippedProposals: boolean;\n  debug: boolean;\n}) => ({\n  method: `${useBuiltIns}-global`,\n  version: corejs ? corejs.toString() : undefined,\n  targets: polyfillTargets,\n  include,\n  exclude,\n  proposals,\n  shippedProposals,\n  debug,\n  \"#__secret_key__@babel/preset-env__compatibility\": {\n    noRuntimeName: true,\n  },\n});\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var getPolyfillPlugins = ({\n    useBuiltIns,\n    corejs,\n    polyfillTargets,\n    include,\n    exclude,\n    proposals,\n    shippedProposals,\n    regenerator,\n    debug,\n  }: {\n    useBuiltIns: BuiltInsOption;\n    corejs: SemVer | null | false;\n    polyfillTargets: Targets;\n    include: Set<string>;\n    exclude: Set<string>;\n    proposals: boolean;\n    shippedProposals: boolean;\n    regenerator: boolean;\n    debug: boolean;\n  }) => {\n    const polyfillPlugins = [];\n    if (useBuiltIns === \"usage\" || useBuiltIns === \"entry\") {\n      const pluginOptions = getCoreJSOptions({\n        useBuiltIns,\n        corejs,\n        polyfillTargets,\n        include,\n        exclude,\n        proposals,\n        shippedProposals,\n        debug,\n      });\n\n      if (corejs) {\n        if (process.env.BABEL_8_BREAKING) {\n          polyfillPlugins.push([pluginCoreJS3, pluginOptions]);\n        } else {\n          if (useBuiltIns === \"usage\") {\n            if (corejs.major === 2) {\n              polyfillPlugins.push(\n                [babel7.pluginCoreJS2, pluginOptions],\n                [babel7.legacyBabelPolyfillPlugin, { usage: true }],\n              );\n            } else {\n              polyfillPlugins.push(\n                [pluginCoreJS3, pluginOptions],\n                [\n                  babel7.legacyBabelPolyfillPlugin,\n                  { usage: true, deprecated: true },\n                ],\n              );\n            }\n            if (regenerator) {\n              polyfillPlugins.push([\n                babel7.pluginRegenerator,\n                { method: \"usage-global\", debug },\n              ]);\n            }\n          } else {\n            if (corejs.major === 2) {\n              polyfillPlugins.push(\n                [babel7.legacyBabelPolyfillPlugin, { regenerator }],\n                [babel7.pluginCoreJS2, pluginOptions],\n              );\n            } else {\n              polyfillPlugins.push(\n                [pluginCoreJS3, pluginOptions],\n                [babel7.legacyBabelPolyfillPlugin, { deprecated: true }],\n              );\n              if (!regenerator) {\n                polyfillPlugins.push([\n                  babel7.removeRegeneratorEntryPlugin,\n                  pluginOptions,\n                ]);\n              }\n            }\n          }\n        }\n      }\n    }\n    return polyfillPlugins;\n  };\n\n  if (!USE_ESM) {\n    // eslint-disable-next-line no-restricted-globals\n    exports.getPolyfillPlugins = getPolyfillPlugins;\n  }\n}\n\nfunction getLocalTargets(\n  optionsTargets: Options[\"targets\"],\n  ignoreBrowserslistConfig: boolean,\n  configPath: string,\n  browserslistEnv: string,\n  api: PresetAPI,\n) {\n  if (optionsTargets?.esmodules && optionsTargets.browsers) {\n    console.warn(`\n@babel/preset-env: esmodules and browsers targets have been specified together.\n\\`browsers\\` target, \\`${optionsTargets.browsers.toString()}\\` will be ignored.\n`);\n  }\n\n  return getTargets(optionsTargets as InputTargets, {\n    ignoreBrowserslistConfig,\n    configPath,\n    browserslistEnv,\n    onBrowserslistConfigFound(config) {\n      api.addExternalDependency(config);\n    },\n  });\n}\n\nfunction supportsStaticESM(caller: CallerMetadata | undefined) {\n  // TODO(Babel 8): Fallback to true\n  // @ts-expect-error supportsStaticESM is not defined in CallerMetadata\n  return !!caller?.supportsStaticESM;\n}\n\nfunction supportsDynamicImport(caller: CallerMetadata | undefined) {\n  // TODO(Babel 8): Fallback to true\n  // @ts-expect-error supportsDynamicImport is not defined in CallerMetadata\n  return !!caller?.supportsDynamicImport;\n}\n\nfunction supportsExportNamespaceFrom(caller: CallerMetadata | undefined) {\n  // TODO(Babel 8): Fallback to null\n  // @ts-expect-error supportsExportNamespaceFrom is not defined in CallerMetadata\n  return !!caller?.supportsExportNamespaceFrom;\n}\n\nexport default declarePreset((api, opts: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const babelTargets = api.targets();\n\n  if (process.env.BABEL_8_BREAKING && (\"loose\" in opts || \"spec\" in opts)) {\n    throw new Error(\n      \"@babel/preset-env: The 'loose' and 'spec' options have been removed, \" +\n        \"and you should configure granular compiler assumptions instead. See \" +\n        \"https://babeljs.io/assumptions for more information.\",\n    );\n  }\n\n  const {\n    bugfixes,\n    configPath,\n    debug,\n    exclude: optionsExclude,\n    forceAllTransforms,\n    ignoreBrowserslistConfig,\n    include: optionsInclude,\n    modules: optionsModules,\n    shippedProposals,\n    targets: optionsTargets,\n    useBuiltIns,\n    corejs: { version: corejs, proposals },\n    browserslistEnv,\n  } = normalizeOptions(opts);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // eslint-disable-next-line no-var\n    var { loose, spec = false } = opts;\n  }\n\n  let targets = babelTargets;\n\n  if (\n    // @babel/core < 7.13.0 doesn't load targets (api.targets() always\n    // returns {} thanks to @babel/helper-plugin-utils), so we always want\n    // to fallback to the old targets behavior in this case.\n    semver.lt(api.version, \"7.13.0\") ||\n    // If any browserslist-related option is specified, fallback to the old\n    // behavior of not using the targets specified in the top-level options.\n    opts.targets ||\n    opts.configPath ||\n    opts.browserslistEnv ||\n    opts.ignoreBrowserslistConfig\n  ) {\n    if (!process.env.BABEL_8_BREAKING) {\n      // eslint-disable-next-line no-var\n      var hasUglifyTarget = false;\n\n      if (optionsTargets?.uglify) {\n        hasUglifyTarget = true;\n        delete optionsTargets.uglify;\n\n        console.warn(`\nThe uglify target has been deprecated. Set the top level\noption \\`forceAllTransforms: true\\` instead.\n`);\n      }\n    }\n\n    targets = getLocalTargets(\n      optionsTargets,\n      ignoreBrowserslistConfig,\n      configPath,\n      browserslistEnv,\n      api,\n    );\n  }\n\n  const transformTargets = (\n    process.env.BABEL_8_BREAKING\n      ? forceAllTransforms\n      : forceAllTransforms || hasUglifyTarget\n  )\n    ? ({} as Targets)\n    : targets;\n\n  const include = transformIncludesAndExcludes(optionsInclude);\n  const exclude = transformIncludesAndExcludes(optionsExclude);\n\n  const compatData = getPluginList(shippedProposals, bugfixes);\n  const modules =\n    optionsModules === \"auto\"\n      ? api.caller(supportsStaticESM)\n        ? false\n        : \"commonjs\"\n      : optionsModules;\n  const shouldTransformDynamicImport =\n    optionsModules === \"auto\" ? !api.caller(supportsDynamicImport) : !!modules;\n\n  // If the caller does not support export-namespace-from, we forcefully add\n  // the plugin to `includes`.\n  // TODO(Babel 8): stop doing this, similarly to how we don't do this for any\n  // other plugin. We can consider adding bundlers as targets in the future,\n  // but we should not have a one-off special case for this plugin.\n  if (\n    !exclude.plugins.has(\"transform-export-namespace-from\") &&\n    (optionsModules === \"auto\"\n      ? !api.caller(supportsExportNamespaceFrom)\n      : !!modules)\n  ) {\n    include.plugins.add(\"transform-export-namespace-from\");\n  }\n\n  const pluginNames = filterItems(\n    compatData,\n    include.plugins,\n    exclude.plugins,\n    transformTargets,\n    getSpecialModulesPluginNames(\n      modules,\n      shouldTransformDynamicImport,\n      api.version,\n    ),\n    process.env.BABEL_8_BREAKING || !loose\n      ? undefined\n      : [\"transform-typeof-symbol\"],\n    pluginSyntaxMap,\n  );\n  if (shippedProposals) {\n    addProposalSyntaxPlugins(pluginNames, proposalSyntaxPlugins);\n  }\n  removeUnsupportedItems(pluginNames, api.version);\n  removeUnnecessaryItems(pluginNames, overlappingPlugins);\n\n  const polyfillPlugins = process.env.BABEL_8_BREAKING\n    ? useBuiltIns\n      ? [\n          [\n            pluginCoreJS3,\n            getCoreJSOptions({\n              useBuiltIns,\n              corejs,\n              polyfillTargets: targets,\n              include: include.builtIns,\n              exclude: exclude.builtIns,\n              proposals,\n              shippedProposals,\n              debug,\n            }),\n          ],\n        ]\n      : []\n    : getPolyfillPlugins({\n        useBuiltIns,\n        corejs,\n        polyfillTargets: targets,\n        include: include.builtIns,\n        exclude: exclude.builtIns,\n        proposals,\n        shippedProposals,\n        regenerator: pluginNames.has(\"transform-regenerator\"),\n        debug,\n      });\n\n  const pluginUseBuiltIns = useBuiltIns !== false;\n  const plugins = Array.from(pluginNames)\n    .map(pluginName => {\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        (pluginName === \"transform-class-properties\" ||\n          pluginName === \"transform-private-methods\" ||\n          pluginName === \"transform-private-property-in-object\")\n      ) {\n        return [\n          getPlugin(pluginName),\n          {\n            loose: loose\n              ? \"#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error\"\n              : \"#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error\",\n          },\n        ];\n      }\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        pluginName === \"syntax-import-attributes\"\n      ) {\n        // For backward compatibility with the import-assertions plugin, we\n        // allow the deprecated `assert` keyword.\n        // TODO(Babel 8): Revisit this.\n        return [getPlugin(pluginName), { deprecatedAssertSyntax: true }];\n      }\n      return [\n        getPlugin(pluginName),\n        process.env.BABEL_8_BREAKING\n          ? { useBuiltIns: pluginUseBuiltIns }\n          : { spec, loose, useBuiltIns: pluginUseBuiltIns },\n      ];\n    })\n    .concat(polyfillPlugins);\n\n  if (debug) {\n    console.log(\"@babel/preset-env: `DEBUG` option\");\n    console.log(\"\\nUsing targets:\");\n    console.log(JSON.stringify(prettifyTargets(targets), null, 2));\n    console.log(`\\nUsing modules transform: ${optionsModules.toString()}`);\n    console.log(\"\\nUsing plugins:\");\n    pluginNames.forEach(pluginName => {\n      logPlugin(pluginName, targets, compatData);\n    });\n\n    if (!useBuiltIns) {\n      console.log(\n        \"\\nUsing polyfills: No polyfills were added, since the `useBuiltIns` option was not set.\",\n      );\n    }\n  }\n\n  return { plugins };\n});\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.getModulesPluginNames = ({\n    modules,\n    transformations,\n    shouldTransformESM,\n    shouldTransformDynamicImport,\n    shouldTransformExportNamespaceFrom,\n  }: {\n    modules: ModuleOption;\n    transformations: typeof import(\"./module-transformations\").default;\n    shouldTransformESM: boolean;\n    shouldTransformDynamicImport: boolean;\n    shouldTransformExportNamespaceFrom: boolean;\n  }) => {\n    const modulesPluginNames = [];\n    if (modules !== false && transformations[modules]) {\n      if (shouldTransformESM) {\n        modulesPluginNames.push(transformations[modules]);\n      }\n\n      if (shouldTransformDynamicImport) {\n        if (shouldTransformESM && modules !== \"umd\") {\n          modulesPluginNames.push(\"transform-dynamic-import\");\n        } else {\n          console.warn(\n            \"Dynamic import can only be transformed when transforming ES\" +\n              \" modules to AMD, CommonJS or SystemJS.\",\n          );\n        }\n      }\n    }\n\n    if (shouldTransformExportNamespaceFrom) {\n      modulesPluginNames.push(\"transform-export-namespace-from\");\n    }\n    if (!shouldTransformDynamicImport) {\n      modulesPluginNames.push(\"syntax-dynamic-import\");\n    }\n    if (!shouldTransformExportNamespaceFrom) {\n      modulesPluginNames.push(\"syntax-export-namespace-from\");\n    }\n    modulesPluginNames.push(\"syntax-top-level-await\");\n    modulesPluginNames.push(\"syntax-import-meta\");\n\n    return modulesPluginNames;\n  };\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/module-transformations.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/module-transformations.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/module-transformations.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _default = exports.default = {
+  amd: "transform-modules-amd",
+  commonjs: "transform-modules-commonjs",
+  cjs: "transform-modules-commonjs",
+  systemjs: "transform-modules-systemjs",
+  umd: "transform-modules-umd"
+};
+
+//# sourceMappingURL=module-transformations.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/module-transformations.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/module-transformations.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/module-transformations.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["amd","commonjs","cjs","systemjs","umd"],"sources":["../src/module-transformations.ts"],"sourcesContent":["type AvailablePlugins = typeof import(\"./available-plugins\").default;\n\nexport default {\n  amd: \"transform-modules-amd\",\n  commonjs: \"transform-modules-commonjs\",\n  cjs: \"transform-modules-commonjs\",\n  systemjs: \"transform-modules-systemjs\",\n  umd: \"transform-modules-umd\",\n} as { [transform: string]: keyof AvailablePlugins };\n"],"mappings":";;;;;;iCAEe;EACbA,GAAG,EAAE,uBAAuB;EAC5BC,QAAQ,EAAE,4BAA4B;EACtCC,GAAG,EAAE,4BAA4B;EACjCC,QAAQ,EAAE,4BAA4B;EACtCC,GAAG,EAAE;AACP,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/normalize-options.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/normalize-options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/normalize-options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,150 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.checkDuplicateIncludeExcludes = void 0;
+exports.default = normalizeOptions;
+exports.normalizeCoreJSOption = normalizeCoreJSOption;
+exports.validateUseBuiltInsOption = exports.validateModulesOption = exports.normalizePluginName = void 0;
+var _semver = require("semver");
+var _pluginsCompatData = require("./plugins-compat-data.js");
+var _moduleTransformations = require("./module-transformations.js");
+var _options = require("./options.js");
+var _helperValidatorOption = require("@babel/helper-validator-option");
+var _babel7Plugins = require("./polyfills/babel-7-plugins.cjs");
+const corejs3Polyfills = require("core-js-compat/data.json");
+const v = new _helperValidatorOption.OptionValidator("@babel/preset-env");
+const allPluginsList = Object.keys(_pluginsCompatData.plugins);
+const modulePlugins = ["transform-dynamic-import", ...Object.keys(_moduleTransformations.default).map(m => _moduleTransformations.default[m])];
+const getValidIncludesAndExcludes = (type, corejs) => {
+  const set = new Set(allPluginsList);
+  if (type === "exclude") modulePlugins.map(set.add, set);
+  if (corejs) {
+    if (corejs === 2) {
+      Object.keys(_babel7Plugins.corejs2Polyfills).map(set.add, set);
+      set.add("web.timers").add("web.immediate").add("web.dom.iterable");
+    } else {
+      Object.keys(corejs3Polyfills).map(set.add, set);
+    }
+  }
+  return Array.from(set);
+};
+function flatMap(array, fn) {
+  return Array.prototype.concat.apply([], array.map(fn));
+}
+const normalizePluginName = plugin => plugin.replace(/^(?:@babel\/|babel-)(?:plugin-)?/, "");
+exports.normalizePluginName = normalizePluginName;
+const expandIncludesAndExcludes = (filterList = [], type, corejs) => {
+  if (filterList.length === 0) return [];
+  const filterableItems = getValidIncludesAndExcludes(type, corejs);
+  const invalidFilters = [];
+  const selectedPlugins = flatMap(filterList, filter => {
+    let re;
+    if (typeof filter === "string") {
+      try {
+        re = new RegExp(`^${normalizePluginName(filter)}$`);
+      } catch (_) {
+        invalidFilters.push(filter);
+        return [];
+      }
+    } else {
+      re = filter;
+    }
+    const items = filterableItems.filter(item => {
+      return re.test(item) || re.test(item.replace(/^transform-/, "proposal-"));
+    });
+    if (items.length === 0) invalidFilters.push(filter);
+    return items;
+  });
+  v.invariant(invalidFilters.length === 0, `The plugins/built-ins '${invalidFilters.join(", ")}' passed to the '${type}' option are not
+    valid. Please check data/[plugin-features|built-in-features].js in babel-preset-env`);
+  return selectedPlugins;
+};
+const checkDuplicateIncludeExcludes = (include = [], exclude = []) => {
+  const duplicates = include.filter(opt => exclude.includes(opt));
+  v.invariant(duplicates.length === 0, `The plugins/built-ins '${duplicates.join(", ")}' were found in both the "include" and
+    "exclude" options.`);
+};
+exports.checkDuplicateIncludeExcludes = checkDuplicateIncludeExcludes;
+const normalizeTargets = targets => {
+  if (typeof targets === "string" || Array.isArray(targets)) {
+    return {
+      browsers: targets
+    };
+  }
+  return Object.assign({}, targets);
+};
+const validateModulesOption = (modulesOpt = _options.ModulesOption.auto) => {
+  v.invariant(_options.ModulesOption[modulesOpt.toString()] || modulesOpt === _options.ModulesOption.false, `The 'modules' option must be one of \n` + ` - 'false' to indicate no module processing\n` + ` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` + ` - 'auto' (default) which will automatically select 'false' if the current\n` + `   process is known to support ES module syntax, or "commonjs" otherwise\n`);
+  return modulesOpt;
+};
+exports.validateModulesOption = validateModulesOption;
+const validateUseBuiltInsOption = (builtInsOpt = false) => {
+  v.invariant(_options.UseBuiltInsOption[builtInsOpt.toString()] || builtInsOpt === _options.UseBuiltInsOption.false, `The 'useBuiltIns' option must be either
+    'false' (default) to indicate no polyfill,
+    '"entry"' to indicate replacing the entry polyfill, or
+    '"usage"' to import only used polyfills per file`);
+  return builtInsOpt;
+};
+exports.validateUseBuiltInsOption = validateUseBuiltInsOption;
+function normalizeCoreJSOption(corejs, useBuiltIns) {
+  let proposals = false;
+  let rawVersion;
+  if (useBuiltIns && corejs === undefined) {
+    {
+      rawVersion = 2;
+      console.warn("\nWARNING (@babel/preset-env): We noticed you're using the `useBuiltIns` option without declaring a " + `core-js version. Currently, we assume version 2.x when no version ` + "is passed. Since this default version will likely change in future " + "versions of Babel, we recommend explicitly setting the core-js version " + "you are using via the `corejs` option.\n" + "\nYou should also be sure that the version you pass to the `corejs` " + "option matches the version specified in your `package.json`'s " + "`dependencies` section. If it doesn't, you need to run one of the " + "following commands:\n\n" + "  npm install --save core-js@2    npm install --save core-js@3\n" + "  yarn add core-js@2              yarn add core-js@3\n\n" + "More info about useBuiltIns: https://babeljs.io/docs/en/babel-preset-env#usebuiltins\n" + "More info about core-js: https://babeljs.io/docs/en/babel-preset-env#corejs");
+    }
+  } else if (typeof corejs === "object" && corejs !== null) {
+    rawVersion = corejs.version;
+    proposals = Boolean(corejs.proposals);
+  } else {
+    rawVersion = corejs;
+  }
+  const version = rawVersion ? _semver.coerce(String(rawVersion)) : false;
+  if (version) {
+    if (useBuiltIns) {
+      {
+        if (version.major < 2 || version.major > 3) {
+          throw new RangeError("Invalid Option: The version passed to `corejs` is invalid. Currently, " + "only core-js@2 and core-js@3 are supported.");
+        }
+      }
+    } else {
+      console.warn("\nWARNING (@babel/preset-env): The `corejs` option only has an effect when the `useBuiltIns` option is not `false`\n");
+    }
+  }
+  return {
+    version,
+    proposals
+  };
+}
+function normalizeOptions(opts) {
+  v.validateTopLevelOptions(opts, _options.TopLevelOptions);
+  const useBuiltIns = validateUseBuiltInsOption(opts.useBuiltIns);
+  const corejs = normalizeCoreJSOption(opts.corejs, useBuiltIns);
+  const include = expandIncludesAndExcludes(opts.include, _options.TopLevelOptions.include, !!corejs.version && corejs.version.major);
+  const exclude = expandIncludesAndExcludes(opts.exclude, _options.TopLevelOptions.exclude, !!corejs.version && corejs.version.major);
+  checkDuplicateIncludeExcludes(include, exclude);
+  {
+    v.validateBooleanOption("loose", opts.loose);
+    v.validateBooleanOption("spec", opts.spec);
+  }
+  return {
+    bugfixes: v.validateBooleanOption(_options.TopLevelOptions.bugfixes, opts.bugfixes, false),
+    configPath: v.validateStringOption(_options.TopLevelOptions.configPath, opts.configPath, process.cwd()),
+    corejs,
+    debug: v.validateBooleanOption(_options.TopLevelOptions.debug, opts.debug, false),
+    include,
+    exclude,
+    forceAllTransforms: v.validateBooleanOption(_options.TopLevelOptions.forceAllTransforms, opts.forceAllTransforms, false),
+    ignoreBrowserslistConfig: v.validateBooleanOption(_options.TopLevelOptions.ignoreBrowserslistConfig, opts.ignoreBrowserslistConfig, false),
+    modules: validateModulesOption(opts.modules),
+    shippedProposals: v.validateBooleanOption(_options.TopLevelOptions.shippedProposals, opts.shippedProposals, false),
+    targets: normalizeTargets(opts.targets),
+    useBuiltIns: useBuiltIns,
+    browserslistEnv: v.validateStringOption(_options.TopLevelOptions.browserslistEnv, opts.browserslistEnv)
+  };
+}
+
+//# sourceMappingURL=normalize-options.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/normalize-options.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/normalize-options.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/normalize-options.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_semver","require","_pluginsCompatData","_moduleTransformations","_options","_helperValidatorOption","_babel7Plugins","corejs3Polyfills","v","OptionValidator","allPluginsList","Object","keys","pluginsList","modulePlugins","moduleTransformations","map","m","getValidIncludesAndExcludes","type","corejs","set","Set","add","babel7","corejs2Polyfills","Array","from","flatMap","array","fn","prototype","concat","apply","normalizePluginName","plugin","replace","exports","expandIncludesAndExcludes","filterList","length","filterableItems","invalidFilters","selectedPlugins","filter","re","RegExp","_","push","items","item","test","invariant","join","checkDuplicateIncludeExcludes","include","exclude","duplicates","opt","includes","normalizeTargets","targets","isArray","browsers","assign","validateModulesOption","modulesOpt","ModulesOption","auto","toString","false","validateUseBuiltInsOption","builtInsOpt","UseBuiltInsOption","normalizeCoreJSOption","useBuiltIns","proposals","rawVersion","undefined","console","warn","version","Boolean","semver","coerce","String","major","RangeError","normalizeOptions","opts","validateTopLevelOptions","TopLevelOptions","validateBooleanOption","loose","spec","bugfixes","configPath","validateStringOption","process","cwd","debug","forceAllTransforms","ignoreBrowserslistConfig","modules","shippedProposals","browserslistEnv"],"sources":["../src/normalize-options.ts"],"sourcesContent":["import semver, { type SemVer } from \"semver\";\nimport corejs3Polyfills from \"core-js-compat/data.json\" with { type: \"json\" };\nimport { plugins as pluginsList } from \"./plugins-compat-data.ts\";\nimport moduleTransformations from \"./module-transformations.ts\";\nimport {\n  TopLevelOptions,\n  ModulesOption,\n  UseBuiltInsOption,\n} from \"./options.ts\";\nimport { OptionValidator } from \"@babel/helper-validator-option\";\n\n// TODO(Babel 8): Remove this\nimport babel7 from \"./polyfills/babel-7-plugins.cjs\";\n\nimport type {\n  BuiltInsOption,\n  CorejsOption,\n  ModuleOption,\n  Options,\n  PluginListOption,\n} from \"./types.ts\";\n\nconst v = new OptionValidator(PACKAGE_JSON.name);\n\nconst allPluginsList = Object.keys(pluginsList);\n\n// NOTE: Since module plugins are handled separately compared to other plugins (via the \"modules\" option) it\n// should only be possible to exclude and not include module plugins, otherwise it's possible that preset-env\n// will add a module plugin twice.\nconst modulePlugins = [\n  \"transform-dynamic-import\",\n  ...Object.keys(moduleTransformations).map(m => moduleTransformations[m]),\n];\n\nconst getValidIncludesAndExcludes = (\n  type: \"include\" | \"exclude\",\n  corejs: number | false,\n) => {\n  const set = new Set(allPluginsList);\n  if (type === \"exclude\") modulePlugins.map(set.add, set);\n  if (corejs) {\n    if (!process.env.BABEL_8_BREAKING && corejs === 2) {\n      Object.keys(babel7.corejs2Polyfills).map(set.add, set);\n      set.add(\"web.timers\").add(\"web.immediate\").add(\"web.dom.iterable\");\n    } else {\n      Object.keys(corejs3Polyfills).map(set.add, set);\n    }\n  }\n  return Array.from(set);\n};\n\nfunction flatMap<T, U>(array: Array<T>, fn: (item: T) => Array<U>): Array<U> {\n  return Array.prototype.concat.apply([], array.map(fn));\n}\n\nexport const normalizePluginName = (plugin: string) =>\n  plugin.replace(/^(?:@babel\\/|babel-)(?:plugin-)?/, \"\");\n\nconst expandIncludesAndExcludes = (\n  filterList: PluginListOption = [],\n  type: \"include\" | \"exclude\",\n  corejs: number | false,\n) => {\n  if (filterList.length === 0) return [];\n\n  const filterableItems = getValidIncludesAndExcludes(type, corejs);\n\n  const invalidFilters: PluginListOption = [];\n  const selectedPlugins = flatMap(filterList, filter => {\n    let re: RegExp;\n    if (typeof filter === \"string\") {\n      try {\n        re = new RegExp(`^${normalizePluginName(filter)}$`);\n      } catch (_) {\n        invalidFilters.push(filter);\n        return [];\n      }\n    } else {\n      re = filter;\n    }\n    const items = filterableItems.filter(item => {\n      return process.env.BABEL_8_BREAKING\n        ? re.test(item)\n        : re.test(item) ||\n            // For backwards compatibility, we also support matching against the\n            // proposal- name.\n            re.test(item.replace(/^transform-/, \"proposal-\"));\n    });\n    if (items.length === 0) invalidFilters.push(filter);\n    return items;\n  });\n\n  v.invariant(\n    invalidFilters.length === 0,\n    `The plugins/built-ins '${invalidFilters.join(\n      \", \",\n    )}' passed to the '${type}' option are not\n    valid. Please check data/[plugin-features|built-in-features].js in babel-preset-env`,\n  );\n\n  return selectedPlugins;\n};\n\nexport const checkDuplicateIncludeExcludes = (\n  include: Array<string> = [],\n  exclude: Array<string> = [],\n) => {\n  const duplicates = include.filter(opt => exclude.includes(opt));\n\n  v.invariant(\n    duplicates.length === 0,\n    `The plugins/built-ins '${duplicates.join(\n      \", \",\n    )}' were found in both the \"include\" and\n    \"exclude\" options.`,\n  );\n};\n\nconst normalizeTargets = (\n  targets: string | string[] | Options[\"targets\"],\n): Options[\"targets\"] => {\n  // TODO: Allow to use only query or strings as a targets from next breaking change.\n  if (typeof targets === \"string\" || Array.isArray(targets)) {\n    return { browsers: targets };\n  }\n  return { ...targets };\n};\n\nexport const validateModulesOption = (\n  modulesOpt: ModuleOption = ModulesOption.auto,\n) => {\n  v.invariant(\n    // @ts-expect-error we have provided fallback for undefined keys\n    ModulesOption[modulesOpt.toString()] || modulesOpt === ModulesOption.false,\n    `The 'modules' option must be one of \\n` +\n      ` - 'false' to indicate no module processing\\n` +\n      ` - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'` +\n      ` - 'auto' (default) which will automatically select 'false' if the current\\n` +\n      `   process is known to support ES module syntax, or \"commonjs\" otherwise\\n`,\n  );\n\n  return modulesOpt;\n};\n\nexport const validateUseBuiltInsOption = (\n  builtInsOpt: BuiltInsOption = false,\n) => {\n  v.invariant(\n    // @ts-expect-error we have provided fallback for undefined keys\n    UseBuiltInsOption[builtInsOpt.toString()] ||\n      builtInsOpt === UseBuiltInsOption.false,\n    `The 'useBuiltIns' option must be either\n    'false' (default) to indicate no polyfill,\n    '\"entry\"' to indicate replacing the entry polyfill, or\n    '\"usage\"' to import only used polyfills per file`,\n  );\n\n  return builtInsOpt;\n};\n\nexport type NormalizedCorejsOption = {\n  proposals: boolean;\n  version: SemVer | null | false;\n};\n\nexport function normalizeCoreJSOption(\n  corejs: CorejsOption | undefined | null,\n  useBuiltIns: BuiltInsOption,\n): NormalizedCorejsOption {\n  let proposals = false;\n  let rawVersion: false | string | number | undefined | null;\n\n  if (useBuiltIns && corejs === undefined) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"When using the `useBuiltIns` option you must specify\" +\n          ' the code-js version you are using, such as `\"corejs\": \"3.32.0\"`.',\n      );\n    } else {\n      rawVersion = 2;\n      console.warn(\n        \"\\nWARNING (@babel/preset-env): We noticed you're using the `useBuiltIns` option without declaring a \" +\n          `core-js version. Currently, we assume version 2.x when no version ` +\n          \"is passed. Since this default version will likely change in future \" +\n          \"versions of Babel, we recommend explicitly setting the core-js version \" +\n          \"you are using via the `corejs` option.\\n\" +\n          \"\\nYou should also be sure that the version you pass to the `corejs` \" +\n          \"option matches the version specified in your `package.json`'s \" +\n          \"`dependencies` section. If it doesn't, you need to run one of the \" +\n          \"following commands:\\n\\n\" +\n          \"  npm install --save core-js@2    npm install --save core-js@3\\n\" +\n          \"  yarn add core-js@2              yarn add core-js@3\\n\\n\" +\n          \"More info about useBuiltIns: https://babeljs.io/docs/en/babel-preset-env#usebuiltins\\n\" +\n          \"More info about core-js: https://babeljs.io/docs/en/babel-preset-env#corejs\",\n      );\n    }\n  } else if (typeof corejs === \"object\" && corejs !== null) {\n    rawVersion = corejs.version;\n    proposals = Boolean(corejs.proposals);\n  } else {\n    rawVersion = corejs as false | string | number | undefined | null;\n  }\n\n  const version = rawVersion ? semver.coerce(String(rawVersion)) : false;\n\n  if (version) {\n    if (useBuiltIns) {\n      if (process.env.BABEL_8_BREAKING) {\n        if (version.major !== 3) {\n          throw new RangeError(\n            \"Invalid Option: The version passed to `corejs` is invalid. Currently, \" +\n              \"only core-js@3 is supported.\",\n          );\n        }\n\n        if (\n          typeof rawVersion !== \"string\" ||\n          !String(rawVersion).includes(\".\")\n        ) {\n          throw new Error(\n            'Invalid Option: The version passed to `corejs` is invalid. Please use string and specify the minor version, such as `\"3.33\"`.',\n          );\n        }\n      } else {\n        if (version.major < 2 || version.major > 3) {\n          throw new RangeError(\n            \"Invalid Option: The version passed to `corejs` is invalid. Currently, \" +\n              \"only core-js@2 and core-js@3 are supported.\",\n          );\n        }\n      }\n    } else {\n      console.warn(\n        \"\\nWARNING (@babel/preset-env): The `corejs` option only has an effect when the `useBuiltIns` option is not `false`\\n\",\n      );\n    }\n  }\n\n  return { version, proposals };\n}\n\nexport default function normalizeOptions(opts: Options) {\n  v.validateTopLevelOptions(opts, TopLevelOptions);\n\n  const useBuiltIns = validateUseBuiltInsOption(opts.useBuiltIns);\n\n  const corejs = normalizeCoreJSOption(opts.corejs, useBuiltIns);\n\n  const include = expandIncludesAndExcludes(\n    opts.include,\n    TopLevelOptions.include,\n    !!corejs.version && corejs.version.major,\n  );\n\n  const exclude = expandIncludesAndExcludes(\n    opts.exclude,\n    TopLevelOptions.exclude,\n    !!corejs.version && corejs.version.major,\n  );\n\n  checkDuplicateIncludeExcludes(include, exclude);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    v.validateBooleanOption(\"loose\", opts.loose);\n    v.validateBooleanOption(\"spec\", opts.spec);\n  }\n\n  return {\n    bugfixes: v.validateBooleanOption(\n      TopLevelOptions.bugfixes,\n      opts.bugfixes,\n      process.env.BABEL_8_BREAKING ? true : false,\n    ),\n    configPath: v.validateStringOption(\n      TopLevelOptions.configPath,\n      opts.configPath,\n      process.cwd(),\n    ),\n    corejs,\n    debug: v.validateBooleanOption(TopLevelOptions.debug, opts.debug, false),\n    include,\n    exclude,\n    forceAllTransforms: v.validateBooleanOption(\n      TopLevelOptions.forceAllTransforms,\n      opts.forceAllTransforms,\n      false,\n    ),\n    ignoreBrowserslistConfig: v.validateBooleanOption(\n      TopLevelOptions.ignoreBrowserslistConfig,\n      opts.ignoreBrowserslistConfig,\n      false,\n    ),\n    modules: validateModulesOption(opts.modules),\n    shippedProposals: v.validateBooleanOption(\n      TopLevelOptions.shippedProposals,\n      opts.shippedProposals,\n      false,\n    ),\n    targets: normalizeTargets(opts.targets),\n    useBuiltIns: useBuiltIns,\n    browserslistEnv: v.validateStringOption(\n      TopLevelOptions.browserslistEnv,\n      opts.browserslistEnv,\n    ),\n  };\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAKA,IAAAI,sBAAA,GAAAJ,OAAA;AAGA,IAAAK,cAAA,GAAAL,OAAA;AAAqD,MAX9CM,gBAAgB,GAAAN,OAAA,CAAM,0BAA0B;AAqBvD,MAAMO,CAAC,GAAG,IAAIC,sCAAe,oBAAkB,CAAC;AAEhD,MAAMC,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACC,0BAAW,CAAC;AAK/C,MAAMC,aAAa,GAAG,CACpB,0BAA0B,EAC1B,GAAGH,MAAM,CAACC,IAAI,CAACG,8BAAqB,CAAC,CAACC,GAAG,CAACC,CAAC,IAAIF,8BAAqB,CAACE,CAAC,CAAC,CAAC,CACzE;AAED,MAAMC,2BAA2B,GAAGA,CAClCC,IAA2B,EAC3BC,MAAsB,KACnB;EACH,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAACZ,cAAc,CAAC;EACnC,IAAIS,IAAI,KAAK,SAAS,EAAEL,aAAa,CAACE,GAAG,CAACK,GAAG,CAACE,GAAG,EAAEF,GAAG,CAAC;EACvD,IAAID,MAAM,EAAE;IACV,IAAqCA,MAAM,KAAK,CAAC,EAAE;MACjDT,MAAM,CAACC,IAAI,CAACY,cAAM,CAACC,gBAAgB,CAAC,CAACT,GAAG,CAACK,GAAG,CAACE,GAAG,EAAEF,GAAG,CAAC;MACtDA,GAAG,CAACE,GAAG,CAAC,YAAY,CAAC,CAACA,GAAG,CAAC,eAAe,CAAC,CAACA,GAAG,CAAC,kBAAkB,CAAC;IACpE,CAAC,MAAM;MACLZ,MAAM,CAACC,IAAI,CAACL,gBAAgB,CAAC,CAACS,GAAG,CAACK,GAAG,CAACE,GAAG,EAAEF,GAAG,CAAC;IACjD;EACF;EACA,OAAOK,KAAK,CAACC,IAAI,CAACN,GAAG,CAAC;AACxB,CAAC;AAED,SAASO,OAAOA,CAAOC,KAAe,EAAEC,EAAyB,EAAY;EAC3E,OAAOJ,KAAK,CAACK,SAAS,CAACC,MAAM,CAACC,KAAK,CAAC,EAAE,EAAEJ,KAAK,CAACb,GAAG,CAACc,EAAE,CAAC,CAAC;AACxD;AAEO,MAAMI,mBAAmB,GAAIC,MAAc,IAChDA,MAAM,CAACC,OAAO,CAAC,kCAAkC,EAAE,EAAE,CAAC;AAACC,OAAA,CAAAH,mBAAA,GAAAA,mBAAA;AAEzD,MAAMI,yBAAyB,GAAGA,CAChCC,UAA4B,GAAG,EAAE,EACjCpB,IAA2B,EAC3BC,MAAsB,KACnB;EACH,IAAImB,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EAEtC,MAAMC,eAAe,GAAGvB,2BAA2B,CAACC,IAAI,EAAEC,MAAM,CAAC;EAEjE,MAAMsB,cAAgC,GAAG,EAAE;EAC3C,MAAMC,eAAe,GAAGf,OAAO,CAACW,UAAU,EAAEK,MAAM,IAAI;IACpD,IAAIC,EAAU;IACd,IAAI,OAAOD,MAAM,KAAK,QAAQ,EAAE;MAC9B,IAAI;QACFC,EAAE,GAAG,IAAIC,MAAM,CAAC,IAAIZ,mBAAmB,CAACU,MAAM,CAAC,GAAG,CAAC;MACrD,CAAC,CAAC,OAAOG,CAAC,EAAE;QACVL,cAAc,CAACM,IAAI,CAACJ,MAAM,CAAC;QAC3B,OAAO,EAAE;MACX;IACF,CAAC,MAAM;MACLC,EAAE,GAAGD,MAAM;IACb;IACA,MAAMK,KAAK,GAAGR,eAAe,CAACG,MAAM,CAACM,IAAI,IAAI;MAC3C,OAEIL,EAAE,CAACM,IAAI,CAACD,IAAI,CAAC,IAGXL,EAAE,CAACM,IAAI,CAACD,IAAI,CAACd,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC;IACF,IAAIa,KAAK,CAACT,MAAM,KAAK,CAAC,EAAEE,cAAc,CAACM,IAAI,CAACJ,MAAM,CAAC;IACnD,OAAOK,KAAK;EACd,CAAC,CAAC;EAEFzC,CAAC,CAAC4C,SAAS,CACTV,cAAc,CAACF,MAAM,KAAK,CAAC,EAC3B,0BAA0BE,cAAc,CAACW,IAAI,CAC3C,IACF,CAAC,oBAAoBlC,IAAI;AAC7B,wFACE,CAAC;EAED,OAAOwB,eAAe;AACxB,CAAC;AAEM,MAAMW,6BAA6B,GAAGA,CAC3CC,OAAsB,GAAG,EAAE,EAC3BC,OAAsB,GAAG,EAAE,KACxB;EACH,MAAMC,UAAU,GAAGF,OAAO,CAACX,MAAM,CAACc,GAAG,IAAIF,OAAO,CAACG,QAAQ,CAACD,GAAG,CAAC,CAAC;EAE/DlD,CAAC,CAAC4C,SAAS,CACTK,UAAU,CAACjB,MAAM,KAAK,CAAC,EACvB,0BAA0BiB,UAAU,CAACJ,IAAI,CACvC,IACF,CAAC;AACL,uBACE,CAAC;AACH,CAAC;AAAChB,OAAA,CAAAiB,6BAAA,GAAAA,6BAAA;AAEF,MAAMM,gBAAgB,GACpBC,OAA+C,IACxB;EAEvB,IAAI,OAAOA,OAAO,KAAK,QAAQ,IAAInC,KAAK,CAACoC,OAAO,CAACD,OAAO,CAAC,EAAE;IACzD,OAAO;MAAEE,QAAQ,EAAEF;IAAQ,CAAC;EAC9B;EACA,OAAAlD,MAAA,CAAAqD,MAAA,KAAYH,OAAO;AACrB,CAAC;AAEM,MAAMI,qBAAqB,GAAGA,CACnCC,UAAwB,GAAGC,sBAAa,CAACC,IAAI,KAC1C;EACH5D,CAAC,CAAC4C,SAAS,CAETe,sBAAa,CAACD,UAAU,CAACG,QAAQ,CAAC,CAAC,CAAC,IAAIH,UAAU,KAAKC,sBAAa,CAACG,KAAK,EAC1E,wCAAwC,GACtC,+CAA+C,GAC/C,iEAAiE,GACjE,8EAA8E,GAC9E,4EACJ,CAAC;EAED,OAAOJ,UAAU;AACnB,CAAC;AAAC7B,OAAA,CAAA4B,qBAAA,GAAAA,qBAAA;AAEK,MAAMM,yBAAyB,GAAGA,CACvCC,WAA2B,GAAG,KAAK,KAChC;EACHhE,CAAC,CAAC4C,SAAS,CAETqB,0BAAiB,CAACD,WAAW,CAACH,QAAQ,CAAC,CAAC,CAAC,IACvCG,WAAW,KAAKC,0BAAiB,CAACH,KAAK,EACzC;AACJ;AACA;AACA,qDACE,CAAC;EAED,OAAOE,WAAW;AACpB,CAAC;AAACnC,OAAA,CAAAkC,yBAAA,GAAAA,yBAAA;AAOK,SAASG,qBAAqBA,CACnCtD,MAAuC,EACvCuD,WAA2B,EACH;EACxB,IAAIC,SAAS,GAAG,KAAK;EACrB,IAAIC,UAAsD;EAE1D,IAAIF,WAAW,IAAIvD,MAAM,KAAK0D,SAAS,EAAE;IAMhC;MACLD,UAAU,GAAG,CAAC;MACdE,OAAO,CAACC,IAAI,CACV,sGAAsG,GACpG,oEAAoE,GACpE,qEAAqE,GACrE,yEAAyE,GACzE,0CAA0C,GAC1C,sEAAsE,GACtE,gEAAgE,GAChE,oEAAoE,GACpE,yBAAyB,GACzB,kEAAkE,GAClE,0DAA0D,GAC1D,wFAAwF,GACxF,6EACJ,CAAC;IACH;EACF,CAAC,MAAM,IAAI,OAAO5D,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,IAAI,EAAE;IACxDyD,UAAU,GAAGzD,MAAM,CAAC6D,OAAO;IAC3BL,SAAS,GAAGM,OAAO,CAAC9D,MAAM,CAACwD,SAAS,CAAC;EACvC,CAAC,MAAM;IACLC,UAAU,GAAGzD,MAAoD;EACnE;EAEA,MAAM6D,OAAO,GAAGJ,UAAU,GAAGM,OAAM,CAACC,MAAM,CAACC,MAAM,CAACR,UAAU,CAAC,CAAC,GAAG,KAAK;EAEtE,IAAII,OAAO,EAAE;IACX,IAAIN,WAAW,EAAE;MAiBR;QACL,IAAIM,OAAO,CAACK,KAAK,GAAG,CAAC,IAAIL,OAAO,CAACK,KAAK,GAAG,CAAC,EAAE;UAC1C,MAAM,IAAIC,UAAU,CAClB,wEAAwE,GACtE,6CACJ,CAAC;QACH;MACF;IACF,CAAC,MAAM;MACLR,OAAO,CAACC,IAAI,CACV,sHACF,CAAC;IACH;EACF;EAEA,OAAO;IAAEC,OAAO;IAAEL;EAAU,CAAC;AAC/B;AAEe,SAASY,gBAAgBA,CAACC,IAAa,EAAE;EACtDjF,CAAC,CAACkF,uBAAuB,CAACD,IAAI,EAAEE,wBAAe,CAAC;EAEhD,MAAMhB,WAAW,GAAGJ,yBAAyB,CAACkB,IAAI,CAACd,WAAW,CAAC;EAE/D,MAAMvD,MAAM,GAAGsD,qBAAqB,CAACe,IAAI,CAACrE,MAAM,EAAEuD,WAAW,CAAC;EAE9D,MAAMpB,OAAO,GAAGjB,yBAAyB,CACvCmD,IAAI,CAAClC,OAAO,EACZoC,wBAAe,CAACpC,OAAO,EACvB,CAAC,CAACnC,MAAM,CAAC6D,OAAO,IAAI7D,MAAM,CAAC6D,OAAO,CAACK,KACrC,CAAC;EAED,MAAM9B,OAAO,GAAGlB,yBAAyB,CACvCmD,IAAI,CAACjC,OAAO,EACZmC,wBAAe,CAACnC,OAAO,EACvB,CAAC,CAACpC,MAAM,CAAC6D,OAAO,IAAI7D,MAAM,CAAC6D,OAAO,CAACK,KACrC,CAAC;EAEDhC,6BAA6B,CAACC,OAAO,EAAEC,OAAO,CAAC;EAEZ;IACjChD,CAAC,CAACoF,qBAAqB,CAAC,OAAO,EAAEH,IAAI,CAACI,KAAK,CAAC;IAC5CrF,CAAC,CAACoF,qBAAqB,CAAC,MAAM,EAAEH,IAAI,CAACK,IAAI,CAAC;EAC5C;EAEA,OAAO;IACLC,QAAQ,EAAEvF,CAAC,CAACoF,qBAAqB,CAC/BD,wBAAe,CAACI,QAAQ,EACxBN,IAAI,CAACM,QAAQ,EACyB,KACxC,CAAC;IACDC,UAAU,EAAExF,CAAC,CAACyF,oBAAoB,CAChCN,wBAAe,CAACK,UAAU,EAC1BP,IAAI,CAACO,UAAU,EACfE,OAAO,CAACC,GAAG,CAAC,CACd,CAAC;IACD/E,MAAM;IACNgF,KAAK,EAAE5F,CAAC,CAACoF,qBAAqB,CAACD,wBAAe,CAACS,KAAK,EAAEX,IAAI,CAACW,KAAK,EAAE,KAAK,CAAC;IACxE7C,OAAO;IACPC,OAAO;IACP6C,kBAAkB,EAAE7F,CAAC,CAACoF,qBAAqB,CACzCD,wBAAe,CAACU,kBAAkB,EAClCZ,IAAI,CAACY,kBAAkB,EACvB,KACF,CAAC;IACDC,wBAAwB,EAAE9F,CAAC,CAACoF,qBAAqB,CAC/CD,wBAAe,CAACW,wBAAwB,EACxCb,IAAI,CAACa,wBAAwB,EAC7B,KACF,CAAC;IACDC,OAAO,EAAEtC,qBAAqB,CAACwB,IAAI,CAACc,OAAO,CAAC;IAC5CC,gBAAgB,EAAEhG,CAAC,CAACoF,qBAAqB,CACvCD,wBAAe,CAACa,gBAAgB,EAChCf,IAAI,CAACe,gBAAgB,EACrB,KACF,CAAC;IACD3C,OAAO,EAAED,gBAAgB,CAAC6B,IAAI,CAAC5B,OAAO,CAAC;IACvCc,WAAW,EAAEA,WAAW;IACxB8B,eAAe,EAAEjG,CAAC,CAACyF,oBAAoB,CACrCN,wBAAe,CAACc,eAAe,EAC/BhB,IAAI,CAACgB,eACP;EACF,CAAC;AACH","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/options.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/options.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,43 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.UseBuiltInsOption = exports.TopLevelOptions = exports.ModulesOption = void 0;
+const TopLevelOptions = exports.TopLevelOptions = {
+  bugfixes: "bugfixes",
+  configPath: "configPath",
+  corejs: "corejs",
+  debug: "debug",
+  exclude: "exclude",
+  forceAllTransforms: "forceAllTransforms",
+  ignoreBrowserslistConfig: "ignoreBrowserslistConfig",
+  include: "include",
+  modules: "modules",
+  shippedProposals: "shippedProposals",
+  targets: "targets",
+  useBuiltIns: "useBuiltIns",
+  browserslistEnv: "browserslistEnv"
+};
+{
+  Object.assign(TopLevelOptions, {
+    loose: "loose",
+    spec: "spec"
+  });
+}
+const ModulesOption = exports.ModulesOption = {
+  false: false,
+  auto: "auto",
+  amd: "amd",
+  commonjs: "commonjs",
+  cjs: "cjs",
+  systemjs: "systemjs",
+  umd: "umd"
+};
+const UseBuiltInsOption = exports.UseBuiltInsOption = {
+  false: false,
+  entry: "entry",
+  usage: "usage"
+};
+
+//# sourceMappingURL=options.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/options.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/options.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/options.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["TopLevelOptions","exports","bugfixes","configPath","corejs","debug","exclude","forceAllTransforms","ignoreBrowserslistConfig","include","modules","shippedProposals","targets","useBuiltIns","browserslistEnv","Object","assign","loose","spec","ModulesOption","false","auto","amd","commonjs","cjs","systemjs","umd","UseBuiltInsOption","entry","usage"],"sources":["../src/options.ts"],"sourcesContent":["export const TopLevelOptions = {\n  bugfixes: \"bugfixes\",\n  configPath: \"configPath\",\n  corejs: \"corejs\",\n  debug: \"debug\",\n  exclude: \"exclude\",\n  forceAllTransforms: \"forceAllTransforms\",\n  ignoreBrowserslistConfig: \"ignoreBrowserslistConfig\",\n  include: \"include\",\n  modules: \"modules\",\n  shippedProposals: \"shippedProposals\",\n  targets: \"targets\",\n  useBuiltIns: \"useBuiltIns\",\n  browserslistEnv: \"browserslistEnv\",\n} as const;\n\nif (!process.env.BABEL_8_BREAKING) {\n  Object.assign(TopLevelOptions, {\n    loose: \"loose\",\n    spec: \"spec\",\n  });\n}\n\nexport const ModulesOption = {\n  false: false,\n  auto: \"auto\",\n  amd: \"amd\",\n  commonjs: \"commonjs\",\n  cjs: \"cjs\",\n  systemjs: \"systemjs\",\n  umd: \"umd\",\n} as const;\n\nexport const UseBuiltInsOption = {\n  false: false,\n  entry: \"entry\",\n  usage: \"usage\",\n} as const;\n"],"mappings":";;;;;;AAAO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC7BE,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,MAAM,EAAE,QAAQ;EAChBC,KAAK,EAAE,OAAO;EACdC,OAAO,EAAE,SAAS;EAClBC,kBAAkB,EAAE,oBAAoB;EACxCC,wBAAwB,EAAE,0BAA0B;EACpDC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,gBAAgB,EAAE,kBAAkB;EACpCC,OAAO,EAAE,SAAS;EAClBC,WAAW,EAAE,aAAa;EAC1BC,eAAe,EAAE;AACnB,CAAU;AAEyB;EACjCC,MAAM,CAACC,MAAM,CAAChB,eAAe,EAAE;IAC7BiB,KAAK,EAAE,OAAO;IACdC,IAAI,EAAE;EACR,CAAC,CAAC;AACJ;AAEO,MAAMC,aAAa,GAAAlB,OAAA,CAAAkB,aAAA,GAAG;EAC3BC,KAAK,EAAE,KAAK;EACZC,IAAI,EAAE,MAAM;EACZC,GAAG,EAAE,KAAK;EACVC,QAAQ,EAAE,UAAU;EACpBC,GAAG,EAAE,KAAK;EACVC,QAAQ,EAAE,UAAU;EACpBC,GAAG,EAAE;AACP,CAAU;AAEH,MAAMC,iBAAiB,GAAA1B,OAAA,CAAA0B,iBAAA,GAAG;EAC/BP,KAAK,EAAE,KAAK;EACZQ,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAU","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/plugins-compat-data.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/plugins-compat-data.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/plugins-compat-data.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.pluginsBugfixes = exports.plugins = exports.overlappingPlugins = void 0;
+var _plugins = require("@babel/compat-data/plugins");
+var _pluginBugfixes = require("@babel/compat-data/plugin-bugfixes");
+var _overlappingPlugins = require("@babel/compat-data/overlapping-plugins");
+var _availablePlugins = require("./available-plugins.js");
+const keys = Object.keys;
+const plugins = exports.plugins = filterAvailable(_plugins);
+const pluginsBugfixes = exports.pluginsBugfixes = filterAvailable(_pluginBugfixes);
+const overlappingPlugins = exports.overlappingPlugins = filterAvailable(_overlappingPlugins);
+{
+  overlappingPlugins["syntax-import-attributes"] = ["syntax-import-assertions"];
+}
+function filterAvailable(data) {
+  const result = {};
+  for (const plugin of keys(data)) {
+    if (hasOwnProperty.call(_availablePlugins.default, plugin)) {
+      result[plugin] = data[plugin];
+    }
+  }
+  return result;
+}
+
+//# sourceMappingURL=plugins-compat-data.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/plugins-compat-data.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/plugins-compat-data.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/plugins-compat-data.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_plugins","require","_pluginBugfixes","_overlappingPlugins","_availablePlugins","keys","Object","plugins","exports","filterAvailable","originalPlugins","pluginsBugfixes","originalPluginsBugfixes","overlappingPlugins","originalOverlappingPlugins","data","result","plugin","hasOwnProperty","call","availablePlugins"],"sources":["../src/plugins-compat-data.ts"],"sourcesContent":["import originalPlugins from \"@babel/compat-data/plugins\";\nimport originalPluginsBugfixes from \"@babel/compat-data/plugin-bugfixes\";\nimport originalOverlappingPlugins from \"@babel/compat-data/overlapping-plugins\";\nimport availablePlugins from \"./available-plugins.ts\";\n\nconst keys: <O extends object>(o: O) => (keyof O)[] = Object.keys;\n\nexport const plugins = filterAvailable(originalPlugins);\nexport const pluginsBugfixes = filterAvailable(originalPluginsBugfixes);\nexport const overlappingPlugins = filterAvailable(originalOverlappingPlugins);\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error: we extend this here, since it's a syntax plugin and thus\n  // doesn't make sense to store it in a compat-data package.\n  overlappingPlugins[\"syntax-import-attributes\"] = [\"syntax-import-assertions\"];\n}\n\nfunction filterAvailable<Data extends { [name: string]: unknown }>(\n  data: Data,\n): { [Name in keyof Data & keyof typeof availablePlugins]: Data[Name] } {\n  const result = {} as any;\n  for (const plugin of keys(data)) {\n    if (Object.hasOwn(availablePlugins, plugin)) {\n      result[plugin] = data[plugin];\n    }\n  }\n  return result;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAEA,MAAMI,IAA6C,GAAGC,MAAM,CAACD,IAAI;AAE1D,MAAME,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAGE,eAAe,CAACC,QAAe,CAAC;AAChD,MAAMC,eAAe,GAAAH,OAAA,CAAAG,eAAA,GAAGF,eAAe,CAACG,eAAuB,CAAC;AAChE,MAAMC,kBAAkB,GAAAL,OAAA,CAAAK,kBAAA,GAAGJ,eAAe,CAACK,mBAA0B,CAAC;AAE1C;EAGjCD,kBAAkB,CAAC,0BAA0B,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC/E;AAEA,SAASJ,eAAeA,CACtBM,IAAU,EAC4D;EACtE,MAAMC,MAAM,GAAG,CAAC,CAAQ;EACxB,KAAK,MAAMC,MAAM,IAAIZ,IAAI,CAACU,IAAI,CAAC,EAAE;IAC/B,IAAIG,cAAA,CAAAC,IAAA,CAAcC,yBAAgB,EAAEH,MAAM,CAAC,EAAE;MAC3CD,MAAM,CAACC,MAAM,CAAC,GAAGF,IAAI,CAACE,MAAM,CAAC;IAC/B;EACF;EACA,OAAOD,MAAM;AACf","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-7-plugins.cjs
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-7-plugins.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-7-plugins.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,21 @@
+{
+  Object.defineProperties(exports, {
+    pluginCoreJS2: {
+      get: () => require("babel-plugin-polyfill-corejs2").default
+    },
+    pluginRegenerator: {
+      get: () => require("babel-plugin-polyfill-regenerator").default
+    },
+    legacyBabelPolyfillPlugin: {
+      get: () => require("./babel-polyfill.cjs")
+    },
+    removeRegeneratorEntryPlugin: {
+      get: () => require("./regenerator.cjs")
+    },
+    corejs2Polyfills: {
+      get: () => require("@babel/compat-data/corejs2-built-ins")
+    }
+  });
+}
+
+//# sourceMappingURL=babel-7-plugins.cjs.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-7-plugins.cjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-7-plugins.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-7-plugins.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["Object","defineProperties","exports","pluginCoreJS2","get","require","default","pluginRegenerator","legacyBabelPolyfillPlugin","removeRegeneratorEntryPlugin","corejs2Polyfills"],"sources":["../../src/polyfills/babel-7-plugins.cjs"],"sourcesContent":["// TODO(Babel 8): Remove this file\n\nif (!process.env.BABEL_8_BREAKING) {\n  Object.defineProperties(exports, {\n    pluginCoreJS2: {\n      get: () => require(\"babel-plugin-polyfill-corejs2\").default,\n    },\n    pluginRegenerator: {\n      get: () => require(\"babel-plugin-polyfill-regenerator\").default,\n    },\n    legacyBabelPolyfillPlugin: { get: () => require(\"./babel-polyfill.cjs\") },\n    removeRegeneratorEntryPlugin: { get: () => require(\"./regenerator.cjs\") },\n    corejs2Polyfills: {\n      get: () => require(\"@babel/compat-data/corejs2-built-ins\"),\n    },\n  });\n}\n"],"mappings":"AAEmC;EACjCA,MAAM,CAACC,gBAAgB,CAACC,OAAO,EAAE;IAC/BC,aAAa,EAAE;MACbC,GAAG,EAAEA,CAAA,KAAMC,OAAO,CAAC,+BAA+B,CAAC,CAACC;IACtD,CAAC;IACDC,iBAAiB,EAAE;MACjBH,GAAG,EAAEA,CAAA,KAAMC,OAAO,CAAC,mCAAmC,CAAC,CAACC;IAC1D,CAAC;IACDE,yBAAyB,EAAE;MAAEJ,GAAG,EAAEA,CAAA,KAAMC,OAAO,CAAC,sBAAsB;IAAE,CAAC;IACzEI,4BAA4B,EAAE;MAAEL,GAAG,EAAEA,CAAA,KAAMC,OAAO,CAAC,mBAAmB;IAAE,CAAC;IACzEK,gBAAgB,EAAE;MAChBN,GAAG,EAAEA,CAAA,KAAMC,OAAO,CAAC,sCAAsC;IAC3D;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.cjs
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,69 @@
+;
+const {
+  getImportSource,
+  getRequireSource,
+  isPolyfillSource
+} = require("./utils.cjs");
+const BABEL_POLYFILL_DEPRECATION = `
+  \`@babel/polyfill\` is deprecated. Please, use required parts of \`core-js\`
+  and \`regenerator-runtime/runtime\` separately`;
+const NO_DIRECT_POLYFILL_IMPORT = `
+  When setting \`useBuiltIns: 'usage'\`, polyfills are automatically imported when needed.
+  Please remove the direct import of \`SPECIFIER\` or use \`useBuiltIns: 'entry'\` instead.`;
+module.exports = function ({
+  template
+}, {
+  regenerator,
+  deprecated,
+  usage
+}) {
+  return {
+    name: "preset-env/replace-babel-polyfill",
+    visitor: {
+      ImportDeclaration(path) {
+        const src = getImportSource(path);
+        if (usage && isPolyfillSource(src)) {
+          console.warn(NO_DIRECT_POLYFILL_IMPORT.replace("SPECIFIER", src));
+          if (!deprecated) path.remove();
+        } else if (src === "@babel/polyfill") {
+          if (deprecated) {
+            console.warn(BABEL_POLYFILL_DEPRECATION);
+          } else if (regenerator) {
+            path.replaceWithMultiple(template.ast`
+              import "core-js";
+              import "regenerator-runtime/runtime.js";
+            `);
+          } else {
+            path.replaceWith(template.ast`
+              import "core-js";
+            `);
+          }
+        }
+      },
+      Program(path) {
+        path.get("body").forEach(bodyPath => {
+          const src = getRequireSource(bodyPath);
+          if (usage && isPolyfillSource(src)) {
+            console.warn(NO_DIRECT_POLYFILL_IMPORT.replace("SPECIFIER", src));
+            if (!deprecated) bodyPath.remove();
+          } else if (src === "@babel/polyfill") {
+            if (deprecated) {
+              console.warn(BABEL_POLYFILL_DEPRECATION);
+            } else if (regenerator) {
+              bodyPath.replaceWithMultiple(template.ast`
+                require("core-js");
+                require("regenerator-runtime/runtime.js");
+              `);
+            } else {
+              bodyPath.replaceWith(template.ast`
+                require("core-js");
+              `);
+            }
+          }
+        });
+      }
+    }
+  };
+};
+
+//# sourceMappingURL=babel-polyfill.cjs.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.cjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/babel-polyfill.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["getImportSource","getRequireSource","isPolyfillSource","require","BABEL_POLYFILL_DEPRECATION","NO_DIRECT_POLYFILL_IMPORT","module","exports","template","regenerator","deprecated","usage","name","visitor","ImportDeclaration","path","src","console","warn","replace","remove","replaceWithMultiple","ast","replaceWith","Program","get","forEach","bodyPath"],"sources":["../../src/polyfills/babel-polyfill.cjs"],"sourcesContent":["// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nconst {\n  getImportSource,\n  getRequireSource,\n  isPolyfillSource,\n} = require(\"./utils.cjs\");\n\nconst BABEL_POLYFILL_DEPRECATION = `\n  \\`@babel/polyfill\\` is deprecated. Please, use required parts of \\`core-js\\`\n  and \\`regenerator-runtime/runtime\\` separately`;\n\nconst NO_DIRECT_POLYFILL_IMPORT = `\n  When setting \\`useBuiltIns: 'usage'\\`, polyfills are automatically imported when needed.\n  Please remove the direct import of \\`SPECIFIER\\` or use \\`useBuiltIns: 'entry'\\` instead.`;\n\nmodule.exports = function ({ template }, { regenerator, deprecated, usage }) {\n  return {\n    name: \"preset-env/replace-babel-polyfill\",\n    visitor: {\n      ImportDeclaration(path) {\n        const src = getImportSource(path);\n        if (usage && isPolyfillSource(src)) {\n          console.warn(NO_DIRECT_POLYFILL_IMPORT.replace(\"SPECIFIER\", src));\n          if (!deprecated) path.remove();\n        } else if (src === \"@babel/polyfill\") {\n          if (deprecated) {\n            console.warn(BABEL_POLYFILL_DEPRECATION);\n          } else if (regenerator) {\n            path.replaceWithMultiple(template.ast`\n              import \"core-js\";\n              import \"regenerator-runtime/runtime.js\";\n            `);\n          } else {\n            path.replaceWith(template.ast`\n              import \"core-js\";\n            `);\n          }\n        }\n      },\n      Program(path) {\n        path.get(\"body\").forEach(bodyPath => {\n          const src = getRequireSource(bodyPath);\n          if (usage && isPolyfillSource(src)) {\n            console.warn(NO_DIRECT_POLYFILL_IMPORT.replace(\"SPECIFIER\", src));\n            if (!deprecated) bodyPath.remove();\n          } else if (src === \"@babel/polyfill\") {\n            if (deprecated) {\n              console.warn(BABEL_POLYFILL_DEPRECATION);\n            } else if (regenerator) {\n              bodyPath.replaceWithMultiple(template.ast`\n                require(\"core-js\");\n                require(\"regenerator-runtime/runtime.js\");\n              `);\n            } else {\n              bodyPath.replaceWith(template.ast`\n                require(\"core-js\");\n              `);\n            }\n          }\n        });\n      },\n    },\n  };\n};\n"],"mappings":";AAOA,MAAM;EACJA,eAAe;EACfC,gBAAgB;EAChBC;AACF,CAAC,GAAGC,OAAO,CAAC,aAAa,CAAC;AAE1B,MAAMC,0BAA0B,GAAG;AACnC;AACA,iDAAiD;AAEjD,MAAMC,yBAAyB,GAAG;AAClC;AACA,4FAA4F;AAE5FC,MAAM,CAACC,OAAO,GAAG,UAAU;EAAEC;AAAS,CAAC,EAAE;EAAEC,WAAW;EAAEC,UAAU;EAAEC;AAAM,CAAC,EAAE;EAC3E,OAAO;IACLC,IAAI,EAAE,mCAAmC;IACzCC,OAAO,EAAE;MACPC,iBAAiBA,CAACC,IAAI,EAAE;QACtB,MAAMC,GAAG,GAAGhB,eAAe,CAACe,IAAI,CAAC;QACjC,IAAIJ,KAAK,IAAIT,gBAAgB,CAACc,GAAG,CAAC,EAAE;UAClCC,OAAO,CAACC,IAAI,CAACb,yBAAyB,CAACc,OAAO,CAAC,WAAW,EAAEH,GAAG,CAAC,CAAC;UACjE,IAAI,CAACN,UAAU,EAAEK,IAAI,CAACK,MAAM,CAAC,CAAC;QAChC,CAAC,MAAM,IAAIJ,GAAG,KAAK,iBAAiB,EAAE;UACpC,IAAIN,UAAU,EAAE;YACdO,OAAO,CAACC,IAAI,CAACd,0BAA0B,CAAC;UAC1C,CAAC,MAAM,IAAIK,WAAW,EAAE;YACtBM,IAAI,CAACM,mBAAmB,CAACb,QAAQ,CAACc,GAAG;AACjD;AACA;AACA,aAAa,CAAC;UACJ,CAAC,MAAM;YACLP,IAAI,CAACQ,WAAW,CAACf,QAAQ,CAACc,GAAG;AACzC;AACA,aAAa,CAAC;UACJ;QACF;MACF,CAAC;MACDE,OAAOA,CAACT,IAAI,EAAE;QACZA,IAAI,CAACU,GAAG,CAAC,MAAM,CAAC,CAACC,OAAO,CAACC,QAAQ,IAAI;UACnC,MAAMX,GAAG,GAAGf,gBAAgB,CAAC0B,QAAQ,CAAC;UACtC,IAAIhB,KAAK,IAAIT,gBAAgB,CAACc,GAAG,CAAC,EAAE;YAClCC,OAAO,CAACC,IAAI,CAACb,yBAAyB,CAACc,OAAO,CAAC,WAAW,EAAEH,GAAG,CAAC,CAAC;YACjE,IAAI,CAACN,UAAU,EAAEiB,QAAQ,CAACP,MAAM,CAAC,CAAC;UACpC,CAAC,MAAM,IAAIJ,GAAG,KAAK,iBAAiB,EAAE;YACpC,IAAIN,UAAU,EAAE;cACdO,OAAO,CAACC,IAAI,CAACd,0BAA0B,CAAC;YAC1C,CAAC,MAAM,IAAIK,WAAW,EAAE;cACtBkB,QAAQ,CAACN,mBAAmB,CAACb,QAAQ,CAACc,GAAG;AACvD;AACA;AACA,eAAe,CAAC;YACJ,CAAC,MAAM;cACLK,QAAQ,CAACJ,WAAW,CAACf,QAAQ,CAACc,GAAG;AAC/C;AACA,eAAe,CAAC;YACJ;UACF;QACF,CAAC,CAAC;MACJ;IACF;EACF,CAAC;AACH,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/regenerator.cjs
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/regenerator.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/regenerator.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,44 @@
+;
+const {
+  getImportSource,
+  getRequireSource
+} = require("./utils.cjs");
+function isRegeneratorSource(source) {
+  return source === "regenerator-runtime/runtime" || source === "regenerator-runtime/runtime.js";
+}
+module.exports = function () {
+  const visitor = {
+    ImportDeclaration(path) {
+      if (isRegeneratorSource(getImportSource(path))) {
+        this.regeneratorImportExcluded = true;
+        path.remove();
+      }
+    },
+    Program(path) {
+      path.get("body").forEach(bodyPath => {
+        if (isRegeneratorSource(getRequireSource(bodyPath))) {
+          this.regeneratorImportExcluded = true;
+          bodyPath.remove();
+        }
+      });
+    }
+  };
+  return {
+    name: "preset-env/remove-regenerator",
+    visitor,
+    pre() {
+      this.regeneratorImportExcluded = false;
+    },
+    post() {
+      if (this.opts.debug && this.regeneratorImportExcluded) {
+        let filename = this.file.opts.filename;
+        if (process.env.BABEL_ENV === "test") {
+          filename = filename.replace(/\\/g, "/");
+        }
+        console.log(`\n[${filename}] Based on your targets, regenerator-runtime import excluded.`);
+      }
+    }
+  };
+};
+
+//# sourceMappingURL=regenerator.cjs.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/regenerator.cjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/regenerator.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/regenerator.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["getImportSource","getRequireSource","require","isRegeneratorSource","source","module","exports","visitor","ImportDeclaration","path","regeneratorImportExcluded","remove","Program","get","forEach","bodyPath","name","pre","post","opts","debug","filename","file","process","env","BABEL_ENV","replace","console","log"],"sources":["../../src/polyfills/regenerator.cjs"],"sourcesContent":["// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nconst { getImportSource, getRequireSource } = require(\"./utils.cjs\");\n\nfunction isRegeneratorSource(source) {\n  return (\n    source === \"regenerator-runtime/runtime\" ||\n    source === \"regenerator-runtime/runtime.js\"\n  );\n}\n\nmodule.exports = function () {\n  const visitor = {\n    ImportDeclaration(path) {\n      if (isRegeneratorSource(getImportSource(path))) {\n        this.regeneratorImportExcluded = true;\n        path.remove();\n      }\n    },\n    Program(path) {\n      path.get(\"body\").forEach(bodyPath => {\n        if (isRegeneratorSource(getRequireSource(bodyPath))) {\n          this.regeneratorImportExcluded = true;\n          bodyPath.remove();\n        }\n      });\n    },\n  };\n\n  return {\n    name: \"preset-env/remove-regenerator\",\n    visitor,\n    pre() {\n      this.regeneratorImportExcluded = false;\n    },\n    post() {\n      if (this.opts.debug && this.regeneratorImportExcluded) {\n        let filename = this.file.opts.filename;\n        // normalize filename to generate consistent preset-env test fixtures\n        if (process.env.BABEL_ENV === \"test\") {\n          filename = filename.replace(/\\\\/g, \"/\");\n        }\n        console.log(\n          `\\n[${filename}] Based on your targets, regenerator-runtime import excluded.`,\n        );\n      }\n    },\n  };\n};\n"],"mappings":";AAOA,MAAM;EAAEA,eAAe;EAAEC;AAAiB,CAAC,GAAGC,OAAO,CAAC,aAAa,CAAC;AAEpE,SAASC,mBAAmBA,CAACC,MAAM,EAAE;EACnC,OACEA,MAAM,KAAK,6BAA6B,IACxCA,MAAM,KAAK,gCAAgC;AAE/C;AAEAC,MAAM,CAACC,OAAO,GAAG,YAAY;EAC3B,MAAMC,OAAO,GAAG;IACdC,iBAAiBA,CAACC,IAAI,EAAE;MACtB,IAAIN,mBAAmB,CAACH,eAAe,CAACS,IAAI,CAAC,CAAC,EAAE;QAC9C,IAAI,CAACC,yBAAyB,GAAG,IAAI;QACrCD,IAAI,CAACE,MAAM,CAAC,CAAC;MACf;IACF,CAAC;IACDC,OAAOA,CAACH,IAAI,EAAE;MACZA,IAAI,CAACI,GAAG,CAAC,MAAM,CAAC,CAACC,OAAO,CAACC,QAAQ,IAAI;QACnC,IAAIZ,mBAAmB,CAACF,gBAAgB,CAACc,QAAQ,CAAC,CAAC,EAAE;UACnD,IAAI,CAACL,yBAAyB,GAAG,IAAI;UACrCK,QAAQ,CAACJ,MAAM,CAAC,CAAC;QACnB;MACF,CAAC,CAAC;IACJ;EACF,CAAC;EAED,OAAO;IACLK,IAAI,EAAE,+BAA+B;IACrCT,OAAO;IACPU,GAAGA,CAAA,EAAG;MACJ,IAAI,CAACP,yBAAyB,GAAG,KAAK;IACxC,CAAC;IACDQ,IAAIA,CAAA,EAAG;MACL,IAAI,IAAI,CAACC,IAAI,CAACC,KAAK,IAAI,IAAI,CAACV,yBAAyB,EAAE;QACrD,IAAIW,QAAQ,GAAG,IAAI,CAACC,IAAI,CAACH,IAAI,CAACE,QAAQ;QAEtC,IAAIE,OAAO,CAACC,GAAG,CAACC,SAAS,KAAK,MAAM,EAAE;UACpCJ,QAAQ,GAAGA,QAAQ,CAACK,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QACzC;QACAC,OAAO,CAACC,GAAG,CACT,MAAMP,QAAQ,+DAChB,CAAC;MACH;IACF;EACF,CAAC;AACH,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/utils.cjs
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/utils.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/utils.cjs	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+;
+exports.getImportSource = function ({
+  node
+}) {
+  if (node.specifiers.length === 0) return node.source.value;
+};
+exports.getRequireSource = function ({
+  node
+}) {
+  if (node.type !== "ExpressionStatement") return;
+  const {
+    expression
+  } = node;
+  if (expression.type === "CallExpression" && expression.callee.type === "Identifier" && expression.callee.name === "require" && expression.arguments.length === 1 && expression.arguments[0].type === "StringLiteral") {
+    return expression.arguments[0].value;
+  }
+};
+exports.isPolyfillSource = function (source) {
+  return source === "@babel/polyfill" || source === "core-js";
+};
+
+//# sourceMappingURL=utils.cjs.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/utils.cjs.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/utils.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/polyfills/utils.cjs.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["exports","getImportSource","node","specifiers","length","source","value","getRequireSource","type","expression","callee","name","arguments","isPolyfillSource"],"sources":["../../src/polyfills/utils.cjs"],"sourcesContent":["// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nexports.getImportSource = function ({ node }) {\n  if (node.specifiers.length === 0) return node.source.value;\n};\n\nexports.getRequireSource = function ({ node }) {\n  if (node.type !== \"ExpressionStatement\") return;\n  const { expression } = node;\n  if (\n    expression.type === \"CallExpression\" &&\n    expression.callee.type === \"Identifier\" &&\n    expression.callee.name === \"require\" &&\n    expression.arguments.length === 1 &&\n    expression.arguments[0].type === \"StringLiteral\"\n  ) {\n    return expression.arguments[0].value;\n  }\n};\n\nexports.isPolyfillSource = function (source) {\n  return source === \"@babel/polyfill\" || source === \"core-js\";\n};\n"],"mappings":";AAOAA,OAAO,CAACC,eAAe,GAAG,UAAU;EAAEC;AAAK,CAAC,EAAE;EAC5C,IAAIA,IAAI,CAACC,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE,OAAOF,IAAI,CAACG,MAAM,CAACC,KAAK;AAC5D,CAAC;AAEDN,OAAO,CAACO,gBAAgB,GAAG,UAAU;EAAEL;AAAK,CAAC,EAAE;EAC7C,IAAIA,IAAI,CAACM,IAAI,KAAK,qBAAqB,EAAE;EACzC,MAAM;IAAEC;EAAW,CAAC,GAAGP,IAAI;EAC3B,IACEO,UAAU,CAACD,IAAI,KAAK,gBAAgB,IACpCC,UAAU,CAACC,MAAM,CAACF,IAAI,KAAK,YAAY,IACvCC,UAAU,CAACC,MAAM,CAACC,IAAI,KAAK,SAAS,IACpCF,UAAU,CAACG,SAAS,CAACR,MAAM,KAAK,CAAC,IACjCK,UAAU,CAACG,SAAS,CAAC,CAAC,CAAC,CAACJ,IAAI,KAAK,eAAe,EAChD;IACA,OAAOC,UAAU,CAACG,SAAS,CAAC,CAAC,CAAC,CAACN,KAAK;EACtC;AACF,CAAC;AAEDN,OAAO,CAACa,gBAAgB,GAAG,UAAUR,MAAM,EAAE;EAC3C,OAAOA,MAAM,KAAK,iBAAiB,IAAIA,MAAM,KAAK,SAAS;AAC7D,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/shipped-proposals.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/shipped-proposals.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/shipped-proposals.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.proposalSyntaxPlugins = exports.proposalPlugins = exports.pluginSyntaxMap = void 0;
+const proposalPlugins = exports.proposalPlugins = new Set([]);
+const proposalSyntaxPlugins = exports.proposalSyntaxPlugins = ["syntax-import-assertions", "syntax-import-attributes"];
+const pluginSyntaxObject = {
+  "transform-async-generator-functions": "syntax-async-generators",
+  "transform-class-properties": "syntax-class-properties",
+  "transform-class-static-block": "syntax-class-static-block",
+  "transform-export-namespace-from": "syntax-export-namespace-from",
+  "transform-json-strings": "syntax-json-strings",
+  "transform-nullish-coalescing-operator": "syntax-nullish-coalescing-operator",
+  "transform-numeric-separator": "syntax-numeric-separator",
+  "transform-object-rest-spread": "syntax-object-rest-spread",
+  "transform-optional-catch-binding": "syntax-optional-catch-binding",
+  "transform-optional-chaining": "syntax-optional-chaining",
+  "transform-private-methods": "syntax-class-properties",
+  "transform-private-property-in-object": "syntax-private-property-in-object",
+  "transform-unicode-property-regex": null
+};
+const pluginSyntaxEntries = Object.keys(pluginSyntaxObject).map(function (key) {
+  return [key, pluginSyntaxObject[key]];
+});
+const pluginSyntaxMap = exports.pluginSyntaxMap = new Map(pluginSyntaxEntries);
+
+//# sourceMappingURL=shipped-proposals.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/shipped-proposals.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/shipped-proposals.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/shipped-proposals.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["proposalPlugins","exports","Set","proposalSyntaxPlugins","pluginSyntaxObject","pluginSyntaxEntries","Object","keys","map","key","pluginSyntaxMap","Map"],"sources":["../src/shipped-proposals.ts"],"sourcesContent":["// TODO(Babel 8): Remove this file\n/* eslint sort-keys: \"error\" */\n// These mappings represent the transform plugins that have been\n// shipped by browsers, and are enabled by the `shippedProposals` option.\n\nconst proposalPlugins = new Set<string>([]);\n\n// proposal syntax plugins enabled by the `shippedProposals` option.\n// Unlike proposalPlugins above, they are independent of compiler targets.\nconst proposalSyntaxPlugins = process.env.BABEL_8_BREAKING\n  ? ([] as const)\n  : ([\"syntax-import-assertions\", \"syntax-import-attributes\"] as const);\n\n// use intermediary object to enforce alphabetical key order\nconst pluginSyntaxObject = process.env.BABEL_8_BREAKING\n  ? {}\n  : ({\n      \"transform-async-generator-functions\": \"syntax-async-generators\",\n      \"transform-class-properties\": \"syntax-class-properties\",\n      \"transform-class-static-block\": \"syntax-class-static-block\",\n      \"transform-export-namespace-from\": \"syntax-export-namespace-from\",\n      \"transform-json-strings\": \"syntax-json-strings\",\n      \"transform-nullish-coalescing-operator\":\n        \"syntax-nullish-coalescing-operator\",\n      \"transform-numeric-separator\": \"syntax-numeric-separator\",\n      \"transform-object-rest-spread\": \"syntax-object-rest-spread\",\n      \"transform-optional-catch-binding\": \"syntax-optional-catch-binding\",\n      \"transform-optional-chaining\": \"syntax-optional-chaining\",\n      // note: we don't have syntax-private-methods\n      \"transform-private-methods\": \"syntax-class-properties\",\n      \"transform-private-property-in-object\":\n        \"syntax-private-property-in-object\",\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n      \"transform-unicode-property-regex\": null as null,\n    } as const);\n\ntype PluginSyntaxObjectKeys = keyof typeof pluginSyntaxObject;\n\nconst pluginSyntaxEntries = Object.keys(pluginSyntaxObject).map<\n  [PluginSyntaxObjectKeys, string | null]\n>(function (key: PluginSyntaxObjectKeys) {\n  return [key, pluginSyntaxObject[key]];\n});\n\nconst pluginSyntaxMap = new Map(pluginSyntaxEntries);\n\nexport { proposalPlugins, proposalSyntaxPlugins, pluginSyntaxMap };\n"],"mappings":";;;;;;AAKA,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAIE,GAAG,CAAS,EAAE,CAAC;AAI3C,MAAMC,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAEtB,CAAC,0BAA0B,EAAE,0BAA0B,CAAW;AAGvE,MAAMC,kBAAkB,GAEnB;EACC,qCAAqC,EAAE,yBAAyB;EAChE,4BAA4B,EAAE,yBAAyB;EACvD,8BAA8B,EAAE,2BAA2B;EAC3D,iCAAiC,EAAE,8BAA8B;EACjE,wBAAwB,EAAE,qBAAqB;EAC/C,uCAAuC,EACrC,oCAAoC;EACtC,6BAA6B,EAAE,0BAA0B;EACzD,8BAA8B,EAAE,2BAA2B;EAC3D,kCAAkC,EAAE,+BAA+B;EACnE,6BAA6B,EAAE,0BAA0B;EAEzD,2BAA2B,EAAE,yBAAyB;EACtD,sCAAsC,EACpC,mCAAmC;EAErC,kCAAkC,EAAE;AACtC,CAAW;AAIf,MAAMC,mBAAmB,GAAGC,MAAM,CAACC,IAAI,CAACH,kBAAkB,CAAC,CAACI,GAAG,CAE7D,UAAUC,GAA2B,EAAE;EACvC,OAAO,CAACA,GAAG,EAAEL,kBAAkB,CAACK,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAMC,eAAe,GAAAT,OAAA,CAAAS,eAAA,GAAG,IAAIC,GAAG,CAACN,mBAAmB,CAAC","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/lib/targets-parser.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/targets-parser.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/targets-parser.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,20 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+Object.defineProperty(exports, "default", {
+  enumerable: true,
+  get: function () {
+    return _helperCompilationTargets.default;
+  }
+});
+Object.defineProperty(exports, "isBrowsersQueryValid", {
+  enumerable: true,
+  get: function () {
+    return _helperCompilationTargets.isBrowsersQueryValid;
+  }
+});
+var _helperCompilationTargets = require("@babel/helper-compilation-targets");
+
+//# sourceMappingURL=targets-parser.js.map
Index: imaps-frontend/node_modules/@babel/preset-env/lib/targets-parser.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/lib/targets-parser.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/lib/targets-parser.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"names":["_helperCompilationTargets","require"],"sources":["../src/targets-parser.ts"],"sourcesContent":["// TODO: Remove in Babel 8\n\nexport {\n  default,\n  isBrowsersQueryValid,\n} from \"@babel/helper-compilation-targets\";\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA,IAAAA,yBAAA,GAAAC,OAAA","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/preset-env/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/preset-env/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-env/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,102 @@
+{
+  "name": "@babel/preset-env",
+  "version": "7.26.0",
+  "description": "A Babel preset for each environment.",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "homepage": "https://babel.dev/docs/en/next/babel-preset-env",
+  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20preset-env%22+is%3Aopen",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-preset-env"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/compat-data": "^7.26.0",
+    "@babel/helper-compilation-targets": "^7.25.9",
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-validator-option": "^7.25.9",
+    "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
+    "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
+    "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
+    "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+    "@babel/plugin-syntax-import-assertions": "^7.26.0",
+    "@babel/plugin-syntax-import-attributes": "^7.26.0",
+    "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+    "@babel/plugin-transform-arrow-functions": "^7.25.9",
+    "@babel/plugin-transform-async-generator-functions": "^7.25.9",
+    "@babel/plugin-transform-async-to-generator": "^7.25.9",
+    "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
+    "@babel/plugin-transform-block-scoping": "^7.25.9",
+    "@babel/plugin-transform-class-properties": "^7.25.9",
+    "@babel/plugin-transform-class-static-block": "^7.26.0",
+    "@babel/plugin-transform-classes": "^7.25.9",
+    "@babel/plugin-transform-computed-properties": "^7.25.9",
+    "@babel/plugin-transform-destructuring": "^7.25.9",
+    "@babel/plugin-transform-dotall-regex": "^7.25.9",
+    "@babel/plugin-transform-duplicate-keys": "^7.25.9",
+    "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
+    "@babel/plugin-transform-dynamic-import": "^7.25.9",
+    "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
+    "@babel/plugin-transform-export-namespace-from": "^7.25.9",
+    "@babel/plugin-transform-for-of": "^7.25.9",
+    "@babel/plugin-transform-function-name": "^7.25.9",
+    "@babel/plugin-transform-json-strings": "^7.25.9",
+    "@babel/plugin-transform-literals": "^7.25.9",
+    "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
+    "@babel/plugin-transform-member-expression-literals": "^7.25.9",
+    "@babel/plugin-transform-modules-amd": "^7.25.9",
+    "@babel/plugin-transform-modules-commonjs": "^7.25.9",
+    "@babel/plugin-transform-modules-systemjs": "^7.25.9",
+    "@babel/plugin-transform-modules-umd": "^7.25.9",
+    "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
+    "@babel/plugin-transform-new-target": "^7.25.9",
+    "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
+    "@babel/plugin-transform-numeric-separator": "^7.25.9",
+    "@babel/plugin-transform-object-rest-spread": "^7.25.9",
+    "@babel/plugin-transform-object-super": "^7.25.9",
+    "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
+    "@babel/plugin-transform-optional-chaining": "^7.25.9",
+    "@babel/plugin-transform-parameters": "^7.25.9",
+    "@babel/plugin-transform-private-methods": "^7.25.9",
+    "@babel/plugin-transform-private-property-in-object": "^7.25.9",
+    "@babel/plugin-transform-property-literals": "^7.25.9",
+    "@babel/plugin-transform-regenerator": "^7.25.9",
+    "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
+    "@babel/plugin-transform-reserved-words": "^7.25.9",
+    "@babel/plugin-transform-shorthand-properties": "^7.25.9",
+    "@babel/plugin-transform-spread": "^7.25.9",
+    "@babel/plugin-transform-sticky-regex": "^7.25.9",
+    "@babel/plugin-transform-template-literals": "^7.25.9",
+    "@babel/plugin-transform-typeof-symbol": "^7.25.9",
+    "@babel/plugin-transform-unicode-escapes": "^7.25.9",
+    "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
+    "@babel/plugin-transform-unicode-regex": "^7.25.9",
+    "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
+    "@babel/preset-modules": "0.1.6-no-external-plugins",
+    "babel-plugin-polyfill-corejs2": "^0.4.10",
+    "babel-plugin-polyfill-corejs3": "^0.10.6",
+    "babel-plugin-polyfill-regenerator": "^0.6.1",
+    "core-js-compat": "^3.38.1",
+    "semver": "^6.3.1"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/core-7.12": "npm:@babel/core@7.12.9",
+    "@babel/helper-plugin-test-runner": "^7.25.9",
+    "@babel/traverse": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/preset-modules/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Babel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
Index: imaps-frontend/node_modules/@babel/preset-modules/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,171 @@
+# `@babel/preset-modules`
+
+> ℹ️ Starting from `@babel/preset-env` 7.9.0, you can enable the [`bugfixes: true` option](https://babeljs.io/docs/en/babel-preset-env#bugfixes) to get the same behavior as using `@babel/preset-modules`, but with support for custom `targets`.
+> If you need to target browsers with native modules support (like this preset does), you can use `targets: { esmodules: true }`.
+
+A Babel preset that enables async/await, Tagged Templates, arrow functions, destructured and rest parameters, and more **in all modern browsers** ([88% of traffic](https://caniuse.com/#feat=es6-module)).
+
+It works around bugs and inconsistencies in modern JavaScript engines by converting broken syntax to the _closest non-broken modern syntax_.  Use this in place of `@babel/preset-env`'s [target.esmodules](https://babeljs.io/docs/en/babel-preset-env#targetsesmodules) option for smaller bundle size and improved performance.
+
+This preset is only useful for browsers. You can serve the output to modern browsers while still supporting older browsers using the [module/nomodule pattern](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/):
+
+```html
+<!-- transpiled with preset-modules: -->
+<script type="module" src="modern.js"></script>
+<!-- transpiled with preset-env: -->
+<script nomodule src="legacy.js"></script>
+```
+
+### Features Supported
+
+- JSX spread attributes are compiled to Object.assign() instead of a helper.
+- Default, destructured and optional parameters are all natively supported.
+- Tagged Templates are fully supported, patched for Safari 10+ and Edge 16+.
+- async/await is supported without being transpiled to generators.
+- Function name inference works as expected, including Arrow Functions.
+
+### Installation & Usage
+
+Install the preset from [npm](https://www.npmjs.com/package/@babel/preset-modules):
+
+```sh
+npm install @babel/preset-modules --save-dev
+```
+
+To use the preset, add it to your [Babel Configuration](https://babeljs.io/docs/en/configuration):
+
+```js
+{
+  "presets": [
+    "@babel/preset-modules"
+  ]
+}
+```
+
+If you're implementing the module/nomodule pattern, your configuration might look something like this:
+
+```js
+{
+  "env": {
+    "modern": {
+      "presets": [
+        "@babel/preset-modules"
+      ]
+    },
+    "legacy": {
+      "presets": [
+        "@babel/preset-env"
+      ]
+    }
+  }
+}
+```
+
+### Options
+
+There's a single Boolean `loose` option, which defaults to `false`. Passing `true` further reduces output size.
+
+The `loose` setting turns off a rarely-needed function name workaround for older versions of Edge. If you're not relying on `Function.prototype.name`, it's worth enabling loose mode.
+
+### How does it work?
+
+Babel’s `preset-env` is great, since it lets you define which Babel features are needed based on a browser support target. In order to make that plumbing work automatically, the preset has configuration that groups all of the new JavaScript syntax features into collections of related syntax transforms. These groups are fairly large, for example "function arguments" includes destructured, default and rest parameters. The groupings come from the fact that Babel’s transforms often rely on other transforms, so they can’t always be applied in isolation.
+
+From this grouping information, Babel enables or disables each group based on the browser support target you specify to preset-env’s [targets](https://babeljs.io/docs/en/babel-preset-env#targets) option. For modern output, the [targets.esmodules](https://babeljs.io/docs/en/babel-preset-env#targetsesmodules) option is effectively an alias for the set of browsers that support ES Modules: Edge 16+, Safari 10.1+, Firefox 60+ and Chrome 61+.
+
+Here's the problem: if any version of any browser in that list contains a bug triggered by modern syntax, the only solution we have is to enable the corresponding transform group that fixes that bug. This means that fundamentally, preset-env converts code to ES5 in order to get around syntax bugs in ES2017. Since that's the only solution at our disposal, eventually it becomes overused.
+
+For example, all of the new syntax features relating to function parameters are grouped into the same Babel plugin (`@babel/plugin-transform-function-parameters`). That means because Edge 16 & 17 support ES Modules but have a bug related to parsing shorthand destructured parameters with default values within arrow functions, all functions get compiled from the new compact argument syntaxes down to ES5:
+
+```js
+// this breaks in Edge 16:
+const foo = ({ a = 1 }) => {};
+
+// .. but this doesn't:
+function foo({ a = 1, b }, ...args) {}
+
+// ... and neither does this:
+const foo = ({ a: a = 1 }) => {};
+```
+
+In fact, there are 23 syntax improvements for function parameters in ES2017, and only one of them is broken in ES Modules-supporting browsers. It seems unfortunate to transpile all those great features down to ES5 just for one browser!
+
+This plugin takes a different approach than we've historically taken with JavaScript: it transpiles the broken syntax to the closest _non-broken modern syntax_. In the above case, here's what is generated to fix all ES Modules-supporting browsers:
+
+**input:**
+
+```js
+const foo = ({ a = 1 }, b = 2, ...args) => [a,b,args];
+```
+
+**output:**
+
+```js
+const foo = ({ a: a = 1 }, b = 2, ...args) => [a,b,args];
+```
+
+That output works in all ES Modules-supporting browsers, and is only **59 bytes** minified & gzipped.
+
+> Compare this to `@babel/preset-env`'s `targets.esmodules` output (**147 bytes** minified & gzipped):
+>
+> ```js
+>const foo = function foo(_ref, b) {
+>  let { a = 1 } = _ref;
+>
+>  if (b === void 0) { b = 2; }
+>
+>  for (
+>    var _len = arguments.length,
+>      args = new Array(_len > 2 ? _len - 2 : 0),
+>      _key = 2;  _key < _len; _key++
+>  ) {
+>    args[_key - 2] = arguments[_key];
+>  }
+>
+>  return [a, b, args];
+>};
+>````
+
+The result is improved bundle size and performance, while supporting the same browsers.
+
+
+### Important: Minification
+
+The output generated by this preset includes workarounds for Safari 10, however minifiers like Terser sometimes remove these workarounds. In order to avoid shipping broken code, it's important to tell Terser to preserve the workarounds, which can be done via the `safari10` option.
+
+It's also generally the case that minifiers are configured to output ES5 by default, so you'll want to change the output syntax to ES2017.
+
+With [Terser's Node API](https://github.com/terser/terser#minify-options):
+
+```js
+terser.minify({
+  ecma: 2017,
+  safari10: true
+})
+```
+
+With [Terser CLI](https://npm.im/terser):
+
+```sh
+terser --ecma 2017 --safari10 ...
+```
+
+With [terser-webpack-plugin](https://webpack.js.org/plugins/terser-webpack-plugin/):
+
+```js
+module.exports = {
+  optimization: {
+    minimizer: [
+      new TerserPlugin({
+        terserOptions: {
+          ecma: 2017,
+          safari10: true
+        }
+      })
+    ]
+  }
+};
+```
+
+All of the above configurations also apply to [uglify-es](https://github.com/mishoo/UglifyJS2/tree/harmony).
+UglifyJS (2.x and prior) does not support modern JavaScript, so it cannot be used in conjunction with this preset.
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,27 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _path = _interopRequireDefault(require("path"));
+
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * @babel/preset-modules produces clean, minimal output for ES Modules-supporting browsers.
+ * @param {Object} [options]
+ * @param {boolean} [options.loose=false] Loose mode skips seldom-needed transforms that increase output size.
+ */
+var _default = (0, _helperPluginUtils.declare)((api, opts) => {
+  api.assertVersion(7);
+  const loose = opts.loose === true;
+  return {
+    plugins: [_path.default.resolve(__dirname, "./plugins/transform-edge-default-parameters"), _path.default.resolve(__dirname, "./plugins/transform-tagged-template-caching"), _path.default.resolve(__dirname, "./plugins/transform-jsx-spread"), _path.default.resolve(__dirname, "./plugins/transform-safari-for-shadowing"), _path.default.resolve(__dirname, "./plugins/transform-safari-block-shadowing"), _path.default.resolve(__dirname, "./plugins/transform-async-arrows-in-class"), !loose && _path.default.resolve(__dirname, "./plugins/transform-edge-function-name"), // Proposals
+    require.resolve("@babel/plugin-proposal-unicode-property-regex"), require.resolve("@babel/plugin-transform-dotall-regex")].filter(Boolean)
+  };
+});
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-async-arrows-in-class/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,45 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/**
+ * Safari 10.3 had an issue where async arrow function expressions within any class method would throw.
+ * After an initial fix, any references to the instance via `this` within those methods would also throw.
+ * This is fixed by converting arrow functions in class methods into equivalent function expressions.
+ * @see https://bugs.webkit.org/show_bug.cgi?id=166879
+ *
+ * @example
+ *   class X{ a(){ async () => {}; } }   // throws
+ *   class X{ a(){ async function() {}; } }   // works
+ *
+ * @example
+ *   class X{ a(){
+ *     async () => this.a;   // throws
+ *   } }
+ *   class X{ a(){
+ *     var _this=this;
+ *     async function() { return _this.a };   // works
+ *   } }
+ */
+const OPTS = {
+  allowInsertArrow: false,
+  specCompliant: false
+};
+
+var _default = ({
+  types: t
+}) => ({
+  name: "transform-async-arrows-in-class",
+  visitor: {
+    ArrowFunctionExpression(path) {
+      if (path.node.async && path.findParent(t.isClassMethod)) {
+        path.arrowFunctionToExpression(OPTS);
+      }
+    }
+
+  }
+});
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-edge-default-parameters/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-edge-default-parameters/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-edge-default-parameters/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/**
+ * Converts destructured parameters with default values to non-shorthand syntax.
+ * This fixes the only arguments-related bug in ES Modules-supporting browsers (Edge 16 & 17).
+ * Use this plugin instead of @babel/plugin-transform-parameters when targeting ES Modules.
+ */
+var _default = ({
+  types: t
+}) => {
+  const isArrowParent = p => p.parentKey === "params" && p.parentPath && t.isArrowFunctionExpression(p.parentPath);
+
+  return {
+    name: "transform-edge-default-parameters",
+    visitor: {
+      AssignmentPattern(path) {
+        const arrowArgParent = path.find(isArrowParent);
+
+        if (arrowArgParent && path.parent.shorthand) {
+          // In Babel 7+, there is no way to force non-shorthand properties.
+          path.parent.shorthand = false;
+          (path.parent.extra || {}).shorthand = false; // So, to ensure non-shorthand, rename the local identifier so it no longer matches:
+
+          path.scope.rename(path.parent.key.name);
+        }
+      }
+
+    }
+  };
+};
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-edge-function-name/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-edge-function-name/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-edge-function-name/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,42 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/**
+ * Edge 16 & 17 do not infer function.name from variable assignment.
+ * All other `function.name` behavior works fine, so we can skip most of @babel/transform-function-name.
+ * @see https://kangax.github.io/compat-table/es6/#test-function_name_property_variables_(function)
+ *
+ * Note: contrary to various Github issues, Edge 16+ *does* correctly infer the name of Arrow Functions.
+ * The variable declarator name inference issue only affects function expressions, so that's all we fix here.
+ *
+ * A Note on Minification: Terser undoes this transform *by default* unless `keep_fnames` is set to true.
+ * There is by design - if Function.name is critical to your application, you must configure
+ * your minifier to preserve function names.
+ */
+var _default = ({
+  types: t
+}) => ({
+  name: "transform-edge-function-name",
+  visitor: {
+    FunctionExpression: {
+      exit(path) {
+        if (!path.node.id && t.isIdentifier(path.parent.id)) {
+          const id = t.cloneNode(path.parent.id);
+          const binding = path.scope.getBinding(id.name); // if the binding gets reassigned anywhere, rename it
+
+          if (binding == null ? void 0 : binding.constantViolations.length) {
+            path.scope.rename(id.name);
+          }
+
+          path.node.id = id;
+        }
+      }
+
+    }
+  }
+});
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-jsx-spread/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-jsx-spread/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-jsx-spread/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,115 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+var _esutils = _interopRequireDefault(require("esutils"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Converts JSX Spread arguments into Object Spread, avoiding Babel's helper or Object.assign injection.
+ * Input:
+ * 	 <div a="1" {...b} />
+ * Output:
+ *   <div {...{ a: "1", ...b }} />
+ * ...which Babel converts to:
+ *   h("div", { a: "1", ...b })
+ */
+var _default = ({
+  types: t
+}) => {
+  // converts a set of JSXAttributes to an Object.assign() call
+  function convertAttributesAssign(attributes) {
+    const args = [];
+
+    for (let i = 0, current; i < attributes.length; i++) {
+      const node = attributes[i];
+
+      if (t.isJSXSpreadAttribute(node)) {
+        // the first attribute is a spread, avoid copying all other attributes onto it
+        if (i === 0) {
+          args.push(t.objectExpression([]));
+        }
+
+        current = null;
+        args.push(node.argument);
+      } else {
+        const name = getAttributeName(node);
+        const value = getAttributeValue(node);
+
+        if (!current) {
+          current = t.objectExpression([]);
+          args.push(current);
+        }
+
+        current.properties.push(t.objectProperty(name, value));
+      }
+    }
+
+    return t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("assign")), args);
+  } // Converts a JSXAttribute to the equivalent ObjectExpression property
+
+
+  function convertAttributeSpread(node) {
+    if (t.isJSXSpreadAttribute(node)) {
+      return t.spreadElement(node.argument);
+    }
+
+    const name = getAttributeName(node);
+    const value = getAttributeValue(node);
+    return t.inherits(t.objectProperty(name, value), node);
+  } // Convert a JSX attribute name to an Object expression property name
+
+
+  function getAttributeName(node) {
+    if (t.isJSXNamespacedName(node.name)) {
+      return t.stringLiteral(node.name.namespace.name + ":" + node.name.name.name);
+    }
+
+    if (_esutils.default.keyword.isIdentifierNameES6(node.name.name)) {
+      return t.identifier(node.name.name);
+    }
+
+    return t.stringLiteral(node.name.name);
+  } // Convert a JSX attribute value to a JavaScript expression value
+
+
+  function getAttributeValue(node) {
+    let value = node.value || t.booleanLiteral(true);
+
+    if (t.isJSXExpressionContainer(value)) {
+      value = value.expression;
+    } else if (t.isStringLiteral(value)) {
+      value.value = value.value.replace(/\n\s+/g, " "); // "raw" JSXText should not be used from a StringLiteral because it needs to be escaped.
+
+      if (value.extra && value.extra.raw) {
+        delete value.extra.raw;
+      }
+    }
+
+    return value;
+  }
+
+  return {
+    name: "transform-jsx-spread",
+    visitor: {
+      JSXOpeningElement(path, state) {
+        const useSpread = state.opts.useSpread === true;
+        const hasSpread = path.node.attributes.some(attr => t.isJSXSpreadAttribute(attr)); // ignore JSX Elements without spread or with lone spread:
+
+        if (!hasSpread || path.node.attributes.length === 1) return;
+
+        if (useSpread) {
+          path.node.attributes = [t.jsxSpreadAttribute(t.objectExpression(path.node.attributes.map(convertAttributeSpread)))];
+        } else {
+          path.node.attributes = [t.jsxSpreadAttribute(convertAttributesAssign(path.node.attributes))];
+        }
+      }
+
+    }
+  };
+};
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,47 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = _default;
+
+/**
+ * Fixes block-shadowed let/const bindings in Safari 10/11.
+ * https://kangax.github.io/compat-table/es6/#test-let_scope_shadow_resolution
+ */
+function _default({
+  types: t
+}) {
+  return {
+    name: "transform-safari-block-shadowing",
+    visitor: {
+      VariableDeclarator(path) {
+        // the issue only affects let and const bindings:
+        const kind = path.parent.kind;
+        if (kind !== "let" && kind !== "const") return; // ignore non-block-scoped bindings:
+
+        const block = path.scope.block;
+        if (t.isFunction(block) || t.isProgram(block)) return;
+        const bindings = t.getOuterBindingIdentifiers(path.node.id);
+
+        for (const name of Object.keys(bindings)) {
+          let scope = path.scope; // ignore parent bindings (note: impossible due to let/const?)
+
+          if (!scope.hasOwnBinding(name)) continue; // check if shadowed within the nearest function/program boundary
+
+          while (scope = scope.parent) {
+            if (scope.hasOwnBinding(name)) {
+              path.scope.rename(name);
+              break;
+            }
+
+            if (t.isFunction(scope.block) || t.isProgram(scope.block)) {
+              break;
+            }
+          }
+        }
+      }
+
+    }
+  };
+}
+
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,42 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/**
+ * Safari ~11 has an issue where variable declarations in a For statement throw if they shadow parameters.
+ * This is fixed by renaming any declarations in the left/init part of a For* statement so they don't shadow.
+ * @see https://bugs.webkit.org/show_bug.cgi?id=171041
+ *
+ * @example
+ *   e => { for (let e of []) e }   // throws
+ *   e => { for (let _e of []) _e }   // works
+ */
+function handle(declaration) {
+  if (!declaration.isVariableDeclaration()) return;
+  const fn = declaration.getFunctionParent();
+  const {
+    name
+  } = declaration.node.declarations[0].id; // check if there is a shadowed binding coming from a parameter
+
+  if (fn && fn.scope.hasOwnBinding(name) && fn.scope.getOwnBinding(name).kind === "param") {
+    declaration.scope.rename(name);
+  }
+}
+
+var _default = () => ({
+  name: "transform-safari-for-shadowing",
+  visitor: {
+    ForXStatement(path) {
+      handle(path.get("left"));
+    },
+
+    ForStatement(path) {
+      handle(path.get("init"));
+    }
+
+  }
+});
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-tagged-template-caching/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-tagged-template-caching/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/lib/plugins/transform-tagged-template-caching/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,75 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = void 0;
+
+/**
+ * Converts destructured parameters with default values to non-shorthand syntax.
+ * This fixes the only Tagged Templates-related bug in ES Modules-supporting browsers (Safari 10 & 11).
+ * Use this plugin instead of `@babel/plugin-transform-template-literals` when targeting ES Modules.
+ *
+ * @example
+ *   // Bug 1: Safari 10/11 doesn't reliably return the same Strings value.
+ *   // The value changes depending on invocation and function optimization state.
+ *   function f() { return Object`` }
+ *   f() === new f()  // false, should be true.
+ *
+ * @example
+ *   // Bug 2: Safari 10/11 use the same cached strings value when the string parts are the same.
+ *   // This behavior comes from an earlier version of the spec, and can cause tricky bugs.
+ *   Object``===Object``  // true, should be false.
+ *
+ * Benchmarks: https://jsperf.com/compiled-tagged-template-performance
+ */
+var _default = ({
+  types: t
+}) => ({
+  name: "transform-tagged-template-caching",
+  visitor: {
+    TaggedTemplateExpression(path, state) {
+      // tagged templates we've already dealt with
+      let processed = state.get("processed");
+
+      if (!processed) {
+        processed = new WeakSet();
+        state.set("processed", processed);
+      }
+
+      if (processed.has(path.node)) return path.skip(); // Grab the expressions from the original tag.
+      //   tag`a${'hello'}`  // ['hello']
+
+      const expressions = path.node.quasi.expressions; // Create an identity function helper:
+      //   identity = t => t
+
+      let identity = state.get("identity");
+
+      if (!identity) {
+        identity = path.scope.getProgramParent().generateDeclaredUidIdentifier("_");
+        state.set("identity", identity);
+        const binding = path.scope.getBinding(identity.name);
+        binding.path.get("init").replaceWith(t.arrowFunctionExpression( // re-use the helper identifier for compressability
+        [t.identifier("t")], t.identifier("t")));
+      } // Use the identity function helper to get a reference to the template's Strings.
+      // We replace all expressions with `0` ensure Strings has the same shape.
+      //   identity`a${0}`
+
+
+      const template = t.taggedTemplateExpression(t.cloneNode(identity), t.templateLiteral(path.node.quasi.quasis, expressions.map(() => t.numericLiteral(0))));
+      processed.add(template); // Install an inline cache at the callsite using the global variable:
+      //   _t || (_t = identity`a${0}`)
+
+      const ident = path.scope.getProgramParent().generateDeclaredUidIdentifier("t");
+      path.scope.getBinding(ident.name).path.parent.kind = "let";
+      const inlineCache = t.logicalExpression("||", ident, t.assignmentExpression("=", t.cloneNode(ident), template)); // The original tag function becomes a plain function call.
+      // The expressions omitted from the cached Strings tag are directly applied as arguments.
+      //   tag(_t || (_t = Object`a${0}`), 'hello')
+
+      const node = t.callExpression(path.node.tag, [inlineCache, ...expressions]);
+      path.replaceWith(node);
+    }
+
+  }
+});
+
+exports.default = _default;
+module.exports = exports.default;
Index: imaps-frontend/node_modules/@babel/preset-modules/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,104 @@
+{
+  "name": "@babel/preset-modules",
+  "version": "0.1.6-no-external-plugins",
+  "description": "A Babel preset that targets modern browsers by fixing engine bugs.",
+  "main": "lib/index.js",
+  "license": "MIT",
+  "scripts": {
+    "start": "concurrently -r 'npm:watch:* -s'",
+    "build": "babel src -d lib --ignore '**/*.test.js'",
+    "test": "eslint src test && jest --colors",
+    "test:browser": "cd test/browser && karmatic --no-coverage --browsers chrome:headless,sauce-chrome-61,sauce-firefox-60,sauce-safari-10,sauce-safari-11,sauce-edge-16,sauce-edge-17 '**/*.js'",
+    "test:local": "cd test/browser && karmatic --no-coverage '**/*.js'",
+    "test:safari": "npm run test:local -- --browsers sauce-safari-10",
+    "test:edge": "npm run test:local -- --browsers sauce-edge-16",
+    "watch:test": "jest --watch",
+    "watch:build": "npm run -s build -- -w"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/preset-modules.git"
+  },
+  "keywords": [
+    "babel",
+    "preset",
+    "preset-env",
+    "modern",
+    "modules",
+    "ES Modules",
+    "module/nomodule"
+  ],
+  "files": [
+    "src",
+    "lib"
+  ],
+  "lint-staged": {
+    "*.js": [
+      "eslint --format=codeframe"
+    ]
+  },
+  "husky": {
+    "hooks": {
+      "pre-commit": "lint-staged"
+    }
+  },
+  "jest": {
+    "testEnvironment": "node",
+    "roots": [
+      "src",
+      "test"
+    ]
+  },
+  "eslintConfig": {
+    "extends": "developit",
+    "rules": {
+      "no-console": 0,
+      "new-cap": 0
+    }
+  },
+  "eslintIgnore": [
+    "test/fixtures/**/*",
+    "test/integration/**/*"
+  ],
+  "authors": [
+    "Jason Miller <jason@developit.ca>"
+  ],
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+  },
+  "devDependencies": {
+    "@babel/cli": "^7.7.0",
+    "@babel/core": "^7.7.2",
+    "@babel/helper-fixtures": "^7.6.3",
+    "@babel/helper-plugin-test-runner": "^7.14.5",
+    "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+    "@babel/plugin-transform-react-jsx": "^7.7.0",
+    "@babel/preset-env": "^7.9.6",
+    "acorn-jsx": "^5.0.1",
+    "babel-eslint": "^10.0.3",
+    "babel-plugin-add-module-exports": "^1.0.2",
+    "chalk": "^2.4.2",
+    "concurrently": "^4.1.0",
+    "eslint": "^6.6.0",
+    "eslint-config-babel": "^9.0.0",
+    "eslint-plugin-flowtype": "3",
+    "eslint-plugin-import": "^2.18.2",
+    "eslint-plugin-prettier": "^3.1.1",
+    "gzip-size": "^5.1.1",
+    "if-env": "^1.0.4",
+    "jest": "^24.8.0",
+    "karmatic": "^1.4.0",
+    "prettier": "^1.19.1",
+    "pretty-bytes": "^5.2.0",
+    "rollup": "^1.16.3",
+    "rollup-plugin-babel": "^4.3.3",
+    "rollup-plugin-node-resolve": "^5.2.0",
+    "terser": "^4.0.2",
+    "webpack": "^4.35.0"
+  },
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.0.0",
+    "@babel/types": "^7.4.4",
+    "esutils": "^2.0.2"
+  }
+}
Index: imaps-frontend/node_modules/@babel/preset-modules/src/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,26 @@
+import path from "path";
+import { declare } from "@babel/helper-plugin-utils";
+
+/**
+ * @babel/preset-modules produces clean, minimal output for ES Modules-supporting browsers.
+ * @param {Object} [options]
+ * @param {boolean} [options.loose=false] Loose mode skips seldom-needed transforms that increase output size.
+ */
+export default declare((api, opts) => {
+  api.assertVersion(7);
+
+  const loose = opts.loose === true;
+
+  return {
+    plugins: [
+      path.resolve(__dirname, "./plugins/transform-edge-default-parameters"),
+      path.resolve(__dirname, "./plugins/transform-tagged-template-caching"),
+      path.resolve(__dirname, "./plugins/transform-jsx-spread"),
+      path.resolve(__dirname, "./plugins/transform-safari-for-shadowing"),
+      path.resolve(__dirname, "./plugins/transform-safari-block-shadowing"),
+      path.resolve(__dirname, "./plugins/transform-async-arrows-in-class"),
+      !loose &&
+        path.resolve(__dirname, "./plugins/transform-edge-function-name"),
+    ].filter(Boolean),
+  };
+});
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-async-arrows-in-class/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,35 @@
+/**
+ * Safari 10.3 had an issue where async arrow function expressions within any class method would throw.
+ * After an initial fix, any references to the instance via `this` within those methods would also throw.
+ * This is fixed by converting arrow functions in class methods into equivalent function expressions.
+ * @see https://bugs.webkit.org/show_bug.cgi?id=166879
+ *
+ * @example
+ *   class X{ a(){ async () => {}; } }   // throws
+ *   class X{ a(){ async function() {}; } }   // works
+ *
+ * @example
+ *   class X{ a(){
+ *     async () => this.a;   // throws
+ *   } }
+ *   class X{ a(){
+ *     var _this=this;
+ *     async function() { return _this.a };   // works
+ *   } }
+ */
+
+const OPTS = {
+  allowInsertArrow: false,
+  specCompliant: false,
+};
+
+export default ({ types: t }) => ({
+  name: "transform-async-arrows-in-class",
+  visitor: {
+    ArrowFunctionExpression(path) {
+      if (path.node.async && path.findParent(t.isClassMethod)) {
+        path.arrowFunctionToExpression(OPTS);
+      }
+    },
+  },
+});
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-default-parameters/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+/**
+ * Converts destructured parameters with default values to non-shorthand syntax.
+ * This fixes the only arguments-related bug in ES Modules-supporting browsers (Edge 16 & 17).
+ * Use this plugin instead of @babel/plugin-transform-parameters when targeting ES Modules.
+ */
+
+export default ({ types: t }) => {
+  const isArrowParent = p =>
+    p.parentKey === "params" &&
+    p.parentPath &&
+    t.isArrowFunctionExpression(p.parentPath);
+
+  return {
+    name: "transform-edge-default-parameters",
+    visitor: {
+      AssignmentPattern(path) {
+        const arrowArgParent = path.find(isArrowParent);
+        if (arrowArgParent && path.parent.shorthand) {
+          // In Babel 7+, there is no way to force non-shorthand properties.
+          path.parent.shorthand = false;
+          (path.parent.extra || {}).shorthand = false;
+
+          // So, to ensure non-shorthand, rename the local identifier so it no longer matches:
+          path.scope.rename(path.parent.key.name);
+        }
+      },
+    },
+  };
+};
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-function-name/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-function-name/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-edge-function-name/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,31 @@
+/**
+ * Edge 16 & 17 do not infer function.name from variable assignment.
+ * All other `function.name` behavior works fine, so we can skip most of @babel/transform-function-name.
+ * @see https://kangax.github.io/compat-table/es6/#test-function_name_property_variables_(function)
+ *
+ * Note: contrary to various Github issues, Edge 16+ *does* correctly infer the name of Arrow Functions.
+ * The variable declarator name inference issue only affects function expressions, so that's all we fix here.
+ *
+ * A Note on Minification: Terser undoes this transform *by default* unless `keep_fnames` is set to true.
+ * There is by design - if Function.name is critical to your application, you must configure
+ * your minifier to preserve function names.
+ */
+
+export default ({ types: t }) => ({
+  name: "transform-edge-function-name",
+  visitor: {
+    FunctionExpression: {
+      exit(path) {
+        if (!path.node.id && t.isIdentifier(path.parent.id)) {
+          const id = t.cloneNode(path.parent.id);
+          const binding = path.scope.getBinding(id.name);
+          // if the binding gets reassigned anywhere, rename it
+          if (binding?.constantViolations.length) {
+            path.scope.rename(id.name);
+          }
+          path.node.id = id;
+        }
+      },
+    },
+  },
+});
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-jsx-spread/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-jsx-spread/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-jsx-spread/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,111 @@
+import esutils from "esutils";
+
+/**
+ * Converts JSX Spread arguments into Object Spread, avoiding Babel's helper or Object.assign injection.
+ * Input:
+ * 	 <div a="1" {...b} />
+ * Output:
+ *   <div {...{ a: "1", ...b }} />
+ * ...which Babel converts to:
+ *   h("div", { a: "1", ...b })
+ */
+export default ({ types: t }) => {
+  // converts a set of JSXAttributes to an Object.assign() call
+  function convertAttributesAssign(attributes) {
+    const args = [];
+    for (let i = 0, current; i < attributes.length; i++) {
+      const node = attributes[i];
+      if (t.isJSXSpreadAttribute(node)) {
+        // the first attribute is a spread, avoid copying all other attributes onto it
+        if (i === 0) {
+          args.push(t.objectExpression([]));
+        }
+        current = null;
+        args.push(node.argument);
+      } else {
+        const name = getAttributeName(node);
+        const value = getAttributeValue(node);
+        if (!current) {
+          current = t.objectExpression([]);
+          args.push(current);
+        }
+        current.properties.push(t.objectProperty(name, value));
+      }
+    }
+    return t.callExpression(
+      t.memberExpression(t.identifier("Object"), t.identifier("assign")),
+      args
+    );
+  }
+
+  // Converts a JSXAttribute to the equivalent ObjectExpression property
+  function convertAttributeSpread(node) {
+    if (t.isJSXSpreadAttribute(node)) {
+      return t.spreadElement(node.argument);
+    }
+
+    const name = getAttributeName(node);
+    const value = getAttributeValue(node);
+    return t.inherits(t.objectProperty(name, value), node);
+  }
+
+  // Convert a JSX attribute name to an Object expression property name
+  function getAttributeName(node) {
+    if (t.isJSXNamespacedName(node.name)) {
+      return t.stringLiteral(
+        node.name.namespace.name + ":" + node.name.name.name
+      );
+    }
+    if (esutils.keyword.isIdentifierNameES6(node.name.name)) {
+      return t.identifier(node.name.name);
+    }
+    return t.stringLiteral(node.name.name);
+  }
+
+  // Convert a JSX attribute value to a JavaScript expression value
+  function getAttributeValue(node) {
+    let value = node.value || t.booleanLiteral(true);
+
+    if (t.isJSXExpressionContainer(value)) {
+      value = value.expression;
+    } else if (t.isStringLiteral(value)) {
+      value.value = value.value.replace(/\n\s+/g, " ");
+
+      // "raw" JSXText should not be used from a StringLiteral because it needs to be escaped.
+      if (value.extra && value.extra.raw) {
+        delete value.extra.raw;
+      }
+    }
+
+    return value;
+  }
+
+  return {
+    name: "transform-jsx-spread",
+    visitor: {
+      JSXOpeningElement(path, state) {
+        const useSpread = state.opts.useSpread === true;
+        const hasSpread = path.node.attributes.some(attr =>
+          t.isJSXSpreadAttribute(attr)
+        );
+
+        // ignore JSX Elements without spread or with lone spread:
+        if (!hasSpread || path.node.attributes.length === 1) return;
+
+        if (useSpread) {
+          path.node.attributes = [
+            t.jsxSpreadAttribute(
+              t.objectExpression(
+                path.node.attributes.map(convertAttributeSpread)
+              )
+            ),
+          ];
+        } else {
+          path.node.attributes = [
+            t.jsxSpreadAttribute(convertAttributesAssign(path.node.attributes)),
+          ];
+        }
+      },
+    },
+  };
+};
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-safari-block-shadowing/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-safari-block-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-safari-block-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,39 @@
+/**
+ * Fixes block-shadowed let/const bindings in Safari 10/11.
+ * https://kangax.github.io/compat-table/es6/#test-let_scope_shadow_resolution
+ */
+export default function({ types: t }) {
+  return {
+    name: "transform-safari-block-shadowing",
+    visitor: {
+      VariableDeclarator(path) {
+        // the issue only affects let and const bindings:
+        const kind = path.parent.kind;
+        if (kind !== "let" && kind !== "const") return;
+
+        // ignore non-block-scoped bindings:
+        const block = path.scope.block;
+        if (t.isFunction(block) || t.isProgram(block)) return;
+
+        const bindings = t.getOuterBindingIdentifiers(path.node.id);
+        for (const name of Object.keys(bindings)) {
+          let scope = path.scope;
+
+          // ignore parent bindings (note: impossible due to let/const?)
+          if (!scope.hasOwnBinding(name)) continue;
+
+          // check if shadowed within the nearest function/program boundary
+          while ((scope = scope.parent)) {
+            if (scope.hasOwnBinding(name)) {
+              path.scope.rename(name);
+              break;
+            }
+            if (t.isFunction(scope.block) || t.isProgram(scope.block)) {
+              break;
+            }
+          }
+        }
+      },
+    },
+  };
+}
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-safari-for-shadowing/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-safari-for-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-safari-for-shadowing/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,38 @@
+/**
+ * Safari ~11 has an issue where variable declarations in a For statement throw if they shadow parameters.
+ * This is fixed by renaming any declarations in the left/init part of a For* statement so they don't shadow.
+ * @see https://bugs.webkit.org/show_bug.cgi?id=171041
+ *
+ * @example
+ *   e => { for (let e of []) e }   // throws
+ *   e => { for (let _e of []) _e }   // works
+ */
+
+function handle(declaration) {
+  if (!declaration.isVariableDeclaration()) return;
+
+  const fn = declaration.getFunctionParent();
+  const { name } = declaration.node.declarations[0].id;
+
+  // check if there is a shadowed binding coming from a parameter
+  if (
+    fn &&
+    fn.scope.hasOwnBinding(name) &&
+    fn.scope.getOwnBinding(name).kind === "param"
+  ) {
+    declaration.scope.rename(name);
+  }
+}
+
+export default () => ({
+  name: "transform-safari-for-shadowing",
+  visitor: {
+    ForXStatement(path) {
+      handle(path.get("left"));
+    },
+
+    ForStatement(path) {
+      handle(path.get("init"));
+    },
+  },
+});
Index: imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-tagged-template-caching/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-tagged-template-caching/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-modules/src/plugins/transform-tagged-template-caching/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,88 @@
+/**
+ * Converts destructured parameters with default values to non-shorthand syntax.
+ * This fixes the only Tagged Templates-related bug in ES Modules-supporting browsers (Safari 10 & 11).
+ * Use this plugin instead of `@babel/plugin-transform-template-literals` when targeting ES Modules.
+ *
+ * @example
+ *   // Bug 1: Safari 10/11 doesn't reliably return the same Strings value.
+ *   // The value changes depending on invocation and function optimization state.
+ *   function f() { return Object`` }
+ *   f() === new f()  // false, should be true.
+ *
+ * @example
+ *   // Bug 2: Safari 10/11 use the same cached strings value when the string parts are the same.
+ *   // This behavior comes from an earlier version of the spec, and can cause tricky bugs.
+ *   Object``===Object``  // true, should be false.
+ *
+ * Benchmarks: https://jsperf.com/compiled-tagged-template-performance
+ */
+export default ({ types: t }) => ({
+  name: "transform-tagged-template-caching",
+  visitor: {
+    TaggedTemplateExpression(path, state) {
+      // tagged templates we've already dealt with
+      let processed = state.get("processed");
+      if (!processed) {
+        processed = new WeakSet();
+        state.set("processed", processed);
+      }
+
+      if (processed.has(path.node)) return path.skip();
+
+      // Grab the expressions from the original tag.
+      //   tag`a${'hello'}`  // ['hello']
+      const expressions = path.node.quasi.expressions;
+
+      // Create an identity function helper:
+      //   identity = t => t
+      let identity = state.get("identity");
+      if (!identity) {
+        identity = path.scope
+          .getProgramParent()
+          .generateDeclaredUidIdentifier("_");
+        state.set("identity", identity);
+        const binding = path.scope.getBinding(identity.name);
+        binding.path.get("init").replaceWith(
+          t.arrowFunctionExpression(
+            // re-use the helper identifier for compressability
+            [t.identifier("t")],
+            t.identifier("t")
+          )
+        );
+      }
+
+      // Use the identity function helper to get a reference to the template's Strings.
+      // We replace all expressions with `0` ensure Strings has the same shape.
+      //   identity`a${0}`
+      const template = t.taggedTemplateExpression(
+        t.cloneNode(identity),
+        t.templateLiteral(
+          path.node.quasi.quasis,
+          expressions.map(() => t.numericLiteral(0))
+        )
+      );
+      processed.add(template);
+
+      // Install an inline cache at the callsite using the global variable:
+      //   _t || (_t = identity`a${0}`)
+      const ident = path.scope
+        .getProgramParent()
+        .generateDeclaredUidIdentifier("t");
+      path.scope.getBinding(ident.name).path.parent.kind = "let";
+      const inlineCache = t.logicalExpression(
+        "||",
+        ident,
+        t.assignmentExpression("=", t.cloneNode(ident), template)
+      );
+
+      // The original tag function becomes a plain function call.
+      // The expressions omitted from the cached Strings tag are directly applied as arguments.
+      //   tag(_t || (_t = Object`a${0}`), 'hello')
+      const node = t.callExpression(path.node.tag, [
+        inlineCache,
+        ...expressions,
+      ]);
+      path.replaceWith(node);
+    },
+  },
+});
Index: imaps-frontend/node_modules/@babel/preset-react/LICENSE
===================================================================
--- imaps-frontend/node_modules/@babel/preset-react/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-react/LICENSE	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: imaps-frontend/node_modules/@babel/preset-react/README.md
===================================================================
--- imaps-frontend/node_modules/@babel/preset-react/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-react/README.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+# @babel/preset-react
+
+> Babel preset for all React plugins.
+
+See our website [@babel/preset-react](https://babeljs.io/docs/babel-preset-react) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22area%3A%20react%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/preset-react
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/preset-react --dev
+```
Index: imaps-frontend/node_modules/@babel/preset-react/lib/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/preset-react/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-react/lib/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,79 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var helperPluginUtils = require('@babel/helper-plugin-utils');
+var transformReactJSX = require('@babel/plugin-transform-react-jsx');
+var transformReactJSXDevelopment = require('@babel/plugin-transform-react-jsx-development');
+var transformReactDisplayName = require('@babel/plugin-transform-react-display-name');
+var transformReactPure = require('@babel/plugin-transform-react-pure-annotations');
+var helperValidatorOption = require('@babel/helper-validator-option');
+
+function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
+
+var transformReactJSX__default = /*#__PURE__*/_interopDefault(transformReactJSX);
+var transformReactJSXDevelopment__default = /*#__PURE__*/_interopDefault(transformReactJSXDevelopment);
+var transformReactDisplayName__default = /*#__PURE__*/_interopDefault(transformReactDisplayName);
+var transformReactPure__default = /*#__PURE__*/_interopDefault(transformReactPure);
+
+new helperValidatorOption.OptionValidator("@babel/preset-react");
+function normalizeOptions(options = {}) {
+  {
+    let {
+      pragma,
+      pragmaFrag
+    } = options;
+    const {
+      pure,
+      throwIfNamespace = true,
+      runtime = "classic",
+      importSource,
+      useBuiltIns,
+      useSpread
+    } = options;
+    if (runtime === "classic") {
+      pragma = pragma || "React.createElement";
+      pragmaFrag = pragmaFrag || "React.Fragment";
+    }
+    const development = options.development == null ? undefined : !!options.development;
+    return {
+      development,
+      importSource,
+      pragma,
+      pragmaFrag,
+      pure,
+      runtime,
+      throwIfNamespace,
+      useBuiltIns,
+      useSpread
+    };
+  }
+}
+
+var index = helperPluginUtils.declarePreset((api, opts) => {
+  api.assertVersion(7);
+  const {
+    development = false,
+    importSource,
+    pragma,
+    pragmaFrag,
+    pure,
+    runtime,
+    throwIfNamespace
+  } = normalizeOptions(opts);
+  return {
+    plugins: [[development ? transformReactJSXDevelopment__default.default : transformReactJSX__default.default, {
+      importSource,
+      pragma,
+      pragmaFrag,
+      runtime,
+      throwIfNamespace,
+      pure,
+      useBuiltIns: !!opts.useBuiltIns,
+      useSpread: opts.useSpread
+    }], transformReactDisplayName__default.default, pure !== false && transformReactPure__default.default].filter(Boolean)
+  };
+});
+
+exports.default = index;
+//# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/@babel/preset-react/lib/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/preset-react/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-react/lib/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+{"version":3,"file":"index.js","sources":["../src/normalize-options.ts","../src/index.ts"],"sourcesContent":["import {\n  OptionValidator,\n  findSuggestion,\n} from \"@babel/helper-validator-option\";\nconst v = new OptionValidator(\"@babel/preset-react\");\n\nexport default function normalizeOptions(options: any = {}) {\n  if (process.env.BABEL_8_BREAKING) {\n    if (\"useSpread\" in options) {\n      throw new Error(\n        '@babel/preset-react: Since Babel 8, an inline object with spread elements is always used, and the \"useSpread\" option is no longer available. Please remove it from your config.',\n      );\n    }\n\n    if (\"useBuiltIns\" in options) {\n      const useBuiltInsFormatted = JSON.stringify(options.useBuiltIns);\n      throw new Error(\n        `@babel/preset-react: Since \"useBuiltIns\" is removed in Babel 8, you can remove it from the config.\n- Babel 8 now transforms JSX spread to object spread. If you need to transpile object spread with\n\\`useBuiltIns: ${useBuiltInsFormatted}\\`, you can use the following config\n{\n  \"plugins\": [\n    [\"@babel/plugin-transform-object-rest-spread\", { \"loose\": true, \"useBuiltIns\": ${useBuiltInsFormatted} }]\n  ],\n  \"presets\": [\"@babel/preset-react\"]\n}`,\n      );\n    }\n\n    const TopLevelOptions = {\n      development: \"development\",\n      importSource: \"importSource\",\n      pragma: \"pragma\",\n      pragmaFrag: \"pragmaFrag\",\n      pure: \"pure\",\n      runtime: \"runtime\",\n      throwIfNamespace: \"throwIfNamespace\",\n    };\n    v.validateTopLevelOptions(options, TopLevelOptions);\n    const development = v.validateBooleanOption(\n      TopLevelOptions.development,\n      options.development,\n    );\n    let importSource = v.validateStringOption(\n      TopLevelOptions.importSource,\n      options.importSource,\n    );\n    let pragma = v.validateStringOption(TopLevelOptions.pragma, options.pragma);\n    let pragmaFrag = v.validateStringOption(\n      TopLevelOptions.pragmaFrag,\n      options.pragmaFrag,\n    );\n    const pure = v.validateBooleanOption(TopLevelOptions.pure, options.pure);\n    const runtime = v.validateStringOption(\n      TopLevelOptions.runtime,\n      options.runtime,\n      \"automatic\",\n    );\n    const throwIfNamespace = v.validateBooleanOption(\n      TopLevelOptions.throwIfNamespace,\n      options.throwIfNamespace,\n      true,\n    );\n\n    const validRuntime = [\"classic\", \"automatic\"];\n\n    if (runtime === \"classic\") {\n      pragma = pragma || \"React.createElement\";\n      pragmaFrag = pragmaFrag || \"React.Fragment\";\n    } else if (runtime === \"automatic\") {\n      importSource = importSource || \"react\";\n    } else {\n      throw new Error(\n        `@babel/preset-react: 'runtime' must be one of ['automatic', 'classic'] but we have '${runtime}'\\n` +\n          `- Did you mean '${findSuggestion(runtime, validRuntime)}'?`,\n      );\n    }\n\n    return {\n      development,\n      importSource,\n      pragma,\n      pragmaFrag,\n      pure,\n      runtime,\n      throwIfNamespace,\n    };\n  } else {\n    let { pragma, pragmaFrag } = options;\n\n    const {\n      pure,\n      throwIfNamespace = true,\n      runtime = \"classic\",\n      importSource,\n      useBuiltIns,\n      useSpread,\n    } = options;\n\n    if (runtime === \"classic\") {\n      pragma = pragma || \"React.createElement\";\n      pragmaFrag = pragmaFrag || \"React.Fragment\";\n    }\n\n    const development =\n      options.development == null ? undefined : !!options.development;\n\n    return {\n      development,\n      importSource,\n      pragma,\n      pragmaFrag,\n      pure,\n      runtime,\n      throwIfNamespace,\n      useBuiltIns,\n      useSpread,\n    };\n  }\n}\n","import { declarePreset } from \"@babel/helper-plugin-utils\";\nimport transformReactJSX from \"@babel/plugin-transform-react-jsx\";\nimport transformReactJSXDevelopment from \"@babel/plugin-transform-react-jsx-development\";\nimport transformReactDisplayName from \"@babel/plugin-transform-react-display-name\";\nimport transformReactPure from \"@babel/plugin-transform-react-pure-annotations\";\nimport normalizeOptions from \"./normalize-options.ts\";\n\nexport interface Options {\n  development?: boolean;\n  importSource?: string;\n  pragma?: string;\n  pragmaFrag?: string;\n  pure?: string;\n  runtime?: \"automatic\" | \"classic\";\n  throwIfNamespace?: boolean;\n  useBuiltIns?: boolean;\n  useSpread?: boolean;\n}\n\nexport default declarePreset((api, opts: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const {\n    development = process.env.BABEL_8_BREAKING\n      ? api.env(env => env === \"development\")\n      : false,\n    importSource,\n    pragma,\n    pragmaFrag,\n    pure,\n    runtime,\n    throwIfNamespace,\n  } = normalizeOptions(opts);\n\n  return {\n    plugins: [\n      [\n        development ? transformReactJSXDevelopment : transformReactJSX,\n        process.env.BABEL_8_BREAKING\n          ? {\n              importSource,\n              pragma,\n              pragmaFrag,\n              runtime,\n              throwIfNamespace,\n              pure,\n            }\n          : {\n              importSource,\n              pragma,\n              pragmaFrag,\n              runtime,\n              throwIfNamespace,\n              pure,\n              useBuiltIns: !!opts.useBuiltIns,\n              useSpread: opts.useSpread,\n            },\n      ],\n      transformReactDisplayName,\n      pure !== false && transformReactPure,\n    ].filter(Boolean),\n  };\n});\n"],"names":["OptionValidator","normalizeOptions","options","pragma","pragmaFrag","pure","throwIfNamespace","runtime","importSource","useBuiltIns","useSpread","development","undefined","declarePreset","api","opts","assertVersion","plugins","transformReactJSXDevelopment","transformReactJSX","transformReactDisplayName","transformReactPure","filter","Boolean"],"mappings":";;;;;;;;;;;;;;;;;;AAIU,IAAIA,qCAAe,CAAC,qBAAqB,EAAC;AAErC,SAASC,gBAAgBA,CAACC,OAAY,GAAG,EAAE,EAAE;AAiFnD,EAAA;IACL,IAAI;MAAEC,MAAM;AAAEC,MAAAA,UAAAA;AAAW,KAAC,GAAGF,OAAO,CAAA;IAEpC,MAAM;MACJG,IAAI;AACJC,MAAAA,gBAAgB,GAAG,IAAI;AACvBC,MAAAA,OAAO,GAAG,SAAS;MACnBC,YAAY;MACZC,WAAW;AACXC,MAAAA,SAAAA;AACF,KAAC,GAAGR,OAAO,CAAA;IAEX,IAAIK,OAAO,KAAK,SAAS,EAAE;MACzBJ,MAAM,GAAGA,MAAM,IAAI,qBAAqB,CAAA;MACxCC,UAAU,GAAGA,UAAU,IAAI,gBAAgB,CAAA;AAC7C,KAAA;AAEA,IAAA,MAAMO,WAAW,GACfT,OAAO,CAACS,WAAW,IAAI,IAAI,GAAGC,SAAS,GAAG,CAAC,CAACV,OAAO,CAACS,WAAW,CAAA;IAEjE,OAAO;MACLA,WAAW;MACXH,YAAY;MACZL,MAAM;MACNC,UAAU;MACVC,IAAI;MACJE,OAAO;MACPD,gBAAgB;MAChBG,WAAW;AACXC,MAAAA,SAAAA;KACD,CAAA;AACH,GAAA;AACF;;ACpGA,YAAeG,+BAAa,CAAC,CAACC,GAAG,EAAEC,IAAa,KAAK;AACnDD,EAAAA,GAAG,CAACE,aAAa,CAAkB,CAAE,CAAC,CAAA;EAEtC,MAAM;AACJL,IAAAA,WAAW,GAEP,KAAK;IACTH,YAAY;IACZL,MAAM;IACNC,UAAU;IACVC,IAAI;IACJE,OAAO;AACPD,IAAAA,gBAAAA;AACF,GAAC,GAAGL,gBAAgB,CAACc,IAAI,CAAC,CAAA;EAE1B,OAAO;IACLE,OAAO,EAAE,CACP,CACEN,WAAW,GAAGO,6CAA4B,GAAGC,kCAAiB,EAU1D;MACEX,YAAY;MACZL,MAAM;MACNC,UAAU;MACVG,OAAO;MACPD,gBAAgB;MAChBD,IAAI;AACJI,MAAAA,WAAW,EAAE,CAAC,CAACM,IAAI,CAACN,WAAW;MAC/BC,SAAS,EAAEK,IAAI,CAACL,SAAAA;AAClB,KAAC,CACN,EACDU,0CAAyB,EACzBf,IAAI,KAAK,KAAK,IAAIgB,mCAAkB,CACrC,CAACC,MAAM,CAACC,OAAO,CAAA;GACjB,CAAA;AACH,CAAC,CAAC;;;;"}
Index: imaps-frontend/node_modules/@babel/preset-react/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/preset-react/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/@babel/preset-react/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,37 @@
+{
+  "name": "@babel/preset-react",
+  "version": "7.26.3",
+  "description": "Babel preset for all React plugins.",
+  "author": "The Babel Team (https://babel.dev/team)",
+  "homepage": "https://babel.dev/docs/en/next/babel-preset-react",
+  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22area%3A%20react%22+is%3Aopen",
+  "license": "MIT",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/babel/babel.git",
+    "directory": "packages/babel-preset-react"
+  },
+  "main": "./lib/index.js",
+  "dependencies": {
+    "@babel/helper-plugin-utils": "^7.25.9",
+    "@babel/helper-validator-option": "^7.25.9",
+    "@babel/plugin-transform-react-display-name": "^7.25.9",
+    "@babel/plugin-transform-react-jsx": "^7.25.9",
+    "@babel/plugin-transform-react-jsx-development": "^7.25.9",
+    "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+  },
+  "peerDependencies": {
+    "@babel/core": "^7.0.0-0"
+  },
+  "devDependencies": {
+    "@babel/core": "^7.26.0",
+    "@babel/helper-plugin-test-runner": "^7.25.9"
+  },
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "type": "commonjs"
+}
Index: imaps-frontend/node_modules/@babel/runtime/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/runtime/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/runtime/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,19 +1,43 @@
 {
-  "name": "@babel/runtime",
-  "version": "7.26.0",
-  "description": "babel's modular runtime helpers",
-  "license": "MIT",
-  "publishConfig": {
-    "access": "public"
+  "_from": "@babel/runtime@7.26.0",
+  "_id": "@babel/runtime@7.26.0",
+  "_inBundle": false,
+  "_integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+  "_location": "/@babel/runtime",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "@babel/runtime@7.26.0",
+    "name": "@babel/runtime",
+    "escapedName": "@babel%2fruntime",
+    "scope": "@babel",
+    "rawSpec": "7.26.0",
+    "saveSpec": null,
+    "fetchSpec": "7.26.0"
   },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/babel/babel.git",
-    "directory": "packages/babel-runtime"
+  "_requiredBy": [
+    "/canvg",
+    "/jspdf"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+  "_shasum": "8600c2f595f277c60815256418b85356a65173c1",
+  "_spec": "@babel/runtime@7.26.0",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/jspdf",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
   },
-  "homepage": "https://babel.dev/docs/en/next/babel-runtime",
-  "author": "The Babel Team (https://babel.dev/team)",
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues"
+  },
+  "bundleDependencies": false,
   "dependencies": {
     "regenerator-runtime": "^0.14.0"
+  },
+  "deprecated": false,
+  "description": "babel's modular runtime helpers",
+  "engines": {
+    "node": ">=6.9.0"
   },
   "exports": {
@@ -1050,7 +1074,16 @@
     "./regenerator/": "./regenerator/"
   },
-  "engines": {
-    "node": ">=6.9.0"
+  "homepage": "https://babel.dev/docs/en/next/babel-runtime",
+  "license": "MIT",
+  "name": "@babel/runtime",
+  "publishConfig": {
+    "access": "public"
   },
-  "type": "commonjs"
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/babel/babel.git",
+    "directory": "packages/babel-runtime"
+  },
+  "type": "commonjs",
+  "version": "7.26.0"
 }
Index: imaps-frontend/node_modules/@babel/template/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/template/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/template/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,10 +1,51 @@
 {
+  "_from": "@babel/template@^7.25.9",
+  "_id": "@babel/template@7.25.9",
+  "_inBundle": false,
+  "_integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+  "_location": "/@babel/template",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@babel/template@^7.25.9",
+    "name": "@babel/template",
+    "escapedName": "@babel%2ftemplate",
+    "scope": "@babel",
+    "rawSpec": "^7.25.9",
+    "saveSpec": null,
+    "fetchSpec": "^7.25.9"
+  },
+  "_requiredBy": [
+    "/@babel/core",
+    "/@babel/helpers",
+    "/@babel/traverse"
+  ],
+  "_resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
+  "_shasum": "ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016",
+  "_spec": "@babel/template@^7.25.9",
+  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/@babel/core",
+  "author": {
+    "name": "The Babel Team",
+    "url": "https://babel.dev/team"
+  },
+  "bugs": {
+    "url": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "@babel/code-frame": "^7.25.9",
+    "@babel/parser": "^7.25.9",
+    "@babel/types": "^7.25.9"
+  },
+  "deprecated": false,
+  "description": "Generate an AST from a string template.",
+  "engines": {
+    "node": ">=6.9.0"
+  },
+  "homepage": "https://babel.dev/docs/en/next/babel-template",
+  "license": "MIT",
+  "main": "./lib/index.js",
   "name": "@babel/template",
-  "version": "7.25.9",
-  "description": "Generate an AST from a string template.",
-  "author": "The Babel Team (https://babel.dev/team)",
-  "homepage": "https://babel.dev/docs/en/next/babel-template",
-  "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
-  "license": "MIT",
   "publishConfig": {
     "access": "public"
@@ -12,16 +53,8 @@
   "repository": {
     "type": "git",
-    "url": "https://github.com/babel/babel.git",
+    "url": "git+https://github.com/babel/babel.git",
     "directory": "packages/babel-template"
   },
-  "main": "./lib/index.js",
-  "dependencies": {
-    "@babel/code-frame": "^7.25.9",
-    "@babel/parser": "^7.25.9",
-    "@babel/types": "^7.25.9"
-  },
-  "engines": {
-    "node": ">=6.9.0"
-  },
-  "type": "commonjs"
+  "type": "commonjs",
+  "version": "7.25.9"
 }
Index: imaps-frontend/node_modules/@babel/traverse/lib/scope/binding.js
===================================================================
--- imaps-frontend/node_modules/@babel/traverse/lib/scope/binding.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/traverse/lib/scope/binding.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -69,8 +69,8 @@
     parentPath,
     key
-  } = path; parentPath; ({
+  } = path; parentPath; {
     parentPath,
     key
-  } = parentPath)) {
+  } = parentPath) {
     if (parentPath.isFunctionParent()) return false;
     if (parentPath.isWhile() || parentPath.isForXStatement() || parentPath.isForStatement() && key === "body") {
Index: imaps-frontend/node_modules/@babel/traverse/lib/scope/binding.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/traverse/lib/scope/binding.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/traverse/lib/scope/binding.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["Binding","constructor","identifier","scope","path","kind","constantViolations","constant","referencePaths","referenced","references","isDeclaredInLoop","reassign","clearValue","deoptValue","hasDeoptedValue","setValue","value","hasValue","includes","push","reference","dereference","exports","default","parentPath","key","isFunctionParent","isWhile","isForXStatement","isForStatement"],"sources":["../../src/scope/binding.ts"],"sourcesContent":["import type NodePath from \"../path/index.ts\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index.ts\";\n\nexport type BindingKind =\n  | \"var\" /* var declarator */\n  | \"let\" /* let declarator, class declaration id, catch clause parameters */\n  | \"const\" /* const/using declarator */\n  | \"module\" /* import specifiers */\n  | \"hoisted\" /* function declaration id */\n  | \"param\" /* function declaration parameters */\n  | \"local\" /* function expression id, class expression id */\n  | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n *  * Node path.\n *  * Amount of times referenced by other nodes.\n *  * Paths to nodes that reassign or modify this binding.\n *  * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n  identifier: t.Identifier;\n  scope: Scope;\n  path: NodePath;\n  kind: BindingKind;\n\n  constructor({\n    identifier,\n    scope,\n    path,\n    kind,\n  }: {\n    identifier: t.Identifier;\n    scope: Scope;\n    path: NodePath;\n    kind: BindingKind;\n  }) {\n    this.identifier = identifier;\n    this.scope = scope;\n    this.path = path;\n    this.kind = kind;\n\n    if ((kind === \"var\" || kind === \"hoisted\") && isDeclaredInLoop(path)) {\n      this.reassign(path);\n    }\n\n    this.clearValue();\n  }\n\n  constantViolations: Array<NodePath> = [];\n  constant: boolean = true;\n\n  referencePaths: Array<NodePath> = [];\n  referenced: boolean = false;\n  references: number = 0;\n\n  declare hasDeoptedValue: boolean;\n  declare hasValue: boolean;\n  declare value: any;\n\n  deoptValue() {\n    this.clearValue();\n    this.hasDeoptedValue = true;\n  }\n\n  setValue(value: any) {\n    if (this.hasDeoptedValue) return;\n    this.hasValue = true;\n    this.value = value;\n  }\n\n  clearValue() {\n    this.hasDeoptedValue = false;\n    this.hasValue = false;\n    this.value = null;\n  }\n\n  /**\n   * Register a constant violation with the provided `path`.\n   */\n\n  reassign(path: NodePath) {\n    this.constant = false;\n    if (this.constantViolations.includes(path)) {\n      return;\n    }\n    this.constantViolations.push(path);\n  }\n\n  /**\n   * Increment the amount of references to this binding.\n   */\n\n  reference(path: NodePath) {\n    if (this.referencePaths.includes(path)) {\n      return;\n    }\n    this.referenced = true;\n    this.references++;\n    this.referencePaths.push(path);\n  }\n\n  /**\n   * Decrement the amount of references to this binding.\n   */\n\n  dereference() {\n    this.references--;\n    this.referenced = !!this.references;\n  }\n}\n\nfunction isDeclaredInLoop(path: NodePath) {\n  for (\n    let { parentPath, key } = path;\n    parentPath;\n    { parentPath, key } = parentPath\n  ) {\n    if (parentPath.isFunctionParent()) return false;\n    if (\n      parentPath.isWhile() ||\n      parentPath.isForXStatement() ||\n      (parentPath.isForStatement() && key === \"body\")\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n"],"mappings":";;;;;;AAwBe,MAAMA,OAAO,CAAC;EAM3BC,WAAWA,CAAC;IACVC,UAAU;IACVC,KAAK;IACLC,IAAI;IACJC;EAMF,CAAC,EAAE;IAAA,KAfHH,UAAU;IAAA,KACVC,KAAK;IAAA,KACLC,IAAI;IAAA,KACJC,IAAI;IAAA,KAyBJC,kBAAkB,GAAoB,EAAE;IAAA,KACxCC,QAAQ,GAAY,IAAI;IAAA,KAExBC,cAAc,GAAoB,EAAE;IAAA,KACpCC,UAAU,GAAY,KAAK;IAAA,KAC3BC,UAAU,GAAW,CAAC;IAjBpB,IAAI,CAACR,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,SAAS,KAAKM,gBAAgB,CAACP,IAAI,CAAC,EAAE;MACpE,IAAI,CAACQ,QAAQ,CAACR,IAAI,CAAC;IACrB;IAEA,IAAI,CAACS,UAAU,CAAC,CAAC;EACnB;EAaAC,UAAUA,CAAA,EAAG;IACX,IAAI,CAACD,UAAU,CAAC,CAAC;IACjB,IAAI,CAACE,eAAe,GAAG,IAAI;EAC7B;EAEAC,QAAQA,CAACC,KAAU,EAAE;IACnB,IAAI,IAAI,CAACF,eAAe,EAAE;IAC1B,IAAI,CAACG,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;EAEAJ,UAAUA,CAAA,EAAG;IACX,IAAI,CAACE,eAAe,GAAG,KAAK;IAC5B,IAAI,CAACG,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACD,KAAK,GAAG,IAAI;EACnB;EAMAL,QAAQA,CAACR,IAAc,EAAE;IACvB,IAAI,CAACG,QAAQ,GAAG,KAAK;IACrB,IAAI,IAAI,CAACD,kBAAkB,CAACa,QAAQ,CAACf,IAAI,CAAC,EAAE;MAC1C;IACF;IACA,IAAI,CAACE,kBAAkB,CAACc,IAAI,CAAChB,IAAI,CAAC;EACpC;EAMAiB,SAASA,CAACjB,IAAc,EAAE;IACxB,IAAI,IAAI,CAACI,cAAc,CAACW,QAAQ,CAACf,IAAI,CAAC,EAAE;MACtC;IACF;IACA,IAAI,CAACK,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,UAAU,EAAE;IACjB,IAAI,CAACF,cAAc,CAACY,IAAI,CAAChB,IAAI,CAAC;EAChC;EAMAkB,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACZ,UAAU,EAAE;IACjB,IAAI,CAACD,UAAU,GAAG,CAAC,CAAC,IAAI,CAACC,UAAU;EACrC;AACF;AAACa,OAAA,CAAAC,OAAA,GAAAxB,OAAA;AAED,SAASW,gBAAgBA,CAACP,IAAc,EAAE;EACxC,KACE,IAAI;IAAEqB,UAAU;IAAEC;EAAI,CAAC,GAAGtB,IAAI,EAC9BqB,UAAU,GACV;IAAEA,UAAU;IAAEC;EAAI,CAAC,GAAGD,UAAU,GAChC;IACA,IAAIA,UAAU,CAACE,gBAAgB,CAAC,CAAC,EAAE,OAAO,KAAK;IAC/C,IACEF,UAAU,CAACG,OAAO,CAAC,CAAC,IACpBH,UAAU,CAACI,eAAe,CAAC,CAAC,IAC3BJ,UAAU,CAACK,cAAc,CAAC,CAAC,IAAIJ,GAAG,KAAK,MAAO,EAC/C;MACA,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd","ignoreList":[]}
+{"version":3,"names":["Binding","constructor","identifier","scope","path","kind","constantViolations","constant","referencePaths","referenced","references","isDeclaredInLoop","reassign","clearValue","deoptValue","hasDeoptedValue","setValue","value","hasValue","includes","push","reference","dereference","exports","default","parentPath","key","isFunctionParent","isWhile","isForXStatement","isForStatement"],"sources":["../../src/scope/binding.ts"],"sourcesContent":["import type NodePath from \"../path/index.ts\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index.ts\";\n\nexport type BindingKind =\n  | \"var\" /* var declarator */\n  | \"let\" /* let declarator, class declaration id, catch clause parameters */\n  | \"const\" /* const/using declarator */\n  | \"module\" /* import specifiers */\n  | \"hoisted\" /* function declaration id */\n  | \"param\" /* function declaration parameters */\n  | \"local\" /* function expression id, class expression id */\n  | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n *  * Node path.\n *  * Amount of times referenced by other nodes.\n *  * Paths to nodes that reassign or modify this binding.\n *  * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n  identifier: t.Identifier;\n  scope: Scope;\n  path: NodePath;\n  kind: BindingKind;\n\n  constructor({\n    identifier,\n    scope,\n    path,\n    kind,\n  }: {\n    identifier: t.Identifier;\n    scope: Scope;\n    path: NodePath;\n    kind: BindingKind;\n  }) {\n    this.identifier = identifier;\n    this.scope = scope;\n    this.path = path;\n    this.kind = kind;\n\n    if ((kind === \"var\" || kind === \"hoisted\") && isDeclaredInLoop(path)) {\n      this.reassign(path);\n    }\n\n    this.clearValue();\n  }\n\n  constantViolations: Array<NodePath> = [];\n  constant: boolean = true;\n\n  referencePaths: Array<NodePath> = [];\n  referenced: boolean = false;\n  references: number = 0;\n\n  declare hasDeoptedValue: boolean;\n  declare hasValue: boolean;\n  declare value: any;\n\n  deoptValue() {\n    this.clearValue();\n    this.hasDeoptedValue = true;\n  }\n\n  setValue(value: any) {\n    if (this.hasDeoptedValue) return;\n    this.hasValue = true;\n    this.value = value;\n  }\n\n  clearValue() {\n    this.hasDeoptedValue = false;\n    this.hasValue = false;\n    this.value = null;\n  }\n\n  /**\n   * Register a constant violation with the provided `path`.\n   */\n\n  reassign(path: NodePath) {\n    this.constant = false;\n    if (this.constantViolations.includes(path)) {\n      return;\n    }\n    this.constantViolations.push(path);\n  }\n\n  /**\n   * Increment the amount of references to this binding.\n   */\n\n  reference(path: NodePath) {\n    if (this.referencePaths.includes(path)) {\n      return;\n    }\n    this.referenced = true;\n    this.references++;\n    this.referencePaths.push(path);\n  }\n\n  /**\n   * Decrement the amount of references to this binding.\n   */\n\n  dereference() {\n    this.references--;\n    this.referenced = !!this.references;\n  }\n}\n\nfunction isDeclaredInLoop(path: NodePath) {\n  for (\n    let { parentPath, key } = path;\n    parentPath;\n    { parentPath, key } = parentPath\n  ) {\n    if (parentPath.isFunctionParent()) return false;\n    if (\n      parentPath.isWhile() ||\n      parentPath.isForXStatement() ||\n      (parentPath.isForStatement() && key === \"body\")\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n"],"mappings":";;;;;;AAwBe,MAAMA,OAAO,CAAC;EAM3BC,WAAWA,CAAC;IACVC,UAAU;IACVC,KAAK;IACLC,IAAI;IACJC;EAMF,CAAC,EAAE;IAAA,KAfHH,UAAU;IAAA,KACVC,KAAK;IAAA,KACLC,IAAI;IAAA,KACJC,IAAI;IAAA,KAyBJC,kBAAkB,GAAoB,EAAE;IAAA,KACxCC,QAAQ,GAAY,IAAI;IAAA,KAExBC,cAAc,GAAoB,EAAE;IAAA,KACpCC,UAAU,GAAY,KAAK;IAAA,KAC3BC,UAAU,GAAW,CAAC;IAjBpB,IAAI,CAACR,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACA,IAAI,KAAK,KAAK,IAAIA,IAAI,KAAK,SAAS,KAAKM,gBAAgB,CAACP,IAAI,CAAC,EAAE;MACpE,IAAI,CAACQ,QAAQ,CAACR,IAAI,CAAC;IACrB;IAEA,IAAI,CAACS,UAAU,CAAC,CAAC;EACnB;EAaAC,UAAUA,CAAA,EAAG;IACX,IAAI,CAACD,UAAU,CAAC,CAAC;IACjB,IAAI,CAACE,eAAe,GAAG,IAAI;EAC7B;EAEAC,QAAQA,CAACC,KAAU,EAAE;IACnB,IAAI,IAAI,CAACF,eAAe,EAAE;IAC1B,IAAI,CAACG,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;EAEAJ,UAAUA,CAAA,EAAG;IACX,IAAI,CAACE,eAAe,GAAG,KAAK;IAC5B,IAAI,CAACG,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACD,KAAK,GAAG,IAAI;EACnB;EAMAL,QAAQA,CAACR,IAAc,EAAE;IACvB,IAAI,CAACG,QAAQ,GAAG,KAAK;IACrB,IAAI,IAAI,CAACD,kBAAkB,CAACa,QAAQ,CAACf,IAAI,CAAC,EAAE;MAC1C;IACF;IACA,IAAI,CAACE,kBAAkB,CAACc,IAAI,CAAChB,IAAI,CAAC;EACpC;EAMAiB,SAASA,CAACjB,IAAc,EAAE;IACxB,IAAI,IAAI,CAACI,cAAc,CAACW,QAAQ,CAACf,IAAI,CAAC,EAAE;MACtC;IACF;IACA,IAAI,CAACK,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,UAAU,EAAE;IACjB,IAAI,CAACF,cAAc,CAACY,IAAI,CAAChB,IAAI,CAAC;EAChC;EAMAkB,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACZ,UAAU,EAAE;IACjB,IAAI,CAACD,UAAU,GAAG,CAAC,CAAC,IAAI,CAACC,UAAU;EACrC;AACF;AAACa,OAAA,CAAAC,OAAA,GAAAxB,OAAA;AAED,SAASW,gBAAgBA,CAACP,IAAc,EAAE;EACxC,KACE,IAAI;IAAEqB,UAAU;IAAEC;EAAI,CAAC,GAAGtB,IAAI,EAC9BqB,UAAU,EACV;IAAEA,UAAU;IAAEC;EAAI,CAAC,GAAGD,UAAU,EAChC;IACA,IAAIA,UAAU,CAACE,gBAAgB,CAAC,CAAC,EAAE,OAAO,KAAK;IAC/C,IACEF,UAAU,CAACG,OAAO,CAAC,CAAC,IACpBH,UAAU,CAACI,eAAe,CAAC,CAAC,IAC3BJ,UAAU,CAACK,cAAc,CAAC,CAAC,IAAIJ,GAAG,KAAK,MAAO,EAC/C;MACA,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/traverse/lib/scope/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/traverse/lib/scope/index.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/traverse/lib/scope/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -633,6 +633,12 @@
     this.uids = Object.create(null);
     this.data = Object.create(null);
-    const programParent = this.getProgramParent();
-    if (programParent.crawling) return;
+    let scope = this;
+    do {
+      if (scope.crawling) return;
+      if (scope.path.isProgram()) {
+        break;
+      }
+    } while (scope = scope.parent);
+    const programParent = scope;
     const state = {
       references: [],
Index: imaps-frontend/node_modules/@babel/traverse/lib/scope/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/traverse/lib/scope/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/traverse/lib/scope/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_renamer","require","_index","_binding","_globals","_t","t","_cache","_visitors","NOT_LOCAL_BINDING","assignmentExpression","callExpression","cloneNode","getBindingIdentifiers","identifier","isArrayExpression","isBinary","isCallExpression","isClass","isClassBody","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isFunctionDeclaration","isIdentifier","isImportDeclaration","isLiteral","isMemberExpression","isMethod","isModuleSpecifier","isNullLiteral","isObjectExpression","isProperty","isPureish","isRegExpLiteral","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isThisExpression","isUnaryExpression","isVariableDeclaration","expressionStatement","matchesPattern","memberExpression","numericLiteral","toIdentifier","variableDeclaration","variableDeclarator","isRecordExpression","isTupleExpression","isObjectProperty","isTopicReference","isMetaProperty","isPrivateName","isExportDeclaration","buildUndefinedNode","sequenceExpression","gatherNodeParts","node","parts","type","_node$specifiers","source","specifiers","length","e","declaration","local","push","value","object","property","name","callee","properties","argument","key","left","id","expression","meta","openingElement","openingFragment","namespace","collectorVisitor","ForStatement","path","declar","get","isVar","scope","parentScope","getFunctionParent","getProgramParent","registerBinding","Declaration","isBlockScoped","parent","registerDeclaration","ImportDeclaration","getBlockParent","ReferencedIdentifier","state","references","ForXStatement","isPattern","constantViolations","ExportDeclaration","exit","binding","getBinding","reference","decl","declarations","Object","keys","LabeledStatement","AssignmentExpression","assignments","UpdateExpression","UnaryExpression","operator","BlockScoped","bindings","CatchClause","Function","params","param","isFunctionExpression","ClassExpression","TSTypeAnnotation","skip","uid","Scope","constructor","block","inited","labels","globals","uids","data","crawling","cached","scopeCache","set","Map","_parent","_path","shouldSkip","listKey","parentPath","isScope","generateDeclaredUidIdentifier","generateUidIdentifier","generateUid","replace","i","hasLabel","hasBinding","hasGlobal","hasReference","program","generateUidBasedOnNode","defaultName","join","slice","generateUidIdentifierBasedOnNode","isStatic","constant","maybeGenerateMemoised","dontPush","checkBlockScopedCollisions","kind","duplicate","hub","buildError","TypeError","rename","oldName","newName","renamer","Renamer","arguments","dump","sep","repeat","console","log","violations","getLabel","registerLabel","label","isLabeledStatement","declare","isTypeDeclaration","importKind","specifier","isTypeSpecifier","isImportSpecifier","registerConstantViolation","ids","getAssignmentIdentifiers","_this$getBinding","reassign","bindingPath","ReferenceError","declarators","getOuterBindingIdentifiers","getOwnBinding","Binding","addGlobal","hasUid","isPure","constantsOnly","_node$decorators","superClass","decorators","body","method","right","elem","elements","prop","_node$decorators2","computed","_node$decorators3","static","expressions","tag","noGlobals","quasi","isStringLiteral","setData","val","getData","removeData","init","crawl","create","programParent","isExplodedVisitor","visit","enter","call","typeVisitors","traverse","ref","opts","getPatternParent","isBlockStatement","isProgram","isSwitchStatement","unique","isFunction","pushContainer","isLoop","isCatchClause","ensureBlock","blockHoist","_blockHoist","dataKey","declarPath","unshiftContainer","declarator","len","Error","isFunctionParent","isBlockParent","getAllBindings","bindingIdentifierEquals","getBindingIdentifier","previousPath","_previousPath","isArrowFunctionExpression","_this$getBinding2","getOwnBindingIdentifier","hasOwnBinding","noUids","includes","contextVariables","parentHasBinding","_this$parent","moveBindingTo","info","removeOwnBinding","removeBinding","_this$getBinding3","hoistVariables","emit","seen","Set","isVariableDeclarator","has","add","firstId","_firstId","isFor","replaceWith","remove","expr","isForStatement","exports","default","builtin","prototype","_renameFromMap","map","_generateUid","toArray","arrayLikeIsIterable","isGenericType","helperName","args","unshift","addHelper","getAllBindingsOfKind","kinds","defineProperties","parentBlock","configurable","enumerable"],"sources":["../../src/scope/index.ts"],"sourcesContent":["import Renamer from \"./lib/renamer.ts\";\nimport type NodePath from \"../path/index.ts\";\nimport traverse from \"../index.ts\";\nimport Binding from \"./binding.ts\";\nimport type { BindingKind } from \"./binding.ts\";\nimport globals from \"globals\";\nimport {\n  NOT_LOCAL_BINDING,\n  assignmentExpression,\n  callExpression,\n  cloneNode,\n  getBindingIdentifiers,\n  identifier,\n  isArrayExpression,\n  isBinary,\n  isCallExpression,\n  isClass,\n  isClassBody,\n  isClassDeclaration,\n  isExportAllDeclaration,\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n  isFunctionDeclaration,\n  isIdentifier,\n  isImportDeclaration,\n  isLiteral,\n  isMemberExpression,\n  isMethod,\n  isModuleSpecifier,\n  isNullLiteral,\n  isObjectExpression,\n  isProperty,\n  isPureish,\n  isRegExpLiteral,\n  isSuper,\n  isTaggedTemplateExpression,\n  isTemplateLiteral,\n  isThisExpression,\n  isUnaryExpression,\n  isVariableDeclaration,\n  expressionStatement,\n  matchesPattern,\n  memberExpression,\n  numericLiteral,\n  toIdentifier,\n  variableDeclaration,\n  variableDeclarator,\n  isRecordExpression,\n  isTupleExpression,\n  isObjectProperty,\n  isTopicReference,\n  isMetaProperty,\n  isPrivateName,\n  isExportDeclaration,\n  buildUndefinedNode,\n  sequenceExpression,\n} from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { isExplodedVisitor } from \"../visitors.ts\";\n\ntype NodePart = string | number | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node, parts: NodePart[]) {\n  switch (node?.type) {\n    default:\n      if (isImportDeclaration(node) || isExportDeclaration(node)) {\n        if (\n          (isExportAllDeclaration(node) ||\n            isExportNamedDeclaration(node) ||\n            isImportDeclaration(node)) &&\n          node.source\n        ) {\n          gatherNodeParts(node.source, parts);\n        } else if (\n          (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n          node.specifiers?.length\n        ) {\n          for (const e of node.specifiers) gatherNodeParts(e, parts);\n        } else if (\n          (isExportDefaultDeclaration(node) ||\n            isExportNamedDeclaration(node)) &&\n          node.declaration\n        ) {\n          gatherNodeParts(node.declaration, parts);\n        }\n      } else if (isModuleSpecifier(node)) {\n        // todo(flow->ts): should condition instead be:\n        //    ```\n        //    t.isExportSpecifier(node) ||\n        //    t.isImportDefaultSpecifier(node) ||\n        //    t.isImportNamespaceSpecifier(node) ||\n        //    t.isImportSpecifier(node)\n        //    ```\n        //    allowing only nodes with `.local`?\n        // @ts-expect-error todo(flow->ts)\n        gatherNodeParts(node.local, parts);\n      } else if (\n        isLiteral(node) &&\n        !isNullLiteral(node) &&\n        !isRegExpLiteral(node) &&\n        !isTemplateLiteral(node)\n      ) {\n        parts.push(node.value);\n      }\n      break;\n\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\":\n    case \"JSXMemberExpression\":\n      gatherNodeParts(node.object, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"Identifier\":\n    case \"JSXIdentifier\":\n      parts.push(node.name);\n      break;\n\n    case \"CallExpression\":\n    case \"OptionalCallExpression\":\n    case \"NewExpression\":\n      gatherNodeParts(node.callee, parts);\n      break;\n\n    case \"ObjectExpression\":\n    case \"ObjectPattern\":\n      for (const e of node.properties) {\n        gatherNodeParts(e, parts);\n      }\n      break;\n\n    case \"SpreadElement\":\n    case \"RestElement\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"ObjectProperty\":\n    case \"ObjectMethod\":\n    case \"ClassProperty\":\n    case \"ClassMethod\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n      gatherNodeParts(node.key, parts);\n      break;\n\n    case \"ThisExpression\":\n      parts.push(\"this\");\n      break;\n\n    case \"Super\":\n      parts.push(\"super\");\n      break;\n\n    case \"Import\":\n      parts.push(\"import\");\n      break;\n\n    case \"DoExpression\":\n      parts.push(\"do\");\n      break;\n\n    case \"YieldExpression\":\n      parts.push(\"yield\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AwaitExpression\":\n      parts.push(\"await\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AssignmentExpression\":\n      gatherNodeParts(node.left, parts);\n      break;\n\n    case \"VariableDeclarator\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"FunctionExpression\":\n    case \"FunctionDeclaration\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"PrivateName\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"ParenthesizedExpression\":\n      gatherNodeParts(node.expression, parts);\n      break;\n\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"MetaProperty\":\n      gatherNodeParts(node.meta, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"JSXElement\":\n      gatherNodeParts(node.openingElement, parts);\n      break;\n\n    case \"JSXOpeningElement\":\n      gatherNodeParts(node.name, parts);\n      break;\n\n    case \"JSXFragment\":\n      gatherNodeParts(node.openingFragment, parts);\n      break;\n\n    case \"JSXOpeningFragment\":\n      parts.push(\"Fragment\");\n      break;\n\n    case \"JSXNamespacedName\":\n      gatherNodeParts(node.namespace, parts);\n      gatherNodeParts(node.name, parts);\n      break;\n  }\n}\n\n//\ninterface CollectVisitorState {\n  assignments: NodePath<t.AssignmentExpression>[];\n  references: NodePath<t.Identifier | t.JSXIdentifier>[];\n  constantViolations: NodePath[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n  ForStatement(path) {\n    const declar = path.get(\"init\");\n    // delegate block scope handling to the `BlockScoped` method\n    if (declar.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", declar);\n    }\n  },\n\n  Declaration(path) {\n    // delegate block scope handling to the `BlockScoped` method\n    if (path.isBlockScoped()) return;\n\n    // delegate import handing to the `ImportDeclaration` method\n    if (path.isImportDeclaration()) return;\n\n    // this will be hit again once we traverse into it after this iteration\n    if (path.isExportDeclaration()) return;\n\n    // we've ran into a declaration!\n    const parent =\n      path.scope.getFunctionParent() || path.scope.getProgramParent();\n    parent.registerDeclaration(path);\n  },\n\n  ImportDeclaration(path) {\n    // import may only appear in the top level or inside a module/namespace (for TS/flow)\n    const parent = path.scope.getBlockParent();\n\n    parent.registerDeclaration(path);\n  },\n\n  ReferencedIdentifier(path, state) {\n    state.references.push(path);\n  },\n\n  ForXStatement(path, state) {\n    const left = path.get(\"left\");\n    if (left.isPattern() || left.isIdentifier()) {\n      state.constantViolations.push(path);\n    }\n    // delegate block scope handling to the `BlockScoped` method\n    else if (left.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", left);\n    }\n  },\n\n  ExportDeclaration: {\n    exit(path) {\n      const { node, scope } = path;\n      // ExportAllDeclaration does not have `declaration`\n      if (isExportAllDeclaration(node)) return;\n      const declar = node.declaration;\n      if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n        const id = declar.id;\n        if (!id) return;\n\n        const binding = scope.getBinding(id.name);\n        binding?.reference(path);\n      } else if (isVariableDeclaration(declar)) {\n        for (const decl of declar.declarations) {\n          for (const name of Object.keys(getBindingIdentifiers(decl))) {\n            const binding = scope.getBinding(name);\n            binding?.reference(path);\n          }\n        }\n      }\n    },\n  },\n\n  LabeledStatement(path) {\n    path.scope.getBlockParent().registerDeclaration(path);\n  },\n\n  AssignmentExpression(path, state) {\n    state.assignments.push(path);\n  },\n\n  UpdateExpression(path, state) {\n    state.constantViolations.push(path);\n  },\n\n  UnaryExpression(path, state) {\n    if (path.node.operator === \"delete\") {\n      state.constantViolations.push(path);\n    }\n  },\n\n  BlockScoped(path) {\n    let scope = path.scope;\n    if (scope.path === path) scope = scope.parent;\n\n    const parent = scope.getBlockParent();\n    parent.registerDeclaration(path);\n\n    // Register class identifier in class' scope if this is a class declaration.\n    if (path.isClassDeclaration() && path.node.id) {\n      const id = path.node.id;\n      const name = id.name;\n\n      path.scope.bindings[name] = path.scope.parent.getBinding(name);\n    }\n  },\n\n  CatchClause(path) {\n    path.scope.registerBinding(\"let\", path);\n  },\n\n  Function(path) {\n    const params: Array<NodePath> = path.get(\"params\");\n    for (const param of params) {\n      path.scope.registerBinding(\"param\", param);\n    }\n\n    // Register function expression id after params. When the id\n    // collides with a function param, the id effectively can't be\n    // referenced: here we registered it as a constantViolation\n    if (\n      path.isFunctionExpression() &&\n      path.node.id &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.node.id[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n\n  ClassExpression(path) {\n    if (\n      path.node.id &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.node.id[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n  TSTypeAnnotation(path) {\n    path.skip();\n  },\n};\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport { Scope as default };\nclass Scope {\n  uid;\n\n  path: NodePath;\n  block: t.Pattern | t.Scopable;\n\n  inited;\n\n  labels: Map<string, NodePath<t.LabeledStatement>>;\n  bindings: { [name: string]: Binding };\n  references: { [name: string]: true };\n  globals: { [name: string]: t.Identifier | t.JSXIdentifier };\n  uids: { [name: string]: boolean };\n  data: { [key: string | symbol]: unknown };\n  crawling: boolean;\n\n  /**\n   * This searches the current \"scope\" and collects all references/bindings\n   * within.\n   */\n  constructor(path: NodePath<t.Pattern | t.Scopable>) {\n    const { node } = path;\n    const cached = scopeCache.get(node);\n    // Sometimes, a scopable path is placed higher in the AST tree.\n    // In these cases, have to create a new Scope.\n    if (cached?.path === path) {\n      return cached;\n    }\n    scopeCache.set(node, this);\n\n    this.uid = uid++;\n\n    this.block = node;\n    this.path = path;\n\n    this.labels = new Map();\n    this.inited = false;\n  }\n\n  /**\n   * Globals.\n   */\n\n  static globals = Object.keys(globals.builtin);\n\n  /**\n   * Variables available in current context.\n   */\n\n  static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n  get parent() {\n    let parent,\n      path = this.path;\n    do {\n      // Skip method scope if coming from inside computed key or decorator expression\n      const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n      path = path.parentPath;\n      if (shouldSkip && path.isMethod()) path = path.parentPath;\n      if (path?.isScope()) parent = path;\n    } while (path && !parent);\n\n    return parent?.scope;\n  }\n\n  /**\n   * Generate a unique identifier and add it to the current scope.\n   */\n\n  generateDeclaredUidIdentifier(name?: string) {\n    const id = this.generateUidIdentifier(name);\n    this.push({ id });\n    return cloneNode(id);\n  }\n\n  /**\n   * Generate a unique identifier.\n   */\n\n  generateUidIdentifier(name?: string) {\n    return identifier(this.generateUid(name));\n  }\n\n  /**\n   * Generate a unique `_id1` binding.\n   */\n\n  generateUid(name: string = \"temp\"): string {\n    name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n\n    let uid;\n    let i = 1;\n    do {\n      uid = `_${name}`;\n      if (i > 1) uid += i;\n      i++;\n    } while (\n      this.hasLabel(uid) ||\n      this.hasBinding(uid) ||\n      this.hasGlobal(uid) ||\n      this.hasReference(uid)\n    );\n\n    const program = this.getProgramParent();\n    program.references[uid] = true;\n    program.uids[uid] = true;\n\n    return uid;\n  }\n\n  generateUidBasedOnNode(node: t.Node, defaultName?: string) {\n    const parts: NodePart[] = [];\n    gatherNodeParts(node, parts);\n\n    let id = parts.join(\"$\");\n    id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n    return this.generateUid(id.slice(0, 20));\n  }\n\n  /**\n   * Generate a unique identifier based on a node.\n   */\n\n  generateUidIdentifierBasedOnNode(node: t.Node, defaultName?: string) {\n    return identifier(this.generateUidBasedOnNode(node, defaultName));\n  }\n\n  /**\n   * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n   * evaluating it won't result in potentially arbitrary code from being ran. The following are\n   * allowed and determined not to cause side effects:\n   *\n   *  - `this` expressions\n   *  - `super` expressions\n   *  - Bound identifiers\n   */\n\n  isStatic(node: t.Node): boolean {\n    if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n      return true;\n    }\n\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding) {\n        return binding.constant;\n      } else {\n        return this.hasBinding(node.name);\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Possibly generate a memoised identifier if it is not static and has consequences.\n   */\n\n  maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n    if (this.isStatic(node)) {\n      return null;\n    } else {\n      const id = this.generateUidIdentifierBasedOnNode(node);\n      if (!dontPush) {\n        this.push({ id });\n        return cloneNode(id);\n      }\n      return id;\n    }\n  }\n\n  checkBlockScopedCollisions(\n    local: Binding,\n    kind: BindingKind,\n    name: string,\n    id: any,\n  ) {\n    // ignore parameters\n    if (kind === \"param\") return;\n\n    // Ignore existing binding if it's the name of the current function or\n    // class expression\n    if (local.kind === \"local\") return;\n\n    const duplicate =\n      // don't allow duplicate bindings to exist alongside\n      kind === \"let\" ||\n      local.kind === \"let\" ||\n      local.kind === \"const\" ||\n      local.kind === \"module\" ||\n      // don't allow a local of param with a kind of let\n      (local.kind === \"param\" && kind === \"const\");\n\n    if (duplicate) {\n      throw this.path.hub.buildError(\n        id,\n        `Duplicate declaration \"${name}\"`,\n        TypeError,\n      );\n    }\n  }\n\n  rename(\n    oldName: string,\n    newName?: string,\n    // prettier-ignore\n    /* Babel 7 - block?: t.Pattern | t.Scopable */\n  ) {\n    const binding = this.getBinding(oldName);\n    if (binding) {\n      newName ||= this.generateUidIdentifier(oldName).name;\n      const renamer = new Renamer(binding, oldName, newName);\n      if (process.env.BABEL_8_BREAKING) {\n        renamer.rename();\n      } else {\n        // @ts-ignore(Babel 7 vs Babel 8) TODO: Delete this\n        renamer.rename(arguments[2]);\n      }\n    }\n  }\n\n  dump() {\n    const sep = \"-\".repeat(60);\n    console.log(sep);\n    let scope: Scope = this;\n    do {\n      console.log(\"#\", scope.block.type);\n      for (const name of Object.keys(scope.bindings)) {\n        const binding = scope.bindings[name];\n        console.log(\" -\", name, {\n          constant: binding.constant,\n          references: binding.references,\n          violations: binding.constantViolations.length,\n          kind: binding.kind,\n        });\n      }\n    } while ((scope = scope.parent));\n    console.log(sep);\n  }\n\n  hasLabel(name: string) {\n    return !!this.getLabel(name);\n  }\n\n  getLabel(name: string) {\n    return this.labels.get(name);\n  }\n\n  registerLabel(path: NodePath<t.LabeledStatement>) {\n    this.labels.set(path.node.label.name, path);\n  }\n\n  registerDeclaration(path: NodePath) {\n    if (path.isLabeledStatement()) {\n      this.registerLabel(path);\n    } else if (path.isFunctionDeclaration()) {\n      this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n    } else if (path.isVariableDeclaration()) {\n      const declarations = path.get(\"declarations\");\n      const { kind } = path.node;\n      for (const declar of declarations) {\n        this.registerBinding(\n          kind === \"using\" || kind === \"await using\" ? \"const\" : kind,\n          declar,\n        );\n      }\n    } else if (path.isClassDeclaration()) {\n      if (path.node.declare) return;\n      this.registerBinding(\"let\", path);\n    } else if (path.isImportDeclaration()) {\n      const isTypeDeclaration =\n        path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n      const specifiers = path.get(\"specifiers\");\n      for (const specifier of specifiers) {\n        const isTypeSpecifier =\n          isTypeDeclaration ||\n          (specifier.isImportSpecifier() &&\n            (specifier.node.importKind === \"type\" ||\n              specifier.node.importKind === \"typeof\"));\n\n        this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n      }\n    } else if (path.isExportDeclaration()) {\n      // todo: improve babel-types\n      const declar = path.get(\"declaration\") as NodePath;\n      if (\n        declar.isClassDeclaration() ||\n        declar.isFunctionDeclaration() ||\n        declar.isVariableDeclaration()\n      ) {\n        this.registerDeclaration(declar);\n      }\n    } else {\n      this.registerBinding(\"unknown\", path);\n    }\n  }\n\n  buildUndefinedNode() {\n    return buildUndefinedNode();\n  }\n\n  registerConstantViolation(path: NodePath) {\n    const ids = path.getAssignmentIdentifiers();\n    for (const name of Object.keys(ids)) {\n      this.getBinding(name)?.reassign(path);\n    }\n  }\n\n  registerBinding(\n    kind: Binding[\"kind\"],\n    path: NodePath,\n    bindingPath: NodePath = path,\n  ) {\n    if (!kind) throw new ReferenceError(\"no `kind`\");\n\n    if (path.isVariableDeclaration()) {\n      const declarators: Array<NodePath> = path.get(\"declarations\");\n      for (const declar of declarators) {\n        this.registerBinding(kind, declar);\n      }\n      return;\n    }\n\n    const parent = this.getProgramParent();\n    const ids = path.getOuterBindingIdentifiers(true);\n\n    for (const name of Object.keys(ids)) {\n      parent.references[name] = true;\n\n      for (const id of ids[name]) {\n        const local = this.getOwnBinding(name);\n\n        if (local) {\n          // same identifier so continue safely as we're likely trying to register it\n          // multiple times\n          if (local.identifier === id) continue;\n\n          this.checkBlockScopedCollisions(local, kind, name, id);\n        }\n\n        // A redeclaration of an existing variable is a modification\n        if (local) {\n          local.reassign(bindingPath);\n        } else {\n          this.bindings[name] = new Binding({\n            identifier: id,\n            scope: this,\n            path: bindingPath,\n            kind: kind,\n          });\n        }\n      }\n    }\n  }\n\n  addGlobal(node: t.Identifier | t.JSXIdentifier) {\n    this.globals[node.name] = node;\n  }\n\n  hasUid(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.uids[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasGlobal(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.globals[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasReference(name: string): boolean {\n    return !!this.getProgramParent().references[name];\n  }\n\n  isPure(node: t.Node, constantsOnly?: boolean): boolean {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (!binding) return false;\n      if (constantsOnly) return binding.constant;\n      return true;\n    } else if (\n      isThisExpression(node) ||\n      isMetaProperty(node) ||\n      isTopicReference(node) ||\n      isPrivateName(node)\n    ) {\n      return true;\n    } else if (isClass(node)) {\n      if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n        return false;\n      }\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return this.isPure(node.body, constantsOnly);\n    } else if (isClassBody(node)) {\n      for (const method of node.body) {\n        if (!this.isPure(method, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isBinary(node)) {\n      return (\n        this.isPure(node.left, constantsOnly) &&\n        this.isPure(node.right, constantsOnly)\n      );\n    } else if (isArrayExpression(node) || isTupleExpression(node)) {\n      for (const elem of node.elements) {\n        if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isObjectExpression(node) || isRecordExpression(node)) {\n      for (const prop of node.properties) {\n        if (!this.isPure(prop, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isMethod(node)) {\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return true;\n    } else if (isProperty(node)) {\n      // @ts-expect-error todo(flow->ts): computed in not present on private properties\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      if (isObjectProperty(node) || node.static) {\n        if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n          return false;\n        }\n      }\n      return true;\n    } else if (isUnaryExpression(node)) {\n      return this.isPure(node.argument, constantsOnly);\n    } else if (isTemplateLiteral(node)) {\n      for (const expression of node.expressions) {\n        if (!this.isPure(expression, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isTaggedTemplateExpression(node)) {\n      return (\n        matchesPattern(node.tag, \"String.raw\") &&\n        !this.hasBinding(\"String\", { noGlobals: true }) &&\n        this.isPure(node.quasi, constantsOnly)\n      );\n    } else if (isMemberExpression(node)) {\n      return (\n        !node.computed &&\n        isIdentifier(node.object) &&\n        node.object.name === \"Symbol\" &&\n        isIdentifier(node.property) &&\n        node.property.name !== \"for\" &&\n        !this.hasBinding(\"Symbol\", { noGlobals: true })\n      );\n    } else if (isCallExpression(node)) {\n      return (\n        matchesPattern(node.callee, \"Symbol.for\") &&\n        !this.hasBinding(\"Symbol\", { noGlobals: true }) &&\n        node.arguments.length === 1 &&\n        t.isStringLiteral(node.arguments[0])\n      );\n    } else {\n      return isPureish(node);\n    }\n  }\n\n  /**\n   * Set some arbitrary data on the current scope.\n   */\n\n  setData(key: string | symbol, val: any) {\n    return (this.data[key] = val);\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key`.\n   */\n\n  getData(key: string | symbol): any {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) return data;\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key` and if it exists,\n   * remove it.\n   */\n\n  removeData(key: string) {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) scope.data[key] = null;\n    } while ((scope = scope.parent));\n  }\n\n  init() {\n    if (!this.inited) {\n      this.inited = true;\n      this.crawl();\n    }\n  }\n\n  crawl() {\n    const path = this.path;\n\n    this.references = Object.create(null);\n    this.bindings = Object.create(null);\n    this.globals = Object.create(null);\n    this.uids = Object.create(null);\n    this.data = Object.create(null);\n\n    const programParent = this.getProgramParent();\n    if (programParent.crawling) return;\n\n    const state: CollectVisitorState = {\n      references: [],\n      constantViolations: [],\n      assignments: [],\n    };\n\n    this.crawling = true;\n    // traverse does not visit the root node, here we explicitly collect\n    // root node binding info when the root is not a Program.\n    if (path.type !== \"Program\" && isExplodedVisitor(collectorVisitor)) {\n      for (const visit of collectorVisitor.enter) {\n        visit.call(state, path, state);\n      }\n      const typeVisitors = collectorVisitor[path.type];\n      if (typeVisitors) {\n        for (const visit of typeVisitors.enter) {\n          visit.call(state, path, state);\n        }\n      }\n    }\n    path.traverse(collectorVisitor, state);\n    this.crawling = false;\n\n    // register assignments\n    for (const path of state.assignments) {\n      // register undeclared bindings as globals\n      const ids = path.getAssignmentIdentifiers();\n      for (const name of Object.keys(ids)) {\n        if (path.scope.getBinding(name)) continue;\n        programParent.addGlobal(ids[name]);\n      }\n\n      // register as constant violation\n      path.scope.registerConstantViolation(path);\n    }\n\n    // register references\n    for (const ref of state.references) {\n      const binding = ref.scope.getBinding(ref.node.name);\n      if (binding) {\n        binding.reference(ref);\n      } else {\n        programParent.addGlobal(ref.node);\n      }\n    }\n\n    // register constant violations\n    for (const path of state.constantViolations) {\n      path.scope.registerConstantViolation(path);\n    }\n  }\n\n  push(opts: {\n    id: t.ArrayPattern | t.Identifier | t.ObjectPattern;\n    init?: t.Expression;\n    unique?: boolean;\n    _blockHoist?: number | undefined;\n    kind?: \"var\" | \"let\" | \"const\";\n  }) {\n    let path = this.path;\n\n    if (path.isPattern()) {\n      path = this.getPatternParent().path;\n    } else if (!path.isBlockStatement() && !path.isProgram()) {\n      path = this.getBlockParent().path;\n    }\n\n    if (path.isSwitchStatement()) {\n      path = (this.getFunctionParent() || this.getProgramParent()).path;\n    }\n\n    const { init, unique, kind = \"var\", id } = opts;\n\n    // When injecting a non-const non-initialized binding inside\n    // an IIFE, if the number of call arguments is less than or\n    // equal to the number of function parameters, we can safely\n    // inject the binding into the parameter list.\n    if (\n      !init &&\n      !unique &&\n      (kind === \"var\" || kind === \"let\") &&\n      path.isFunction() &&\n      // @ts-expect-error ArrowFunctionExpression never has a name\n      !path.node.name &&\n      isCallExpression(path.parent, { callee: path.node }) &&\n      path.parent.arguments.length <= path.node.params.length &&\n      isIdentifier(id)\n    ) {\n      path.pushContainer(\"params\", id);\n      path.scope.registerBinding(\n        \"param\",\n        path.get(\"params\")[path.node.params.length - 1],\n      );\n      return;\n    }\n\n    if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n      path.ensureBlock();\n      path = path.get(\"body\");\n    }\n\n    const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n    const dataKey = `declaration:${kind}:${blockHoist}`;\n    let declarPath = !unique && path.getData(dataKey);\n\n    if (!declarPath) {\n      const declar = variableDeclaration(kind, []);\n      // @ts-expect-error todo(flow->ts): avoid modifying nodes\n      declar._blockHoist = blockHoist;\n\n      [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n        \"body\",\n        [declar],\n      );\n      if (!unique) path.setData(dataKey, declarPath);\n    }\n\n    const declarator = variableDeclarator(id, init);\n    const len = declarPath.node.declarations.push(declarator);\n    path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n  }\n\n  /**\n   * Walk up to the top of the scope tree and get the `Program`.\n   */\n\n  getProgramParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isProgram()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\"Couldn't find a Program\");\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a Function or return null.\n   */\n\n  getFunctionParent(): Scope | null {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isFunctionParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    return null;\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n   * very top and hit Program.\n   */\n\n  getBlockParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isBlockParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n   * then returns its block parent\n   * @returns An ancestry scope whose path is a block parent\n   */\n  getPatternParent() {\n    let scope: Scope = this;\n    do {\n      if (!scope.path.isPattern()) {\n        return scope.getBlockParent();\n      }\n    } while ((scope = scope.parent.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walks the scope tree and gathers **all** bindings.\n   */\n\n  getAllBindings(): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    let scope: Scope = this;\n    do {\n      for (const key of Object.keys(scope.bindings)) {\n        if (key in ids === false) {\n          ids[key] = scope.bindings[key];\n        }\n      }\n      scope = scope.parent;\n    } while (scope);\n\n    return ids;\n  }\n\n  bindingIdentifierEquals(name: string, node: t.Node): boolean {\n    return this.getBindingIdentifier(name) === node;\n  }\n\n  getBinding(name: string): Binding | undefined {\n    let scope: Scope = this;\n    let previousPath;\n\n    do {\n      const binding = scope.getOwnBinding(name);\n      if (binding) {\n        // Check if a pattern is a part of parameter expressions.\n        // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n        // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n        // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n        // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n        // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n        // or `local`-kind (as id in function expression),\n        // then it must be defined inside the function body, thus it should be skipped\n        if (\n          previousPath?.isPattern() &&\n          binding.kind !== \"param\" &&\n          binding.kind !== \"local\"\n        ) {\n          // do nothing\n        } else {\n          return binding;\n        }\n      } else if (\n        !binding &&\n        name === \"arguments\" &&\n        scope.path.isFunction() &&\n        !scope.path.isArrowFunctionExpression()\n      ) {\n        break;\n      }\n      previousPath = scope.path;\n    } while ((scope = scope.parent));\n  }\n\n  getOwnBinding(name: string): Binding | undefined {\n    return this.bindings[name];\n  }\n\n  // todo: return probably can be undefined…\n  getBindingIdentifier(name: string): t.Identifier {\n    return this.getBinding(name)?.identifier;\n  }\n\n  // todo: flow->ts return probably can be undefined\n  getOwnBindingIdentifier(name: string): t.Identifier {\n    const binding = this.bindings[name];\n    return binding?.identifier;\n  }\n\n  hasOwnBinding(name: string) {\n    return !!this.getOwnBinding(name);\n  }\n\n  // By default, we consider generated UIDs as bindings.\n  // This is because they are almost always used to declare variables,\n  // and since the scope isn't always up-to-date it's better to assume that\n  // there is a variable with that name. The `noUids` option can be used to\n  // turn off this behavior, for example if you know that the generate UID\n  // was used to declare a variable in a different scope.\n  hasBinding(\n    name: string,\n    opts?: boolean | { noGlobals?: boolean; noUids?: boolean },\n  ) {\n    if (!name) return false;\n    let scope: Scope = this;\n    do {\n      if (scope.hasOwnBinding(name)) {\n        return true;\n      }\n    } while ((scope = scope.parent));\n\n    // TODO: Only accept the object form.\n    let noGlobals;\n    let noUids;\n    if (typeof opts === \"object\") {\n      noGlobals = opts.noGlobals;\n      noUids = opts.noUids;\n    } else if (typeof opts === \"boolean\") {\n      noGlobals = opts;\n    }\n\n    if (!noUids && this.hasUid(name)) return true;\n    if (!noGlobals && Scope.globals.includes(name)) return true;\n    if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n    return false;\n  }\n\n  parentHasBinding(\n    name: string,\n    opts?: { noGlobals?: boolean; noUids?: boolean },\n  ) {\n    return this.parent?.hasBinding(name, opts);\n  }\n\n  /**\n   * Move a binding of `name` to another `scope`.\n   */\n\n  moveBindingTo(name: string, scope: Scope) {\n    const info = this.getBinding(name);\n    if (info) {\n      info.scope.removeOwnBinding(name);\n      info.scope = scope;\n      scope.bindings[name] = info;\n    }\n  }\n\n  removeOwnBinding(name: string) {\n    delete this.bindings[name];\n  }\n\n  removeBinding(name: string) {\n    // clear literal binding\n    this.getBinding(name)?.scope.removeOwnBinding(name);\n\n    // clear uids with this name - https://github.com/babel/babel/issues/2101\n    let scope: Scope = this;\n    do {\n      if (scope.uids[name]) {\n        scope.uids[name] = false;\n      }\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Hoist all the `var` variable to the beginning of the function/program\n   * scope where their binding will be actually defined. For exmaple,\n   *     { var x = 2 }\n   * will be transformed to\n   *     var x; { x = 2 }\n   *\n   * @param emit A custom function to emit `var` declarations, for example to\n   *   emit them in a different scope.\n   */\n  hoistVariables(\n    emit: (id: t.Identifier, hasInit: boolean) => void = id =>\n      this.push({ id }),\n  ) {\n    this.crawl();\n\n    const seen = new Set();\n    for (const name of Object.keys(this.bindings)) {\n      const binding = this.bindings[name];\n      if (!binding) continue;\n      const { path } = binding;\n      if (!path.isVariableDeclarator()) continue;\n      const { parent, parentPath } = path;\n\n      if (parent.kind !== \"var\" || seen.has(parent)) continue;\n      seen.add(path.parent);\n\n      let firstId;\n      const init = [];\n      for (const decl of parent.declarations) {\n        firstId ??= decl.id;\n        if (decl.init) {\n          init.push(assignmentExpression(\"=\", decl.id, decl.init));\n        }\n\n        const ids = Object.keys(getBindingIdentifiers(decl, false, true, true));\n        for (const name of ids) {\n          emit(identifier(name), decl.init != null);\n        }\n      }\n\n      // for (var i in test)\n      if (parentPath.parentPath.isFor({ left: parent })) {\n        parentPath.replaceWith(firstId);\n      } else if (init.length === 0) {\n        parentPath.remove();\n      } else {\n        const expr = init.length === 1 ? init[0] : sequenceExpression(init);\n        if (parentPath.parentPath.isForStatement({ init: parent })) {\n          parentPath.replaceWith(expr);\n        } else {\n          parentPath.replaceWith(expressionStatement(expr));\n        }\n      }\n    }\n  }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /** @deprecated Not used in our codebase */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype._renameFromMap = function _renameFromMap(\n    map: Record<string | symbol, unknown>,\n    oldName: string | symbol,\n    newName: string | symbol,\n    value: unknown,\n  ) {\n    if (map[oldName]) {\n      map[newName] = value;\n      map[oldName] = null;\n    }\n  };\n\n  /**\n   * Traverse node with current scope and path.\n   *\n   * !!! WARNING !!!\n   * This method assumes that `this.path` is the NodePath representing `node`.\n   * After running the traversal, the `.parentPath` of the NodePaths\n   * corresponding to `node`'s children will be set to `this.path`.\n   *\n   * There is no good reason to use this method, since the only safe way to use\n   * it is equivalent to `scope.path.traverse(opts, state)`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.traverse = function <S>(\n    this: Scope,\n    node: any,\n    opts: any,\n    state?: S,\n  ) {\n    traverse(node, opts, this, state, this.path);\n  };\n\n  /**\n   * Generate an `_id1`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype._generateUid = function _generateUid(\n    name: string,\n    i: number,\n  ) {\n    let id = name;\n    if (i > 1) id += i;\n    return `_${id}`;\n  };\n\n  // TODO: (Babel 8) Split i in two parameters, and use an object of flags\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.toArray = function toArray(\n    this: Scope,\n    node: t.Node,\n    i?: number | boolean,\n    arrayLikeIsIterable?: boolean | void,\n  ) {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n        return node;\n      }\n    }\n\n    if (isArrayExpression(node)) {\n      return node;\n    }\n\n    if (isIdentifier(node, { name: \"arguments\" })) {\n      return callExpression(\n        memberExpression(\n          memberExpression(\n            memberExpression(identifier(\"Array\"), identifier(\"prototype\")),\n            identifier(\"slice\"),\n          ),\n          identifier(\"call\"),\n        ),\n        [node],\n      );\n    }\n\n    let helperName;\n    const args = [node];\n    if (i === true) {\n      // Used in array-spread to create an array.\n      helperName = \"toConsumableArray\";\n    } else if (typeof i === \"number\") {\n      args.push(numericLiteral(i));\n\n      // Used in array-rest to create an array from a subset of an iterable.\n      helperName = \"slicedToArray\";\n      // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n    } else {\n      // Used in array-rest to create an array\n      helperName = \"toArray\";\n    }\n\n    if (arrayLikeIsIterable) {\n      args.unshift(this.path.hub.addHelper(helperName));\n      helperName = \"maybeArrayLike\";\n    }\n\n    // @ts-expect-error todo(flow->ts): t.Node is not valid to use in args, function argument typeneeds to be clarified\n    return callExpression(this.path.hub.addHelper(helperName), args);\n  };\n\n  /**\n   * Walks the scope tree and gathers all declarations of `kind`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind(\n    ...kinds: string[]\n  ): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    for (const kind of kinds) {\n      let scope: Scope = this;\n      do {\n        for (const name of Object.keys(scope.bindings)) {\n          const binding = scope.bindings[name];\n          if (binding.kind === kind) ids[name] = binding;\n        }\n        scope = scope.parent;\n      } while (scope);\n    }\n\n    return ids;\n  };\n\n  Object.defineProperties(Scope.prototype, {\n    parentBlock: {\n      configurable: true,\n      enumerable: true,\n      get(this: Scope) {\n        return this.path.parent;\n      },\n    },\n    hub: {\n      configurable: true,\n      enumerable: true,\n      get(this: Scope) {\n        return this.path.hub;\n      },\n    },\n  });\n}\n\ntype _Binding = Binding;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Scope {\n  export type Binding = _Binding;\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_renamer","require","_index","_binding","_globals","_t","t","_cache","_visitors","NOT_LOCAL_BINDING","assignmentExpression","callExpression","cloneNode","getBindingIdentifiers","identifier","isArrayExpression","isBinary","isCallExpression","isClass","isClassBody","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isFunctionDeclaration","isIdentifier","isImportDeclaration","isLiteral","isMemberExpression","isMethod","isModuleSpecifier","isNullLiteral","isObjectExpression","isProperty","isPureish","isRegExpLiteral","isSuper","isTaggedTemplateExpression","isTemplateLiteral","isThisExpression","isUnaryExpression","isVariableDeclaration","expressionStatement","matchesPattern","memberExpression","numericLiteral","toIdentifier","variableDeclaration","variableDeclarator","isRecordExpression","isTupleExpression","isObjectProperty","isTopicReference","isMetaProperty","isPrivateName","isExportDeclaration","buildUndefinedNode","sequenceExpression","gatherNodeParts","node","parts","type","_node$specifiers","source","specifiers","length","e","declaration","local","push","value","object","property","name","callee","properties","argument","key","left","id","expression","meta","openingElement","openingFragment","namespace","collectorVisitor","ForStatement","path","declar","get","isVar","scope","parentScope","getFunctionParent","getProgramParent","registerBinding","Declaration","isBlockScoped","parent","registerDeclaration","ImportDeclaration","getBlockParent","ReferencedIdentifier","state","references","ForXStatement","isPattern","constantViolations","ExportDeclaration","exit","binding","getBinding","reference","decl","declarations","Object","keys","LabeledStatement","AssignmentExpression","assignments","UpdateExpression","UnaryExpression","operator","BlockScoped","bindings","CatchClause","Function","params","param","isFunctionExpression","ClassExpression","TSTypeAnnotation","skip","uid","Scope","constructor","block","inited","labels","globals","uids","data","crawling","cached","scopeCache","set","Map","_parent","_path","shouldSkip","listKey","parentPath","isScope","generateDeclaredUidIdentifier","generateUidIdentifier","generateUid","replace","i","hasLabel","hasBinding","hasGlobal","hasReference","program","generateUidBasedOnNode","defaultName","join","slice","generateUidIdentifierBasedOnNode","isStatic","constant","maybeGenerateMemoised","dontPush","checkBlockScopedCollisions","kind","duplicate","hub","buildError","TypeError","rename","oldName","newName","renamer","Renamer","arguments","dump","sep","repeat","console","log","violations","getLabel","registerLabel","label","isLabeledStatement","declare","isTypeDeclaration","importKind","specifier","isTypeSpecifier","isImportSpecifier","registerConstantViolation","ids","getAssignmentIdentifiers","_this$getBinding","reassign","bindingPath","ReferenceError","declarators","getOuterBindingIdentifiers","getOwnBinding","Binding","addGlobal","hasUid","isPure","constantsOnly","_node$decorators","superClass","decorators","body","method","right","elem","elements","prop","_node$decorators2","computed","_node$decorators3","static","expressions","tag","noGlobals","quasi","isStringLiteral","setData","val","getData","removeData","init","crawl","create","isProgram","programParent","isExplodedVisitor","visit","enter","call","typeVisitors","traverse","ref","opts","getPatternParent","isBlockStatement","isSwitchStatement","unique","isFunction","pushContainer","isLoop","isCatchClause","ensureBlock","blockHoist","_blockHoist","dataKey","declarPath","unshiftContainer","declarator","len","Error","isFunctionParent","isBlockParent","getAllBindings","bindingIdentifierEquals","getBindingIdentifier","previousPath","_previousPath","isArrowFunctionExpression","_this$getBinding2","getOwnBindingIdentifier","hasOwnBinding","noUids","includes","contextVariables","parentHasBinding","_this$parent","moveBindingTo","info","removeOwnBinding","removeBinding","_this$getBinding3","hoistVariables","emit","seen","Set","isVariableDeclarator","has","add","firstId","_firstId","isFor","replaceWith","remove","expr","isForStatement","exports","default","builtin","prototype","_renameFromMap","map","_generateUid","toArray","arrayLikeIsIterable","isGenericType","helperName","args","unshift","addHelper","getAllBindingsOfKind","kinds","defineProperties","parentBlock","configurable","enumerable"],"sources":["../../src/scope/index.ts"],"sourcesContent":["import Renamer from \"./lib/renamer.ts\";\nimport type NodePath from \"../path/index.ts\";\nimport traverse from \"../index.ts\";\nimport Binding from \"./binding.ts\";\nimport type { BindingKind } from \"./binding.ts\";\nimport globals from \"globals\";\nimport {\n  NOT_LOCAL_BINDING,\n  assignmentExpression,\n  callExpression,\n  cloneNode,\n  getBindingIdentifiers,\n  identifier,\n  isArrayExpression,\n  isBinary,\n  isCallExpression,\n  isClass,\n  isClassBody,\n  isClassDeclaration,\n  isExportAllDeclaration,\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n  isFunctionDeclaration,\n  isIdentifier,\n  isImportDeclaration,\n  isLiteral,\n  isMemberExpression,\n  isMethod,\n  isModuleSpecifier,\n  isNullLiteral,\n  isObjectExpression,\n  isProperty,\n  isPureish,\n  isRegExpLiteral,\n  isSuper,\n  isTaggedTemplateExpression,\n  isTemplateLiteral,\n  isThisExpression,\n  isUnaryExpression,\n  isVariableDeclaration,\n  expressionStatement,\n  matchesPattern,\n  memberExpression,\n  numericLiteral,\n  toIdentifier,\n  variableDeclaration,\n  variableDeclarator,\n  isRecordExpression,\n  isTupleExpression,\n  isObjectProperty,\n  isTopicReference,\n  isMetaProperty,\n  isPrivateName,\n  isExportDeclaration,\n  buildUndefinedNode,\n  sequenceExpression,\n} from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { isExplodedVisitor } from \"../visitors.ts\";\n\ntype NodePart = string | number | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node, parts: NodePart[]) {\n  switch (node?.type) {\n    default:\n      if (isImportDeclaration(node) || isExportDeclaration(node)) {\n        if (\n          (isExportAllDeclaration(node) ||\n            isExportNamedDeclaration(node) ||\n            isImportDeclaration(node)) &&\n          node.source\n        ) {\n          gatherNodeParts(node.source, parts);\n        } else if (\n          (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n          node.specifiers?.length\n        ) {\n          for (const e of node.specifiers) gatherNodeParts(e, parts);\n        } else if (\n          (isExportDefaultDeclaration(node) ||\n            isExportNamedDeclaration(node)) &&\n          node.declaration\n        ) {\n          gatherNodeParts(node.declaration, parts);\n        }\n      } else if (isModuleSpecifier(node)) {\n        // todo(flow->ts): should condition instead be:\n        //    ```\n        //    t.isExportSpecifier(node) ||\n        //    t.isImportDefaultSpecifier(node) ||\n        //    t.isImportNamespaceSpecifier(node) ||\n        //    t.isImportSpecifier(node)\n        //    ```\n        //    allowing only nodes with `.local`?\n        // @ts-expect-error todo(flow->ts)\n        gatherNodeParts(node.local, parts);\n      } else if (\n        isLiteral(node) &&\n        !isNullLiteral(node) &&\n        !isRegExpLiteral(node) &&\n        !isTemplateLiteral(node)\n      ) {\n        parts.push(node.value);\n      }\n      break;\n\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\":\n    case \"JSXMemberExpression\":\n      gatherNodeParts(node.object, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"Identifier\":\n    case \"JSXIdentifier\":\n      parts.push(node.name);\n      break;\n\n    case \"CallExpression\":\n    case \"OptionalCallExpression\":\n    case \"NewExpression\":\n      gatherNodeParts(node.callee, parts);\n      break;\n\n    case \"ObjectExpression\":\n    case \"ObjectPattern\":\n      for (const e of node.properties) {\n        gatherNodeParts(e, parts);\n      }\n      break;\n\n    case \"SpreadElement\":\n    case \"RestElement\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"ObjectProperty\":\n    case \"ObjectMethod\":\n    case \"ClassProperty\":\n    case \"ClassMethod\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n      gatherNodeParts(node.key, parts);\n      break;\n\n    case \"ThisExpression\":\n      parts.push(\"this\");\n      break;\n\n    case \"Super\":\n      parts.push(\"super\");\n      break;\n\n    case \"Import\":\n      parts.push(\"import\");\n      break;\n\n    case \"DoExpression\":\n      parts.push(\"do\");\n      break;\n\n    case \"YieldExpression\":\n      parts.push(\"yield\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AwaitExpression\":\n      parts.push(\"await\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AssignmentExpression\":\n      gatherNodeParts(node.left, parts);\n      break;\n\n    case \"VariableDeclarator\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"FunctionExpression\":\n    case \"FunctionDeclaration\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"PrivateName\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"ParenthesizedExpression\":\n      gatherNodeParts(node.expression, parts);\n      break;\n\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"MetaProperty\":\n      gatherNodeParts(node.meta, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"JSXElement\":\n      gatherNodeParts(node.openingElement, parts);\n      break;\n\n    case \"JSXOpeningElement\":\n      gatherNodeParts(node.name, parts);\n      break;\n\n    case \"JSXFragment\":\n      gatherNodeParts(node.openingFragment, parts);\n      break;\n\n    case \"JSXOpeningFragment\":\n      parts.push(\"Fragment\");\n      break;\n\n    case \"JSXNamespacedName\":\n      gatherNodeParts(node.namespace, parts);\n      gatherNodeParts(node.name, parts);\n      break;\n  }\n}\n\n//\ninterface CollectVisitorState {\n  assignments: NodePath<t.AssignmentExpression>[];\n  references: NodePath<t.Identifier | t.JSXIdentifier>[];\n  constantViolations: NodePath[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n  ForStatement(path) {\n    const declar = path.get(\"init\");\n    // delegate block scope handling to the `BlockScoped` method\n    if (declar.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", declar);\n    }\n  },\n\n  Declaration(path) {\n    // delegate block scope handling to the `BlockScoped` method\n    if (path.isBlockScoped()) return;\n\n    // delegate import handing to the `ImportDeclaration` method\n    if (path.isImportDeclaration()) return;\n\n    // this will be hit again once we traverse into it after this iteration\n    if (path.isExportDeclaration()) return;\n\n    // we've ran into a declaration!\n    const parent =\n      path.scope.getFunctionParent() || path.scope.getProgramParent();\n    parent.registerDeclaration(path);\n  },\n\n  ImportDeclaration(path) {\n    // import may only appear in the top level or inside a module/namespace (for TS/flow)\n    const parent = path.scope.getBlockParent();\n\n    parent.registerDeclaration(path);\n  },\n\n  ReferencedIdentifier(path, state) {\n    state.references.push(path);\n  },\n\n  ForXStatement(path, state) {\n    const left = path.get(\"left\");\n    if (left.isPattern() || left.isIdentifier()) {\n      state.constantViolations.push(path);\n    }\n    // delegate block scope handling to the `BlockScoped` method\n    else if (left.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", left);\n    }\n  },\n\n  ExportDeclaration: {\n    exit(path) {\n      const { node, scope } = path;\n      // ExportAllDeclaration does not have `declaration`\n      if (isExportAllDeclaration(node)) return;\n      const declar = node.declaration;\n      if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n        const id = declar.id;\n        if (!id) return;\n\n        const binding = scope.getBinding(id.name);\n        binding?.reference(path);\n      } else if (isVariableDeclaration(declar)) {\n        for (const decl of declar.declarations) {\n          for (const name of Object.keys(getBindingIdentifiers(decl))) {\n            const binding = scope.getBinding(name);\n            binding?.reference(path);\n          }\n        }\n      }\n    },\n  },\n\n  LabeledStatement(path) {\n    path.scope.getBlockParent().registerDeclaration(path);\n  },\n\n  AssignmentExpression(path, state) {\n    state.assignments.push(path);\n  },\n\n  UpdateExpression(path, state) {\n    state.constantViolations.push(path);\n  },\n\n  UnaryExpression(path, state) {\n    if (path.node.operator === \"delete\") {\n      state.constantViolations.push(path);\n    }\n  },\n\n  BlockScoped(path) {\n    let scope = path.scope;\n    if (scope.path === path) scope = scope.parent;\n\n    const parent = scope.getBlockParent();\n    parent.registerDeclaration(path);\n\n    // Register class identifier in class' scope if this is a class declaration.\n    if (path.isClassDeclaration() && path.node.id) {\n      const id = path.node.id;\n      const name = id.name;\n\n      path.scope.bindings[name] = path.scope.parent.getBinding(name);\n    }\n  },\n\n  CatchClause(path) {\n    path.scope.registerBinding(\"let\", path);\n  },\n\n  Function(path) {\n    const params: Array<NodePath> = path.get(\"params\");\n    for (const param of params) {\n      path.scope.registerBinding(\"param\", param);\n    }\n\n    // Register function expression id after params. When the id\n    // collides with a function param, the id effectively can't be\n    // referenced: here we registered it as a constantViolation\n    if (\n      path.isFunctionExpression() &&\n      path.node.id &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.node.id[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n\n  ClassExpression(path) {\n    if (\n      path.node.id &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.node.id[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n  TSTypeAnnotation(path) {\n    path.skip();\n  },\n};\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport { Scope as default };\nclass Scope {\n  uid;\n\n  path: NodePath;\n  block: t.Pattern | t.Scopable;\n\n  inited;\n\n  labels: Map<string, NodePath<t.LabeledStatement>>;\n  bindings: { [name: string]: Binding };\n  references: { [name: string]: true };\n  globals: { [name: string]: t.Identifier | t.JSXIdentifier };\n  uids: { [name: string]: boolean };\n  data: { [key: string | symbol]: unknown };\n  crawling: boolean;\n\n  /**\n   * This searches the current \"scope\" and collects all references/bindings\n   * within.\n   */\n  constructor(path: NodePath<t.Pattern | t.Scopable>) {\n    const { node } = path;\n    const cached = scopeCache.get(node);\n    // Sometimes, a scopable path is placed higher in the AST tree.\n    // In these cases, have to create a new Scope.\n    if (cached?.path === path) {\n      return cached;\n    }\n    scopeCache.set(node, this);\n\n    this.uid = uid++;\n\n    this.block = node;\n    this.path = path;\n\n    this.labels = new Map();\n    this.inited = false;\n  }\n\n  /**\n   * Globals.\n   */\n\n  static globals = Object.keys(globals.builtin);\n\n  /**\n   * Variables available in current context.\n   */\n\n  static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n  get parent() {\n    let parent,\n      path = this.path;\n    do {\n      // Skip method scope if coming from inside computed key or decorator expression\n      const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n      path = path.parentPath;\n      if (shouldSkip && path.isMethod()) path = path.parentPath;\n      if (path?.isScope()) parent = path;\n    } while (path && !parent);\n\n    return parent?.scope;\n  }\n\n  /**\n   * Generate a unique identifier and add it to the current scope.\n   */\n\n  generateDeclaredUidIdentifier(name?: string) {\n    const id = this.generateUidIdentifier(name);\n    this.push({ id });\n    return cloneNode(id);\n  }\n\n  /**\n   * Generate a unique identifier.\n   */\n\n  generateUidIdentifier(name?: string) {\n    return identifier(this.generateUid(name));\n  }\n\n  /**\n   * Generate a unique `_id1` binding.\n   */\n\n  generateUid(name: string = \"temp\"): string {\n    name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n\n    let uid;\n    let i = 1;\n    do {\n      uid = `_${name}`;\n      if (i > 1) uid += i;\n      i++;\n    } while (\n      this.hasLabel(uid) ||\n      this.hasBinding(uid) ||\n      this.hasGlobal(uid) ||\n      this.hasReference(uid)\n    );\n\n    const program = this.getProgramParent();\n    program.references[uid] = true;\n    program.uids[uid] = true;\n\n    return uid;\n  }\n\n  generateUidBasedOnNode(node: t.Node, defaultName?: string) {\n    const parts: NodePart[] = [];\n    gatherNodeParts(node, parts);\n\n    let id = parts.join(\"$\");\n    id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n    return this.generateUid(id.slice(0, 20));\n  }\n\n  /**\n   * Generate a unique identifier based on a node.\n   */\n\n  generateUidIdentifierBasedOnNode(node: t.Node, defaultName?: string) {\n    return identifier(this.generateUidBasedOnNode(node, defaultName));\n  }\n\n  /**\n   * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n   * evaluating it won't result in potentially arbitrary code from being ran. The following are\n   * allowed and determined not to cause side effects:\n   *\n   *  - `this` expressions\n   *  - `super` expressions\n   *  - Bound identifiers\n   */\n\n  isStatic(node: t.Node): boolean {\n    if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n      return true;\n    }\n\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding) {\n        return binding.constant;\n      } else {\n        return this.hasBinding(node.name);\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Possibly generate a memoised identifier if it is not static and has consequences.\n   */\n\n  maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n    if (this.isStatic(node)) {\n      return null;\n    } else {\n      const id = this.generateUidIdentifierBasedOnNode(node);\n      if (!dontPush) {\n        this.push({ id });\n        return cloneNode(id);\n      }\n      return id;\n    }\n  }\n\n  checkBlockScopedCollisions(\n    local: Binding,\n    kind: BindingKind,\n    name: string,\n    id: any,\n  ) {\n    // ignore parameters\n    if (kind === \"param\") return;\n\n    // Ignore existing binding if it's the name of the current function or\n    // class expression\n    if (local.kind === \"local\") return;\n\n    const duplicate =\n      // don't allow duplicate bindings to exist alongside\n      kind === \"let\" ||\n      local.kind === \"let\" ||\n      local.kind === \"const\" ||\n      local.kind === \"module\" ||\n      // don't allow a local of param with a kind of let\n      (local.kind === \"param\" && kind === \"const\");\n\n    if (duplicate) {\n      throw this.path.hub.buildError(\n        id,\n        `Duplicate declaration \"${name}\"`,\n        TypeError,\n      );\n    }\n  }\n\n  rename(\n    oldName: string,\n    newName?: string,\n    // prettier-ignore\n    /* Babel 7 - block?: t.Pattern | t.Scopable */\n  ) {\n    const binding = this.getBinding(oldName);\n    if (binding) {\n      newName ||= this.generateUidIdentifier(oldName).name;\n      const renamer = new Renamer(binding, oldName, newName);\n      if (process.env.BABEL_8_BREAKING) {\n        renamer.rename();\n      } else {\n        // @ts-ignore(Babel 7 vs Babel 8) TODO: Delete this\n        renamer.rename(arguments[2]);\n      }\n    }\n  }\n\n  dump() {\n    const sep = \"-\".repeat(60);\n    console.log(sep);\n    let scope: Scope = this;\n    do {\n      console.log(\"#\", scope.block.type);\n      for (const name of Object.keys(scope.bindings)) {\n        const binding = scope.bindings[name];\n        console.log(\" -\", name, {\n          constant: binding.constant,\n          references: binding.references,\n          violations: binding.constantViolations.length,\n          kind: binding.kind,\n        });\n      }\n    } while ((scope = scope.parent));\n    console.log(sep);\n  }\n\n  hasLabel(name: string) {\n    return !!this.getLabel(name);\n  }\n\n  getLabel(name: string) {\n    return this.labels.get(name);\n  }\n\n  registerLabel(path: NodePath<t.LabeledStatement>) {\n    this.labels.set(path.node.label.name, path);\n  }\n\n  registerDeclaration(path: NodePath) {\n    if (path.isLabeledStatement()) {\n      this.registerLabel(path);\n    } else if (path.isFunctionDeclaration()) {\n      this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n    } else if (path.isVariableDeclaration()) {\n      const declarations = path.get(\"declarations\");\n      const { kind } = path.node;\n      for (const declar of declarations) {\n        this.registerBinding(\n          kind === \"using\" || kind === \"await using\" ? \"const\" : kind,\n          declar,\n        );\n      }\n    } else if (path.isClassDeclaration()) {\n      if (path.node.declare) return;\n      this.registerBinding(\"let\", path);\n    } else if (path.isImportDeclaration()) {\n      const isTypeDeclaration =\n        path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n      const specifiers = path.get(\"specifiers\");\n      for (const specifier of specifiers) {\n        const isTypeSpecifier =\n          isTypeDeclaration ||\n          (specifier.isImportSpecifier() &&\n            (specifier.node.importKind === \"type\" ||\n              specifier.node.importKind === \"typeof\"));\n\n        this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n      }\n    } else if (path.isExportDeclaration()) {\n      // todo: improve babel-types\n      const declar = path.get(\"declaration\") as NodePath;\n      if (\n        declar.isClassDeclaration() ||\n        declar.isFunctionDeclaration() ||\n        declar.isVariableDeclaration()\n      ) {\n        this.registerDeclaration(declar);\n      }\n    } else {\n      this.registerBinding(\"unknown\", path);\n    }\n  }\n\n  buildUndefinedNode() {\n    return buildUndefinedNode();\n  }\n\n  registerConstantViolation(path: NodePath) {\n    const ids = path.getAssignmentIdentifiers();\n    for (const name of Object.keys(ids)) {\n      this.getBinding(name)?.reassign(path);\n    }\n  }\n\n  registerBinding(\n    kind: Binding[\"kind\"],\n    path: NodePath,\n    bindingPath: NodePath = path,\n  ) {\n    if (!kind) throw new ReferenceError(\"no `kind`\");\n\n    if (path.isVariableDeclaration()) {\n      const declarators: Array<NodePath> = path.get(\"declarations\");\n      for (const declar of declarators) {\n        this.registerBinding(kind, declar);\n      }\n      return;\n    }\n\n    const parent = this.getProgramParent();\n    const ids = path.getOuterBindingIdentifiers(true);\n\n    for (const name of Object.keys(ids)) {\n      parent.references[name] = true;\n\n      for (const id of ids[name]) {\n        const local = this.getOwnBinding(name);\n\n        if (local) {\n          // same identifier so continue safely as we're likely trying to register it\n          // multiple times\n          if (local.identifier === id) continue;\n\n          this.checkBlockScopedCollisions(local, kind, name, id);\n        }\n\n        // A redeclaration of an existing variable is a modification\n        if (local) {\n          local.reassign(bindingPath);\n        } else {\n          this.bindings[name] = new Binding({\n            identifier: id,\n            scope: this,\n            path: bindingPath,\n            kind: kind,\n          });\n        }\n      }\n    }\n  }\n\n  addGlobal(node: t.Identifier | t.JSXIdentifier) {\n    this.globals[node.name] = node;\n  }\n\n  hasUid(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.uids[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasGlobal(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.globals[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasReference(name: string): boolean {\n    return !!this.getProgramParent().references[name];\n  }\n\n  isPure(node: t.Node, constantsOnly?: boolean): boolean {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (!binding) return false;\n      if (constantsOnly) return binding.constant;\n      return true;\n    } else if (\n      isThisExpression(node) ||\n      isMetaProperty(node) ||\n      isTopicReference(node) ||\n      isPrivateName(node)\n    ) {\n      return true;\n    } else if (isClass(node)) {\n      if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n        return false;\n      }\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return this.isPure(node.body, constantsOnly);\n    } else if (isClassBody(node)) {\n      for (const method of node.body) {\n        if (!this.isPure(method, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isBinary(node)) {\n      return (\n        this.isPure(node.left, constantsOnly) &&\n        this.isPure(node.right, constantsOnly)\n      );\n    } else if (isArrayExpression(node) || isTupleExpression(node)) {\n      for (const elem of node.elements) {\n        if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isObjectExpression(node) || isRecordExpression(node)) {\n      for (const prop of node.properties) {\n        if (!this.isPure(prop, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isMethod(node)) {\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return true;\n    } else if (isProperty(node)) {\n      // @ts-expect-error todo(flow->ts): computed in not present on private properties\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      if (isObjectProperty(node) || node.static) {\n        if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n          return false;\n        }\n      }\n      return true;\n    } else if (isUnaryExpression(node)) {\n      return this.isPure(node.argument, constantsOnly);\n    } else if (isTemplateLiteral(node)) {\n      for (const expression of node.expressions) {\n        if (!this.isPure(expression, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isTaggedTemplateExpression(node)) {\n      return (\n        matchesPattern(node.tag, \"String.raw\") &&\n        !this.hasBinding(\"String\", { noGlobals: true }) &&\n        this.isPure(node.quasi, constantsOnly)\n      );\n    } else if (isMemberExpression(node)) {\n      return (\n        !node.computed &&\n        isIdentifier(node.object) &&\n        node.object.name === \"Symbol\" &&\n        isIdentifier(node.property) &&\n        node.property.name !== \"for\" &&\n        !this.hasBinding(\"Symbol\", { noGlobals: true })\n      );\n    } else if (isCallExpression(node)) {\n      return (\n        matchesPattern(node.callee, \"Symbol.for\") &&\n        !this.hasBinding(\"Symbol\", { noGlobals: true }) &&\n        node.arguments.length === 1 &&\n        t.isStringLiteral(node.arguments[0])\n      );\n    } else {\n      return isPureish(node);\n    }\n  }\n\n  /**\n   * Set some arbitrary data on the current scope.\n   */\n\n  setData(key: string | symbol, val: any) {\n    return (this.data[key] = val);\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key`.\n   */\n\n  getData(key: string | symbol): any {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) return data;\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key` and if it exists,\n   * remove it.\n   */\n\n  removeData(key: string) {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) scope.data[key] = null;\n    } while ((scope = scope.parent));\n  }\n\n  init() {\n    if (!this.inited) {\n      this.inited = true;\n      this.crawl();\n    }\n  }\n\n  crawl() {\n    const path = this.path;\n\n    this.references = Object.create(null);\n    this.bindings = Object.create(null);\n    this.globals = Object.create(null);\n    this.uids = Object.create(null);\n    this.data = Object.create(null);\n\n    let scope: Scope = this;\n    do {\n      if (scope.crawling) return;\n      if (scope.path.isProgram()) {\n        break;\n      }\n    } while ((scope = scope.parent));\n\n    const programParent = scope;\n\n    const state: CollectVisitorState = {\n      references: [],\n      constantViolations: [],\n      assignments: [],\n    };\n\n    this.crawling = true;\n    // traverse does not visit the root node, here we explicitly collect\n    // root node binding info when the root is not a Program.\n    if (path.type !== \"Program\" && isExplodedVisitor(collectorVisitor)) {\n      for (const visit of collectorVisitor.enter) {\n        visit.call(state, path, state);\n      }\n      const typeVisitors = collectorVisitor[path.type];\n      if (typeVisitors) {\n        for (const visit of typeVisitors.enter) {\n          visit.call(state, path, state);\n        }\n      }\n    }\n    path.traverse(collectorVisitor, state);\n    this.crawling = false;\n\n    // register assignments\n    for (const path of state.assignments) {\n      // register undeclared bindings as globals\n      const ids = path.getAssignmentIdentifiers();\n      for (const name of Object.keys(ids)) {\n        if (path.scope.getBinding(name)) continue;\n        programParent.addGlobal(ids[name]);\n      }\n\n      // register as constant violation\n      path.scope.registerConstantViolation(path);\n    }\n\n    // register references\n    for (const ref of state.references) {\n      const binding = ref.scope.getBinding(ref.node.name);\n      if (binding) {\n        binding.reference(ref);\n      } else {\n        programParent.addGlobal(ref.node);\n      }\n    }\n\n    // register constant violations\n    for (const path of state.constantViolations) {\n      path.scope.registerConstantViolation(path);\n    }\n  }\n\n  push(opts: {\n    id: t.ArrayPattern | t.Identifier | t.ObjectPattern;\n    init?: t.Expression;\n    unique?: boolean;\n    _blockHoist?: number | undefined;\n    kind?: \"var\" | \"let\" | \"const\";\n  }) {\n    let path = this.path;\n\n    if (path.isPattern()) {\n      path = this.getPatternParent().path;\n    } else if (!path.isBlockStatement() && !path.isProgram()) {\n      path = this.getBlockParent().path;\n    }\n\n    if (path.isSwitchStatement()) {\n      path = (this.getFunctionParent() || this.getProgramParent()).path;\n    }\n\n    const { init, unique, kind = \"var\", id } = opts;\n\n    // When injecting a non-const non-initialized binding inside\n    // an IIFE, if the number of call arguments is less than or\n    // equal to the number of function parameters, we can safely\n    // inject the binding into the parameter list.\n    if (\n      !init &&\n      !unique &&\n      (kind === \"var\" || kind === \"let\") &&\n      path.isFunction() &&\n      // @ts-expect-error ArrowFunctionExpression never has a name\n      !path.node.name &&\n      isCallExpression(path.parent, { callee: path.node }) &&\n      path.parent.arguments.length <= path.node.params.length &&\n      isIdentifier(id)\n    ) {\n      path.pushContainer(\"params\", id);\n      path.scope.registerBinding(\n        \"param\",\n        path.get(\"params\")[path.node.params.length - 1],\n      );\n      return;\n    }\n\n    if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n      path.ensureBlock();\n      path = path.get(\"body\");\n    }\n\n    const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n    const dataKey = `declaration:${kind}:${blockHoist}`;\n    let declarPath = !unique && path.getData(dataKey);\n\n    if (!declarPath) {\n      const declar = variableDeclaration(kind, []);\n      // @ts-expect-error todo(flow->ts): avoid modifying nodes\n      declar._blockHoist = blockHoist;\n\n      [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n        \"body\",\n        [declar],\n      );\n      if (!unique) path.setData(dataKey, declarPath);\n    }\n\n    const declarator = variableDeclarator(id, init);\n    const len = declarPath.node.declarations.push(declarator);\n    path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n  }\n\n  /**\n   * Walk up to the top of the scope tree and get the `Program`.\n   */\n\n  getProgramParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isProgram()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\"Couldn't find a Program\");\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a Function or return null.\n   */\n\n  getFunctionParent(): Scope | null {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isFunctionParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    return null;\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n   * very top and hit Program.\n   */\n\n  getBlockParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isBlockParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n   * then returns its block parent\n   * @returns An ancestry scope whose path is a block parent\n   */\n  getPatternParent() {\n    let scope: Scope = this;\n    do {\n      if (!scope.path.isPattern()) {\n        return scope.getBlockParent();\n      }\n    } while ((scope = scope.parent.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walks the scope tree and gathers **all** bindings.\n   */\n\n  getAllBindings(): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    let scope: Scope = this;\n    do {\n      for (const key of Object.keys(scope.bindings)) {\n        if (key in ids === false) {\n          ids[key] = scope.bindings[key];\n        }\n      }\n      scope = scope.parent;\n    } while (scope);\n\n    return ids;\n  }\n\n  bindingIdentifierEquals(name: string, node: t.Node): boolean {\n    return this.getBindingIdentifier(name) === node;\n  }\n\n  getBinding(name: string): Binding | undefined {\n    let scope: Scope = this;\n    let previousPath;\n\n    do {\n      const binding = scope.getOwnBinding(name);\n      if (binding) {\n        // Check if a pattern is a part of parameter expressions.\n        // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n        // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n        // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n        // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n        // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n        // or `local`-kind (as id in function expression),\n        // then it must be defined inside the function body, thus it should be skipped\n        if (\n          previousPath?.isPattern() &&\n          binding.kind !== \"param\" &&\n          binding.kind !== \"local\"\n        ) {\n          // do nothing\n        } else {\n          return binding;\n        }\n      } else if (\n        !binding &&\n        name === \"arguments\" &&\n        scope.path.isFunction() &&\n        !scope.path.isArrowFunctionExpression()\n      ) {\n        break;\n      }\n      previousPath = scope.path;\n    } while ((scope = scope.parent));\n  }\n\n  getOwnBinding(name: string): Binding | undefined {\n    return this.bindings[name];\n  }\n\n  // todo: return probably can be undefined…\n  getBindingIdentifier(name: string): t.Identifier {\n    return this.getBinding(name)?.identifier;\n  }\n\n  // todo: flow->ts return probably can be undefined\n  getOwnBindingIdentifier(name: string): t.Identifier {\n    const binding = this.bindings[name];\n    return binding?.identifier;\n  }\n\n  hasOwnBinding(name: string) {\n    return !!this.getOwnBinding(name);\n  }\n\n  // By default, we consider generated UIDs as bindings.\n  // This is because they are almost always used to declare variables,\n  // and since the scope isn't always up-to-date it's better to assume that\n  // there is a variable with that name. The `noUids` option can be used to\n  // turn off this behavior, for example if you know that the generate UID\n  // was used to declare a variable in a different scope.\n  hasBinding(\n    name: string,\n    opts?: boolean | { noGlobals?: boolean; noUids?: boolean },\n  ) {\n    if (!name) return false;\n    let scope: Scope = this;\n    do {\n      if (scope.hasOwnBinding(name)) {\n        return true;\n      }\n    } while ((scope = scope.parent));\n\n    // TODO: Only accept the object form.\n    let noGlobals;\n    let noUids;\n    if (typeof opts === \"object\") {\n      noGlobals = opts.noGlobals;\n      noUids = opts.noUids;\n    } else if (typeof opts === \"boolean\") {\n      noGlobals = opts;\n    }\n\n    if (!noUids && this.hasUid(name)) return true;\n    if (!noGlobals && Scope.globals.includes(name)) return true;\n    if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n    return false;\n  }\n\n  parentHasBinding(\n    name: string,\n    opts?: { noGlobals?: boolean; noUids?: boolean },\n  ) {\n    return this.parent?.hasBinding(name, opts);\n  }\n\n  /**\n   * Move a binding of `name` to another `scope`.\n   */\n\n  moveBindingTo(name: string, scope: Scope) {\n    const info = this.getBinding(name);\n    if (info) {\n      info.scope.removeOwnBinding(name);\n      info.scope = scope;\n      scope.bindings[name] = info;\n    }\n  }\n\n  removeOwnBinding(name: string) {\n    delete this.bindings[name];\n  }\n\n  removeBinding(name: string) {\n    // clear literal binding\n    this.getBinding(name)?.scope.removeOwnBinding(name);\n\n    // clear uids with this name - https://github.com/babel/babel/issues/2101\n    let scope: Scope = this;\n    do {\n      if (scope.uids[name]) {\n        scope.uids[name] = false;\n      }\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Hoist all the `var` variable to the beginning of the function/program\n   * scope where their binding will be actually defined. For exmaple,\n   *     { var x = 2 }\n   * will be transformed to\n   *     var x; { x = 2 }\n   *\n   * @param emit A custom function to emit `var` declarations, for example to\n   *   emit them in a different scope.\n   */\n  hoistVariables(\n    emit: (id: t.Identifier, hasInit: boolean) => void = id =>\n      this.push({ id }),\n  ) {\n    this.crawl();\n\n    const seen = new Set();\n    for (const name of Object.keys(this.bindings)) {\n      const binding = this.bindings[name];\n      if (!binding) continue;\n      const { path } = binding;\n      if (!path.isVariableDeclarator()) continue;\n      const { parent, parentPath } = path;\n\n      if (parent.kind !== \"var\" || seen.has(parent)) continue;\n      seen.add(path.parent);\n\n      let firstId;\n      const init = [];\n      for (const decl of parent.declarations) {\n        firstId ??= decl.id;\n        if (decl.init) {\n          init.push(assignmentExpression(\"=\", decl.id, decl.init));\n        }\n\n        const ids = Object.keys(getBindingIdentifiers(decl, false, true, true));\n        for (const name of ids) {\n          emit(identifier(name), decl.init != null);\n        }\n      }\n\n      // for (var i in test)\n      if (parentPath.parentPath.isFor({ left: parent })) {\n        parentPath.replaceWith(firstId);\n      } else if (init.length === 0) {\n        parentPath.remove();\n      } else {\n        const expr = init.length === 1 ? init[0] : sequenceExpression(init);\n        if (parentPath.parentPath.isForStatement({ init: parent })) {\n          parentPath.replaceWith(expr);\n        } else {\n          parentPath.replaceWith(expressionStatement(expr));\n        }\n      }\n    }\n  }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /** @deprecated Not used in our codebase */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype._renameFromMap = function _renameFromMap(\n    map: Record<string | symbol, unknown>,\n    oldName: string | symbol,\n    newName: string | symbol,\n    value: unknown,\n  ) {\n    if (map[oldName]) {\n      map[newName] = value;\n      map[oldName] = null;\n    }\n  };\n\n  /**\n   * Traverse node with current scope and path.\n   *\n   * !!! WARNING !!!\n   * This method assumes that `this.path` is the NodePath representing `node`.\n   * After running the traversal, the `.parentPath` of the NodePaths\n   * corresponding to `node`'s children will be set to `this.path`.\n   *\n   * There is no good reason to use this method, since the only safe way to use\n   * it is equivalent to `scope.path.traverse(opts, state)`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.traverse = function <S>(\n    this: Scope,\n    node: any,\n    opts: any,\n    state?: S,\n  ) {\n    traverse(node, opts, this, state, this.path);\n  };\n\n  /**\n   * Generate an `_id1`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype._generateUid = function _generateUid(\n    name: string,\n    i: number,\n  ) {\n    let id = name;\n    if (i > 1) id += i;\n    return `_${id}`;\n  };\n\n  // TODO: (Babel 8) Split i in two parameters, and use an object of flags\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.toArray = function toArray(\n    this: Scope,\n    node: t.Node,\n    i?: number | boolean,\n    arrayLikeIsIterable?: boolean | void,\n  ) {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n        return node;\n      }\n    }\n\n    if (isArrayExpression(node)) {\n      return node;\n    }\n\n    if (isIdentifier(node, { name: \"arguments\" })) {\n      return callExpression(\n        memberExpression(\n          memberExpression(\n            memberExpression(identifier(\"Array\"), identifier(\"prototype\")),\n            identifier(\"slice\"),\n          ),\n          identifier(\"call\"),\n        ),\n        [node],\n      );\n    }\n\n    let helperName;\n    const args = [node];\n    if (i === true) {\n      // Used in array-spread to create an array.\n      helperName = \"toConsumableArray\";\n    } else if (typeof i === \"number\") {\n      args.push(numericLiteral(i));\n\n      // Used in array-rest to create an array from a subset of an iterable.\n      helperName = \"slicedToArray\";\n      // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n    } else {\n      // Used in array-rest to create an array\n      helperName = \"toArray\";\n    }\n\n    if (arrayLikeIsIterable) {\n      args.unshift(this.path.hub.addHelper(helperName));\n      helperName = \"maybeArrayLike\";\n    }\n\n    // @ts-expect-error todo(flow->ts): t.Node is not valid to use in args, function argument typeneeds to be clarified\n    return callExpression(this.path.hub.addHelper(helperName), args);\n  };\n\n  /**\n   * Walks the scope tree and gathers all declarations of `kind`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind(\n    ...kinds: string[]\n  ): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    for (const kind of kinds) {\n      let scope: Scope = this;\n      do {\n        for (const name of Object.keys(scope.bindings)) {\n          const binding = scope.bindings[name];\n          if (binding.kind === kind) ids[name] = binding;\n        }\n        scope = scope.parent;\n      } while (scope);\n    }\n\n    return ids;\n  };\n\n  Object.defineProperties(Scope.prototype, {\n    parentBlock: {\n      configurable: true,\n      enumerable: true,\n      get(this: Scope) {\n        return this.path.parent;\n      },\n    },\n    hub: {\n      configurable: true,\n      enumerable: true,\n      get(this: Scope) {\n        return this.path.hub;\n      },\n    },\n  });\n}\n\ntype _Binding = Binding;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Scope {\n  export type Binding = _Binding;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/traverse/lib/visitors.js
===================================================================
--- imaps-frontend/node_modules/@babel/traverse/lib/visitors.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/traverse/lib/visitors.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -105,5 +105,5 @@
     if (shouldIgnoreKey(nodeType)) continue;
     if (!TYPES.includes(nodeType)) {
-      throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.25.9"}`);
+      throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${"7.26.5"}`);
     }
     const visitors = visitor[nodeType];
Index: imaps-frontend/node_modules/@babel/traverse/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/traverse/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/traverse/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,5 @@
 {
   "name": "@babel/traverse",
-  "version": "7.25.9",
+  "version": "7.26.5",
   "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
   "author": "The Babel Team (https://babel.dev/team)",
@@ -17,14 +17,14 @@
   "main": "./lib/index.js",
   "dependencies": {
-    "@babel/code-frame": "^7.25.9",
-    "@babel/generator": "^7.25.9",
-    "@babel/parser": "^7.25.9",
+    "@babel/code-frame": "^7.26.2",
+    "@babel/generator": "^7.26.5",
+    "@babel/parser": "^7.26.5",
     "@babel/template": "^7.25.9",
-    "@babel/types": "^7.25.9",
+    "@babel/types": "^7.26.5",
     "debug": "^4.3.1",
     "globals": "^11.1.0"
   },
   "devDependencies": {
-    "@babel/core": "^7.25.9",
+    "@babel/core": "^7.26.0",
     "@babel/helper-plugin-test-runner": "^7.25.9"
   },
Index: imaps-frontend/node_modules/@babel/types/lib/asserts/generated/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/asserts/generated/index.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/asserts/generated/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -219,4 +219,5 @@
 exports.assertTSDeclareMethod = assertTSDeclareMethod;
 exports.assertTSEntityName = assertTSEntityName;
+exports.assertTSEnumBody = assertTSEnumBody;
 exports.assertTSEnumDeclaration = assertTSEnumDeclaration;
 exports.assertTSEnumMember = assertTSEnumMember;
@@ -1023,4 +1024,7 @@
   assert("TSTypeAssertion", node, opts);
 }
+function assertTSEnumBody(node, opts) {
+  assert("TSEnumBody", node, opts);
+}
 function assertTSEnumDeclaration(node, opts) {
   assert("TSEnumDeclaration", node, opts);
Index: imaps-frontend/node_modules/@babel/types/lib/asserts/generated/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/asserts/generated/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/asserts/generated/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_is","require","_deprecationWarning","assert","type","node","opts","is","Error","JSON","stringify","assertArrayExpression","assertAssignmentExpression","assertBinaryExpression","assertInterpreterDirective","assertDirective","assertDirectiveLiteral","assertBlockStatement","assertBreakStatement","assertCallExpression","assertCatchClause","assertConditionalExpression","assertContinueStatement","assertDebuggerStatement","assertDoWhileStatement","assertEmptyStatement","assertExpressionStatement","assertFile","assertForInStatement","assertForStatement","assertFunctionDeclaration","assertFunctionExpression","assertIdentifier","assertIfStatement","assertLabeledStatement","assertStringLiteral","assertNumericLiteral","assertNullLiteral","assertBooleanLiteral","assertRegExpLiteral","assertLogicalExpression","assertMemberExpression","assertNewExpression","assertProgram","assertObjectExpression","assertObjectMethod","assertObjectProperty","assertRestElement","assertReturnStatement","assertSequenceExpression","assertParenthesizedExpression","assertSwitchCase","assertSwitchStatement","assertThisExpression","assertThrowStatement","assertTryStatement","assertUnaryExpression","assertUpdateExpression","assertVariableDeclaration","assertVariableDeclarator","assertWhileStatement","assertWithStatement","assertAssignmentPattern","assertArrayPattern","assertArrowFunctionExpression","assertClassBody","assertClassExpression","assertClassDeclaration","assertExportAllDeclaration","assertExportDefaultDeclaration","assertExportNamedDeclaration","assertExportSpecifier","assertForOfStatement","assertImportDeclaration","assertImportDefaultSpecifier","assertImportNamespaceSpecifier","assertImportSpecifier","assertImportExpression","assertMetaProperty","assertClassMethod","assertObjectPattern","assertSpreadElement","assertSuper","assertTaggedTemplateExpression","assertTemplateElement","assertTemplateLiteral","assertYieldExpression","assertAwaitExpression","assertImport","assertBigIntLiteral","assertExportNamespaceSpecifier","assertOptionalMemberExpression","assertOptionalCallExpression","assertClassProperty","assertClassAccessorProperty","assertClassPrivateProperty","assertClassPrivateMethod","assertPrivateName","assertStaticBlock","assertAnyTypeAnnotation","assertArrayTypeAnnotation","assertBooleanTypeAnnotation","assertBooleanLiteralTypeAnnotation","assertNullLiteralTypeAnnotation","assertClassImplements","assertDeclareClass","assertDeclareFunction","assertDeclareInterface","assertDeclareModule","assertDeclareModuleExports","assertDeclareTypeAlias","assertDeclareOpaqueType","assertDeclareVariable","assertDeclareExportDeclaration","assertDeclareExportAllDeclaration","assertDeclaredPredicate","assertExistsTypeAnnotation","assertFunctionTypeAnnotation","assertFunctionTypeParam","assertGenericTypeAnnotation","assertInferredPredicate","assertInterfaceExtends","assertInterfaceDeclaration","assertInterfaceTypeAnnotation","assertIntersectionTypeAnnotation","assertMixedTypeAnnotation","assertEmptyTypeAnnotation","assertNullableTypeAnnotation","assertNumberLiteralTypeAnnotation","assertNumberTypeAnnotation","assertObjectTypeAnnotation","assertObjectTypeInternalSlot","assertObjectTypeCallProperty","assertObjectTypeIndexer","assertObjectTypeProperty","assertObjectTypeSpreadProperty","assertOpaqueType","assertQualifiedTypeIdentifier","assertStringLiteralTypeAnnotation","assertStringTypeAnnotation","assertSymbolTypeAnnotation","assertThisTypeAnnotation","assertTupleTypeAnnotation","assertTypeofTypeAnnotation","assertTypeAlias","assertTypeAnnotation","assertTypeCastExpression","assertTypeParameter","assertTypeParameterDeclaration","assertTypeParameterInstantiation","assertUnionTypeAnnotation","assertVariance","assertVoidTypeAnnotation","assertEnumDeclaration","assertEnumBooleanBody","assertEnumNumberBody","assertEnumStringBody","assertEnumSymbolBody","assertEnumBooleanMember","assertEnumNumberMember","assertEnumStringMember","assertEnumDefaultedMember","assertIndexedAccessType","assertOptionalIndexedAccessType","assertJSXAttribute","assertJSXClosingElement","assertJSXElement","assertJSXEmptyExpression","assertJSXExpressionContainer","assertJSXSpreadChild","assertJSXIdentifier","assertJSXMemberExpression","assertJSXNamespacedName","assertJSXOpeningElement","assertJSXSpreadAttribute","assertJSXText","assertJSXFragment","assertJSXOpeningFragment","assertJSXClosingFragment","assertNoop","assertPlaceholder","assertV8IntrinsicIdentifier","assertArgumentPlaceholder","assertBindExpression","assertImportAttribute","assertDecorator","assertDoExpression","assertExportDefaultSpecifier","assertRecordExpression","assertTupleExpression","assertDecimalLiteral","assertModuleExpression","assertTopicReference","assertPipelineTopicExpression","assertPipelineBareFunction","assertPipelinePrimaryTopicReference","assertTSParameterProperty","assertTSDeclareFunction","assertTSDeclareMethod","assertTSQualifiedName","assertTSCallSignatureDeclaration","assertTSConstructSignatureDeclaration","assertTSPropertySignature","assertTSMethodSignature","assertTSIndexSignature","assertTSAnyKeyword","assertTSBooleanKeyword","assertTSBigIntKeyword","assertTSIntrinsicKeyword","assertTSNeverKeyword","assertTSNullKeyword","assertTSNumberKeyword","assertTSObjectKeyword","assertTSStringKeyword","assertTSSymbolKeyword","assertTSUndefinedKeyword","assertTSUnknownKeyword","assertTSVoidKeyword","assertTSThisType","assertTSFunctionType","assertTSConstructorType","assertTSTypeReference","assertTSTypePredicate","assertTSTypeQuery","assertTSTypeLiteral","assertTSArrayType","assertTSTupleType","assertTSOptionalType","assertTSRestType","assertTSNamedTupleMember","assertTSUnionType","assertTSIntersectionType","assertTSConditionalType","assertTSInferType","assertTSParenthesizedType","assertTSTypeOperator","assertTSIndexedAccessType","assertTSMappedType","assertTSLiteralType","assertTSExpressionWithTypeArguments","assertTSInterfaceDeclaration","assertTSInterfaceBody","assertTSTypeAliasDeclaration","assertTSInstantiationExpression","assertTSAsExpression","assertTSSatisfiesExpression","assertTSTypeAssertion","assertTSEnumDeclaration","assertTSEnumMember","assertTSModuleDeclaration","assertTSModuleBlock","assertTSImportType","assertTSImportEqualsDeclaration","assertTSExternalModuleReference","assertTSNonNullExpression","assertTSExportAssignment","assertTSNamespaceExportDeclaration","assertTSTypeAnnotation","assertTSTypeParameterInstantiation","assertTSTypeParameterDeclaration","assertTSTypeParameter","assertStandardized","assertExpression","assertBinary","assertScopable","assertBlockParent","assertBlock","assertStatement","assertTerminatorless","assertCompletionStatement","assertConditional","assertLoop","assertWhile","assertExpressionWrapper","assertFor","assertForXStatement","assertFunction","assertFunctionParent","assertPureish","assertDeclaration","assertPatternLike","assertLVal","assertTSEntityName","assertLiteral","assertImmutable","assertUserWhitespacable","assertMethod","assertObjectMember","assertProperty","assertUnaryLike","assertPattern","assertClass","assertImportOrExportDeclaration","assertExportDeclaration","assertModuleSpecifier","assertAccessor","assertPrivate","assertFlow","assertFlowType","assertFlowBaseAnnotation","assertFlowDeclaration","assertFlowPredicate","assertEnumBody","assertEnumMember","assertJSX","assertMiscellaneous","assertTypeScript","assertTSTypeElement","assertTSType","assertTSBaseType","assertNumberLiteral","deprecationWarning","assertRegexLiteral","assertRestProperty","assertSpreadProperty","assertModuleDeclaration"],"sources":["../../../src/asserts/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport is from \"../../validators/is.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction assert(type: string, node: any, opts?: any): void {\n  if (!is(type, node, opts)) {\n    throw new Error(\n      `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n        `but instead got \"${node.type}\".`,\n    );\n  }\n}\n\nexport function assertArrayExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayExpression {\n  assert(\"ArrayExpression\", node, opts);\n}\nexport function assertAssignmentExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AssignmentExpression {\n  assert(\"AssignmentExpression\", node, opts);\n}\nexport function assertBinaryExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BinaryExpression {\n  assert(\"BinaryExpression\", node, opts);\n}\nexport function assertInterpreterDirective(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterpreterDirective {\n  assert(\"InterpreterDirective\", node, opts);\n}\nexport function assertDirective(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Directive {\n  assert(\"Directive\", node, opts);\n}\nexport function assertDirectiveLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DirectiveLiteral {\n  assert(\"DirectiveLiteral\", node, opts);\n}\nexport function assertBlockStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BlockStatement {\n  assert(\"BlockStatement\", node, opts);\n}\nexport function assertBreakStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BreakStatement {\n  assert(\"BreakStatement\", node, opts);\n}\nexport function assertCallExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CallExpression {\n  assert(\"CallExpression\", node, opts);\n}\nexport function assertCatchClause(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CatchClause {\n  assert(\"CatchClause\", node, opts);\n}\nexport function assertConditionalExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ConditionalExpression {\n  assert(\"ConditionalExpression\", node, opts);\n}\nexport function assertContinueStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ContinueStatement {\n  assert(\"ContinueStatement\", node, opts);\n}\nexport function assertDebuggerStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DebuggerStatement {\n  assert(\"DebuggerStatement\", node, opts);\n}\nexport function assertDoWhileStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DoWhileStatement {\n  assert(\"DoWhileStatement\", node, opts);\n}\nexport function assertEmptyStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EmptyStatement {\n  assert(\"EmptyStatement\", node, opts);\n}\nexport function assertExpressionStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExpressionStatement {\n  assert(\"ExpressionStatement\", node, opts);\n}\nexport function assertFile(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.File {\n  assert(\"File\", node, opts);\n}\nexport function assertForInStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForInStatement {\n  assert(\"ForInStatement\", node, opts);\n}\nexport function assertForStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForStatement {\n  assert(\"ForStatement\", node, opts);\n}\nexport function assertFunctionDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionDeclaration {\n  assert(\"FunctionDeclaration\", node, opts);\n}\nexport function assertFunctionExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionExpression {\n  assert(\"FunctionExpression\", node, opts);\n}\nexport function assertIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Identifier {\n  assert(\"Identifier\", node, opts);\n}\nexport function assertIfStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IfStatement {\n  assert(\"IfStatement\", node, opts);\n}\nexport function assertLabeledStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LabeledStatement {\n  assert(\"LabeledStatement\", node, opts);\n}\nexport function assertStringLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringLiteral {\n  assert(\"StringLiteral\", node, opts);\n}\nexport function assertNumericLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumericLiteral {\n  assert(\"NumericLiteral\", node, opts);\n}\nexport function assertNullLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullLiteral {\n  assert(\"NullLiteral\", node, opts);\n}\nexport function assertBooleanLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanLiteral {\n  assert(\"BooleanLiteral\", node, opts);\n}\nexport function assertRegExpLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RegExpLiteral {\n  assert(\"RegExpLiteral\", node, opts);\n}\nexport function assertLogicalExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LogicalExpression {\n  assert(\"LogicalExpression\", node, opts);\n}\nexport function assertMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MemberExpression {\n  assert(\"MemberExpression\", node, opts);\n}\nexport function assertNewExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NewExpression {\n  assert(\"NewExpression\", node, opts);\n}\nexport function assertProgram(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Program {\n  assert(\"Program\", node, opts);\n}\nexport function assertObjectExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectExpression {\n  assert(\"ObjectExpression\", node, opts);\n}\nexport function assertObjectMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectMethod {\n  assert(\"ObjectMethod\", node, opts);\n}\nexport function assertObjectProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectProperty {\n  assert(\"ObjectProperty\", node, opts);\n}\nexport function assertRestElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RestElement {\n  assert(\"RestElement\", node, opts);\n}\nexport function assertReturnStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ReturnStatement {\n  assert(\"ReturnStatement\", node, opts);\n}\nexport function assertSequenceExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SequenceExpression {\n  assert(\"SequenceExpression\", node, opts);\n}\nexport function assertParenthesizedExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ParenthesizedExpression {\n  assert(\"ParenthesizedExpression\", node, opts);\n}\nexport function assertSwitchCase(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SwitchCase {\n  assert(\"SwitchCase\", node, opts);\n}\nexport function assertSwitchStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SwitchStatement {\n  assert(\"SwitchStatement\", node, opts);\n}\nexport function assertThisExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThisExpression {\n  assert(\"ThisExpression\", node, opts);\n}\nexport function assertThrowStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThrowStatement {\n  assert(\"ThrowStatement\", node, opts);\n}\nexport function assertTryStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TryStatement {\n  assert(\"TryStatement\", node, opts);\n}\nexport function assertUnaryExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnaryExpression {\n  assert(\"UnaryExpression\", node, opts);\n}\nexport function assertUpdateExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UpdateExpression {\n  assert(\"UpdateExpression\", node, opts);\n}\nexport function assertVariableDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VariableDeclaration {\n  assert(\"VariableDeclaration\", node, opts);\n}\nexport function assertVariableDeclarator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VariableDeclarator {\n  assert(\"VariableDeclarator\", node, opts);\n}\nexport function assertWhileStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.WhileStatement {\n  assert(\"WhileStatement\", node, opts);\n}\nexport function assertWithStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.WithStatement {\n  assert(\"WithStatement\", node, opts);\n}\nexport function assertAssignmentPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AssignmentPattern {\n  assert(\"AssignmentPattern\", node, opts);\n}\nexport function assertArrayPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayPattern {\n  assert(\"ArrayPattern\", node, opts);\n}\nexport function assertArrowFunctionExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrowFunctionExpression {\n  assert(\"ArrowFunctionExpression\", node, opts);\n}\nexport function assertClassBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassBody {\n  assert(\"ClassBody\", node, opts);\n}\nexport function assertClassExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassExpression {\n  assert(\"ClassExpression\", node, opts);\n}\nexport function assertClassDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassDeclaration {\n  assert(\"ClassDeclaration\", node, opts);\n}\nexport function assertExportAllDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportAllDeclaration {\n  assert(\"ExportAllDeclaration\", node, opts);\n}\nexport function assertExportDefaultDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDefaultDeclaration {\n  assert(\"ExportDefaultDeclaration\", node, opts);\n}\nexport function assertExportNamedDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportNamedDeclaration {\n  assert(\"ExportNamedDeclaration\", node, opts);\n}\nexport function assertExportSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportSpecifier {\n  assert(\"ExportSpecifier\", node, opts);\n}\nexport function assertForOfStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForOfStatement {\n  assert(\"ForOfStatement\", node, opts);\n}\nexport function assertImportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportDeclaration {\n  assert(\"ImportDeclaration\", node, opts);\n}\nexport function assertImportDefaultSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportDefaultSpecifier {\n  assert(\"ImportDefaultSpecifier\", node, opts);\n}\nexport function assertImportNamespaceSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportNamespaceSpecifier {\n  assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nexport function assertImportSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportSpecifier {\n  assert(\"ImportSpecifier\", node, opts);\n}\nexport function assertImportExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportExpression {\n  assert(\"ImportExpression\", node, opts);\n}\nexport function assertMetaProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MetaProperty {\n  assert(\"MetaProperty\", node, opts);\n}\nexport function assertClassMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassMethod {\n  assert(\"ClassMethod\", node, opts);\n}\nexport function assertObjectPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectPattern {\n  assert(\"ObjectPattern\", node, opts);\n}\nexport function assertSpreadElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SpreadElement {\n  assert(\"SpreadElement\", node, opts);\n}\nexport function assertSuper(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Super {\n  assert(\"Super\", node, opts);\n}\nexport function assertTaggedTemplateExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TaggedTemplateExpression {\n  assert(\"TaggedTemplateExpression\", node, opts);\n}\nexport function assertTemplateElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TemplateElement {\n  assert(\"TemplateElement\", node, opts);\n}\nexport function assertTemplateLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TemplateLiteral {\n  assert(\"TemplateLiteral\", node, opts);\n}\nexport function assertYieldExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.YieldExpression {\n  assert(\"YieldExpression\", node, opts);\n}\nexport function assertAwaitExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AwaitExpression {\n  assert(\"AwaitExpression\", node, opts);\n}\nexport function assertImport(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Import {\n  assert(\"Import\", node, opts);\n}\nexport function assertBigIntLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BigIntLiteral {\n  assert(\"BigIntLiteral\", node, opts);\n}\nexport function assertExportNamespaceSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportNamespaceSpecifier {\n  assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nexport function assertOptionalMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalMemberExpression {\n  assert(\"OptionalMemberExpression\", node, opts);\n}\nexport function assertOptionalCallExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalCallExpression {\n  assert(\"OptionalCallExpression\", node, opts);\n}\nexport function assertClassProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassProperty {\n  assert(\"ClassProperty\", node, opts);\n}\nexport function assertClassAccessorProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassAccessorProperty {\n  assert(\"ClassAccessorProperty\", node, opts);\n}\nexport function assertClassPrivateProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassPrivateProperty {\n  assert(\"ClassPrivateProperty\", node, opts);\n}\nexport function assertClassPrivateMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassPrivateMethod {\n  assert(\"ClassPrivateMethod\", node, opts);\n}\nexport function assertPrivateName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PrivateName {\n  assert(\"PrivateName\", node, opts);\n}\nexport function assertStaticBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StaticBlock {\n  assert(\"StaticBlock\", node, opts);\n}\nexport function assertAnyTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AnyTypeAnnotation {\n  assert(\"AnyTypeAnnotation\", node, opts);\n}\nexport function assertArrayTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayTypeAnnotation {\n  assert(\"ArrayTypeAnnotation\", node, opts);\n}\nexport function assertBooleanTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanTypeAnnotation {\n  assert(\"BooleanTypeAnnotation\", node, opts);\n}\nexport function assertBooleanLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanLiteralTypeAnnotation {\n  assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNullLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullLiteralTypeAnnotation {\n  assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nexport function assertClassImplements(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassImplements {\n  assert(\"ClassImplements\", node, opts);\n}\nexport function assertDeclareClass(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareClass {\n  assert(\"DeclareClass\", node, opts);\n}\nexport function assertDeclareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareFunction {\n  assert(\"DeclareFunction\", node, opts);\n}\nexport function assertDeclareInterface(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareInterface {\n  assert(\"DeclareInterface\", node, opts);\n}\nexport function assertDeclareModule(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareModule {\n  assert(\"DeclareModule\", node, opts);\n}\nexport function assertDeclareModuleExports(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareModuleExports {\n  assert(\"DeclareModuleExports\", node, opts);\n}\nexport function assertDeclareTypeAlias(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareTypeAlias {\n  assert(\"DeclareTypeAlias\", node, opts);\n}\nexport function assertDeclareOpaqueType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareOpaqueType {\n  assert(\"DeclareOpaqueType\", node, opts);\n}\nexport function assertDeclareVariable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareVariable {\n  assert(\"DeclareVariable\", node, opts);\n}\nexport function assertDeclareExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareExportDeclaration {\n  assert(\"DeclareExportDeclaration\", node, opts);\n}\nexport function assertDeclareExportAllDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareExportAllDeclaration {\n  assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nexport function assertDeclaredPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclaredPredicate {\n  assert(\"DeclaredPredicate\", node, opts);\n}\nexport function assertExistsTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExistsTypeAnnotation {\n  assert(\"ExistsTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionTypeAnnotation {\n  assert(\"FunctionTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeParam(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionTypeParam {\n  assert(\"FunctionTypeParam\", node, opts);\n}\nexport function assertGenericTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.GenericTypeAnnotation {\n  assert(\"GenericTypeAnnotation\", node, opts);\n}\nexport function assertInferredPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InferredPredicate {\n  assert(\"InferredPredicate\", node, opts);\n}\nexport function assertInterfaceExtends(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceExtends {\n  assert(\"InterfaceExtends\", node, opts);\n}\nexport function assertInterfaceDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceDeclaration {\n  assert(\"InterfaceDeclaration\", node, opts);\n}\nexport function assertInterfaceTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceTypeAnnotation {\n  assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nexport function assertIntersectionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IntersectionTypeAnnotation {\n  assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nexport function assertMixedTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MixedTypeAnnotation {\n  assert(\"MixedTypeAnnotation\", node, opts);\n}\nexport function assertEmptyTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EmptyTypeAnnotation {\n  assert(\"EmptyTypeAnnotation\", node, opts);\n}\nexport function assertNullableTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullableTypeAnnotation {\n  assert(\"NullableTypeAnnotation\", node, opts);\n}\nexport function assertNumberLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumberLiteralTypeAnnotation {\n  assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNumberTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumberTypeAnnotation {\n  assert(\"NumberTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeAnnotation {\n  assert(\"ObjectTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeInternalSlot(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeInternalSlot {\n  assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nexport function assertObjectTypeCallProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeCallProperty {\n  assert(\"ObjectTypeCallProperty\", node, opts);\n}\nexport function assertObjectTypeIndexer(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeIndexer {\n  assert(\"ObjectTypeIndexer\", node, opts);\n}\nexport function assertObjectTypeProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeProperty {\n  assert(\"ObjectTypeProperty\", node, opts);\n}\nexport function assertObjectTypeSpreadProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeSpreadProperty {\n  assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nexport function assertOpaqueType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OpaqueType {\n  assert(\"OpaqueType\", node, opts);\n}\nexport function assertQualifiedTypeIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.QualifiedTypeIdentifier {\n  assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nexport function assertStringLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringLiteralTypeAnnotation {\n  assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nexport function assertStringTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringTypeAnnotation {\n  assert(\"StringTypeAnnotation\", node, opts);\n}\nexport function assertSymbolTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SymbolTypeAnnotation {\n  assert(\"SymbolTypeAnnotation\", node, opts);\n}\nexport function assertThisTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThisTypeAnnotation {\n  assert(\"ThisTypeAnnotation\", node, opts);\n}\nexport function assertTupleTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TupleTypeAnnotation {\n  assert(\"TupleTypeAnnotation\", node, opts);\n}\nexport function assertTypeofTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeofTypeAnnotation {\n  assert(\"TypeofTypeAnnotation\", node, opts);\n}\nexport function assertTypeAlias(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeAlias {\n  assert(\"TypeAlias\", node, opts);\n}\nexport function assertTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeAnnotation {\n  assert(\"TypeAnnotation\", node, opts);\n}\nexport function assertTypeCastExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeCastExpression {\n  assert(\"TypeCastExpression\", node, opts);\n}\nexport function assertTypeParameter(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameter {\n  assert(\"TypeParameter\", node, opts);\n}\nexport function assertTypeParameterDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameterDeclaration {\n  assert(\"TypeParameterDeclaration\", node, opts);\n}\nexport function assertTypeParameterInstantiation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameterInstantiation {\n  assert(\"TypeParameterInstantiation\", node, opts);\n}\nexport function assertUnionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnionTypeAnnotation {\n  assert(\"UnionTypeAnnotation\", node, opts);\n}\nexport function assertVariance(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Variance {\n  assert(\"Variance\", node, opts);\n}\nexport function assertVoidTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VoidTypeAnnotation {\n  assert(\"VoidTypeAnnotation\", node, opts);\n}\nexport function assertEnumDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumDeclaration {\n  assert(\"EnumDeclaration\", node, opts);\n}\nexport function assertEnumBooleanBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBooleanBody {\n  assert(\"EnumBooleanBody\", node, opts);\n}\nexport function assertEnumNumberBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumNumberBody {\n  assert(\"EnumNumberBody\", node, opts);\n}\nexport function assertEnumStringBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumStringBody {\n  assert(\"EnumStringBody\", node, opts);\n}\nexport function assertEnumSymbolBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumSymbolBody {\n  assert(\"EnumSymbolBody\", node, opts);\n}\nexport function assertEnumBooleanMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBooleanMember {\n  assert(\"EnumBooleanMember\", node, opts);\n}\nexport function assertEnumNumberMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumNumberMember {\n  assert(\"EnumNumberMember\", node, opts);\n}\nexport function assertEnumStringMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumStringMember {\n  assert(\"EnumStringMember\", node, opts);\n}\nexport function assertEnumDefaultedMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumDefaultedMember {\n  assert(\"EnumDefaultedMember\", node, opts);\n}\nexport function assertIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IndexedAccessType {\n  assert(\"IndexedAccessType\", node, opts);\n}\nexport function assertOptionalIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalIndexedAccessType {\n  assert(\"OptionalIndexedAccessType\", node, opts);\n}\nexport function assertJSXAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXAttribute {\n  assert(\"JSXAttribute\", node, opts);\n}\nexport function assertJSXClosingElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXClosingElement {\n  assert(\"JSXClosingElement\", node, opts);\n}\nexport function assertJSXElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXElement {\n  assert(\"JSXElement\", node, opts);\n}\nexport function assertJSXEmptyExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXEmptyExpression {\n  assert(\"JSXEmptyExpression\", node, opts);\n}\nexport function assertJSXExpressionContainer(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXExpressionContainer {\n  assert(\"JSXExpressionContainer\", node, opts);\n}\nexport function assertJSXSpreadChild(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXSpreadChild {\n  assert(\"JSXSpreadChild\", node, opts);\n}\nexport function assertJSXIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXIdentifier {\n  assert(\"JSXIdentifier\", node, opts);\n}\nexport function assertJSXMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXMemberExpression {\n  assert(\"JSXMemberExpression\", node, opts);\n}\nexport function assertJSXNamespacedName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXNamespacedName {\n  assert(\"JSXNamespacedName\", node, opts);\n}\nexport function assertJSXOpeningElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXOpeningElement {\n  assert(\"JSXOpeningElement\", node, opts);\n}\nexport function assertJSXSpreadAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXSpreadAttribute {\n  assert(\"JSXSpreadAttribute\", node, opts);\n}\nexport function assertJSXText(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXText {\n  assert(\"JSXText\", node, opts);\n}\nexport function assertJSXFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXFragment {\n  assert(\"JSXFragment\", node, opts);\n}\nexport function assertJSXOpeningFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXOpeningFragment {\n  assert(\"JSXOpeningFragment\", node, opts);\n}\nexport function assertJSXClosingFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXClosingFragment {\n  assert(\"JSXClosingFragment\", node, opts);\n}\nexport function assertNoop(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Noop {\n  assert(\"Noop\", node, opts);\n}\nexport function assertPlaceholder(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Placeholder {\n  assert(\"Placeholder\", node, opts);\n}\nexport function assertV8IntrinsicIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.V8IntrinsicIdentifier {\n  assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nexport function assertArgumentPlaceholder(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArgumentPlaceholder {\n  assert(\"ArgumentPlaceholder\", node, opts);\n}\nexport function assertBindExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BindExpression {\n  assert(\"BindExpression\", node, opts);\n}\nexport function assertImportAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportAttribute {\n  assert(\"ImportAttribute\", node, opts);\n}\nexport function assertDecorator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Decorator {\n  assert(\"Decorator\", node, opts);\n}\nexport function assertDoExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DoExpression {\n  assert(\"DoExpression\", node, opts);\n}\nexport function assertExportDefaultSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDefaultSpecifier {\n  assert(\"ExportDefaultSpecifier\", node, opts);\n}\nexport function assertRecordExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RecordExpression {\n  assert(\"RecordExpression\", node, opts);\n}\nexport function assertTupleExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TupleExpression {\n  assert(\"TupleExpression\", node, opts);\n}\nexport function assertDecimalLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DecimalLiteral {\n  assert(\"DecimalLiteral\", node, opts);\n}\nexport function assertModuleExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ModuleExpression {\n  assert(\"ModuleExpression\", node, opts);\n}\nexport function assertTopicReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TopicReference {\n  assert(\"TopicReference\", node, opts);\n}\nexport function assertPipelineTopicExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelineTopicExpression {\n  assert(\"PipelineTopicExpression\", node, opts);\n}\nexport function assertPipelineBareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelineBareFunction {\n  assert(\"PipelineBareFunction\", node, opts);\n}\nexport function assertPipelinePrimaryTopicReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelinePrimaryTopicReference {\n  assert(\"PipelinePrimaryTopicReference\", node, opts);\n}\nexport function assertTSParameterProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSParameterProperty {\n  assert(\"TSParameterProperty\", node, opts);\n}\nexport function assertTSDeclareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSDeclareFunction {\n  assert(\"TSDeclareFunction\", node, opts);\n}\nexport function assertTSDeclareMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSDeclareMethod {\n  assert(\"TSDeclareMethod\", node, opts);\n}\nexport function assertTSQualifiedName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSQualifiedName {\n  assert(\"TSQualifiedName\", node, opts);\n}\nexport function assertTSCallSignatureDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSCallSignatureDeclaration {\n  assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nexport function assertTSConstructSignatureDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConstructSignatureDeclaration {\n  assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nexport function assertTSPropertySignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSPropertySignature {\n  assert(\"TSPropertySignature\", node, opts);\n}\nexport function assertTSMethodSignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSMethodSignature {\n  assert(\"TSMethodSignature\", node, opts);\n}\nexport function assertTSIndexSignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIndexSignature {\n  assert(\"TSIndexSignature\", node, opts);\n}\nexport function assertTSAnyKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSAnyKeyword {\n  assert(\"TSAnyKeyword\", node, opts);\n}\nexport function assertTSBooleanKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBooleanKeyword {\n  assert(\"TSBooleanKeyword\", node, opts);\n}\nexport function assertTSBigIntKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBigIntKeyword {\n  assert(\"TSBigIntKeyword\", node, opts);\n}\nexport function assertTSIntrinsicKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIntrinsicKeyword {\n  assert(\"TSIntrinsicKeyword\", node, opts);\n}\nexport function assertTSNeverKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNeverKeyword {\n  assert(\"TSNeverKeyword\", node, opts);\n}\nexport function assertTSNullKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNullKeyword {\n  assert(\"TSNullKeyword\", node, opts);\n}\nexport function assertTSNumberKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNumberKeyword {\n  assert(\"TSNumberKeyword\", node, opts);\n}\nexport function assertTSObjectKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSObjectKeyword {\n  assert(\"TSObjectKeyword\", node, opts);\n}\nexport function assertTSStringKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSStringKeyword {\n  assert(\"TSStringKeyword\", node, opts);\n}\nexport function assertTSSymbolKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSSymbolKeyword {\n  assert(\"TSSymbolKeyword\", node, opts);\n}\nexport function assertTSUndefinedKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUndefinedKeyword {\n  assert(\"TSUndefinedKeyword\", node, opts);\n}\nexport function assertTSUnknownKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUnknownKeyword {\n  assert(\"TSUnknownKeyword\", node, opts);\n}\nexport function assertTSVoidKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSVoidKeyword {\n  assert(\"TSVoidKeyword\", node, opts);\n}\nexport function assertTSThisType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSThisType {\n  assert(\"TSThisType\", node, opts);\n}\nexport function assertTSFunctionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSFunctionType {\n  assert(\"TSFunctionType\", node, opts);\n}\nexport function assertTSConstructorType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConstructorType {\n  assert(\"TSConstructorType\", node, opts);\n}\nexport function assertTSTypeReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeReference {\n  assert(\"TSTypeReference\", node, opts);\n}\nexport function assertTSTypePredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypePredicate {\n  assert(\"TSTypePredicate\", node, opts);\n}\nexport function assertTSTypeQuery(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeQuery {\n  assert(\"TSTypeQuery\", node, opts);\n}\nexport function assertTSTypeLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeLiteral {\n  assert(\"TSTypeLiteral\", node, opts);\n}\nexport function assertTSArrayType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSArrayType {\n  assert(\"TSArrayType\", node, opts);\n}\nexport function assertTSTupleType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTupleType {\n  assert(\"TSTupleType\", node, opts);\n}\nexport function assertTSOptionalType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSOptionalType {\n  assert(\"TSOptionalType\", node, opts);\n}\nexport function assertTSRestType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSRestType {\n  assert(\"TSRestType\", node, opts);\n}\nexport function assertTSNamedTupleMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNamedTupleMember {\n  assert(\"TSNamedTupleMember\", node, opts);\n}\nexport function assertTSUnionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUnionType {\n  assert(\"TSUnionType\", node, opts);\n}\nexport function assertTSIntersectionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIntersectionType {\n  assert(\"TSIntersectionType\", node, opts);\n}\nexport function assertTSConditionalType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConditionalType {\n  assert(\"TSConditionalType\", node, opts);\n}\nexport function assertTSInferType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInferType {\n  assert(\"TSInferType\", node, opts);\n}\nexport function assertTSParenthesizedType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSParenthesizedType {\n  assert(\"TSParenthesizedType\", node, opts);\n}\nexport function assertTSTypeOperator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeOperator {\n  assert(\"TSTypeOperator\", node, opts);\n}\nexport function assertTSIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIndexedAccessType {\n  assert(\"TSIndexedAccessType\", node, opts);\n}\nexport function assertTSMappedType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSMappedType {\n  assert(\"TSMappedType\", node, opts);\n}\nexport function assertTSLiteralType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSLiteralType {\n  assert(\"TSLiteralType\", node, opts);\n}\nexport function assertTSExpressionWithTypeArguments(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExpressionWithTypeArguments {\n  assert(\"TSExpressionWithTypeArguments\", node, opts);\n}\nexport function assertTSInterfaceDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInterfaceDeclaration {\n  assert(\"TSInterfaceDeclaration\", node, opts);\n}\nexport function assertTSInterfaceBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInterfaceBody {\n  assert(\"TSInterfaceBody\", node, opts);\n}\nexport function assertTSTypeAliasDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAliasDeclaration {\n  assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nexport function assertTSInstantiationExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInstantiationExpression {\n  assert(\"TSInstantiationExpression\", node, opts);\n}\nexport function assertTSAsExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSAsExpression {\n  assert(\"TSAsExpression\", node, opts);\n}\nexport function assertTSSatisfiesExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSSatisfiesExpression {\n  assert(\"TSSatisfiesExpression\", node, opts);\n}\nexport function assertTSTypeAssertion(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAssertion {\n  assert(\"TSTypeAssertion\", node, opts);\n}\nexport function assertTSEnumDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumDeclaration {\n  assert(\"TSEnumDeclaration\", node, opts);\n}\nexport function assertTSEnumMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumMember {\n  assert(\"TSEnumMember\", node, opts);\n}\nexport function assertTSModuleDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSModuleDeclaration {\n  assert(\"TSModuleDeclaration\", node, opts);\n}\nexport function assertTSModuleBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSModuleBlock {\n  assert(\"TSModuleBlock\", node, opts);\n}\nexport function assertTSImportType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSImportType {\n  assert(\"TSImportType\", node, opts);\n}\nexport function assertTSImportEqualsDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSImportEqualsDeclaration {\n  assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nexport function assertTSExternalModuleReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExternalModuleReference {\n  assert(\"TSExternalModuleReference\", node, opts);\n}\nexport function assertTSNonNullExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNonNullExpression {\n  assert(\"TSNonNullExpression\", node, opts);\n}\nexport function assertTSExportAssignment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExportAssignment {\n  assert(\"TSExportAssignment\", node, opts);\n}\nexport function assertTSNamespaceExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNamespaceExportDeclaration {\n  assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nexport function assertTSTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAnnotation {\n  assert(\"TSTypeAnnotation\", node, opts);\n}\nexport function assertTSTypeParameterInstantiation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameterInstantiation {\n  assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nexport function assertTSTypeParameterDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameterDeclaration {\n  assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nexport function assertTSTypeParameter(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameter {\n  assert(\"TSTypeParameter\", node, opts);\n}\nexport function assertStandardized(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Standardized {\n  assert(\"Standardized\", node, opts);\n}\nexport function assertExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Expression {\n  assert(\"Expression\", node, opts);\n}\nexport function assertBinary(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Binary {\n  assert(\"Binary\", node, opts);\n}\nexport function assertScopable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Scopable {\n  assert(\"Scopable\", node, opts);\n}\nexport function assertBlockParent(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BlockParent {\n  assert(\"BlockParent\", node, opts);\n}\nexport function assertBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Block {\n  assert(\"Block\", node, opts);\n}\nexport function assertStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Statement {\n  assert(\"Statement\", node, opts);\n}\nexport function assertTerminatorless(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Terminatorless {\n  assert(\"Terminatorless\", node, opts);\n}\nexport function assertCompletionStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CompletionStatement {\n  assert(\"CompletionStatement\", node, opts);\n}\nexport function assertConditional(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Conditional {\n  assert(\"Conditional\", node, opts);\n}\nexport function assertLoop(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Loop {\n  assert(\"Loop\", node, opts);\n}\nexport function assertWhile(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.While {\n  assert(\"While\", node, opts);\n}\nexport function assertExpressionWrapper(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExpressionWrapper {\n  assert(\"ExpressionWrapper\", node, opts);\n}\nexport function assertFor(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.For {\n  assert(\"For\", node, opts);\n}\nexport function assertForXStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForXStatement {\n  assert(\"ForXStatement\", node, opts);\n}\nexport function assertFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Function {\n  assert(\"Function\", node, opts);\n}\nexport function assertFunctionParent(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionParent {\n  assert(\"FunctionParent\", node, opts);\n}\nexport function assertPureish(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Pureish {\n  assert(\"Pureish\", node, opts);\n}\nexport function assertDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Declaration {\n  assert(\"Declaration\", node, opts);\n}\nexport function assertPatternLike(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PatternLike {\n  assert(\"PatternLike\", node, opts);\n}\nexport function assertLVal(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LVal {\n  assert(\"LVal\", node, opts);\n}\nexport function assertTSEntityName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEntityName {\n  assert(\"TSEntityName\", node, opts);\n}\nexport function assertLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Literal {\n  assert(\"Literal\", node, opts);\n}\nexport function assertImmutable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Immutable {\n  assert(\"Immutable\", node, opts);\n}\nexport function assertUserWhitespacable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UserWhitespacable {\n  assert(\"UserWhitespacable\", node, opts);\n}\nexport function assertMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Method {\n  assert(\"Method\", node, opts);\n}\nexport function assertObjectMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectMember {\n  assert(\"ObjectMember\", node, opts);\n}\nexport function assertProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Property {\n  assert(\"Property\", node, opts);\n}\nexport function assertUnaryLike(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnaryLike {\n  assert(\"UnaryLike\", node, opts);\n}\nexport function assertPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Pattern {\n  assert(\"Pattern\", node, opts);\n}\nexport function assertClass(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Class {\n  assert(\"Class\", node, opts);\n}\nexport function assertImportOrExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportOrExportDeclaration {\n  assert(\"ImportOrExportDeclaration\", node, opts);\n}\nexport function assertExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDeclaration {\n  assert(\"ExportDeclaration\", node, opts);\n}\nexport function assertModuleSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ModuleSpecifier {\n  assert(\"ModuleSpecifier\", node, opts);\n}\nexport function assertAccessor(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Accessor {\n  assert(\"Accessor\", node, opts);\n}\nexport function assertPrivate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Private {\n  assert(\"Private\", node, opts);\n}\nexport function assertFlow(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Flow {\n  assert(\"Flow\", node, opts);\n}\nexport function assertFlowType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowType {\n  assert(\"FlowType\", node, opts);\n}\nexport function assertFlowBaseAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowBaseAnnotation {\n  assert(\"FlowBaseAnnotation\", node, opts);\n}\nexport function assertFlowDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowDeclaration {\n  assert(\"FlowDeclaration\", node, opts);\n}\nexport function assertFlowPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowPredicate {\n  assert(\"FlowPredicate\", node, opts);\n}\nexport function assertEnumBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBody {\n  assert(\"EnumBody\", node, opts);\n}\nexport function assertEnumMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumMember {\n  assert(\"EnumMember\", node, opts);\n}\nexport function assertJSX(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSX {\n  assert(\"JSX\", node, opts);\n}\nexport function assertMiscellaneous(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Miscellaneous {\n  assert(\"Miscellaneous\", node, opts);\n}\nexport function assertTypeScript(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeScript {\n  assert(\"TypeScript\", node, opts);\n}\nexport function assertTSTypeElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeElement {\n  assert(\"TSTypeElement\", node, opts);\n}\nexport function assertTSType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSType {\n  assert(\"TSType\", node, opts);\n}\nexport function assertTSBaseType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBaseType {\n  assert(\"TSBaseType\", node, opts);\n}\nexport function assertNumberLiteral(node: any, opts: any): void {\n  deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n  assert(\"NumberLiteral\", node, opts);\n}\nexport function assertRegexLiteral(node: any, opts: any): void {\n  deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n  assert(\"RegexLiteral\", node, opts);\n}\nexport function assertRestProperty(node: any, opts: any): void {\n  deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n  assert(\"RestProperty\", node, opts);\n}\nexport function assertSpreadProperty(node: any, opts: any): void {\n  deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n  assert(\"SpreadProperty\", node, opts);\n}\nexport function assertModuleDeclaration(node: any, opts: any): void {\n  deprecationWarning(\n    \"assertModuleDeclaration\",\n    \"assertImportOrExportDeclaration\",\n  );\n  assert(\"ModuleDeclaration\", node, opts);\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_is","require","_deprecationWarning","assert","type","node","opts","is","Error","JSON","stringify","assertArrayExpression","assertAssignmentExpression","assertBinaryExpression","assertInterpreterDirective","assertDirective","assertDirectiveLiteral","assertBlockStatement","assertBreakStatement","assertCallExpression","assertCatchClause","assertConditionalExpression","assertContinueStatement","assertDebuggerStatement","assertDoWhileStatement","assertEmptyStatement","assertExpressionStatement","assertFile","assertForInStatement","assertForStatement","assertFunctionDeclaration","assertFunctionExpression","assertIdentifier","assertIfStatement","assertLabeledStatement","assertStringLiteral","assertNumericLiteral","assertNullLiteral","assertBooleanLiteral","assertRegExpLiteral","assertLogicalExpression","assertMemberExpression","assertNewExpression","assertProgram","assertObjectExpression","assertObjectMethod","assertObjectProperty","assertRestElement","assertReturnStatement","assertSequenceExpression","assertParenthesizedExpression","assertSwitchCase","assertSwitchStatement","assertThisExpression","assertThrowStatement","assertTryStatement","assertUnaryExpression","assertUpdateExpression","assertVariableDeclaration","assertVariableDeclarator","assertWhileStatement","assertWithStatement","assertAssignmentPattern","assertArrayPattern","assertArrowFunctionExpression","assertClassBody","assertClassExpression","assertClassDeclaration","assertExportAllDeclaration","assertExportDefaultDeclaration","assertExportNamedDeclaration","assertExportSpecifier","assertForOfStatement","assertImportDeclaration","assertImportDefaultSpecifier","assertImportNamespaceSpecifier","assertImportSpecifier","assertImportExpression","assertMetaProperty","assertClassMethod","assertObjectPattern","assertSpreadElement","assertSuper","assertTaggedTemplateExpression","assertTemplateElement","assertTemplateLiteral","assertYieldExpression","assertAwaitExpression","assertImport","assertBigIntLiteral","assertExportNamespaceSpecifier","assertOptionalMemberExpression","assertOptionalCallExpression","assertClassProperty","assertClassAccessorProperty","assertClassPrivateProperty","assertClassPrivateMethod","assertPrivateName","assertStaticBlock","assertAnyTypeAnnotation","assertArrayTypeAnnotation","assertBooleanTypeAnnotation","assertBooleanLiteralTypeAnnotation","assertNullLiteralTypeAnnotation","assertClassImplements","assertDeclareClass","assertDeclareFunction","assertDeclareInterface","assertDeclareModule","assertDeclareModuleExports","assertDeclareTypeAlias","assertDeclareOpaqueType","assertDeclareVariable","assertDeclareExportDeclaration","assertDeclareExportAllDeclaration","assertDeclaredPredicate","assertExistsTypeAnnotation","assertFunctionTypeAnnotation","assertFunctionTypeParam","assertGenericTypeAnnotation","assertInferredPredicate","assertInterfaceExtends","assertInterfaceDeclaration","assertInterfaceTypeAnnotation","assertIntersectionTypeAnnotation","assertMixedTypeAnnotation","assertEmptyTypeAnnotation","assertNullableTypeAnnotation","assertNumberLiteralTypeAnnotation","assertNumberTypeAnnotation","assertObjectTypeAnnotation","assertObjectTypeInternalSlot","assertObjectTypeCallProperty","assertObjectTypeIndexer","assertObjectTypeProperty","assertObjectTypeSpreadProperty","assertOpaqueType","assertQualifiedTypeIdentifier","assertStringLiteralTypeAnnotation","assertStringTypeAnnotation","assertSymbolTypeAnnotation","assertThisTypeAnnotation","assertTupleTypeAnnotation","assertTypeofTypeAnnotation","assertTypeAlias","assertTypeAnnotation","assertTypeCastExpression","assertTypeParameter","assertTypeParameterDeclaration","assertTypeParameterInstantiation","assertUnionTypeAnnotation","assertVariance","assertVoidTypeAnnotation","assertEnumDeclaration","assertEnumBooleanBody","assertEnumNumberBody","assertEnumStringBody","assertEnumSymbolBody","assertEnumBooleanMember","assertEnumNumberMember","assertEnumStringMember","assertEnumDefaultedMember","assertIndexedAccessType","assertOptionalIndexedAccessType","assertJSXAttribute","assertJSXClosingElement","assertJSXElement","assertJSXEmptyExpression","assertJSXExpressionContainer","assertJSXSpreadChild","assertJSXIdentifier","assertJSXMemberExpression","assertJSXNamespacedName","assertJSXOpeningElement","assertJSXSpreadAttribute","assertJSXText","assertJSXFragment","assertJSXOpeningFragment","assertJSXClosingFragment","assertNoop","assertPlaceholder","assertV8IntrinsicIdentifier","assertArgumentPlaceholder","assertBindExpression","assertImportAttribute","assertDecorator","assertDoExpression","assertExportDefaultSpecifier","assertRecordExpression","assertTupleExpression","assertDecimalLiteral","assertModuleExpression","assertTopicReference","assertPipelineTopicExpression","assertPipelineBareFunction","assertPipelinePrimaryTopicReference","assertTSParameterProperty","assertTSDeclareFunction","assertTSDeclareMethod","assertTSQualifiedName","assertTSCallSignatureDeclaration","assertTSConstructSignatureDeclaration","assertTSPropertySignature","assertTSMethodSignature","assertTSIndexSignature","assertTSAnyKeyword","assertTSBooleanKeyword","assertTSBigIntKeyword","assertTSIntrinsicKeyword","assertTSNeverKeyword","assertTSNullKeyword","assertTSNumberKeyword","assertTSObjectKeyword","assertTSStringKeyword","assertTSSymbolKeyword","assertTSUndefinedKeyword","assertTSUnknownKeyword","assertTSVoidKeyword","assertTSThisType","assertTSFunctionType","assertTSConstructorType","assertTSTypeReference","assertTSTypePredicate","assertTSTypeQuery","assertTSTypeLiteral","assertTSArrayType","assertTSTupleType","assertTSOptionalType","assertTSRestType","assertTSNamedTupleMember","assertTSUnionType","assertTSIntersectionType","assertTSConditionalType","assertTSInferType","assertTSParenthesizedType","assertTSTypeOperator","assertTSIndexedAccessType","assertTSMappedType","assertTSLiteralType","assertTSExpressionWithTypeArguments","assertTSInterfaceDeclaration","assertTSInterfaceBody","assertTSTypeAliasDeclaration","assertTSInstantiationExpression","assertTSAsExpression","assertTSSatisfiesExpression","assertTSTypeAssertion","assertTSEnumBody","assertTSEnumDeclaration","assertTSEnumMember","assertTSModuleDeclaration","assertTSModuleBlock","assertTSImportType","assertTSImportEqualsDeclaration","assertTSExternalModuleReference","assertTSNonNullExpression","assertTSExportAssignment","assertTSNamespaceExportDeclaration","assertTSTypeAnnotation","assertTSTypeParameterInstantiation","assertTSTypeParameterDeclaration","assertTSTypeParameter","assertStandardized","assertExpression","assertBinary","assertScopable","assertBlockParent","assertBlock","assertStatement","assertTerminatorless","assertCompletionStatement","assertConditional","assertLoop","assertWhile","assertExpressionWrapper","assertFor","assertForXStatement","assertFunction","assertFunctionParent","assertPureish","assertDeclaration","assertPatternLike","assertLVal","assertTSEntityName","assertLiteral","assertImmutable","assertUserWhitespacable","assertMethod","assertObjectMember","assertProperty","assertUnaryLike","assertPattern","assertClass","assertImportOrExportDeclaration","assertExportDeclaration","assertModuleSpecifier","assertAccessor","assertPrivate","assertFlow","assertFlowType","assertFlowBaseAnnotation","assertFlowDeclaration","assertFlowPredicate","assertEnumBody","assertEnumMember","assertJSX","assertMiscellaneous","assertTypeScript","assertTSTypeElement","assertTSType","assertTSBaseType","assertNumberLiteral","deprecationWarning","assertRegexLiteral","assertRestProperty","assertSpreadProperty","assertModuleDeclaration"],"sources":["../../../src/asserts/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport is from \"../../validators/is.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction assert(type: string, node: any, opts?: any): void {\n  if (!is(type, node, opts)) {\n    throw new Error(\n      `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n        `but instead got \"${node.type}\".`,\n    );\n  }\n}\n\nexport function assertArrayExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayExpression {\n  assert(\"ArrayExpression\", node, opts);\n}\nexport function assertAssignmentExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AssignmentExpression {\n  assert(\"AssignmentExpression\", node, opts);\n}\nexport function assertBinaryExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BinaryExpression {\n  assert(\"BinaryExpression\", node, opts);\n}\nexport function assertInterpreterDirective(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterpreterDirective {\n  assert(\"InterpreterDirective\", node, opts);\n}\nexport function assertDirective(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Directive {\n  assert(\"Directive\", node, opts);\n}\nexport function assertDirectiveLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DirectiveLiteral {\n  assert(\"DirectiveLiteral\", node, opts);\n}\nexport function assertBlockStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BlockStatement {\n  assert(\"BlockStatement\", node, opts);\n}\nexport function assertBreakStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BreakStatement {\n  assert(\"BreakStatement\", node, opts);\n}\nexport function assertCallExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CallExpression {\n  assert(\"CallExpression\", node, opts);\n}\nexport function assertCatchClause(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CatchClause {\n  assert(\"CatchClause\", node, opts);\n}\nexport function assertConditionalExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ConditionalExpression {\n  assert(\"ConditionalExpression\", node, opts);\n}\nexport function assertContinueStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ContinueStatement {\n  assert(\"ContinueStatement\", node, opts);\n}\nexport function assertDebuggerStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DebuggerStatement {\n  assert(\"DebuggerStatement\", node, opts);\n}\nexport function assertDoWhileStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DoWhileStatement {\n  assert(\"DoWhileStatement\", node, opts);\n}\nexport function assertEmptyStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EmptyStatement {\n  assert(\"EmptyStatement\", node, opts);\n}\nexport function assertExpressionStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExpressionStatement {\n  assert(\"ExpressionStatement\", node, opts);\n}\nexport function assertFile(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.File {\n  assert(\"File\", node, opts);\n}\nexport function assertForInStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForInStatement {\n  assert(\"ForInStatement\", node, opts);\n}\nexport function assertForStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForStatement {\n  assert(\"ForStatement\", node, opts);\n}\nexport function assertFunctionDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionDeclaration {\n  assert(\"FunctionDeclaration\", node, opts);\n}\nexport function assertFunctionExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionExpression {\n  assert(\"FunctionExpression\", node, opts);\n}\nexport function assertIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Identifier {\n  assert(\"Identifier\", node, opts);\n}\nexport function assertIfStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IfStatement {\n  assert(\"IfStatement\", node, opts);\n}\nexport function assertLabeledStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LabeledStatement {\n  assert(\"LabeledStatement\", node, opts);\n}\nexport function assertStringLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringLiteral {\n  assert(\"StringLiteral\", node, opts);\n}\nexport function assertNumericLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumericLiteral {\n  assert(\"NumericLiteral\", node, opts);\n}\nexport function assertNullLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullLiteral {\n  assert(\"NullLiteral\", node, opts);\n}\nexport function assertBooleanLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanLiteral {\n  assert(\"BooleanLiteral\", node, opts);\n}\nexport function assertRegExpLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RegExpLiteral {\n  assert(\"RegExpLiteral\", node, opts);\n}\nexport function assertLogicalExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LogicalExpression {\n  assert(\"LogicalExpression\", node, opts);\n}\nexport function assertMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MemberExpression {\n  assert(\"MemberExpression\", node, opts);\n}\nexport function assertNewExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NewExpression {\n  assert(\"NewExpression\", node, opts);\n}\nexport function assertProgram(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Program {\n  assert(\"Program\", node, opts);\n}\nexport function assertObjectExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectExpression {\n  assert(\"ObjectExpression\", node, opts);\n}\nexport function assertObjectMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectMethod {\n  assert(\"ObjectMethod\", node, opts);\n}\nexport function assertObjectProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectProperty {\n  assert(\"ObjectProperty\", node, opts);\n}\nexport function assertRestElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RestElement {\n  assert(\"RestElement\", node, opts);\n}\nexport function assertReturnStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ReturnStatement {\n  assert(\"ReturnStatement\", node, opts);\n}\nexport function assertSequenceExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SequenceExpression {\n  assert(\"SequenceExpression\", node, opts);\n}\nexport function assertParenthesizedExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ParenthesizedExpression {\n  assert(\"ParenthesizedExpression\", node, opts);\n}\nexport function assertSwitchCase(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SwitchCase {\n  assert(\"SwitchCase\", node, opts);\n}\nexport function assertSwitchStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SwitchStatement {\n  assert(\"SwitchStatement\", node, opts);\n}\nexport function assertThisExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThisExpression {\n  assert(\"ThisExpression\", node, opts);\n}\nexport function assertThrowStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThrowStatement {\n  assert(\"ThrowStatement\", node, opts);\n}\nexport function assertTryStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TryStatement {\n  assert(\"TryStatement\", node, opts);\n}\nexport function assertUnaryExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnaryExpression {\n  assert(\"UnaryExpression\", node, opts);\n}\nexport function assertUpdateExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UpdateExpression {\n  assert(\"UpdateExpression\", node, opts);\n}\nexport function assertVariableDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VariableDeclaration {\n  assert(\"VariableDeclaration\", node, opts);\n}\nexport function assertVariableDeclarator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VariableDeclarator {\n  assert(\"VariableDeclarator\", node, opts);\n}\nexport function assertWhileStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.WhileStatement {\n  assert(\"WhileStatement\", node, opts);\n}\nexport function assertWithStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.WithStatement {\n  assert(\"WithStatement\", node, opts);\n}\nexport function assertAssignmentPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AssignmentPattern {\n  assert(\"AssignmentPattern\", node, opts);\n}\nexport function assertArrayPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayPattern {\n  assert(\"ArrayPattern\", node, opts);\n}\nexport function assertArrowFunctionExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrowFunctionExpression {\n  assert(\"ArrowFunctionExpression\", node, opts);\n}\nexport function assertClassBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassBody {\n  assert(\"ClassBody\", node, opts);\n}\nexport function assertClassExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassExpression {\n  assert(\"ClassExpression\", node, opts);\n}\nexport function assertClassDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassDeclaration {\n  assert(\"ClassDeclaration\", node, opts);\n}\nexport function assertExportAllDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportAllDeclaration {\n  assert(\"ExportAllDeclaration\", node, opts);\n}\nexport function assertExportDefaultDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDefaultDeclaration {\n  assert(\"ExportDefaultDeclaration\", node, opts);\n}\nexport function assertExportNamedDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportNamedDeclaration {\n  assert(\"ExportNamedDeclaration\", node, opts);\n}\nexport function assertExportSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportSpecifier {\n  assert(\"ExportSpecifier\", node, opts);\n}\nexport function assertForOfStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForOfStatement {\n  assert(\"ForOfStatement\", node, opts);\n}\nexport function assertImportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportDeclaration {\n  assert(\"ImportDeclaration\", node, opts);\n}\nexport function assertImportDefaultSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportDefaultSpecifier {\n  assert(\"ImportDefaultSpecifier\", node, opts);\n}\nexport function assertImportNamespaceSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportNamespaceSpecifier {\n  assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nexport function assertImportSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportSpecifier {\n  assert(\"ImportSpecifier\", node, opts);\n}\nexport function assertImportExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportExpression {\n  assert(\"ImportExpression\", node, opts);\n}\nexport function assertMetaProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MetaProperty {\n  assert(\"MetaProperty\", node, opts);\n}\nexport function assertClassMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassMethod {\n  assert(\"ClassMethod\", node, opts);\n}\nexport function assertObjectPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectPattern {\n  assert(\"ObjectPattern\", node, opts);\n}\nexport function assertSpreadElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SpreadElement {\n  assert(\"SpreadElement\", node, opts);\n}\nexport function assertSuper(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Super {\n  assert(\"Super\", node, opts);\n}\nexport function assertTaggedTemplateExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TaggedTemplateExpression {\n  assert(\"TaggedTemplateExpression\", node, opts);\n}\nexport function assertTemplateElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TemplateElement {\n  assert(\"TemplateElement\", node, opts);\n}\nexport function assertTemplateLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TemplateLiteral {\n  assert(\"TemplateLiteral\", node, opts);\n}\nexport function assertYieldExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.YieldExpression {\n  assert(\"YieldExpression\", node, opts);\n}\nexport function assertAwaitExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AwaitExpression {\n  assert(\"AwaitExpression\", node, opts);\n}\nexport function assertImport(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Import {\n  assert(\"Import\", node, opts);\n}\nexport function assertBigIntLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BigIntLiteral {\n  assert(\"BigIntLiteral\", node, opts);\n}\nexport function assertExportNamespaceSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportNamespaceSpecifier {\n  assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nexport function assertOptionalMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalMemberExpression {\n  assert(\"OptionalMemberExpression\", node, opts);\n}\nexport function assertOptionalCallExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalCallExpression {\n  assert(\"OptionalCallExpression\", node, opts);\n}\nexport function assertClassProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassProperty {\n  assert(\"ClassProperty\", node, opts);\n}\nexport function assertClassAccessorProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassAccessorProperty {\n  assert(\"ClassAccessorProperty\", node, opts);\n}\nexport function assertClassPrivateProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassPrivateProperty {\n  assert(\"ClassPrivateProperty\", node, opts);\n}\nexport function assertClassPrivateMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassPrivateMethod {\n  assert(\"ClassPrivateMethod\", node, opts);\n}\nexport function assertPrivateName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PrivateName {\n  assert(\"PrivateName\", node, opts);\n}\nexport function assertStaticBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StaticBlock {\n  assert(\"StaticBlock\", node, opts);\n}\nexport function assertAnyTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AnyTypeAnnotation {\n  assert(\"AnyTypeAnnotation\", node, opts);\n}\nexport function assertArrayTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayTypeAnnotation {\n  assert(\"ArrayTypeAnnotation\", node, opts);\n}\nexport function assertBooleanTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanTypeAnnotation {\n  assert(\"BooleanTypeAnnotation\", node, opts);\n}\nexport function assertBooleanLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanLiteralTypeAnnotation {\n  assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNullLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullLiteralTypeAnnotation {\n  assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nexport function assertClassImplements(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassImplements {\n  assert(\"ClassImplements\", node, opts);\n}\nexport function assertDeclareClass(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareClass {\n  assert(\"DeclareClass\", node, opts);\n}\nexport function assertDeclareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareFunction {\n  assert(\"DeclareFunction\", node, opts);\n}\nexport function assertDeclareInterface(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareInterface {\n  assert(\"DeclareInterface\", node, opts);\n}\nexport function assertDeclareModule(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareModule {\n  assert(\"DeclareModule\", node, opts);\n}\nexport function assertDeclareModuleExports(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareModuleExports {\n  assert(\"DeclareModuleExports\", node, opts);\n}\nexport function assertDeclareTypeAlias(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareTypeAlias {\n  assert(\"DeclareTypeAlias\", node, opts);\n}\nexport function assertDeclareOpaqueType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareOpaqueType {\n  assert(\"DeclareOpaqueType\", node, opts);\n}\nexport function assertDeclareVariable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareVariable {\n  assert(\"DeclareVariable\", node, opts);\n}\nexport function assertDeclareExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareExportDeclaration {\n  assert(\"DeclareExportDeclaration\", node, opts);\n}\nexport function assertDeclareExportAllDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareExportAllDeclaration {\n  assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nexport function assertDeclaredPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclaredPredicate {\n  assert(\"DeclaredPredicate\", node, opts);\n}\nexport function assertExistsTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExistsTypeAnnotation {\n  assert(\"ExistsTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionTypeAnnotation {\n  assert(\"FunctionTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeParam(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionTypeParam {\n  assert(\"FunctionTypeParam\", node, opts);\n}\nexport function assertGenericTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.GenericTypeAnnotation {\n  assert(\"GenericTypeAnnotation\", node, opts);\n}\nexport function assertInferredPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InferredPredicate {\n  assert(\"InferredPredicate\", node, opts);\n}\nexport function assertInterfaceExtends(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceExtends {\n  assert(\"InterfaceExtends\", node, opts);\n}\nexport function assertInterfaceDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceDeclaration {\n  assert(\"InterfaceDeclaration\", node, opts);\n}\nexport function assertInterfaceTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceTypeAnnotation {\n  assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nexport function assertIntersectionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IntersectionTypeAnnotation {\n  assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nexport function assertMixedTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MixedTypeAnnotation {\n  assert(\"MixedTypeAnnotation\", node, opts);\n}\nexport function assertEmptyTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EmptyTypeAnnotation {\n  assert(\"EmptyTypeAnnotation\", node, opts);\n}\nexport function assertNullableTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullableTypeAnnotation {\n  assert(\"NullableTypeAnnotation\", node, opts);\n}\nexport function assertNumberLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumberLiteralTypeAnnotation {\n  assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNumberTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumberTypeAnnotation {\n  assert(\"NumberTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeAnnotation {\n  assert(\"ObjectTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeInternalSlot(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeInternalSlot {\n  assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nexport function assertObjectTypeCallProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeCallProperty {\n  assert(\"ObjectTypeCallProperty\", node, opts);\n}\nexport function assertObjectTypeIndexer(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeIndexer {\n  assert(\"ObjectTypeIndexer\", node, opts);\n}\nexport function assertObjectTypeProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeProperty {\n  assert(\"ObjectTypeProperty\", node, opts);\n}\nexport function assertObjectTypeSpreadProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeSpreadProperty {\n  assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nexport function assertOpaqueType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OpaqueType {\n  assert(\"OpaqueType\", node, opts);\n}\nexport function assertQualifiedTypeIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.QualifiedTypeIdentifier {\n  assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nexport function assertStringLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringLiteralTypeAnnotation {\n  assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nexport function assertStringTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringTypeAnnotation {\n  assert(\"StringTypeAnnotation\", node, opts);\n}\nexport function assertSymbolTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SymbolTypeAnnotation {\n  assert(\"SymbolTypeAnnotation\", node, opts);\n}\nexport function assertThisTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThisTypeAnnotation {\n  assert(\"ThisTypeAnnotation\", node, opts);\n}\nexport function assertTupleTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TupleTypeAnnotation {\n  assert(\"TupleTypeAnnotation\", node, opts);\n}\nexport function assertTypeofTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeofTypeAnnotation {\n  assert(\"TypeofTypeAnnotation\", node, opts);\n}\nexport function assertTypeAlias(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeAlias {\n  assert(\"TypeAlias\", node, opts);\n}\nexport function assertTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeAnnotation {\n  assert(\"TypeAnnotation\", node, opts);\n}\nexport function assertTypeCastExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeCastExpression {\n  assert(\"TypeCastExpression\", node, opts);\n}\nexport function assertTypeParameter(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameter {\n  assert(\"TypeParameter\", node, opts);\n}\nexport function assertTypeParameterDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameterDeclaration {\n  assert(\"TypeParameterDeclaration\", node, opts);\n}\nexport function assertTypeParameterInstantiation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameterInstantiation {\n  assert(\"TypeParameterInstantiation\", node, opts);\n}\nexport function assertUnionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnionTypeAnnotation {\n  assert(\"UnionTypeAnnotation\", node, opts);\n}\nexport function assertVariance(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Variance {\n  assert(\"Variance\", node, opts);\n}\nexport function assertVoidTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VoidTypeAnnotation {\n  assert(\"VoidTypeAnnotation\", node, opts);\n}\nexport function assertEnumDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumDeclaration {\n  assert(\"EnumDeclaration\", node, opts);\n}\nexport function assertEnumBooleanBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBooleanBody {\n  assert(\"EnumBooleanBody\", node, opts);\n}\nexport function assertEnumNumberBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumNumberBody {\n  assert(\"EnumNumberBody\", node, opts);\n}\nexport function assertEnumStringBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumStringBody {\n  assert(\"EnumStringBody\", node, opts);\n}\nexport function assertEnumSymbolBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumSymbolBody {\n  assert(\"EnumSymbolBody\", node, opts);\n}\nexport function assertEnumBooleanMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBooleanMember {\n  assert(\"EnumBooleanMember\", node, opts);\n}\nexport function assertEnumNumberMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumNumberMember {\n  assert(\"EnumNumberMember\", node, opts);\n}\nexport function assertEnumStringMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumStringMember {\n  assert(\"EnumStringMember\", node, opts);\n}\nexport function assertEnumDefaultedMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumDefaultedMember {\n  assert(\"EnumDefaultedMember\", node, opts);\n}\nexport function assertIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IndexedAccessType {\n  assert(\"IndexedAccessType\", node, opts);\n}\nexport function assertOptionalIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalIndexedAccessType {\n  assert(\"OptionalIndexedAccessType\", node, opts);\n}\nexport function assertJSXAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXAttribute {\n  assert(\"JSXAttribute\", node, opts);\n}\nexport function assertJSXClosingElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXClosingElement {\n  assert(\"JSXClosingElement\", node, opts);\n}\nexport function assertJSXElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXElement {\n  assert(\"JSXElement\", node, opts);\n}\nexport function assertJSXEmptyExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXEmptyExpression {\n  assert(\"JSXEmptyExpression\", node, opts);\n}\nexport function assertJSXExpressionContainer(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXExpressionContainer {\n  assert(\"JSXExpressionContainer\", node, opts);\n}\nexport function assertJSXSpreadChild(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXSpreadChild {\n  assert(\"JSXSpreadChild\", node, opts);\n}\nexport function assertJSXIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXIdentifier {\n  assert(\"JSXIdentifier\", node, opts);\n}\nexport function assertJSXMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXMemberExpression {\n  assert(\"JSXMemberExpression\", node, opts);\n}\nexport function assertJSXNamespacedName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXNamespacedName {\n  assert(\"JSXNamespacedName\", node, opts);\n}\nexport function assertJSXOpeningElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXOpeningElement {\n  assert(\"JSXOpeningElement\", node, opts);\n}\nexport function assertJSXSpreadAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXSpreadAttribute {\n  assert(\"JSXSpreadAttribute\", node, opts);\n}\nexport function assertJSXText(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXText {\n  assert(\"JSXText\", node, opts);\n}\nexport function assertJSXFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXFragment {\n  assert(\"JSXFragment\", node, opts);\n}\nexport function assertJSXOpeningFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXOpeningFragment {\n  assert(\"JSXOpeningFragment\", node, opts);\n}\nexport function assertJSXClosingFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXClosingFragment {\n  assert(\"JSXClosingFragment\", node, opts);\n}\nexport function assertNoop(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Noop {\n  assert(\"Noop\", node, opts);\n}\nexport function assertPlaceholder(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Placeholder {\n  assert(\"Placeholder\", node, opts);\n}\nexport function assertV8IntrinsicIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.V8IntrinsicIdentifier {\n  assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nexport function assertArgumentPlaceholder(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArgumentPlaceholder {\n  assert(\"ArgumentPlaceholder\", node, opts);\n}\nexport function assertBindExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BindExpression {\n  assert(\"BindExpression\", node, opts);\n}\nexport function assertImportAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportAttribute {\n  assert(\"ImportAttribute\", node, opts);\n}\nexport function assertDecorator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Decorator {\n  assert(\"Decorator\", node, opts);\n}\nexport function assertDoExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DoExpression {\n  assert(\"DoExpression\", node, opts);\n}\nexport function assertExportDefaultSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDefaultSpecifier {\n  assert(\"ExportDefaultSpecifier\", node, opts);\n}\nexport function assertRecordExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RecordExpression {\n  assert(\"RecordExpression\", node, opts);\n}\nexport function assertTupleExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TupleExpression {\n  assert(\"TupleExpression\", node, opts);\n}\nexport function assertDecimalLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DecimalLiteral {\n  assert(\"DecimalLiteral\", node, opts);\n}\nexport function assertModuleExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ModuleExpression {\n  assert(\"ModuleExpression\", node, opts);\n}\nexport function assertTopicReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TopicReference {\n  assert(\"TopicReference\", node, opts);\n}\nexport function assertPipelineTopicExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelineTopicExpression {\n  assert(\"PipelineTopicExpression\", node, opts);\n}\nexport function assertPipelineBareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelineBareFunction {\n  assert(\"PipelineBareFunction\", node, opts);\n}\nexport function assertPipelinePrimaryTopicReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelinePrimaryTopicReference {\n  assert(\"PipelinePrimaryTopicReference\", node, opts);\n}\nexport function assertTSParameterProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSParameterProperty {\n  assert(\"TSParameterProperty\", node, opts);\n}\nexport function assertTSDeclareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSDeclareFunction {\n  assert(\"TSDeclareFunction\", node, opts);\n}\nexport function assertTSDeclareMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSDeclareMethod {\n  assert(\"TSDeclareMethod\", node, opts);\n}\nexport function assertTSQualifiedName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSQualifiedName {\n  assert(\"TSQualifiedName\", node, opts);\n}\nexport function assertTSCallSignatureDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSCallSignatureDeclaration {\n  assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nexport function assertTSConstructSignatureDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConstructSignatureDeclaration {\n  assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nexport function assertTSPropertySignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSPropertySignature {\n  assert(\"TSPropertySignature\", node, opts);\n}\nexport function assertTSMethodSignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSMethodSignature {\n  assert(\"TSMethodSignature\", node, opts);\n}\nexport function assertTSIndexSignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIndexSignature {\n  assert(\"TSIndexSignature\", node, opts);\n}\nexport function assertTSAnyKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSAnyKeyword {\n  assert(\"TSAnyKeyword\", node, opts);\n}\nexport function assertTSBooleanKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBooleanKeyword {\n  assert(\"TSBooleanKeyword\", node, opts);\n}\nexport function assertTSBigIntKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBigIntKeyword {\n  assert(\"TSBigIntKeyword\", node, opts);\n}\nexport function assertTSIntrinsicKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIntrinsicKeyword {\n  assert(\"TSIntrinsicKeyword\", node, opts);\n}\nexport function assertTSNeverKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNeverKeyword {\n  assert(\"TSNeverKeyword\", node, opts);\n}\nexport function assertTSNullKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNullKeyword {\n  assert(\"TSNullKeyword\", node, opts);\n}\nexport function assertTSNumberKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNumberKeyword {\n  assert(\"TSNumberKeyword\", node, opts);\n}\nexport function assertTSObjectKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSObjectKeyword {\n  assert(\"TSObjectKeyword\", node, opts);\n}\nexport function assertTSStringKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSStringKeyword {\n  assert(\"TSStringKeyword\", node, opts);\n}\nexport function assertTSSymbolKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSSymbolKeyword {\n  assert(\"TSSymbolKeyword\", node, opts);\n}\nexport function assertTSUndefinedKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUndefinedKeyword {\n  assert(\"TSUndefinedKeyword\", node, opts);\n}\nexport function assertTSUnknownKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUnknownKeyword {\n  assert(\"TSUnknownKeyword\", node, opts);\n}\nexport function assertTSVoidKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSVoidKeyword {\n  assert(\"TSVoidKeyword\", node, opts);\n}\nexport function assertTSThisType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSThisType {\n  assert(\"TSThisType\", node, opts);\n}\nexport function assertTSFunctionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSFunctionType {\n  assert(\"TSFunctionType\", node, opts);\n}\nexport function assertTSConstructorType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConstructorType {\n  assert(\"TSConstructorType\", node, opts);\n}\nexport function assertTSTypeReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeReference {\n  assert(\"TSTypeReference\", node, opts);\n}\nexport function assertTSTypePredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypePredicate {\n  assert(\"TSTypePredicate\", node, opts);\n}\nexport function assertTSTypeQuery(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeQuery {\n  assert(\"TSTypeQuery\", node, opts);\n}\nexport function assertTSTypeLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeLiteral {\n  assert(\"TSTypeLiteral\", node, opts);\n}\nexport function assertTSArrayType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSArrayType {\n  assert(\"TSArrayType\", node, opts);\n}\nexport function assertTSTupleType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTupleType {\n  assert(\"TSTupleType\", node, opts);\n}\nexport function assertTSOptionalType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSOptionalType {\n  assert(\"TSOptionalType\", node, opts);\n}\nexport function assertTSRestType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSRestType {\n  assert(\"TSRestType\", node, opts);\n}\nexport function assertTSNamedTupleMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNamedTupleMember {\n  assert(\"TSNamedTupleMember\", node, opts);\n}\nexport function assertTSUnionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUnionType {\n  assert(\"TSUnionType\", node, opts);\n}\nexport function assertTSIntersectionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIntersectionType {\n  assert(\"TSIntersectionType\", node, opts);\n}\nexport function assertTSConditionalType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConditionalType {\n  assert(\"TSConditionalType\", node, opts);\n}\nexport function assertTSInferType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInferType {\n  assert(\"TSInferType\", node, opts);\n}\nexport function assertTSParenthesizedType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSParenthesizedType {\n  assert(\"TSParenthesizedType\", node, opts);\n}\nexport function assertTSTypeOperator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeOperator {\n  assert(\"TSTypeOperator\", node, opts);\n}\nexport function assertTSIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIndexedAccessType {\n  assert(\"TSIndexedAccessType\", node, opts);\n}\nexport function assertTSMappedType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSMappedType {\n  assert(\"TSMappedType\", node, opts);\n}\nexport function assertTSLiteralType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSLiteralType {\n  assert(\"TSLiteralType\", node, opts);\n}\nexport function assertTSExpressionWithTypeArguments(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExpressionWithTypeArguments {\n  assert(\"TSExpressionWithTypeArguments\", node, opts);\n}\nexport function assertTSInterfaceDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInterfaceDeclaration {\n  assert(\"TSInterfaceDeclaration\", node, opts);\n}\nexport function assertTSInterfaceBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInterfaceBody {\n  assert(\"TSInterfaceBody\", node, opts);\n}\nexport function assertTSTypeAliasDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAliasDeclaration {\n  assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nexport function assertTSInstantiationExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInstantiationExpression {\n  assert(\"TSInstantiationExpression\", node, opts);\n}\nexport function assertTSAsExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSAsExpression {\n  assert(\"TSAsExpression\", node, opts);\n}\nexport function assertTSSatisfiesExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSSatisfiesExpression {\n  assert(\"TSSatisfiesExpression\", node, opts);\n}\nexport function assertTSTypeAssertion(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAssertion {\n  assert(\"TSTypeAssertion\", node, opts);\n}\nexport function assertTSEnumBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumBody {\n  assert(\"TSEnumBody\", node, opts);\n}\nexport function assertTSEnumDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumDeclaration {\n  assert(\"TSEnumDeclaration\", node, opts);\n}\nexport function assertTSEnumMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumMember {\n  assert(\"TSEnumMember\", node, opts);\n}\nexport function assertTSModuleDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSModuleDeclaration {\n  assert(\"TSModuleDeclaration\", node, opts);\n}\nexport function assertTSModuleBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSModuleBlock {\n  assert(\"TSModuleBlock\", node, opts);\n}\nexport function assertTSImportType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSImportType {\n  assert(\"TSImportType\", node, opts);\n}\nexport function assertTSImportEqualsDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSImportEqualsDeclaration {\n  assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nexport function assertTSExternalModuleReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExternalModuleReference {\n  assert(\"TSExternalModuleReference\", node, opts);\n}\nexport function assertTSNonNullExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNonNullExpression {\n  assert(\"TSNonNullExpression\", node, opts);\n}\nexport function assertTSExportAssignment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExportAssignment {\n  assert(\"TSExportAssignment\", node, opts);\n}\nexport function assertTSNamespaceExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNamespaceExportDeclaration {\n  assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nexport function assertTSTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAnnotation {\n  assert(\"TSTypeAnnotation\", node, opts);\n}\nexport function assertTSTypeParameterInstantiation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameterInstantiation {\n  assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nexport function assertTSTypeParameterDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameterDeclaration {\n  assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nexport function assertTSTypeParameter(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameter {\n  assert(\"TSTypeParameter\", node, opts);\n}\nexport function assertStandardized(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Standardized {\n  assert(\"Standardized\", node, opts);\n}\nexport function assertExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Expression {\n  assert(\"Expression\", node, opts);\n}\nexport function assertBinary(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Binary {\n  assert(\"Binary\", node, opts);\n}\nexport function assertScopable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Scopable {\n  assert(\"Scopable\", node, opts);\n}\nexport function assertBlockParent(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BlockParent {\n  assert(\"BlockParent\", node, opts);\n}\nexport function assertBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Block {\n  assert(\"Block\", node, opts);\n}\nexport function assertStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Statement {\n  assert(\"Statement\", node, opts);\n}\nexport function assertTerminatorless(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Terminatorless {\n  assert(\"Terminatorless\", node, opts);\n}\nexport function assertCompletionStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CompletionStatement {\n  assert(\"CompletionStatement\", node, opts);\n}\nexport function assertConditional(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Conditional {\n  assert(\"Conditional\", node, opts);\n}\nexport function assertLoop(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Loop {\n  assert(\"Loop\", node, opts);\n}\nexport function assertWhile(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.While {\n  assert(\"While\", node, opts);\n}\nexport function assertExpressionWrapper(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExpressionWrapper {\n  assert(\"ExpressionWrapper\", node, opts);\n}\nexport function assertFor(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.For {\n  assert(\"For\", node, opts);\n}\nexport function assertForXStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForXStatement {\n  assert(\"ForXStatement\", node, opts);\n}\nexport function assertFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Function {\n  assert(\"Function\", node, opts);\n}\nexport function assertFunctionParent(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionParent {\n  assert(\"FunctionParent\", node, opts);\n}\nexport function assertPureish(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Pureish {\n  assert(\"Pureish\", node, opts);\n}\nexport function assertDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Declaration {\n  assert(\"Declaration\", node, opts);\n}\nexport function assertPatternLike(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PatternLike {\n  assert(\"PatternLike\", node, opts);\n}\nexport function assertLVal(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LVal {\n  assert(\"LVal\", node, opts);\n}\nexport function assertTSEntityName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEntityName {\n  assert(\"TSEntityName\", node, opts);\n}\nexport function assertLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Literal {\n  assert(\"Literal\", node, opts);\n}\nexport function assertImmutable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Immutable {\n  assert(\"Immutable\", node, opts);\n}\nexport function assertUserWhitespacable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UserWhitespacable {\n  assert(\"UserWhitespacable\", node, opts);\n}\nexport function assertMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Method {\n  assert(\"Method\", node, opts);\n}\nexport function assertObjectMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectMember {\n  assert(\"ObjectMember\", node, opts);\n}\nexport function assertProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Property {\n  assert(\"Property\", node, opts);\n}\nexport function assertUnaryLike(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnaryLike {\n  assert(\"UnaryLike\", node, opts);\n}\nexport function assertPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Pattern {\n  assert(\"Pattern\", node, opts);\n}\nexport function assertClass(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Class {\n  assert(\"Class\", node, opts);\n}\nexport function assertImportOrExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportOrExportDeclaration {\n  assert(\"ImportOrExportDeclaration\", node, opts);\n}\nexport function assertExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDeclaration {\n  assert(\"ExportDeclaration\", node, opts);\n}\nexport function assertModuleSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ModuleSpecifier {\n  assert(\"ModuleSpecifier\", node, opts);\n}\nexport function assertAccessor(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Accessor {\n  assert(\"Accessor\", node, opts);\n}\nexport function assertPrivate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Private {\n  assert(\"Private\", node, opts);\n}\nexport function assertFlow(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Flow {\n  assert(\"Flow\", node, opts);\n}\nexport function assertFlowType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowType {\n  assert(\"FlowType\", node, opts);\n}\nexport function assertFlowBaseAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowBaseAnnotation {\n  assert(\"FlowBaseAnnotation\", node, opts);\n}\nexport function assertFlowDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowDeclaration {\n  assert(\"FlowDeclaration\", node, opts);\n}\nexport function assertFlowPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowPredicate {\n  assert(\"FlowPredicate\", node, opts);\n}\nexport function assertEnumBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBody {\n  assert(\"EnumBody\", node, opts);\n}\nexport function assertEnumMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumMember {\n  assert(\"EnumMember\", node, opts);\n}\nexport function assertJSX(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSX {\n  assert(\"JSX\", node, opts);\n}\nexport function assertMiscellaneous(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Miscellaneous {\n  assert(\"Miscellaneous\", node, opts);\n}\nexport function assertTypeScript(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeScript {\n  assert(\"TypeScript\", node, opts);\n}\nexport function assertTSTypeElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeElement {\n  assert(\"TSTypeElement\", node, opts);\n}\nexport function assertTSType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSType {\n  assert(\"TSType\", node, opts);\n}\nexport function assertTSBaseType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBaseType {\n  assert(\"TSBaseType\", node, opts);\n}\nexport function assertNumberLiteral(node: any, opts: any): void {\n  deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n  assert(\"NumberLiteral\", node, opts);\n}\nexport function assertRegexLiteral(node: any, opts: any): void {\n  deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n  assert(\"RegexLiteral\", node, opts);\n}\nexport function assertRestProperty(node: any, opts: any): void {\n  deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n  assert(\"RestProperty\", node, opts);\n}\nexport function assertSpreadProperty(node: any, opts: any): void {\n  deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n  assert(\"SpreadProperty\", node, opts);\n}\nexport function assertModuleDeclaration(node: any, opts: any): void {\n  deprecationWarning(\n    \"assertModuleDeclaration\",\n    \"assertImportOrExportDeclaration\",\n  );\n  assert(\"ModuleDeclaration\", node, opts);\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/ast-types/generated/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/ast-types/generated/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/ast-types/generated/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":[],"sources":["../../../src/ast-types/generated/index.ts"],"sourcesContent":["// NOTE: This file is autogenerated. Do not modify.\n// See packages/babel-types/scripts/generators/ast-types.js for script used.\n\ninterface BaseComment {\n  value: string;\n  start?: number;\n  end?: number;\n  loc?: SourceLocation;\n  // generator will skip the comment if ignore is true\n  ignore?: boolean;\n  type: \"CommentBlock\" | \"CommentLine\";\n}\n\ninterface Position {\n  line: number;\n  column: number;\n  index: number;\n}\n\nexport interface CommentBlock extends BaseComment {\n  type: \"CommentBlock\";\n}\n\nexport interface CommentLine extends BaseComment {\n  type: \"CommentLine\";\n}\n\nexport type Comment = CommentBlock | CommentLine;\n\nexport interface SourceLocation {\n  start: Position;\n  end: Position;\n  filename: string;\n  identifierName: string | undefined | null;\n}\n\ninterface BaseNode {\n  type: Node[\"type\"];\n  leadingComments?: Comment[] | null;\n  innerComments?: Comment[] | null;\n  trailingComments?: Comment[] | null;\n  start?: number | null;\n  end?: number | null;\n  loc?: SourceLocation | null;\n  range?: [number, number];\n  extra?: Record<string, unknown>;\n}\n\nexport type CommentTypeShorthand = \"leading\" | \"inner\" | \"trailing\";\n\nexport type Node =\n  | AnyTypeAnnotation\n  | ArgumentPlaceholder\n  | ArrayExpression\n  | ArrayPattern\n  | ArrayTypeAnnotation\n  | ArrowFunctionExpression\n  | AssignmentExpression\n  | AssignmentPattern\n  | AwaitExpression\n  | BigIntLiteral\n  | BinaryExpression\n  | BindExpression\n  | BlockStatement\n  | BooleanLiteral\n  | BooleanLiteralTypeAnnotation\n  | BooleanTypeAnnotation\n  | BreakStatement\n  | CallExpression\n  | CatchClause\n  | ClassAccessorProperty\n  | ClassBody\n  | ClassDeclaration\n  | ClassExpression\n  | ClassImplements\n  | ClassMethod\n  | ClassPrivateMethod\n  | ClassPrivateProperty\n  | ClassProperty\n  | ConditionalExpression\n  | ContinueStatement\n  | DebuggerStatement\n  | DecimalLiteral\n  | DeclareClass\n  | DeclareExportAllDeclaration\n  | DeclareExportDeclaration\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareOpaqueType\n  | DeclareTypeAlias\n  | DeclareVariable\n  | DeclaredPredicate\n  | Decorator\n  | Directive\n  | DirectiveLiteral\n  | DoExpression\n  | DoWhileStatement\n  | EmptyStatement\n  | EmptyTypeAnnotation\n  | EnumBooleanBody\n  | EnumBooleanMember\n  | EnumDeclaration\n  | EnumDefaultedMember\n  | EnumNumberBody\n  | EnumNumberMember\n  | EnumStringBody\n  | EnumStringMember\n  | EnumSymbolBody\n  | ExistsTypeAnnotation\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportDefaultSpecifier\n  | ExportNamedDeclaration\n  | ExportNamespaceSpecifier\n  | ExportSpecifier\n  | ExpressionStatement\n  | File\n  | ForInStatement\n  | ForOfStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | FunctionTypeAnnotation\n  | FunctionTypeParam\n  | GenericTypeAnnotation\n  | Identifier\n  | IfStatement\n  | Import\n  | ImportAttribute\n  | ImportDeclaration\n  | ImportDefaultSpecifier\n  | ImportExpression\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | IndexedAccessType\n  | InferredPredicate\n  | InterfaceDeclaration\n  | InterfaceExtends\n  | InterfaceTypeAnnotation\n  | InterpreterDirective\n  | IntersectionTypeAnnotation\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXClosingFragment\n  | JSXElement\n  | JSXEmptyExpression\n  | JSXExpressionContainer\n  | JSXFragment\n  | JSXIdentifier\n  | JSXMemberExpression\n  | JSXNamespacedName\n  | JSXOpeningElement\n  | JSXOpeningFragment\n  | JSXSpreadAttribute\n  | JSXSpreadChild\n  | JSXText\n  | LabeledStatement\n  | LogicalExpression\n  | MemberExpression\n  | MetaProperty\n  | MixedTypeAnnotation\n  | ModuleExpression\n  | NewExpression\n  | Noop\n  | NullLiteral\n  | NullLiteralTypeAnnotation\n  | NullableTypeAnnotation\n  | NumberLiteral\n  | NumberLiteralTypeAnnotation\n  | NumberTypeAnnotation\n  | NumericLiteral\n  | ObjectExpression\n  | ObjectMethod\n  | ObjectPattern\n  | ObjectProperty\n  | ObjectTypeAnnotation\n  | ObjectTypeCallProperty\n  | ObjectTypeIndexer\n  | ObjectTypeInternalSlot\n  | ObjectTypeProperty\n  | ObjectTypeSpreadProperty\n  | OpaqueType\n  | OptionalCallExpression\n  | OptionalIndexedAccessType\n  | OptionalMemberExpression\n  | ParenthesizedExpression\n  | PipelineBareFunction\n  | PipelinePrimaryTopicReference\n  | PipelineTopicExpression\n  | Placeholder\n  | PrivateName\n  | Program\n  | QualifiedTypeIdentifier\n  | RecordExpression\n  | RegExpLiteral\n  | RegexLiteral\n  | RestElement\n  | RestProperty\n  | ReturnStatement\n  | SequenceExpression\n  | SpreadElement\n  | SpreadProperty\n  | StaticBlock\n  | StringLiteral\n  | StringLiteralTypeAnnotation\n  | StringTypeAnnotation\n  | Super\n  | SwitchCase\n  | SwitchStatement\n  | SymbolTypeAnnotation\n  | TSAnyKeyword\n  | TSArrayType\n  | TSAsExpression\n  | TSBigIntKeyword\n  | TSBooleanKeyword\n  | TSCallSignatureDeclaration\n  | TSConditionalType\n  | TSConstructSignatureDeclaration\n  | TSConstructorType\n  | TSDeclareFunction\n  | TSDeclareMethod\n  | TSEnumDeclaration\n  | TSEnumMember\n  | TSExportAssignment\n  | TSExpressionWithTypeArguments\n  | TSExternalModuleReference\n  | TSFunctionType\n  | TSImportEqualsDeclaration\n  | TSImportType\n  | TSIndexSignature\n  | TSIndexedAccessType\n  | TSInferType\n  | TSInstantiationExpression\n  | TSInterfaceBody\n  | TSInterfaceDeclaration\n  | TSIntersectionType\n  | TSIntrinsicKeyword\n  | TSLiteralType\n  | TSMappedType\n  | TSMethodSignature\n  | TSModuleBlock\n  | TSModuleDeclaration\n  | TSNamedTupleMember\n  | TSNamespaceExportDeclaration\n  | TSNeverKeyword\n  | TSNonNullExpression\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSOptionalType\n  | TSParameterProperty\n  | TSParenthesizedType\n  | TSPropertySignature\n  | TSQualifiedName\n  | TSRestType\n  | TSSatisfiesExpression\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSThisType\n  | TSTupleType\n  | TSTypeAliasDeclaration\n  | TSTypeAnnotation\n  | TSTypeAssertion\n  | TSTypeLiteral\n  | TSTypeOperator\n  | TSTypeParameter\n  | TSTypeParameterDeclaration\n  | TSTypeParameterInstantiation\n  | TSTypePredicate\n  | TSTypeQuery\n  | TSTypeReference\n  | TSUndefinedKeyword\n  | TSUnionType\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TaggedTemplateExpression\n  | TemplateElement\n  | TemplateLiteral\n  | ThisExpression\n  | ThisTypeAnnotation\n  | ThrowStatement\n  | TopicReference\n  | TryStatement\n  | TupleExpression\n  | TupleTypeAnnotation\n  | TypeAlias\n  | TypeAnnotation\n  | TypeCastExpression\n  | TypeParameter\n  | TypeParameterDeclaration\n  | TypeParameterInstantiation\n  | TypeofTypeAnnotation\n  | UnaryExpression\n  | UnionTypeAnnotation\n  | UpdateExpression\n  | V8IntrinsicIdentifier\n  | VariableDeclaration\n  | VariableDeclarator\n  | Variance\n  | VoidTypeAnnotation\n  | WhileStatement\n  | WithStatement\n  | YieldExpression;\n\nexport interface ArrayExpression extends BaseNode {\n  type: \"ArrayExpression\";\n  elements: Array<null | Expression | SpreadElement>;\n}\n\nexport interface AssignmentExpression extends BaseNode {\n  type: \"AssignmentExpression\";\n  operator: string;\n  left: LVal | OptionalMemberExpression;\n  right: Expression;\n}\n\nexport interface BinaryExpression extends BaseNode {\n  type: \"BinaryExpression\";\n  operator:\n    | \"+\"\n    | \"-\"\n    | \"/\"\n    | \"%\"\n    | \"*\"\n    | \"**\"\n    | \"&\"\n    | \"|\"\n    | \">>\"\n    | \">>>\"\n    | \"<<\"\n    | \"^\"\n    | \"==\"\n    | \"===\"\n    | \"!=\"\n    | \"!==\"\n    | \"in\"\n    | \"instanceof\"\n    | \">\"\n    | \"<\"\n    | \">=\"\n    | \"<=\"\n    | \"|>\";\n  left: Expression | PrivateName;\n  right: Expression;\n}\n\nexport interface InterpreterDirective extends BaseNode {\n  type: \"InterpreterDirective\";\n  value: string;\n}\n\nexport interface Directive extends BaseNode {\n  type: \"Directive\";\n  value: DirectiveLiteral;\n}\n\nexport interface DirectiveLiteral extends BaseNode {\n  type: \"DirectiveLiteral\";\n  value: string;\n}\n\nexport interface BlockStatement extends BaseNode {\n  type: \"BlockStatement\";\n  body: Array<Statement>;\n  directives: Array<Directive>;\n}\n\nexport interface BreakStatement extends BaseNode {\n  type: \"BreakStatement\";\n  label?: Identifier | null;\n}\n\nexport interface CallExpression extends BaseNode {\n  type: \"CallExpression\";\n  callee: Expression | Super | V8IntrinsicIdentifier;\n  arguments: Array<Expression | SpreadElement | ArgumentPlaceholder>;\n  optional?: boolean | null;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface CatchClause extends BaseNode {\n  type: \"CatchClause\";\n  param?: Identifier | ArrayPattern | ObjectPattern | null;\n  body: BlockStatement;\n}\n\nexport interface ConditionalExpression extends BaseNode {\n  type: \"ConditionalExpression\";\n  test: Expression;\n  consequent: Expression;\n  alternate: Expression;\n}\n\nexport interface ContinueStatement extends BaseNode {\n  type: \"ContinueStatement\";\n  label?: Identifier | null;\n}\n\nexport interface DebuggerStatement extends BaseNode {\n  type: \"DebuggerStatement\";\n}\n\nexport interface DoWhileStatement extends BaseNode {\n  type: \"DoWhileStatement\";\n  test: Expression;\n  body: Statement;\n}\n\nexport interface EmptyStatement extends BaseNode {\n  type: \"EmptyStatement\";\n}\n\nexport interface ExpressionStatement extends BaseNode {\n  type: \"ExpressionStatement\";\n  expression: Expression;\n}\n\nexport interface File extends BaseNode {\n  type: \"File\";\n  program: Program;\n  comments?: Array<CommentBlock | CommentLine> | null;\n  tokens?: Array<any> | null;\n}\n\nexport interface ForInStatement extends BaseNode {\n  type: \"ForInStatement\";\n  left: VariableDeclaration | LVal;\n  right: Expression;\n  body: Statement;\n}\n\nexport interface ForStatement extends BaseNode {\n  type: \"ForStatement\";\n  init?: VariableDeclaration | Expression | null;\n  test?: Expression | null;\n  update?: Expression | null;\n  body: Statement;\n}\n\nexport interface FunctionDeclaration extends BaseNode {\n  type: \"FunctionDeclaration\";\n  id?: Identifier | null;\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement;\n  generator: boolean;\n  async: boolean;\n  declare?: boolean | null;\n  predicate?: DeclaredPredicate | InferredPredicate | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface FunctionExpression extends BaseNode {\n  type: \"FunctionExpression\";\n  id?: Identifier | null;\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement;\n  generator: boolean;\n  async: boolean;\n  predicate?: DeclaredPredicate | InferredPredicate | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface Identifier extends BaseNode {\n  type: \"Identifier\";\n  name: string;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface IfStatement extends BaseNode {\n  type: \"IfStatement\";\n  test: Expression;\n  consequent: Statement;\n  alternate?: Statement | null;\n}\n\nexport interface LabeledStatement extends BaseNode {\n  type: \"LabeledStatement\";\n  label: Identifier;\n  body: Statement;\n}\n\nexport interface StringLiteral extends BaseNode {\n  type: \"StringLiteral\";\n  value: string;\n}\n\nexport interface NumericLiteral extends BaseNode {\n  type: \"NumericLiteral\";\n  value: number;\n}\n\n/**\n * @deprecated Use `NumericLiteral`\n */\nexport interface NumberLiteral extends BaseNode {\n  type: \"NumberLiteral\";\n  value: number;\n}\n\nexport interface NullLiteral extends BaseNode {\n  type: \"NullLiteral\";\n}\n\nexport interface BooleanLiteral extends BaseNode {\n  type: \"BooleanLiteral\";\n  value: boolean;\n}\n\nexport interface RegExpLiteral extends BaseNode {\n  type: \"RegExpLiteral\";\n  pattern: string;\n  flags: string;\n}\n\n/**\n * @deprecated Use `RegExpLiteral`\n */\nexport interface RegexLiteral extends BaseNode {\n  type: \"RegexLiteral\";\n  pattern: string;\n  flags: string;\n}\n\nexport interface LogicalExpression extends BaseNode {\n  type: \"LogicalExpression\";\n  operator: \"||\" | \"&&\" | \"??\";\n  left: Expression;\n  right: Expression;\n}\n\nexport interface MemberExpression extends BaseNode {\n  type: \"MemberExpression\";\n  object: Expression | Super;\n  property: Expression | Identifier | PrivateName;\n  computed: boolean;\n  optional?: boolean | null;\n}\n\nexport interface NewExpression extends BaseNode {\n  type: \"NewExpression\";\n  callee: Expression | Super | V8IntrinsicIdentifier;\n  arguments: Array<Expression | SpreadElement | ArgumentPlaceholder>;\n  optional?: boolean | null;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface Program extends BaseNode {\n  type: \"Program\";\n  body: Array<Statement>;\n  directives: Array<Directive>;\n  sourceType: \"script\" | \"module\";\n  interpreter?: InterpreterDirective | null;\n}\n\nexport interface ObjectExpression extends BaseNode {\n  type: \"ObjectExpression\";\n  properties: Array<ObjectMethod | ObjectProperty | SpreadElement>;\n}\n\nexport interface ObjectMethod extends BaseNode {\n  type: \"ObjectMethod\";\n  kind: \"method\" | \"get\" | \"set\";\n  key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral;\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement;\n  computed: boolean;\n  generator: boolean;\n  async: boolean;\n  decorators?: Array<Decorator> | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ObjectProperty extends BaseNode {\n  type: \"ObjectProperty\";\n  key:\n    | Expression\n    | Identifier\n    | StringLiteral\n    | NumericLiteral\n    | BigIntLiteral\n    | DecimalLiteral\n    | PrivateName;\n  value: Expression | PatternLike;\n  computed: boolean;\n  shorthand: boolean;\n  decorators?: Array<Decorator> | null;\n}\n\nexport interface RestElement extends BaseNode {\n  type: \"RestElement\";\n  argument: LVal;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\n/**\n * @deprecated Use `RestElement`\n */\nexport interface RestProperty extends BaseNode {\n  type: \"RestProperty\";\n  argument: LVal;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ReturnStatement extends BaseNode {\n  type: \"ReturnStatement\";\n  argument?: Expression | null;\n}\n\nexport interface SequenceExpression extends BaseNode {\n  type: \"SequenceExpression\";\n  expressions: Array<Expression>;\n}\n\nexport interface ParenthesizedExpression extends BaseNode {\n  type: \"ParenthesizedExpression\";\n  expression: Expression;\n}\n\nexport interface SwitchCase extends BaseNode {\n  type: \"SwitchCase\";\n  test?: Expression | null;\n  consequent: Array<Statement>;\n}\n\nexport interface SwitchStatement extends BaseNode {\n  type: \"SwitchStatement\";\n  discriminant: Expression;\n  cases: Array<SwitchCase>;\n}\n\nexport interface ThisExpression extends BaseNode {\n  type: \"ThisExpression\";\n}\n\nexport interface ThrowStatement extends BaseNode {\n  type: \"ThrowStatement\";\n  argument: Expression;\n}\n\nexport interface TryStatement extends BaseNode {\n  type: \"TryStatement\";\n  block: BlockStatement;\n  handler?: CatchClause | null;\n  finalizer?: BlockStatement | null;\n}\n\nexport interface UnaryExpression extends BaseNode {\n  type: \"UnaryExpression\";\n  operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\";\n  argument: Expression;\n  prefix: boolean;\n}\n\nexport interface UpdateExpression extends BaseNode {\n  type: \"UpdateExpression\";\n  operator: \"++\" | \"--\";\n  argument: Expression;\n  prefix: boolean;\n}\n\nexport interface VariableDeclaration extends BaseNode {\n  type: \"VariableDeclaration\";\n  kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\";\n  declarations: Array<VariableDeclarator>;\n  declare?: boolean | null;\n}\n\nexport interface VariableDeclarator extends BaseNode {\n  type: \"VariableDeclarator\";\n  id: LVal;\n  init?: Expression | null;\n  definite?: boolean | null;\n}\n\nexport interface WhileStatement extends BaseNode {\n  type: \"WhileStatement\";\n  test: Expression;\n  body: Statement;\n}\n\nexport interface WithStatement extends BaseNode {\n  type: \"WithStatement\";\n  object: Expression;\n  body: Statement;\n}\n\nexport interface AssignmentPattern extends BaseNode {\n  type: \"AssignmentPattern\";\n  left:\n    | Identifier\n    | ObjectPattern\n    | ArrayPattern\n    | MemberExpression\n    | TSAsExpression\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TSNonNullExpression;\n  right: Expression;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ArrayPattern extends BaseNode {\n  type: \"ArrayPattern\";\n  elements: Array<null | PatternLike | LVal>;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ArrowFunctionExpression extends BaseNode {\n  type: \"ArrowFunctionExpression\";\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement | Expression;\n  async: boolean;\n  expression: boolean;\n  generator?: boolean;\n  predicate?: DeclaredPredicate | InferredPredicate | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ClassBody extends BaseNode {\n  type: \"ClassBody\";\n  body: Array<\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassProperty\n    | ClassPrivateProperty\n    | ClassAccessorProperty\n    | TSDeclareMethod\n    | TSIndexSignature\n    | StaticBlock\n  >;\n}\n\nexport interface ClassExpression extends BaseNode {\n  type: \"ClassExpression\";\n  id?: Identifier | null;\n  superClass?: Expression | null;\n  body: ClassBody;\n  decorators?: Array<Decorator> | null;\n  implements?: Array<TSExpressionWithTypeArguments | ClassImplements> | null;\n  mixins?: InterfaceExtends | null;\n  superTypeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ClassDeclaration extends BaseNode {\n  type: \"ClassDeclaration\";\n  id?: Identifier | null;\n  superClass?: Expression | null;\n  body: ClassBody;\n  decorators?: Array<Decorator> | null;\n  abstract?: boolean | null;\n  declare?: boolean | null;\n  implements?: Array<TSExpressionWithTypeArguments | ClassImplements> | null;\n  mixins?: InterfaceExtends | null;\n  superTypeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ExportAllDeclaration extends BaseNode {\n  type: \"ExportAllDeclaration\";\n  source: StringLiteral;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  attributes?: Array<ImportAttribute> | null;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ExportDefaultDeclaration extends BaseNode {\n  type: \"ExportDefaultDeclaration\";\n  declaration:\n    | TSDeclareFunction\n    | FunctionDeclaration\n    | ClassDeclaration\n    | Expression;\n  exportKind?: \"value\" | null;\n}\n\nexport interface ExportNamedDeclaration extends BaseNode {\n  type: \"ExportNamedDeclaration\";\n  declaration?: Declaration | null;\n  specifiers: Array<\n    ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier\n  >;\n  source?: StringLiteral | null;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  attributes?: Array<ImportAttribute> | null;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ExportSpecifier extends BaseNode {\n  type: \"ExportSpecifier\";\n  local: Identifier;\n  exported: Identifier | StringLiteral;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ForOfStatement extends BaseNode {\n  type: \"ForOfStatement\";\n  left: VariableDeclaration | LVal;\n  right: Expression;\n  body: Statement;\n  await: boolean;\n}\n\nexport interface ImportDeclaration extends BaseNode {\n  type: \"ImportDeclaration\";\n  specifiers: Array<\n    ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier\n  >;\n  source: StringLiteral;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  attributes?: Array<ImportAttribute> | null;\n  importKind?: \"type\" | \"typeof\" | \"value\" | null;\n  module?: boolean | null;\n  phase?: \"source\" | \"defer\" | null;\n}\n\nexport interface ImportDefaultSpecifier extends BaseNode {\n  type: \"ImportDefaultSpecifier\";\n  local: Identifier;\n}\n\nexport interface ImportNamespaceSpecifier extends BaseNode {\n  type: \"ImportNamespaceSpecifier\";\n  local: Identifier;\n}\n\nexport interface ImportSpecifier extends BaseNode {\n  type: \"ImportSpecifier\";\n  local: Identifier;\n  imported: Identifier | StringLiteral;\n  importKind?: \"type\" | \"typeof\" | \"value\" | null;\n}\n\nexport interface ImportExpression extends BaseNode {\n  type: \"ImportExpression\";\n  source: Expression;\n  options?: Expression | null;\n  phase?: \"source\" | \"defer\" | null;\n}\n\nexport interface MetaProperty extends BaseNode {\n  type: \"MetaProperty\";\n  meta: Identifier;\n  property: Identifier;\n}\n\nexport interface ClassMethod extends BaseNode {\n  type: \"ClassMethod\";\n  kind: \"get\" | \"set\" | \"method\" | \"constructor\";\n  key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n  params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;\n  body: BlockStatement;\n  computed: boolean;\n  static: boolean;\n  generator: boolean;\n  async: boolean;\n  abstract?: boolean | null;\n  access?: \"public\" | \"private\" | \"protected\" | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  override?: boolean;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ObjectPattern extends BaseNode {\n  type: \"ObjectPattern\";\n  properties: Array<RestElement | ObjectProperty>;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface SpreadElement extends BaseNode {\n  type: \"SpreadElement\";\n  argument: Expression;\n}\n\n/**\n * @deprecated Use `SpreadElement`\n */\nexport interface SpreadProperty extends BaseNode {\n  type: \"SpreadProperty\";\n  argument: Expression;\n}\n\nexport interface Super extends BaseNode {\n  type: \"Super\";\n}\n\nexport interface TaggedTemplateExpression extends BaseNode {\n  type: \"TaggedTemplateExpression\";\n  tag: Expression;\n  quasi: TemplateLiteral;\n  typeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n}\n\nexport interface TemplateElement extends BaseNode {\n  type: \"TemplateElement\";\n  value: { raw: string; cooked?: string };\n  tail: boolean;\n}\n\nexport interface TemplateLiteral extends BaseNode {\n  type: \"TemplateLiteral\";\n  quasis: Array<TemplateElement>;\n  expressions: Array<Expression | TSType>;\n}\n\nexport interface YieldExpression extends BaseNode {\n  type: \"YieldExpression\";\n  argument?: Expression | null;\n  delegate: boolean;\n}\n\nexport interface AwaitExpression extends BaseNode {\n  type: \"AwaitExpression\";\n  argument: Expression;\n}\n\nexport interface Import extends BaseNode {\n  type: \"Import\";\n}\n\nexport interface BigIntLiteral extends BaseNode {\n  type: \"BigIntLiteral\";\n  value: string;\n}\n\nexport interface ExportNamespaceSpecifier extends BaseNode {\n  type: \"ExportNamespaceSpecifier\";\n  exported: Identifier;\n}\n\nexport interface OptionalMemberExpression extends BaseNode {\n  type: \"OptionalMemberExpression\";\n  object: Expression;\n  property: Expression | Identifier;\n  computed: boolean;\n  optional: boolean;\n}\n\nexport interface OptionalCallExpression extends BaseNode {\n  type: \"OptionalCallExpression\";\n  callee: Expression;\n  arguments: Array<Expression | SpreadElement | ArgumentPlaceholder>;\n  optional: boolean;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface ClassProperty extends BaseNode {\n  type: \"ClassProperty\";\n  key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n  value?: Expression | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  decorators?: Array<Decorator> | null;\n  computed: boolean;\n  static: boolean;\n  abstract?: boolean | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  declare?: boolean | null;\n  definite?: boolean | null;\n  optional?: boolean | null;\n  override?: boolean;\n  readonly?: boolean | null;\n  variance?: Variance | null;\n}\n\nexport interface ClassAccessorProperty extends BaseNode {\n  type: \"ClassAccessorProperty\";\n  key:\n    | Identifier\n    | StringLiteral\n    | NumericLiteral\n    | BigIntLiteral\n    | Expression\n    | PrivateName;\n  value?: Expression | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  decorators?: Array<Decorator> | null;\n  computed: boolean;\n  static: boolean;\n  abstract?: boolean | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  declare?: boolean | null;\n  definite?: boolean | null;\n  optional?: boolean | null;\n  override?: boolean;\n  readonly?: boolean | null;\n  variance?: Variance | null;\n}\n\nexport interface ClassPrivateProperty extends BaseNode {\n  type: \"ClassPrivateProperty\";\n  key: PrivateName;\n  value?: Expression | null;\n  decorators?: Array<Decorator> | null;\n  static: boolean;\n  definite?: boolean | null;\n  readonly?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  variance?: Variance | null;\n}\n\nexport interface ClassPrivateMethod extends BaseNode {\n  type: \"ClassPrivateMethod\";\n  kind: \"get\" | \"set\" | \"method\";\n  key: PrivateName;\n  params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;\n  body: BlockStatement;\n  static: boolean;\n  abstract?: boolean | null;\n  access?: \"public\" | \"private\" | \"protected\" | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  async?: boolean;\n  computed?: boolean;\n  decorators?: Array<Decorator> | null;\n  generator?: boolean;\n  optional?: boolean | null;\n  override?: boolean;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface PrivateName extends BaseNode {\n  type: \"PrivateName\";\n  id: Identifier;\n}\n\nexport interface StaticBlock extends BaseNode {\n  type: \"StaticBlock\";\n  body: Array<Statement>;\n}\n\nexport interface AnyTypeAnnotation extends BaseNode {\n  type: \"AnyTypeAnnotation\";\n}\n\nexport interface ArrayTypeAnnotation extends BaseNode {\n  type: \"ArrayTypeAnnotation\";\n  elementType: FlowType;\n}\n\nexport interface BooleanTypeAnnotation extends BaseNode {\n  type: \"BooleanTypeAnnotation\";\n}\n\nexport interface BooleanLiteralTypeAnnotation extends BaseNode {\n  type: \"BooleanLiteralTypeAnnotation\";\n  value: boolean;\n}\n\nexport interface NullLiteralTypeAnnotation extends BaseNode {\n  type: \"NullLiteralTypeAnnotation\";\n}\n\nexport interface ClassImplements extends BaseNode {\n  type: \"ClassImplements\";\n  id: Identifier;\n  typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface DeclareClass extends BaseNode {\n  type: \"DeclareClass\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n  implements?: Array<ClassImplements> | null;\n  mixins?: Array<InterfaceExtends> | null;\n}\n\nexport interface DeclareFunction extends BaseNode {\n  type: \"DeclareFunction\";\n  id: Identifier;\n  predicate?: DeclaredPredicate | null;\n}\n\nexport interface DeclareInterface extends BaseNode {\n  type: \"DeclareInterface\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n}\n\nexport interface DeclareModule extends BaseNode {\n  type: \"DeclareModule\";\n  id: Identifier | StringLiteral;\n  body: BlockStatement;\n  kind?: \"CommonJS\" | \"ES\" | null;\n}\n\nexport interface DeclareModuleExports extends BaseNode {\n  type: \"DeclareModuleExports\";\n  typeAnnotation: TypeAnnotation;\n}\n\nexport interface DeclareTypeAlias extends BaseNode {\n  type: \"DeclareTypeAlias\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  right: FlowType;\n}\n\nexport interface DeclareOpaqueType extends BaseNode {\n  type: \"DeclareOpaqueType\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  supertype?: FlowType | null;\n  impltype?: FlowType | null;\n}\n\nexport interface DeclareVariable extends BaseNode {\n  type: \"DeclareVariable\";\n  id: Identifier;\n}\n\nexport interface DeclareExportDeclaration extends BaseNode {\n  type: \"DeclareExportDeclaration\";\n  declaration?: Flow | null;\n  specifiers?: Array<ExportSpecifier | ExportNamespaceSpecifier> | null;\n  source?: StringLiteral | null;\n  attributes?: Array<ImportAttribute> | null;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  default?: boolean | null;\n}\n\nexport interface DeclareExportAllDeclaration extends BaseNode {\n  type: \"DeclareExportAllDeclaration\";\n  source: StringLiteral;\n  attributes?: Array<ImportAttribute> | null;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface DeclaredPredicate extends BaseNode {\n  type: \"DeclaredPredicate\";\n  value: Flow;\n}\n\nexport interface ExistsTypeAnnotation extends BaseNode {\n  type: \"ExistsTypeAnnotation\";\n}\n\nexport interface FunctionTypeAnnotation extends BaseNode {\n  type: \"FunctionTypeAnnotation\";\n  typeParameters?: TypeParameterDeclaration | null;\n  params: Array<FunctionTypeParam>;\n  rest?: FunctionTypeParam | null;\n  returnType: FlowType;\n  this?: FunctionTypeParam | null;\n}\n\nexport interface FunctionTypeParam extends BaseNode {\n  type: \"FunctionTypeParam\";\n  name?: Identifier | null;\n  typeAnnotation: FlowType;\n  optional?: boolean | null;\n}\n\nexport interface GenericTypeAnnotation extends BaseNode {\n  type: \"GenericTypeAnnotation\";\n  id: Identifier | QualifiedTypeIdentifier;\n  typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface InferredPredicate extends BaseNode {\n  type: \"InferredPredicate\";\n}\n\nexport interface InterfaceExtends extends BaseNode {\n  type: \"InterfaceExtends\";\n  id: Identifier | QualifiedTypeIdentifier;\n  typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface InterfaceDeclaration extends BaseNode {\n  type: \"InterfaceDeclaration\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n}\n\nexport interface InterfaceTypeAnnotation extends BaseNode {\n  type: \"InterfaceTypeAnnotation\";\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n}\n\nexport interface IntersectionTypeAnnotation extends BaseNode {\n  type: \"IntersectionTypeAnnotation\";\n  types: Array<FlowType>;\n}\n\nexport interface MixedTypeAnnotation extends BaseNode {\n  type: \"MixedTypeAnnotation\";\n}\n\nexport interface EmptyTypeAnnotation extends BaseNode {\n  type: \"EmptyTypeAnnotation\";\n}\n\nexport interface NullableTypeAnnotation extends BaseNode {\n  type: \"NullableTypeAnnotation\";\n  typeAnnotation: FlowType;\n}\n\nexport interface NumberLiteralTypeAnnotation extends BaseNode {\n  type: \"NumberLiteralTypeAnnotation\";\n  value: number;\n}\n\nexport interface NumberTypeAnnotation extends BaseNode {\n  type: \"NumberTypeAnnotation\";\n}\n\nexport interface ObjectTypeAnnotation extends BaseNode {\n  type: \"ObjectTypeAnnotation\";\n  properties: Array<ObjectTypeProperty | ObjectTypeSpreadProperty>;\n  indexers?: Array<ObjectTypeIndexer>;\n  callProperties?: Array<ObjectTypeCallProperty>;\n  internalSlots?: Array<ObjectTypeInternalSlot>;\n  exact: boolean;\n  inexact?: boolean | null;\n}\n\nexport interface ObjectTypeInternalSlot extends BaseNode {\n  type: \"ObjectTypeInternalSlot\";\n  id: Identifier;\n  value: FlowType;\n  optional: boolean;\n  static: boolean;\n  method: boolean;\n}\n\nexport interface ObjectTypeCallProperty extends BaseNode {\n  type: \"ObjectTypeCallProperty\";\n  value: FlowType;\n  static: boolean;\n}\n\nexport interface ObjectTypeIndexer extends BaseNode {\n  type: \"ObjectTypeIndexer\";\n  id?: Identifier | null;\n  key: FlowType;\n  value: FlowType;\n  variance?: Variance | null;\n  static: boolean;\n}\n\nexport interface ObjectTypeProperty extends BaseNode {\n  type: \"ObjectTypeProperty\";\n  key: Identifier | StringLiteral;\n  value: FlowType;\n  variance?: Variance | null;\n  kind: \"init\" | \"get\" | \"set\";\n  method: boolean;\n  optional: boolean;\n  proto: boolean;\n  static: boolean;\n}\n\nexport interface ObjectTypeSpreadProperty extends BaseNode {\n  type: \"ObjectTypeSpreadProperty\";\n  argument: FlowType;\n}\n\nexport interface OpaqueType extends BaseNode {\n  type: \"OpaqueType\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  supertype?: FlowType | null;\n  impltype: FlowType;\n}\n\nexport interface QualifiedTypeIdentifier extends BaseNode {\n  type: \"QualifiedTypeIdentifier\";\n  id: Identifier;\n  qualification: Identifier | QualifiedTypeIdentifier;\n}\n\nexport interface StringLiteralTypeAnnotation extends BaseNode {\n  type: \"StringLiteralTypeAnnotation\";\n  value: string;\n}\n\nexport interface StringTypeAnnotation extends BaseNode {\n  type: \"StringTypeAnnotation\";\n}\n\nexport interface SymbolTypeAnnotation extends BaseNode {\n  type: \"SymbolTypeAnnotation\";\n}\n\nexport interface ThisTypeAnnotation extends BaseNode {\n  type: \"ThisTypeAnnotation\";\n}\n\nexport interface TupleTypeAnnotation extends BaseNode {\n  type: \"TupleTypeAnnotation\";\n  types: Array<FlowType>;\n}\n\nexport interface TypeofTypeAnnotation extends BaseNode {\n  type: \"TypeofTypeAnnotation\";\n  argument: FlowType;\n}\n\nexport interface TypeAlias extends BaseNode {\n  type: \"TypeAlias\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  right: FlowType;\n}\n\nexport interface TypeAnnotation extends BaseNode {\n  type: \"TypeAnnotation\";\n  typeAnnotation: FlowType;\n}\n\nexport interface TypeCastExpression extends BaseNode {\n  type: \"TypeCastExpression\";\n  expression: Expression;\n  typeAnnotation: TypeAnnotation;\n}\n\nexport interface TypeParameter extends BaseNode {\n  type: \"TypeParameter\";\n  bound?: TypeAnnotation | null;\n  default?: FlowType | null;\n  variance?: Variance | null;\n  name: string;\n}\n\nexport interface TypeParameterDeclaration extends BaseNode {\n  type: \"TypeParameterDeclaration\";\n  params: Array<TypeParameter>;\n}\n\nexport interface TypeParameterInstantiation extends BaseNode {\n  type: \"TypeParameterInstantiation\";\n  params: Array<FlowType>;\n}\n\nexport interface UnionTypeAnnotation extends BaseNode {\n  type: \"UnionTypeAnnotation\";\n  types: Array<FlowType>;\n}\n\nexport interface Variance extends BaseNode {\n  type: \"Variance\";\n  kind: \"minus\" | \"plus\";\n}\n\nexport interface VoidTypeAnnotation extends BaseNode {\n  type: \"VoidTypeAnnotation\";\n}\n\nexport interface EnumDeclaration extends BaseNode {\n  type: \"EnumDeclaration\";\n  id: Identifier;\n  body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;\n}\n\nexport interface EnumBooleanBody extends BaseNode {\n  type: \"EnumBooleanBody\";\n  members: Array<EnumBooleanMember>;\n  explicitType: boolean;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumNumberBody extends BaseNode {\n  type: \"EnumNumberBody\";\n  members: Array<EnumNumberMember>;\n  explicitType: boolean;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumStringBody extends BaseNode {\n  type: \"EnumStringBody\";\n  members: Array<EnumStringMember | EnumDefaultedMember>;\n  explicitType: boolean;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumSymbolBody extends BaseNode {\n  type: \"EnumSymbolBody\";\n  members: Array<EnumDefaultedMember>;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumBooleanMember extends BaseNode {\n  type: \"EnumBooleanMember\";\n  id: Identifier;\n  init: BooleanLiteral;\n}\n\nexport interface EnumNumberMember extends BaseNode {\n  type: \"EnumNumberMember\";\n  id: Identifier;\n  init: NumericLiteral;\n}\n\nexport interface EnumStringMember extends BaseNode {\n  type: \"EnumStringMember\";\n  id: Identifier;\n  init: StringLiteral;\n}\n\nexport interface EnumDefaultedMember extends BaseNode {\n  type: \"EnumDefaultedMember\";\n  id: Identifier;\n}\n\nexport interface IndexedAccessType extends BaseNode {\n  type: \"IndexedAccessType\";\n  objectType: FlowType;\n  indexType: FlowType;\n}\n\nexport interface OptionalIndexedAccessType extends BaseNode {\n  type: \"OptionalIndexedAccessType\";\n  objectType: FlowType;\n  indexType: FlowType;\n  optional: boolean;\n}\n\nexport interface JSXAttribute extends BaseNode {\n  type: \"JSXAttribute\";\n  name: JSXIdentifier | JSXNamespacedName;\n  value?:\n    | JSXElement\n    | JSXFragment\n    | StringLiteral\n    | JSXExpressionContainer\n    | null;\n}\n\nexport interface JSXClosingElement extends BaseNode {\n  type: \"JSXClosingElement\";\n  name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;\n}\n\nexport interface JSXElement extends BaseNode {\n  type: \"JSXElement\";\n  openingElement: JSXOpeningElement;\n  closingElement?: JSXClosingElement | null;\n  children: Array<\n    JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment\n  >;\n  selfClosing?: boolean | null;\n}\n\nexport interface JSXEmptyExpression extends BaseNode {\n  type: \"JSXEmptyExpression\";\n}\n\nexport interface JSXExpressionContainer extends BaseNode {\n  type: \"JSXExpressionContainer\";\n  expression: Expression | JSXEmptyExpression;\n}\n\nexport interface JSXSpreadChild extends BaseNode {\n  type: \"JSXSpreadChild\";\n  expression: Expression;\n}\n\nexport interface JSXIdentifier extends BaseNode {\n  type: \"JSXIdentifier\";\n  name: string;\n}\n\nexport interface JSXMemberExpression extends BaseNode {\n  type: \"JSXMemberExpression\";\n  object: JSXMemberExpression | JSXIdentifier;\n  property: JSXIdentifier;\n}\n\nexport interface JSXNamespacedName extends BaseNode {\n  type: \"JSXNamespacedName\";\n  namespace: JSXIdentifier;\n  name: JSXIdentifier;\n}\n\nexport interface JSXOpeningElement extends BaseNode {\n  type: \"JSXOpeningElement\";\n  name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;\n  attributes: Array<JSXAttribute | JSXSpreadAttribute>;\n  selfClosing: boolean;\n  typeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n}\n\nexport interface JSXSpreadAttribute extends BaseNode {\n  type: \"JSXSpreadAttribute\";\n  argument: Expression;\n}\n\nexport interface JSXText extends BaseNode {\n  type: \"JSXText\";\n  value: string;\n}\n\nexport interface JSXFragment extends BaseNode {\n  type: \"JSXFragment\";\n  openingFragment: JSXOpeningFragment;\n  closingFragment: JSXClosingFragment;\n  children: Array<\n    JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment\n  >;\n}\n\nexport interface JSXOpeningFragment extends BaseNode {\n  type: \"JSXOpeningFragment\";\n}\n\nexport interface JSXClosingFragment extends BaseNode {\n  type: \"JSXClosingFragment\";\n}\n\nexport interface Noop extends BaseNode {\n  type: \"Noop\";\n}\n\nexport interface Placeholder extends BaseNode {\n  type: \"Placeholder\";\n  expectedNode:\n    | \"Identifier\"\n    | \"StringLiteral\"\n    | \"Expression\"\n    | \"Statement\"\n    | \"Declaration\"\n    | \"BlockStatement\"\n    | \"ClassBody\"\n    | \"Pattern\";\n  name: Identifier;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface V8IntrinsicIdentifier extends BaseNode {\n  type: \"V8IntrinsicIdentifier\";\n  name: string;\n}\n\nexport interface ArgumentPlaceholder extends BaseNode {\n  type: \"ArgumentPlaceholder\";\n}\n\nexport interface BindExpression extends BaseNode {\n  type: \"BindExpression\";\n  object: Expression;\n  callee: Expression;\n}\n\nexport interface ImportAttribute extends BaseNode {\n  type: \"ImportAttribute\";\n  key: Identifier | StringLiteral;\n  value: StringLiteral;\n}\n\nexport interface Decorator extends BaseNode {\n  type: \"Decorator\";\n  expression: Expression;\n}\n\nexport interface DoExpression extends BaseNode {\n  type: \"DoExpression\";\n  body: BlockStatement;\n  async: boolean;\n}\n\nexport interface ExportDefaultSpecifier extends BaseNode {\n  type: \"ExportDefaultSpecifier\";\n  exported: Identifier;\n}\n\nexport interface RecordExpression extends BaseNode {\n  type: \"RecordExpression\";\n  properties: Array<ObjectProperty | SpreadElement>;\n}\n\nexport interface TupleExpression extends BaseNode {\n  type: \"TupleExpression\";\n  elements: Array<Expression | SpreadElement>;\n}\n\nexport interface DecimalLiteral extends BaseNode {\n  type: \"DecimalLiteral\";\n  value: string;\n}\n\nexport interface ModuleExpression extends BaseNode {\n  type: \"ModuleExpression\";\n  body: Program;\n}\n\nexport interface TopicReference extends BaseNode {\n  type: \"TopicReference\";\n}\n\nexport interface PipelineTopicExpression extends BaseNode {\n  type: \"PipelineTopicExpression\";\n  expression: Expression;\n}\n\nexport interface PipelineBareFunction extends BaseNode {\n  type: \"PipelineBareFunction\";\n  callee: Expression;\n}\n\nexport interface PipelinePrimaryTopicReference extends BaseNode {\n  type: \"PipelinePrimaryTopicReference\";\n}\n\nexport interface TSParameterProperty extends BaseNode {\n  type: \"TSParameterProperty\";\n  parameter: Identifier | AssignmentPattern;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  decorators?: Array<Decorator> | null;\n  override?: boolean | null;\n  readonly?: boolean | null;\n}\n\nexport interface TSDeclareFunction extends BaseNode {\n  type: \"TSDeclareFunction\";\n  id?: Identifier | null;\n  typeParameters?: TSTypeParameterDeclaration | Noop | null;\n  params: Array<Identifier | Pattern | RestElement>;\n  returnType?: TSTypeAnnotation | Noop | null;\n  async?: boolean;\n  declare?: boolean | null;\n  generator?: boolean;\n}\n\nexport interface TSDeclareMethod extends BaseNode {\n  type: \"TSDeclareMethod\";\n  decorators?: Array<Decorator> | null;\n  key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n  typeParameters?: TSTypeParameterDeclaration | Noop | null;\n  params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;\n  returnType?: TSTypeAnnotation | Noop | null;\n  abstract?: boolean | null;\n  access?: \"public\" | \"private\" | \"protected\" | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  async?: boolean;\n  computed?: boolean;\n  generator?: boolean;\n  kind?: \"get\" | \"set\" | \"method\" | \"constructor\";\n  optional?: boolean | null;\n  override?: boolean;\n  static?: boolean;\n}\n\nexport interface TSQualifiedName extends BaseNode {\n  type: \"TSQualifiedName\";\n  left: TSEntityName;\n  right: Identifier;\n}\n\nexport interface TSCallSignatureDeclaration extends BaseNode {\n  type: \"TSCallSignatureDeclaration\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSConstructSignatureDeclaration extends BaseNode {\n  type: \"TSConstructSignatureDeclaration\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSPropertySignature extends BaseNode {\n  type: \"TSPropertySignature\";\n  key: Expression;\n  typeAnnotation?: TSTypeAnnotation | null;\n  computed?: boolean;\n  kind: \"get\" | \"set\";\n  optional?: boolean | null;\n  readonly?: boolean | null;\n}\n\nexport interface TSMethodSignature extends BaseNode {\n  type: \"TSMethodSignature\";\n  key: Expression;\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n  computed?: boolean;\n  kind: \"method\" | \"get\" | \"set\";\n  optional?: boolean | null;\n}\n\nexport interface TSIndexSignature extends BaseNode {\n  type: \"TSIndexSignature\";\n  parameters: Array<Identifier>;\n  typeAnnotation?: TSTypeAnnotation | null;\n  readonly?: boolean | null;\n  static?: boolean | null;\n}\n\nexport interface TSAnyKeyword extends BaseNode {\n  type: \"TSAnyKeyword\";\n}\n\nexport interface TSBooleanKeyword extends BaseNode {\n  type: \"TSBooleanKeyword\";\n}\n\nexport interface TSBigIntKeyword extends BaseNode {\n  type: \"TSBigIntKeyword\";\n}\n\nexport interface TSIntrinsicKeyword extends BaseNode {\n  type: \"TSIntrinsicKeyword\";\n}\n\nexport interface TSNeverKeyword extends BaseNode {\n  type: \"TSNeverKeyword\";\n}\n\nexport interface TSNullKeyword extends BaseNode {\n  type: \"TSNullKeyword\";\n}\n\nexport interface TSNumberKeyword extends BaseNode {\n  type: \"TSNumberKeyword\";\n}\n\nexport interface TSObjectKeyword extends BaseNode {\n  type: \"TSObjectKeyword\";\n}\n\nexport interface TSStringKeyword extends BaseNode {\n  type: \"TSStringKeyword\";\n}\n\nexport interface TSSymbolKeyword extends BaseNode {\n  type: \"TSSymbolKeyword\";\n}\n\nexport interface TSUndefinedKeyword extends BaseNode {\n  type: \"TSUndefinedKeyword\";\n}\n\nexport interface TSUnknownKeyword extends BaseNode {\n  type: \"TSUnknownKeyword\";\n}\n\nexport interface TSVoidKeyword extends BaseNode {\n  type: \"TSVoidKeyword\";\n}\n\nexport interface TSThisType extends BaseNode {\n  type: \"TSThisType\";\n}\n\nexport interface TSFunctionType extends BaseNode {\n  type: \"TSFunctionType\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSConstructorType extends BaseNode {\n  type: \"TSConstructorType\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n  abstract?: boolean | null;\n}\n\nexport interface TSTypeReference extends BaseNode {\n  type: \"TSTypeReference\";\n  typeName: TSEntityName;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSTypePredicate extends BaseNode {\n  type: \"TSTypePredicate\";\n  parameterName: Identifier | TSThisType;\n  typeAnnotation?: TSTypeAnnotation | null;\n  asserts?: boolean | null;\n}\n\nexport interface TSTypeQuery extends BaseNode {\n  type: \"TSTypeQuery\";\n  exprName: TSEntityName | TSImportType;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSTypeLiteral extends BaseNode {\n  type: \"TSTypeLiteral\";\n  members: Array<TSTypeElement>;\n}\n\nexport interface TSArrayType extends BaseNode {\n  type: \"TSArrayType\";\n  elementType: TSType;\n}\n\nexport interface TSTupleType extends BaseNode {\n  type: \"TSTupleType\";\n  elementTypes: Array<TSType | TSNamedTupleMember>;\n}\n\nexport interface TSOptionalType extends BaseNode {\n  type: \"TSOptionalType\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSRestType extends BaseNode {\n  type: \"TSRestType\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSNamedTupleMember extends BaseNode {\n  type: \"TSNamedTupleMember\";\n  label: Identifier;\n  elementType: TSType;\n  optional: boolean;\n}\n\nexport interface TSUnionType extends BaseNode {\n  type: \"TSUnionType\";\n  types: Array<TSType>;\n}\n\nexport interface TSIntersectionType extends BaseNode {\n  type: \"TSIntersectionType\";\n  types: Array<TSType>;\n}\n\nexport interface TSConditionalType extends BaseNode {\n  type: \"TSConditionalType\";\n  checkType: TSType;\n  extendsType: TSType;\n  trueType: TSType;\n  falseType: TSType;\n}\n\nexport interface TSInferType extends BaseNode {\n  type: \"TSInferType\";\n  typeParameter: TSTypeParameter;\n}\n\nexport interface TSParenthesizedType extends BaseNode {\n  type: \"TSParenthesizedType\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSTypeOperator extends BaseNode {\n  type: \"TSTypeOperator\";\n  typeAnnotation: TSType;\n  operator: string;\n}\n\nexport interface TSIndexedAccessType extends BaseNode {\n  type: \"TSIndexedAccessType\";\n  objectType: TSType;\n  indexType: TSType;\n}\n\nexport interface TSMappedType extends BaseNode {\n  type: \"TSMappedType\";\n  typeParameter: TSTypeParameter;\n  typeAnnotation?: TSType | null;\n  nameType?: TSType | null;\n  optional?: true | false | \"+\" | \"-\" | null;\n  readonly?: true | false | \"+\" | \"-\" | null;\n}\n\nexport interface TSLiteralType extends BaseNode {\n  type: \"TSLiteralType\";\n  literal:\n    | NumericLiteral\n    | StringLiteral\n    | BooleanLiteral\n    | BigIntLiteral\n    | TemplateLiteral\n    | UnaryExpression;\n}\n\nexport interface TSExpressionWithTypeArguments extends BaseNode {\n  type: \"TSExpressionWithTypeArguments\";\n  expression: TSEntityName;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSInterfaceDeclaration extends BaseNode {\n  type: \"TSInterfaceDeclaration\";\n  id: Identifier;\n  typeParameters?: TSTypeParameterDeclaration | null;\n  extends?: Array<TSExpressionWithTypeArguments> | null;\n  body: TSInterfaceBody;\n  declare?: boolean | null;\n}\n\nexport interface TSInterfaceBody extends BaseNode {\n  type: \"TSInterfaceBody\";\n  body: Array<TSTypeElement>;\n}\n\nexport interface TSTypeAliasDeclaration extends BaseNode {\n  type: \"TSTypeAliasDeclaration\";\n  id: Identifier;\n  typeParameters?: TSTypeParameterDeclaration | null;\n  typeAnnotation: TSType;\n  declare?: boolean | null;\n}\n\nexport interface TSInstantiationExpression extends BaseNode {\n  type: \"TSInstantiationExpression\";\n  expression: Expression;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSAsExpression extends BaseNode {\n  type: \"TSAsExpression\";\n  expression: Expression;\n  typeAnnotation: TSType;\n}\n\nexport interface TSSatisfiesExpression extends BaseNode {\n  type: \"TSSatisfiesExpression\";\n  expression: Expression;\n  typeAnnotation: TSType;\n}\n\nexport interface TSTypeAssertion extends BaseNode {\n  type: \"TSTypeAssertion\";\n  typeAnnotation: TSType;\n  expression: Expression;\n}\n\nexport interface TSEnumDeclaration extends BaseNode {\n  type: \"TSEnumDeclaration\";\n  id: Identifier;\n  members: Array<TSEnumMember>;\n  const?: boolean | null;\n  declare?: boolean | null;\n  initializer?: Expression | null;\n}\n\nexport interface TSEnumMember extends BaseNode {\n  type: \"TSEnumMember\";\n  id: Identifier | StringLiteral;\n  initializer?: Expression | null;\n}\n\nexport interface TSModuleDeclaration extends BaseNode {\n  type: \"TSModuleDeclaration\";\n  id: Identifier | StringLiteral;\n  body: TSModuleBlock | TSModuleDeclaration;\n  declare?: boolean | null;\n  global?: boolean | null;\n  kind: \"global\" | \"module\" | \"namespace\";\n}\n\nexport interface TSModuleBlock extends BaseNode {\n  type: \"TSModuleBlock\";\n  body: Array<Statement>;\n}\n\nexport interface TSImportType extends BaseNode {\n  type: \"TSImportType\";\n  argument: StringLiteral;\n  qualifier?: TSEntityName | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n  options?: Expression | null;\n}\n\nexport interface TSImportEqualsDeclaration extends BaseNode {\n  type: \"TSImportEqualsDeclaration\";\n  id: Identifier;\n  moduleReference: TSEntityName | TSExternalModuleReference;\n  importKind?: \"type\" | \"value\" | null;\n  isExport: boolean;\n}\n\nexport interface TSExternalModuleReference extends BaseNode {\n  type: \"TSExternalModuleReference\";\n  expression: StringLiteral;\n}\n\nexport interface TSNonNullExpression extends BaseNode {\n  type: \"TSNonNullExpression\";\n  expression: Expression;\n}\n\nexport interface TSExportAssignment extends BaseNode {\n  type: \"TSExportAssignment\";\n  expression: Expression;\n}\n\nexport interface TSNamespaceExportDeclaration extends BaseNode {\n  type: \"TSNamespaceExportDeclaration\";\n  id: Identifier;\n}\n\nexport interface TSTypeAnnotation extends BaseNode {\n  type: \"TSTypeAnnotation\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSTypeParameterInstantiation extends BaseNode {\n  type: \"TSTypeParameterInstantiation\";\n  params: Array<TSType>;\n}\n\nexport interface TSTypeParameterDeclaration extends BaseNode {\n  type: \"TSTypeParameterDeclaration\";\n  params: Array<TSTypeParameter>;\n}\n\nexport interface TSTypeParameter extends BaseNode {\n  type: \"TSTypeParameter\";\n  constraint?: TSType | null;\n  default?: TSType | null;\n  name: string;\n  const?: boolean | null;\n  in?: boolean | null;\n  out?: boolean | null;\n}\n\nexport type Standardized =\n  | ArrayExpression\n  | AssignmentExpression\n  | BinaryExpression\n  | InterpreterDirective\n  | Directive\n  | DirectiveLiteral\n  | BlockStatement\n  | BreakStatement\n  | CallExpression\n  | CatchClause\n  | ConditionalExpression\n  | ContinueStatement\n  | DebuggerStatement\n  | DoWhileStatement\n  | EmptyStatement\n  | ExpressionStatement\n  | File\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Identifier\n  | IfStatement\n  | LabeledStatement\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | LogicalExpression\n  | MemberExpression\n  | NewExpression\n  | Program\n  | ObjectExpression\n  | ObjectMethod\n  | ObjectProperty\n  | RestElement\n  | ReturnStatement\n  | SequenceExpression\n  | ParenthesizedExpression\n  | SwitchCase\n  | SwitchStatement\n  | ThisExpression\n  | ThrowStatement\n  | TryStatement\n  | UnaryExpression\n  | UpdateExpression\n  | VariableDeclaration\n  | VariableDeclarator\n  | WhileStatement\n  | WithStatement\n  | AssignmentPattern\n  | ArrayPattern\n  | ArrowFunctionExpression\n  | ClassBody\n  | ClassExpression\n  | ClassDeclaration\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ExportSpecifier\n  | ForOfStatement\n  | ImportDeclaration\n  | ImportDefaultSpecifier\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | ImportExpression\n  | MetaProperty\n  | ClassMethod\n  | ObjectPattern\n  | SpreadElement\n  | Super\n  | TaggedTemplateExpression\n  | TemplateElement\n  | TemplateLiteral\n  | YieldExpression\n  | AwaitExpression\n  | Import\n  | BigIntLiteral\n  | ExportNamespaceSpecifier\n  | OptionalMemberExpression\n  | OptionalCallExpression\n  | ClassProperty\n  | ClassAccessorProperty\n  | ClassPrivateProperty\n  | ClassPrivateMethod\n  | PrivateName\n  | StaticBlock;\nexport type Expression =\n  | ArrayExpression\n  | AssignmentExpression\n  | BinaryExpression\n  | CallExpression\n  | ConditionalExpression\n  | FunctionExpression\n  | Identifier\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | LogicalExpression\n  | MemberExpression\n  | NewExpression\n  | ObjectExpression\n  | SequenceExpression\n  | ParenthesizedExpression\n  | ThisExpression\n  | UnaryExpression\n  | UpdateExpression\n  | ArrowFunctionExpression\n  | ClassExpression\n  | ImportExpression\n  | MetaProperty\n  | Super\n  | TaggedTemplateExpression\n  | TemplateLiteral\n  | YieldExpression\n  | AwaitExpression\n  | Import\n  | BigIntLiteral\n  | OptionalMemberExpression\n  | OptionalCallExpression\n  | TypeCastExpression\n  | JSXElement\n  | JSXFragment\n  | BindExpression\n  | DoExpression\n  | RecordExpression\n  | TupleExpression\n  | DecimalLiteral\n  | ModuleExpression\n  | TopicReference\n  | PipelineTopicExpression\n  | PipelineBareFunction\n  | PipelinePrimaryTopicReference\n  | TSInstantiationExpression\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSNonNullExpression;\nexport type Binary = BinaryExpression | LogicalExpression;\nexport type Scopable =\n  | BlockStatement\n  | CatchClause\n  | DoWhileStatement\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Program\n  | ObjectMethod\n  | SwitchStatement\n  | WhileStatement\n  | ArrowFunctionExpression\n  | ClassExpression\n  | ClassDeclaration\n  | ForOfStatement\n  | ClassMethod\n  | ClassPrivateMethod\n  | StaticBlock\n  | TSModuleBlock;\nexport type BlockParent =\n  | BlockStatement\n  | CatchClause\n  | DoWhileStatement\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Program\n  | ObjectMethod\n  | SwitchStatement\n  | WhileStatement\n  | ArrowFunctionExpression\n  | ForOfStatement\n  | ClassMethod\n  | ClassPrivateMethod\n  | StaticBlock\n  | TSModuleBlock;\nexport type Block = BlockStatement | Program | TSModuleBlock;\nexport type Statement =\n  | BlockStatement\n  | BreakStatement\n  | ContinueStatement\n  | DebuggerStatement\n  | DoWhileStatement\n  | EmptyStatement\n  | ExpressionStatement\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | IfStatement\n  | LabeledStatement\n  | ReturnStatement\n  | SwitchStatement\n  | ThrowStatement\n  | TryStatement\n  | VariableDeclaration\n  | WhileStatement\n  | WithStatement\n  | ClassDeclaration\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ForOfStatement\n  | ImportDeclaration\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | InterfaceDeclaration\n  | OpaqueType\n  | TypeAlias\n  | EnumDeclaration\n  | TSDeclareFunction\n  | TSInterfaceDeclaration\n  | TSTypeAliasDeclaration\n  | TSEnumDeclaration\n  | TSModuleDeclaration\n  | TSImportEqualsDeclaration\n  | TSExportAssignment\n  | TSNamespaceExportDeclaration;\nexport type Terminatorless =\n  | BreakStatement\n  | ContinueStatement\n  | ReturnStatement\n  | ThrowStatement\n  | YieldExpression\n  | AwaitExpression;\nexport type CompletionStatement =\n  | BreakStatement\n  | ContinueStatement\n  | ReturnStatement\n  | ThrowStatement;\nexport type Conditional = ConditionalExpression | IfStatement;\nexport type Loop =\n  | DoWhileStatement\n  | ForInStatement\n  | ForStatement\n  | WhileStatement\n  | ForOfStatement;\nexport type While = DoWhileStatement | WhileStatement;\nexport type ExpressionWrapper =\n  | ExpressionStatement\n  | ParenthesizedExpression\n  | TypeCastExpression;\nexport type For = ForInStatement | ForStatement | ForOfStatement;\nexport type ForXStatement = ForInStatement | ForOfStatement;\nexport type Function =\n  | FunctionDeclaration\n  | FunctionExpression\n  | ObjectMethod\n  | ArrowFunctionExpression\n  | ClassMethod\n  | ClassPrivateMethod;\nexport type FunctionParent =\n  | FunctionDeclaration\n  | FunctionExpression\n  | ObjectMethod\n  | ArrowFunctionExpression\n  | ClassMethod\n  | ClassPrivateMethod\n  | StaticBlock\n  | TSModuleBlock;\nexport type Pureish =\n  | FunctionDeclaration\n  | FunctionExpression\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | ArrowFunctionExpression\n  | BigIntLiteral\n  | DecimalLiteral;\nexport type Declaration =\n  | FunctionDeclaration\n  | VariableDeclaration\n  | ClassDeclaration\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ImportDeclaration\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | InterfaceDeclaration\n  | OpaqueType\n  | TypeAlias\n  | EnumDeclaration\n  | TSDeclareFunction\n  | TSInterfaceDeclaration\n  | TSTypeAliasDeclaration\n  | TSEnumDeclaration\n  | TSModuleDeclaration;\nexport type PatternLike =\n  | Identifier\n  | RestElement\n  | AssignmentPattern\n  | ArrayPattern\n  | ObjectPattern\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSNonNullExpression;\nexport type LVal =\n  | Identifier\n  | MemberExpression\n  | RestElement\n  | AssignmentPattern\n  | ArrayPattern\n  | ObjectPattern\n  | TSParameterProperty\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSNonNullExpression;\nexport type TSEntityName = Identifier | TSQualifiedName;\nexport type Literal =\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | TemplateLiteral\n  | BigIntLiteral\n  | DecimalLiteral;\nexport type Immutable =\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | BigIntLiteral\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXElement\n  | JSXExpressionContainer\n  | JSXSpreadChild\n  | JSXOpeningElement\n  | JSXText\n  | JSXFragment\n  | JSXOpeningFragment\n  | JSXClosingFragment\n  | DecimalLiteral;\nexport type UserWhitespacable =\n  | ObjectMethod\n  | ObjectProperty\n  | ObjectTypeInternalSlot\n  | ObjectTypeCallProperty\n  | ObjectTypeIndexer\n  | ObjectTypeProperty\n  | ObjectTypeSpreadProperty;\nexport type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;\nexport type ObjectMember = ObjectMethod | ObjectProperty;\nexport type Property =\n  | ObjectProperty\n  | ClassProperty\n  | ClassAccessorProperty\n  | ClassPrivateProperty;\nexport type UnaryLike = UnaryExpression | SpreadElement;\nexport type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern;\nexport type Class = ClassExpression | ClassDeclaration;\nexport type ImportOrExportDeclaration =\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ImportDeclaration;\nexport type ExportDeclaration =\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration;\nexport type ModuleSpecifier =\n  | ExportSpecifier\n  | ImportDefaultSpecifier\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | ExportNamespaceSpecifier\n  | ExportDefaultSpecifier;\nexport type Accessor = ClassAccessorProperty;\nexport type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;\nexport type Flow =\n  | AnyTypeAnnotation\n  | ArrayTypeAnnotation\n  | BooleanTypeAnnotation\n  | BooleanLiteralTypeAnnotation\n  | NullLiteralTypeAnnotation\n  | ClassImplements\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | DeclaredPredicate\n  | ExistsTypeAnnotation\n  | FunctionTypeAnnotation\n  | FunctionTypeParam\n  | GenericTypeAnnotation\n  | InferredPredicate\n  | InterfaceExtends\n  | InterfaceDeclaration\n  | InterfaceTypeAnnotation\n  | IntersectionTypeAnnotation\n  | MixedTypeAnnotation\n  | EmptyTypeAnnotation\n  | NullableTypeAnnotation\n  | NumberLiteralTypeAnnotation\n  | NumberTypeAnnotation\n  | ObjectTypeAnnotation\n  | ObjectTypeInternalSlot\n  | ObjectTypeCallProperty\n  | ObjectTypeIndexer\n  | ObjectTypeProperty\n  | ObjectTypeSpreadProperty\n  | OpaqueType\n  | QualifiedTypeIdentifier\n  | StringLiteralTypeAnnotation\n  | StringTypeAnnotation\n  | SymbolTypeAnnotation\n  | ThisTypeAnnotation\n  | TupleTypeAnnotation\n  | TypeofTypeAnnotation\n  | TypeAlias\n  | TypeAnnotation\n  | TypeCastExpression\n  | TypeParameter\n  | TypeParameterDeclaration\n  | TypeParameterInstantiation\n  | UnionTypeAnnotation\n  | Variance\n  | VoidTypeAnnotation\n  | EnumDeclaration\n  | EnumBooleanBody\n  | EnumNumberBody\n  | EnumStringBody\n  | EnumSymbolBody\n  | EnumBooleanMember\n  | EnumNumberMember\n  | EnumStringMember\n  | EnumDefaultedMember\n  | IndexedAccessType\n  | OptionalIndexedAccessType;\nexport type FlowType =\n  | AnyTypeAnnotation\n  | ArrayTypeAnnotation\n  | BooleanTypeAnnotation\n  | BooleanLiteralTypeAnnotation\n  | NullLiteralTypeAnnotation\n  | ExistsTypeAnnotation\n  | FunctionTypeAnnotation\n  | GenericTypeAnnotation\n  | InterfaceTypeAnnotation\n  | IntersectionTypeAnnotation\n  | MixedTypeAnnotation\n  | EmptyTypeAnnotation\n  | NullableTypeAnnotation\n  | NumberLiteralTypeAnnotation\n  | NumberTypeAnnotation\n  | ObjectTypeAnnotation\n  | StringLiteralTypeAnnotation\n  | StringTypeAnnotation\n  | SymbolTypeAnnotation\n  | ThisTypeAnnotation\n  | TupleTypeAnnotation\n  | TypeofTypeAnnotation\n  | UnionTypeAnnotation\n  | VoidTypeAnnotation\n  | IndexedAccessType\n  | OptionalIndexedAccessType;\nexport type FlowBaseAnnotation =\n  | AnyTypeAnnotation\n  | BooleanTypeAnnotation\n  | NullLiteralTypeAnnotation\n  | MixedTypeAnnotation\n  | EmptyTypeAnnotation\n  | NumberTypeAnnotation\n  | StringTypeAnnotation\n  | SymbolTypeAnnotation\n  | ThisTypeAnnotation\n  | VoidTypeAnnotation;\nexport type FlowDeclaration =\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | InterfaceDeclaration\n  | OpaqueType\n  | TypeAlias;\nexport type FlowPredicate = DeclaredPredicate | InferredPredicate;\nexport type EnumBody =\n  | EnumBooleanBody\n  | EnumNumberBody\n  | EnumStringBody\n  | EnumSymbolBody;\nexport type EnumMember =\n  | EnumBooleanMember\n  | EnumNumberMember\n  | EnumStringMember\n  | EnumDefaultedMember;\nexport type JSX =\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXElement\n  | JSXEmptyExpression\n  | JSXExpressionContainer\n  | JSXSpreadChild\n  | JSXIdentifier\n  | JSXMemberExpression\n  | JSXNamespacedName\n  | JSXOpeningElement\n  | JSXSpreadAttribute\n  | JSXText\n  | JSXFragment\n  | JSXOpeningFragment\n  | JSXClosingFragment;\nexport type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;\nexport type TypeScript =\n  | TSParameterProperty\n  | TSDeclareFunction\n  | TSDeclareMethod\n  | TSQualifiedName\n  | TSCallSignatureDeclaration\n  | TSConstructSignatureDeclaration\n  | TSPropertySignature\n  | TSMethodSignature\n  | TSIndexSignature\n  | TSAnyKeyword\n  | TSBooleanKeyword\n  | TSBigIntKeyword\n  | TSIntrinsicKeyword\n  | TSNeverKeyword\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSUndefinedKeyword\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TSThisType\n  | TSFunctionType\n  | TSConstructorType\n  | TSTypeReference\n  | TSTypePredicate\n  | TSTypeQuery\n  | TSTypeLiteral\n  | TSArrayType\n  | TSTupleType\n  | TSOptionalType\n  | TSRestType\n  | TSNamedTupleMember\n  | TSUnionType\n  | TSIntersectionType\n  | TSConditionalType\n  | TSInferType\n  | TSParenthesizedType\n  | TSTypeOperator\n  | TSIndexedAccessType\n  | TSMappedType\n  | TSLiteralType\n  | TSExpressionWithTypeArguments\n  | TSInterfaceDeclaration\n  | TSInterfaceBody\n  | TSTypeAliasDeclaration\n  | TSInstantiationExpression\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSEnumDeclaration\n  | TSEnumMember\n  | TSModuleDeclaration\n  | TSModuleBlock\n  | TSImportType\n  | TSImportEqualsDeclaration\n  | TSExternalModuleReference\n  | TSNonNullExpression\n  | TSExportAssignment\n  | TSNamespaceExportDeclaration\n  | TSTypeAnnotation\n  | TSTypeParameterInstantiation\n  | TSTypeParameterDeclaration\n  | TSTypeParameter;\nexport type TSTypeElement =\n  | TSCallSignatureDeclaration\n  | TSConstructSignatureDeclaration\n  | TSPropertySignature\n  | TSMethodSignature\n  | TSIndexSignature;\nexport type TSType =\n  | TSAnyKeyword\n  | TSBooleanKeyword\n  | TSBigIntKeyword\n  | TSIntrinsicKeyword\n  | TSNeverKeyword\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSUndefinedKeyword\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TSThisType\n  | TSFunctionType\n  | TSConstructorType\n  | TSTypeReference\n  | TSTypePredicate\n  | TSTypeQuery\n  | TSTypeLiteral\n  | TSArrayType\n  | TSTupleType\n  | TSOptionalType\n  | TSRestType\n  | TSUnionType\n  | TSIntersectionType\n  | TSConditionalType\n  | TSInferType\n  | TSParenthesizedType\n  | TSTypeOperator\n  | TSIndexedAccessType\n  | TSMappedType\n  | TSLiteralType\n  | TSExpressionWithTypeArguments\n  | TSImportType;\nexport type TSBaseType =\n  | TSAnyKeyword\n  | TSBooleanKeyword\n  | TSBigIntKeyword\n  | TSIntrinsicKeyword\n  | TSNeverKeyword\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSUndefinedKeyword\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TSThisType\n  | TSLiteralType;\nexport type ModuleDeclaration =\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ImportDeclaration;\n\nexport interface Aliases {\n  Standardized: Standardized;\n  Expression: Expression;\n  Binary: Binary;\n  Scopable: Scopable;\n  BlockParent: BlockParent;\n  Block: Block;\n  Statement: Statement;\n  Terminatorless: Terminatorless;\n  CompletionStatement: CompletionStatement;\n  Conditional: Conditional;\n  Loop: Loop;\n  While: While;\n  ExpressionWrapper: ExpressionWrapper;\n  For: For;\n  ForXStatement: ForXStatement;\n  Function: Function;\n  FunctionParent: FunctionParent;\n  Pureish: Pureish;\n  Declaration: Declaration;\n  PatternLike: PatternLike;\n  LVal: LVal;\n  TSEntityName: TSEntityName;\n  Literal: Literal;\n  Immutable: Immutable;\n  UserWhitespacable: UserWhitespacable;\n  Method: Method;\n  ObjectMember: ObjectMember;\n  Property: Property;\n  UnaryLike: UnaryLike;\n  Pattern: Pattern;\n  Class: Class;\n  ImportOrExportDeclaration: ImportOrExportDeclaration;\n  ExportDeclaration: ExportDeclaration;\n  ModuleSpecifier: ModuleSpecifier;\n  Accessor: Accessor;\n  Private: Private;\n  Flow: Flow;\n  FlowType: FlowType;\n  FlowBaseAnnotation: FlowBaseAnnotation;\n  FlowDeclaration: FlowDeclaration;\n  FlowPredicate: FlowPredicate;\n  EnumBody: EnumBody;\n  EnumMember: EnumMember;\n  JSX: JSX;\n  Miscellaneous: Miscellaneous;\n  TypeScript: TypeScript;\n  TSTypeElement: TSTypeElement;\n  TSType: TSType;\n  TSBaseType: TSBaseType;\n  ModuleDeclaration: ModuleDeclaration;\n}\n\nexport type DeprecatedAliases =\n  | NumberLiteral\n  | RegexLiteral\n  | RestProperty\n  | SpreadProperty;\n\nexport interface ParentMaps {\n  AnyTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ArgumentPlaceholder: CallExpression | NewExpression | OptionalCallExpression;\n  ArrayExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ArrayPattern:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | CatchClause\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectProperty\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSMethodSignature\n    | VariableDeclarator;\n  ArrayTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ArrowFunctionExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  AssignmentExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  AssignmentPattern:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectProperty\n    | RestElement\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSParameterProperty\n    | VariableDeclarator;\n  AwaitExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BigIntLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BinaryExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BindExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BlockStatement:\n    | ArrowFunctionExpression\n    | BlockStatement\n    | CatchClause\n    | ClassMethod\n    | ClassPrivateMethod\n    | DeclareModule\n    | DoExpression\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | IfStatement\n    | LabeledStatement\n    | ObjectMethod\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | TryStatement\n    | WhileStatement\n    | WithStatement;\n  BooleanLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | EnumBooleanMember\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BooleanLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  BooleanTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  BreakStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  CallExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  CatchClause: TryStatement;\n  ClassAccessorProperty: ClassBody;\n  ClassBody: ClassDeclaration | ClassExpression;\n  ClassDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ClassExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ClassImplements:\n    | ClassDeclaration\n    | ClassExpression\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclaredPredicate;\n  ClassMethod: ClassBody;\n  ClassPrivateMethod: ClassBody;\n  ClassPrivateProperty: ClassBody;\n  ClassProperty: ClassBody;\n  CommentBlock: File;\n  CommentLine: File;\n  ConditionalExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ContinueStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DebuggerStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DecimalLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  DeclareClass:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareExportAllDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareExportDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareFunction:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareInterface:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareModule:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareModuleExports:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareOpaqueType:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareTypeAlias:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareVariable:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclaredPredicate:\n    | ArrowFunctionExpression\n    | DeclareExportDeclaration\n    | DeclareFunction\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression;\n  Decorator:\n    | ArrayPattern\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | ObjectProperty\n    | Placeholder\n    | RestElement\n    | TSDeclareMethod\n    | TSParameterProperty;\n  Directive: BlockStatement | Program;\n  DirectiveLiteral: Directive;\n  DoExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  DoWhileStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  EmptyStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  EmptyTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  EnumBooleanBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  EnumBooleanMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumBooleanBody;\n  EnumDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  EnumDefaultedMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumStringBody\n    | EnumSymbolBody;\n  EnumNumberBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  EnumNumberMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumNumberBody;\n  EnumStringBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  EnumStringMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumStringBody;\n  EnumSymbolBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  ExistsTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ExportAllDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ExportDefaultDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ExportDefaultSpecifier: ExportNamedDeclaration;\n  ExportNamedDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ExportNamespaceSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;\n  ExportSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;\n  ExpressionStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  File: null;\n  ForInStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ForOfStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ForStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  FunctionDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  FunctionExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  FunctionTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  FunctionTypeParam:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | FunctionTypeAnnotation;\n  GenericTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  Identifier:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | BreakStatement\n    | CallExpression\n    | CatchClause\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassImplements\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | ContinueStatement\n    | DeclareClass\n    | DeclareFunction\n    | DeclareInterface\n    | DeclareModule\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclareVariable\n    | Decorator\n    | DoWhileStatement\n    | EnumBooleanMember\n    | EnumDeclaration\n    | EnumDefaultedMember\n    | EnumNumberMember\n    | EnumStringMember\n    | ExportDefaultDeclaration\n    | ExportDefaultSpecifier\n    | ExportNamespaceSpecifier\n    | ExportSpecifier\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | FunctionTypeParam\n    | GenericTypeAnnotation\n    | IfStatement\n    | ImportAttribute\n    | ImportDefaultSpecifier\n    | ImportExpression\n    | ImportNamespaceSpecifier\n    | ImportSpecifier\n    | InterfaceDeclaration\n    | InterfaceExtends\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LabeledStatement\n    | LogicalExpression\n    | MemberExpression\n    | MetaProperty\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | OpaqueType\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | Placeholder\n    | PrivateName\n    | QualifiedTypeIdentifier\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSExpressionWithTypeArguments\n    | TSFunctionType\n    | TSImportEqualsDeclaration\n    | TSImportType\n    | TSIndexSignature\n    | TSInstantiationExpression\n    | TSInterfaceDeclaration\n    | TSMethodSignature\n    | TSModuleDeclaration\n    | TSNamedTupleMember\n    | TSNamespaceExportDeclaration\n    | TSNonNullExpression\n    | TSParameterProperty\n    | TSPropertySignature\n    | TSQualifiedName\n    | TSSatisfiesExpression\n    | TSTypeAliasDeclaration\n    | TSTypeAssertion\n    | TSTypePredicate\n    | TSTypeQuery\n    | TSTypeReference\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeAlias\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  IfStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  Import:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ImportAttribute:\n    | DeclareExportAllDeclaration\n    | DeclareExportDeclaration\n    | ExportAllDeclaration\n    | ExportNamedDeclaration\n    | ImportDeclaration;\n  ImportDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ImportDefaultSpecifier: ImportDeclaration;\n  ImportExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ImportNamespaceSpecifier: ImportDeclaration;\n  ImportSpecifier: ImportDeclaration;\n  IndexedAccessType:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  InferredPredicate:\n    | ArrowFunctionExpression\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression;\n  InterfaceDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  InterfaceExtends:\n    | ClassDeclaration\n    | ClassExpression\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclareInterface\n    | DeclaredPredicate\n    | InterfaceDeclaration\n    | InterfaceTypeAnnotation;\n  InterfaceTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  InterpreterDirective: Program;\n  IntersectionTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  JSXAttribute: JSXOpeningElement;\n  JSXClosingElement: JSXElement;\n  JSXClosingFragment: JSXFragment;\n  JSXElement:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXAttribute\n    | JSXElement\n    | JSXExpressionContainer\n    | JSXFragment\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  JSXEmptyExpression: JSXExpressionContainer;\n  JSXExpressionContainer: JSXAttribute | JSXElement | JSXFragment;\n  JSXFragment:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXAttribute\n    | JSXElement\n    | JSXExpressionContainer\n    | JSXFragment\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  JSXIdentifier:\n    | JSXAttribute\n    | JSXClosingElement\n    | JSXMemberExpression\n    | JSXNamespacedName\n    | JSXOpeningElement;\n  JSXMemberExpression:\n    | JSXClosingElement\n    | JSXMemberExpression\n    | JSXOpeningElement;\n  JSXNamespacedName: JSXAttribute | JSXClosingElement | JSXOpeningElement;\n  JSXOpeningElement: JSXElement;\n  JSXOpeningFragment: JSXFragment;\n  JSXSpreadAttribute: JSXOpeningElement;\n  JSXSpreadChild: JSXElement | JSXFragment;\n  JSXText: JSXElement | JSXFragment;\n  LabeledStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  LogicalExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  MemberExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  MetaProperty:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  MixedTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ModuleExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  NewExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  Noop:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | FunctionDeclaration\n    | FunctionExpression\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | Placeholder\n    | RestElement\n    | TSDeclareFunction\n    | TSDeclareMethod;\n  NullLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  NullLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NullableTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NumberLiteral: null;\n  NumberLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NumberTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NumericLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | EnumNumberMember\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ObjectExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ObjectMethod: ObjectExpression;\n  ObjectPattern:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | CatchClause\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectProperty\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSMethodSignature\n    | VariableDeclarator;\n  ObjectProperty: ObjectExpression | ObjectPattern | RecordExpression;\n  ObjectTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclareInterface\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | InterfaceDeclaration\n    | InterfaceTypeAnnotation\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ObjectTypeCallProperty:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeIndexer:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeInternalSlot:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeProperty:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeSpreadProperty:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  OpaqueType:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  OptionalCallExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  OptionalIndexedAccessType:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  OptionalMemberExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ParenthesizedExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  PipelineBareFunction:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  PipelinePrimaryTopicReference:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  PipelineTopicExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  Placeholder: Node;\n  PrivateName:\n    | BinaryExpression\n    | ClassAccessorProperty\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | MemberExpression\n    | ObjectProperty;\n  Program: File | ModuleExpression;\n  QualifiedTypeIdentifier:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | GenericTypeAnnotation\n    | InterfaceExtends\n    | QualifiedTypeIdentifier;\n  RecordExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  RegExpLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  RegexLiteral: null;\n  RestElement:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectPattern\n    | ObjectProperty\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSMethodSignature\n    | VariableDeclarator;\n  RestProperty: null;\n  ReturnStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  SequenceExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  SpreadElement:\n    | ArrayExpression\n    | CallExpression\n    | NewExpression\n    | ObjectExpression\n    | OptionalCallExpression\n    | RecordExpression\n    | TupleExpression;\n  SpreadProperty: null;\n  StaticBlock: ClassBody;\n  StringLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | DeclareExportAllDeclaration\n    | DeclareExportDeclaration\n    | DeclareModule\n    | Decorator\n    | DoWhileStatement\n    | EnumStringMember\n    | ExportAllDeclaration\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ExportSpecifier\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportAttribute\n    | ImportDeclaration\n    | ImportExpression\n    | ImportSpecifier\n    | JSXAttribute\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | ObjectTypeProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSExternalModuleReference\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSModuleDeclaration\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  StringLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  StringTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  Super:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  SwitchCase: SwitchStatement;\n  SwitchStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  SymbolTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  TSAnyKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSArrayType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSAsExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSBigIntKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSBooleanKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSCallSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;\n  TSConditionalType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSConstructSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;\n  TSConstructorType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSDeclareFunction:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSDeclareMethod: ClassBody;\n  TSEnumDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSEnumMember: TSEnumDeclaration;\n  TSExportAssignment:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSExpressionWithTypeArguments:\n    | ClassDeclaration\n    | ClassExpression\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSInterfaceDeclaration\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSExternalModuleReference: TSImportEqualsDeclaration;\n  TSFunctionType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSImportEqualsDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSImportType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSTypeQuery\n    | TSUnionType\n    | TemplateLiteral;\n  TSIndexSignature: ClassBody | TSInterfaceBody | TSTypeLiteral;\n  TSIndexedAccessType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSInferType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSInstantiationExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSInterfaceBody: TSInterfaceDeclaration;\n  TSInterfaceDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSIntersectionType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSIntrinsicKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSLiteralType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSMappedType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSMethodSignature: TSInterfaceBody | TSTypeLiteral;\n  TSModuleBlock: TSModuleDeclaration;\n  TSModuleDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | TSModuleDeclaration\n    | WhileStatement\n    | WithStatement;\n  TSNamedTupleMember: TSTupleType;\n  TSNamespaceExportDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSNeverKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSNonNullExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSNullKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSNumberKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSObjectKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSOptionalType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSParameterProperty:\n    | ArrayPattern\n    | AssignmentExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | RestElement\n    | TSDeclareMethod\n    | VariableDeclarator;\n  TSParenthesizedType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSPropertySignature: TSInterfaceBody | TSTypeLiteral;\n  TSQualifiedName:\n    | TSExpressionWithTypeArguments\n    | TSImportEqualsDeclaration\n    | TSImportType\n    | TSQualifiedName\n    | TSTypeQuery\n    | TSTypeReference;\n  TSRestType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSSatisfiesExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSStringKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSSymbolKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSThisType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSTypePredicate\n    | TSUnionType\n    | TemplateLiteral;\n  TSTupleType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeAliasDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSTypeAnnotation:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | FunctionDeclaration\n    | FunctionExpression\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | Placeholder\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSIndexSignature\n    | TSMethodSignature\n    | TSPropertySignature\n    | TSTypePredicate;\n  TSTypeAssertion:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSTypeLiteral:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeOperator:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeParameter: TSInferType | TSMappedType | TSTypeParameterDeclaration;\n  TSTypeParameterDeclaration:\n    | ArrowFunctionExpression\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSInterfaceDeclaration\n    | TSMethodSignature\n    | TSTypeAliasDeclaration;\n  TSTypeParameterInstantiation:\n    | CallExpression\n    | ClassDeclaration\n    | ClassExpression\n    | JSXOpeningElement\n    | NewExpression\n    | OptionalCallExpression\n    | TSExpressionWithTypeArguments\n    | TSImportType\n    | TSInstantiationExpression\n    | TSTypeQuery\n    | TSTypeReference\n    | TaggedTemplateExpression;\n  TSTypePredicate:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeQuery:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeReference:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSUndefinedKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSUnionType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSUnknownKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSVoidKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TaggedTemplateExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TemplateElement: TemplateLiteral;\n  TemplateLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ThisExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ThisTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ThrowStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TopicReference:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TryStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TupleExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TupleTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  TypeAlias:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TypeAnnotation:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | DeclareExportDeclaration\n    | DeclareModuleExports\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | Placeholder\n    | RestElement\n    | TypeCastExpression\n    | TypeParameter;\n  TypeCastExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TypeParameter:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | TypeParameterDeclaration;\n  TypeParameterDeclaration:\n    | ArrowFunctionExpression\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclareInterface\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression\n    | FunctionTypeAnnotation\n    | InterfaceDeclaration\n    | ObjectMethod\n    | OpaqueType\n    | TypeAlias;\n  TypeParameterInstantiation:\n    | CallExpression\n    | ClassDeclaration\n    | ClassExpression\n    | ClassImplements\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | GenericTypeAnnotation\n    | InterfaceExtends\n    | JSXOpeningElement\n    | NewExpression\n    | OptionalCallExpression\n    | TaggedTemplateExpression;\n  TypeofTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  UnaryExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  UnionTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  UpdateExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  V8IntrinsicIdentifier: CallExpression | NewExpression;\n  VariableDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  VariableDeclarator: VariableDeclaration;\n  Variance:\n    | ClassAccessorProperty\n    | ClassPrivateProperty\n    | ClassProperty\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeIndexer\n    | ObjectTypeProperty\n    | TypeParameter;\n  VoidTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  WhileStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  WithStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  YieldExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n}\n"],"mappings":"","ignoreList":[]}
+{"version":3,"names":[],"sources":["../../../src/ast-types/generated/index.ts"],"sourcesContent":["// NOTE: This file is autogenerated. Do not modify.\n// See packages/babel-types/scripts/generators/ast-types.js for script used.\n\ninterface BaseComment {\n  value: string;\n  start?: number;\n  end?: number;\n  loc?: SourceLocation;\n  // generator will skip the comment if ignore is true\n  ignore?: boolean;\n  type: \"CommentBlock\" | \"CommentLine\";\n}\n\ninterface Position {\n  line: number;\n  column: number;\n  index: number;\n}\n\nexport interface CommentBlock extends BaseComment {\n  type: \"CommentBlock\";\n}\n\nexport interface CommentLine extends BaseComment {\n  type: \"CommentLine\";\n}\n\nexport type Comment = CommentBlock | CommentLine;\n\nexport interface SourceLocation {\n  start: Position;\n  end: Position;\n  filename: string;\n  identifierName: string | undefined | null;\n}\n\ninterface BaseNode {\n  type: Node[\"type\"];\n  leadingComments?: Comment[] | null;\n  innerComments?: Comment[] | null;\n  trailingComments?: Comment[] | null;\n  start?: number | null;\n  end?: number | null;\n  loc?: SourceLocation | null;\n  range?: [number, number];\n  extra?: Record<string, unknown>;\n}\n\nexport type CommentTypeShorthand = \"leading\" | \"inner\" | \"trailing\";\n\nexport type Node =\n  | AnyTypeAnnotation\n  | ArgumentPlaceholder\n  | ArrayExpression\n  | ArrayPattern\n  | ArrayTypeAnnotation\n  | ArrowFunctionExpression\n  | AssignmentExpression\n  | AssignmentPattern\n  | AwaitExpression\n  | BigIntLiteral\n  | BinaryExpression\n  | BindExpression\n  | BlockStatement\n  | BooleanLiteral\n  | BooleanLiteralTypeAnnotation\n  | BooleanTypeAnnotation\n  | BreakStatement\n  | CallExpression\n  | CatchClause\n  | ClassAccessorProperty\n  | ClassBody\n  | ClassDeclaration\n  | ClassExpression\n  | ClassImplements\n  | ClassMethod\n  | ClassPrivateMethod\n  | ClassPrivateProperty\n  | ClassProperty\n  | ConditionalExpression\n  | ContinueStatement\n  | DebuggerStatement\n  | DecimalLiteral\n  | DeclareClass\n  | DeclareExportAllDeclaration\n  | DeclareExportDeclaration\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareOpaqueType\n  | DeclareTypeAlias\n  | DeclareVariable\n  | DeclaredPredicate\n  | Decorator\n  | Directive\n  | DirectiveLiteral\n  | DoExpression\n  | DoWhileStatement\n  | EmptyStatement\n  | EmptyTypeAnnotation\n  | EnumBooleanBody\n  | EnumBooleanMember\n  | EnumDeclaration\n  | EnumDefaultedMember\n  | EnumNumberBody\n  | EnumNumberMember\n  | EnumStringBody\n  | EnumStringMember\n  | EnumSymbolBody\n  | ExistsTypeAnnotation\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportDefaultSpecifier\n  | ExportNamedDeclaration\n  | ExportNamespaceSpecifier\n  | ExportSpecifier\n  | ExpressionStatement\n  | File\n  | ForInStatement\n  | ForOfStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | FunctionTypeAnnotation\n  | FunctionTypeParam\n  | GenericTypeAnnotation\n  | Identifier\n  | IfStatement\n  | Import\n  | ImportAttribute\n  | ImportDeclaration\n  | ImportDefaultSpecifier\n  | ImportExpression\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | IndexedAccessType\n  | InferredPredicate\n  | InterfaceDeclaration\n  | InterfaceExtends\n  | InterfaceTypeAnnotation\n  | InterpreterDirective\n  | IntersectionTypeAnnotation\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXClosingFragment\n  | JSXElement\n  | JSXEmptyExpression\n  | JSXExpressionContainer\n  | JSXFragment\n  | JSXIdentifier\n  | JSXMemberExpression\n  | JSXNamespacedName\n  | JSXOpeningElement\n  | JSXOpeningFragment\n  | JSXSpreadAttribute\n  | JSXSpreadChild\n  | JSXText\n  | LabeledStatement\n  | LogicalExpression\n  | MemberExpression\n  | MetaProperty\n  | MixedTypeAnnotation\n  | ModuleExpression\n  | NewExpression\n  | Noop\n  | NullLiteral\n  | NullLiteralTypeAnnotation\n  | NullableTypeAnnotation\n  | NumberLiteral\n  | NumberLiteralTypeAnnotation\n  | NumberTypeAnnotation\n  | NumericLiteral\n  | ObjectExpression\n  | ObjectMethod\n  | ObjectPattern\n  | ObjectProperty\n  | ObjectTypeAnnotation\n  | ObjectTypeCallProperty\n  | ObjectTypeIndexer\n  | ObjectTypeInternalSlot\n  | ObjectTypeProperty\n  | ObjectTypeSpreadProperty\n  | OpaqueType\n  | OptionalCallExpression\n  | OptionalIndexedAccessType\n  | OptionalMemberExpression\n  | ParenthesizedExpression\n  | PipelineBareFunction\n  | PipelinePrimaryTopicReference\n  | PipelineTopicExpression\n  | Placeholder\n  | PrivateName\n  | Program\n  | QualifiedTypeIdentifier\n  | RecordExpression\n  | RegExpLiteral\n  | RegexLiteral\n  | RestElement\n  | RestProperty\n  | ReturnStatement\n  | SequenceExpression\n  | SpreadElement\n  | SpreadProperty\n  | StaticBlock\n  | StringLiteral\n  | StringLiteralTypeAnnotation\n  | StringTypeAnnotation\n  | Super\n  | SwitchCase\n  | SwitchStatement\n  | SymbolTypeAnnotation\n  | TSAnyKeyword\n  | TSArrayType\n  | TSAsExpression\n  | TSBigIntKeyword\n  | TSBooleanKeyword\n  | TSCallSignatureDeclaration\n  | TSConditionalType\n  | TSConstructSignatureDeclaration\n  | TSConstructorType\n  | TSDeclareFunction\n  | TSDeclareMethod\n  | TSEnumBody\n  | TSEnumDeclaration\n  | TSEnumMember\n  | TSExportAssignment\n  | TSExpressionWithTypeArguments\n  | TSExternalModuleReference\n  | TSFunctionType\n  | TSImportEqualsDeclaration\n  | TSImportType\n  | TSIndexSignature\n  | TSIndexedAccessType\n  | TSInferType\n  | TSInstantiationExpression\n  | TSInterfaceBody\n  | TSInterfaceDeclaration\n  | TSIntersectionType\n  | TSIntrinsicKeyword\n  | TSLiteralType\n  | TSMappedType\n  | TSMethodSignature\n  | TSModuleBlock\n  | TSModuleDeclaration\n  | TSNamedTupleMember\n  | TSNamespaceExportDeclaration\n  | TSNeverKeyword\n  | TSNonNullExpression\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSOptionalType\n  | TSParameterProperty\n  | TSParenthesizedType\n  | TSPropertySignature\n  | TSQualifiedName\n  | TSRestType\n  | TSSatisfiesExpression\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSThisType\n  | TSTupleType\n  | TSTypeAliasDeclaration\n  | TSTypeAnnotation\n  | TSTypeAssertion\n  | TSTypeLiteral\n  | TSTypeOperator\n  | TSTypeParameter\n  | TSTypeParameterDeclaration\n  | TSTypeParameterInstantiation\n  | TSTypePredicate\n  | TSTypeQuery\n  | TSTypeReference\n  | TSUndefinedKeyword\n  | TSUnionType\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TaggedTemplateExpression\n  | TemplateElement\n  | TemplateLiteral\n  | ThisExpression\n  | ThisTypeAnnotation\n  | ThrowStatement\n  | TopicReference\n  | TryStatement\n  | TupleExpression\n  | TupleTypeAnnotation\n  | TypeAlias\n  | TypeAnnotation\n  | TypeCastExpression\n  | TypeParameter\n  | TypeParameterDeclaration\n  | TypeParameterInstantiation\n  | TypeofTypeAnnotation\n  | UnaryExpression\n  | UnionTypeAnnotation\n  | UpdateExpression\n  | V8IntrinsicIdentifier\n  | VariableDeclaration\n  | VariableDeclarator\n  | Variance\n  | VoidTypeAnnotation\n  | WhileStatement\n  | WithStatement\n  | YieldExpression;\n\nexport interface ArrayExpression extends BaseNode {\n  type: \"ArrayExpression\";\n  elements: Array<null | Expression | SpreadElement>;\n}\n\nexport interface AssignmentExpression extends BaseNode {\n  type: \"AssignmentExpression\";\n  operator: string;\n  left: LVal | OptionalMemberExpression;\n  right: Expression;\n}\n\nexport interface BinaryExpression extends BaseNode {\n  type: \"BinaryExpression\";\n  operator:\n    | \"+\"\n    | \"-\"\n    | \"/\"\n    | \"%\"\n    | \"*\"\n    | \"**\"\n    | \"&\"\n    | \"|\"\n    | \">>\"\n    | \">>>\"\n    | \"<<\"\n    | \"^\"\n    | \"==\"\n    | \"===\"\n    | \"!=\"\n    | \"!==\"\n    | \"in\"\n    | \"instanceof\"\n    | \">\"\n    | \"<\"\n    | \">=\"\n    | \"<=\"\n    | \"|>\";\n  left: Expression | PrivateName;\n  right: Expression;\n}\n\nexport interface InterpreterDirective extends BaseNode {\n  type: \"InterpreterDirective\";\n  value: string;\n}\n\nexport interface Directive extends BaseNode {\n  type: \"Directive\";\n  value: DirectiveLiteral;\n}\n\nexport interface DirectiveLiteral extends BaseNode {\n  type: \"DirectiveLiteral\";\n  value: string;\n}\n\nexport interface BlockStatement extends BaseNode {\n  type: \"BlockStatement\";\n  body: Array<Statement>;\n  directives: Array<Directive>;\n}\n\nexport interface BreakStatement extends BaseNode {\n  type: \"BreakStatement\";\n  label?: Identifier | null;\n}\n\nexport interface CallExpression extends BaseNode {\n  type: \"CallExpression\";\n  callee: Expression | Super | V8IntrinsicIdentifier;\n  arguments: Array<Expression | SpreadElement | ArgumentPlaceholder>;\n  optional?: boolean | null;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface CatchClause extends BaseNode {\n  type: \"CatchClause\";\n  param?: Identifier | ArrayPattern | ObjectPattern | null;\n  body: BlockStatement;\n}\n\nexport interface ConditionalExpression extends BaseNode {\n  type: \"ConditionalExpression\";\n  test: Expression;\n  consequent: Expression;\n  alternate: Expression;\n}\n\nexport interface ContinueStatement extends BaseNode {\n  type: \"ContinueStatement\";\n  label?: Identifier | null;\n}\n\nexport interface DebuggerStatement extends BaseNode {\n  type: \"DebuggerStatement\";\n}\n\nexport interface DoWhileStatement extends BaseNode {\n  type: \"DoWhileStatement\";\n  test: Expression;\n  body: Statement;\n}\n\nexport interface EmptyStatement extends BaseNode {\n  type: \"EmptyStatement\";\n}\n\nexport interface ExpressionStatement extends BaseNode {\n  type: \"ExpressionStatement\";\n  expression: Expression;\n}\n\nexport interface File extends BaseNode {\n  type: \"File\";\n  program: Program;\n  comments?: Array<CommentBlock | CommentLine> | null;\n  tokens?: Array<any> | null;\n}\n\nexport interface ForInStatement extends BaseNode {\n  type: \"ForInStatement\";\n  left: VariableDeclaration | LVal;\n  right: Expression;\n  body: Statement;\n}\n\nexport interface ForStatement extends BaseNode {\n  type: \"ForStatement\";\n  init?: VariableDeclaration | Expression | null;\n  test?: Expression | null;\n  update?: Expression | null;\n  body: Statement;\n}\n\nexport interface FunctionDeclaration extends BaseNode {\n  type: \"FunctionDeclaration\";\n  id?: Identifier | null;\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement;\n  generator: boolean;\n  async: boolean;\n  declare?: boolean | null;\n  predicate?: DeclaredPredicate | InferredPredicate | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface FunctionExpression extends BaseNode {\n  type: \"FunctionExpression\";\n  id?: Identifier | null;\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement;\n  generator: boolean;\n  async: boolean;\n  predicate?: DeclaredPredicate | InferredPredicate | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface Identifier extends BaseNode {\n  type: \"Identifier\";\n  name: string;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface IfStatement extends BaseNode {\n  type: \"IfStatement\";\n  test: Expression;\n  consequent: Statement;\n  alternate?: Statement | null;\n}\n\nexport interface LabeledStatement extends BaseNode {\n  type: \"LabeledStatement\";\n  label: Identifier;\n  body: Statement;\n}\n\nexport interface StringLiteral extends BaseNode {\n  type: \"StringLiteral\";\n  value: string;\n}\n\nexport interface NumericLiteral extends BaseNode {\n  type: \"NumericLiteral\";\n  value: number;\n}\n\n/**\n * @deprecated Use `NumericLiteral`\n */\nexport interface NumberLiteral extends BaseNode {\n  type: \"NumberLiteral\";\n  value: number;\n}\n\nexport interface NullLiteral extends BaseNode {\n  type: \"NullLiteral\";\n}\n\nexport interface BooleanLiteral extends BaseNode {\n  type: \"BooleanLiteral\";\n  value: boolean;\n}\n\nexport interface RegExpLiteral extends BaseNode {\n  type: \"RegExpLiteral\";\n  pattern: string;\n  flags: string;\n}\n\n/**\n * @deprecated Use `RegExpLiteral`\n */\nexport interface RegexLiteral extends BaseNode {\n  type: \"RegexLiteral\";\n  pattern: string;\n  flags: string;\n}\n\nexport interface LogicalExpression extends BaseNode {\n  type: \"LogicalExpression\";\n  operator: \"||\" | \"&&\" | \"??\";\n  left: Expression;\n  right: Expression;\n}\n\nexport interface MemberExpression extends BaseNode {\n  type: \"MemberExpression\";\n  object: Expression | Super;\n  property: Expression | Identifier | PrivateName;\n  computed: boolean;\n  optional?: boolean | null;\n}\n\nexport interface NewExpression extends BaseNode {\n  type: \"NewExpression\";\n  callee: Expression | Super | V8IntrinsicIdentifier;\n  arguments: Array<Expression | SpreadElement | ArgumentPlaceholder>;\n  optional?: boolean | null;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface Program extends BaseNode {\n  type: \"Program\";\n  body: Array<Statement>;\n  directives: Array<Directive>;\n  sourceType: \"script\" | \"module\";\n  interpreter?: InterpreterDirective | null;\n}\n\nexport interface ObjectExpression extends BaseNode {\n  type: \"ObjectExpression\";\n  properties: Array<ObjectMethod | ObjectProperty | SpreadElement>;\n}\n\nexport interface ObjectMethod extends BaseNode {\n  type: \"ObjectMethod\";\n  kind: \"method\" | \"get\" | \"set\";\n  key: Expression | Identifier | StringLiteral | NumericLiteral | BigIntLiteral;\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement;\n  computed: boolean;\n  generator: boolean;\n  async: boolean;\n  decorators?: Array<Decorator> | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ObjectProperty extends BaseNode {\n  type: \"ObjectProperty\";\n  key:\n    | Expression\n    | Identifier\n    | StringLiteral\n    | NumericLiteral\n    | BigIntLiteral\n    | DecimalLiteral\n    | PrivateName;\n  value: Expression | PatternLike;\n  computed: boolean;\n  shorthand: boolean;\n  decorators?: Array<Decorator> | null;\n}\n\nexport interface RestElement extends BaseNode {\n  type: \"RestElement\";\n  argument: LVal;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\n/**\n * @deprecated Use `RestElement`\n */\nexport interface RestProperty extends BaseNode {\n  type: \"RestProperty\";\n  argument: LVal;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ReturnStatement extends BaseNode {\n  type: \"ReturnStatement\";\n  argument?: Expression | null;\n}\n\nexport interface SequenceExpression extends BaseNode {\n  type: \"SequenceExpression\";\n  expressions: Array<Expression>;\n}\n\nexport interface ParenthesizedExpression extends BaseNode {\n  type: \"ParenthesizedExpression\";\n  expression: Expression;\n}\n\nexport interface SwitchCase extends BaseNode {\n  type: \"SwitchCase\";\n  test?: Expression | null;\n  consequent: Array<Statement>;\n}\n\nexport interface SwitchStatement extends BaseNode {\n  type: \"SwitchStatement\";\n  discriminant: Expression;\n  cases: Array<SwitchCase>;\n}\n\nexport interface ThisExpression extends BaseNode {\n  type: \"ThisExpression\";\n}\n\nexport interface ThrowStatement extends BaseNode {\n  type: \"ThrowStatement\";\n  argument: Expression;\n}\n\nexport interface TryStatement extends BaseNode {\n  type: \"TryStatement\";\n  block: BlockStatement;\n  handler?: CatchClause | null;\n  finalizer?: BlockStatement | null;\n}\n\nexport interface UnaryExpression extends BaseNode {\n  type: \"UnaryExpression\";\n  operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\";\n  argument: Expression;\n  prefix: boolean;\n}\n\nexport interface UpdateExpression extends BaseNode {\n  type: \"UpdateExpression\";\n  operator: \"++\" | \"--\";\n  argument: Expression;\n  prefix: boolean;\n}\n\nexport interface VariableDeclaration extends BaseNode {\n  type: \"VariableDeclaration\";\n  kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\";\n  declarations: Array<VariableDeclarator>;\n  declare?: boolean | null;\n}\n\nexport interface VariableDeclarator extends BaseNode {\n  type: \"VariableDeclarator\";\n  id: LVal;\n  init?: Expression | null;\n  definite?: boolean | null;\n}\n\nexport interface WhileStatement extends BaseNode {\n  type: \"WhileStatement\";\n  test: Expression;\n  body: Statement;\n}\n\nexport interface WithStatement extends BaseNode {\n  type: \"WithStatement\";\n  object: Expression;\n  body: Statement;\n}\n\nexport interface AssignmentPattern extends BaseNode {\n  type: \"AssignmentPattern\";\n  left:\n    | Identifier\n    | ObjectPattern\n    | ArrayPattern\n    | MemberExpression\n    | TSAsExpression\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TSNonNullExpression;\n  right: Expression;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ArrayPattern extends BaseNode {\n  type: \"ArrayPattern\";\n  elements: Array<null | PatternLike | LVal>;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface ArrowFunctionExpression extends BaseNode {\n  type: \"ArrowFunctionExpression\";\n  params: Array<Identifier | Pattern | RestElement>;\n  body: BlockStatement | Expression;\n  async: boolean;\n  expression: boolean;\n  generator?: boolean;\n  predicate?: DeclaredPredicate | InferredPredicate | null;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ClassBody extends BaseNode {\n  type: \"ClassBody\";\n  body: Array<\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassProperty\n    | ClassPrivateProperty\n    | ClassAccessorProperty\n    | TSDeclareMethod\n    | TSIndexSignature\n    | StaticBlock\n  >;\n}\n\nexport interface ClassExpression extends BaseNode {\n  type: \"ClassExpression\";\n  id?: Identifier | null;\n  superClass?: Expression | null;\n  body: ClassBody;\n  decorators?: Array<Decorator> | null;\n  implements?: Array<TSExpressionWithTypeArguments | ClassImplements> | null;\n  mixins?: InterfaceExtends | null;\n  superTypeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ClassDeclaration extends BaseNode {\n  type: \"ClassDeclaration\";\n  id?: Identifier | null;\n  superClass?: Expression | null;\n  body: ClassBody;\n  decorators?: Array<Decorator> | null;\n  abstract?: boolean | null;\n  declare?: boolean | null;\n  implements?: Array<TSExpressionWithTypeArguments | ClassImplements> | null;\n  mixins?: InterfaceExtends | null;\n  superTypeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ExportAllDeclaration extends BaseNode {\n  type: \"ExportAllDeclaration\";\n  source: StringLiteral;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  attributes?: Array<ImportAttribute> | null;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ExportDefaultDeclaration extends BaseNode {\n  type: \"ExportDefaultDeclaration\";\n  declaration:\n    | TSDeclareFunction\n    | FunctionDeclaration\n    | ClassDeclaration\n    | Expression;\n  exportKind?: \"value\" | null;\n}\n\nexport interface ExportNamedDeclaration extends BaseNode {\n  type: \"ExportNamedDeclaration\";\n  declaration?: Declaration | null;\n  specifiers: Array<\n    ExportSpecifier | ExportDefaultSpecifier | ExportNamespaceSpecifier\n  >;\n  source?: StringLiteral | null;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  attributes?: Array<ImportAttribute> | null;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ExportSpecifier extends BaseNode {\n  type: \"ExportSpecifier\";\n  local: Identifier;\n  exported: Identifier | StringLiteral;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface ForOfStatement extends BaseNode {\n  type: \"ForOfStatement\";\n  left: VariableDeclaration | LVal;\n  right: Expression;\n  body: Statement;\n  await: boolean;\n}\n\nexport interface ImportDeclaration extends BaseNode {\n  type: \"ImportDeclaration\";\n  specifiers: Array<\n    ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier\n  >;\n  source: StringLiteral;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  attributes?: Array<ImportAttribute> | null;\n  importKind?: \"type\" | \"typeof\" | \"value\" | null;\n  module?: boolean | null;\n  phase?: \"source\" | \"defer\" | null;\n}\n\nexport interface ImportDefaultSpecifier extends BaseNode {\n  type: \"ImportDefaultSpecifier\";\n  local: Identifier;\n}\n\nexport interface ImportNamespaceSpecifier extends BaseNode {\n  type: \"ImportNamespaceSpecifier\";\n  local: Identifier;\n}\n\nexport interface ImportSpecifier extends BaseNode {\n  type: \"ImportSpecifier\";\n  local: Identifier;\n  imported: Identifier | StringLiteral;\n  importKind?: \"type\" | \"typeof\" | \"value\" | null;\n}\n\nexport interface ImportExpression extends BaseNode {\n  type: \"ImportExpression\";\n  source: Expression;\n  options?: Expression | null;\n  phase?: \"source\" | \"defer\" | null;\n}\n\nexport interface MetaProperty extends BaseNode {\n  type: \"MetaProperty\";\n  meta: Identifier;\n  property: Identifier;\n}\n\nexport interface ClassMethod extends BaseNode {\n  type: \"ClassMethod\";\n  kind: \"get\" | \"set\" | \"method\" | \"constructor\";\n  key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n  params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;\n  body: BlockStatement;\n  computed: boolean;\n  static: boolean;\n  generator: boolean;\n  async: boolean;\n  abstract?: boolean | null;\n  access?: \"public\" | \"private\" | \"protected\" | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  override?: boolean;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface ObjectPattern extends BaseNode {\n  type: \"ObjectPattern\";\n  properties: Array<RestElement | ObjectProperty>;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface SpreadElement extends BaseNode {\n  type: \"SpreadElement\";\n  argument: Expression;\n}\n\n/**\n * @deprecated Use `SpreadElement`\n */\nexport interface SpreadProperty extends BaseNode {\n  type: \"SpreadProperty\";\n  argument: Expression;\n}\n\nexport interface Super extends BaseNode {\n  type: \"Super\";\n}\n\nexport interface TaggedTemplateExpression extends BaseNode {\n  type: \"TaggedTemplateExpression\";\n  tag: Expression;\n  quasi: TemplateLiteral;\n  typeParameters?:\n    | TypeParameterInstantiation\n    | TSTypeParameterInstantiation\n    | null;\n}\n\nexport interface TemplateElement extends BaseNode {\n  type: \"TemplateElement\";\n  value: { raw: string; cooked?: string };\n  tail: boolean;\n}\n\nexport interface TemplateLiteral extends BaseNode {\n  type: \"TemplateLiteral\";\n  quasis: Array<TemplateElement>;\n  expressions: Array<Expression | TSType>;\n}\n\nexport interface YieldExpression extends BaseNode {\n  type: \"YieldExpression\";\n  argument?: Expression | null;\n  delegate: boolean;\n}\n\nexport interface AwaitExpression extends BaseNode {\n  type: \"AwaitExpression\";\n  argument: Expression;\n}\n\nexport interface Import extends BaseNode {\n  type: \"Import\";\n}\n\nexport interface BigIntLiteral extends BaseNode {\n  type: \"BigIntLiteral\";\n  value: string;\n}\n\nexport interface ExportNamespaceSpecifier extends BaseNode {\n  type: \"ExportNamespaceSpecifier\";\n  exported: Identifier;\n}\n\nexport interface OptionalMemberExpression extends BaseNode {\n  type: \"OptionalMemberExpression\";\n  object: Expression;\n  property: Expression | Identifier;\n  computed: boolean;\n  optional: boolean;\n}\n\nexport interface OptionalCallExpression extends BaseNode {\n  type: \"OptionalCallExpression\";\n  callee: Expression;\n  arguments: Array<Expression | SpreadElement | ArgumentPlaceholder>;\n  optional: boolean;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface ClassProperty extends BaseNode {\n  type: \"ClassProperty\";\n  key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n  value?: Expression | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  decorators?: Array<Decorator> | null;\n  computed: boolean;\n  static: boolean;\n  abstract?: boolean | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  declare?: boolean | null;\n  definite?: boolean | null;\n  optional?: boolean | null;\n  override?: boolean;\n  readonly?: boolean | null;\n  variance?: Variance | null;\n}\n\nexport interface ClassAccessorProperty extends BaseNode {\n  type: \"ClassAccessorProperty\";\n  key:\n    | Identifier\n    | StringLiteral\n    | NumericLiteral\n    | BigIntLiteral\n    | Expression\n    | PrivateName;\n  value?: Expression | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  decorators?: Array<Decorator> | null;\n  computed: boolean;\n  static: boolean;\n  abstract?: boolean | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  declare?: boolean | null;\n  definite?: boolean | null;\n  optional?: boolean | null;\n  override?: boolean;\n  readonly?: boolean | null;\n  variance?: Variance | null;\n}\n\nexport interface ClassPrivateProperty extends BaseNode {\n  type: \"ClassPrivateProperty\";\n  key: PrivateName;\n  value?: Expression | null;\n  decorators?: Array<Decorator> | null;\n  static: boolean;\n  definite?: boolean | null;\n  readonly?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  variance?: Variance | null;\n}\n\nexport interface ClassPrivateMethod extends BaseNode {\n  type: \"ClassPrivateMethod\";\n  kind: \"get\" | \"set\" | \"method\";\n  key: PrivateName;\n  params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;\n  body: BlockStatement;\n  static: boolean;\n  abstract?: boolean | null;\n  access?: \"public\" | \"private\" | \"protected\" | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  async?: boolean;\n  computed?: boolean;\n  decorators?: Array<Decorator> | null;\n  generator?: boolean;\n  optional?: boolean | null;\n  override?: boolean;\n  returnType?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n  typeParameters?:\n    | TypeParameterDeclaration\n    | TSTypeParameterDeclaration\n    | Noop\n    | null;\n}\n\nexport interface PrivateName extends BaseNode {\n  type: \"PrivateName\";\n  id: Identifier;\n}\n\nexport interface StaticBlock extends BaseNode {\n  type: \"StaticBlock\";\n  body: Array<Statement>;\n}\n\nexport interface AnyTypeAnnotation extends BaseNode {\n  type: \"AnyTypeAnnotation\";\n}\n\nexport interface ArrayTypeAnnotation extends BaseNode {\n  type: \"ArrayTypeAnnotation\";\n  elementType: FlowType;\n}\n\nexport interface BooleanTypeAnnotation extends BaseNode {\n  type: \"BooleanTypeAnnotation\";\n}\n\nexport interface BooleanLiteralTypeAnnotation extends BaseNode {\n  type: \"BooleanLiteralTypeAnnotation\";\n  value: boolean;\n}\n\nexport interface NullLiteralTypeAnnotation extends BaseNode {\n  type: \"NullLiteralTypeAnnotation\";\n}\n\nexport interface ClassImplements extends BaseNode {\n  type: \"ClassImplements\";\n  id: Identifier;\n  typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface DeclareClass extends BaseNode {\n  type: \"DeclareClass\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n  implements?: Array<ClassImplements> | null;\n  mixins?: Array<InterfaceExtends> | null;\n}\n\nexport interface DeclareFunction extends BaseNode {\n  type: \"DeclareFunction\";\n  id: Identifier;\n  predicate?: DeclaredPredicate | null;\n}\n\nexport interface DeclareInterface extends BaseNode {\n  type: \"DeclareInterface\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n}\n\nexport interface DeclareModule extends BaseNode {\n  type: \"DeclareModule\";\n  id: Identifier | StringLiteral;\n  body: BlockStatement;\n  kind?: \"CommonJS\" | \"ES\" | null;\n}\n\nexport interface DeclareModuleExports extends BaseNode {\n  type: \"DeclareModuleExports\";\n  typeAnnotation: TypeAnnotation;\n}\n\nexport interface DeclareTypeAlias extends BaseNode {\n  type: \"DeclareTypeAlias\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  right: FlowType;\n}\n\nexport interface DeclareOpaqueType extends BaseNode {\n  type: \"DeclareOpaqueType\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  supertype?: FlowType | null;\n  impltype?: FlowType | null;\n}\n\nexport interface DeclareVariable extends BaseNode {\n  type: \"DeclareVariable\";\n  id: Identifier;\n}\n\nexport interface DeclareExportDeclaration extends BaseNode {\n  type: \"DeclareExportDeclaration\";\n  declaration?: Flow | null;\n  specifiers?: Array<ExportSpecifier | ExportNamespaceSpecifier> | null;\n  source?: StringLiteral | null;\n  attributes?: Array<ImportAttribute> | null;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  default?: boolean | null;\n}\n\nexport interface DeclareExportAllDeclaration extends BaseNode {\n  type: \"DeclareExportAllDeclaration\";\n  source: StringLiteral;\n  attributes?: Array<ImportAttribute> | null;\n  /** @deprecated */\n  assertions?: Array<ImportAttribute> | null;\n  exportKind?: \"type\" | \"value\" | null;\n}\n\nexport interface DeclaredPredicate extends BaseNode {\n  type: \"DeclaredPredicate\";\n  value: Flow;\n}\n\nexport interface ExistsTypeAnnotation extends BaseNode {\n  type: \"ExistsTypeAnnotation\";\n}\n\nexport interface FunctionTypeAnnotation extends BaseNode {\n  type: \"FunctionTypeAnnotation\";\n  typeParameters?: TypeParameterDeclaration | null;\n  params: Array<FunctionTypeParam>;\n  rest?: FunctionTypeParam | null;\n  returnType: FlowType;\n  this?: FunctionTypeParam | null;\n}\n\nexport interface FunctionTypeParam extends BaseNode {\n  type: \"FunctionTypeParam\";\n  name?: Identifier | null;\n  typeAnnotation: FlowType;\n  optional?: boolean | null;\n}\n\nexport interface GenericTypeAnnotation extends BaseNode {\n  type: \"GenericTypeAnnotation\";\n  id: Identifier | QualifiedTypeIdentifier;\n  typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface InferredPredicate extends BaseNode {\n  type: \"InferredPredicate\";\n}\n\nexport interface InterfaceExtends extends BaseNode {\n  type: \"InterfaceExtends\";\n  id: Identifier | QualifiedTypeIdentifier;\n  typeParameters?: TypeParameterInstantiation | null;\n}\n\nexport interface InterfaceDeclaration extends BaseNode {\n  type: \"InterfaceDeclaration\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n}\n\nexport interface InterfaceTypeAnnotation extends BaseNode {\n  type: \"InterfaceTypeAnnotation\";\n  extends?: Array<InterfaceExtends> | null;\n  body: ObjectTypeAnnotation;\n}\n\nexport interface IntersectionTypeAnnotation extends BaseNode {\n  type: \"IntersectionTypeAnnotation\";\n  types: Array<FlowType>;\n}\n\nexport interface MixedTypeAnnotation extends BaseNode {\n  type: \"MixedTypeAnnotation\";\n}\n\nexport interface EmptyTypeAnnotation extends BaseNode {\n  type: \"EmptyTypeAnnotation\";\n}\n\nexport interface NullableTypeAnnotation extends BaseNode {\n  type: \"NullableTypeAnnotation\";\n  typeAnnotation: FlowType;\n}\n\nexport interface NumberLiteralTypeAnnotation extends BaseNode {\n  type: \"NumberLiteralTypeAnnotation\";\n  value: number;\n}\n\nexport interface NumberTypeAnnotation extends BaseNode {\n  type: \"NumberTypeAnnotation\";\n}\n\nexport interface ObjectTypeAnnotation extends BaseNode {\n  type: \"ObjectTypeAnnotation\";\n  properties: Array<ObjectTypeProperty | ObjectTypeSpreadProperty>;\n  indexers?: Array<ObjectTypeIndexer>;\n  callProperties?: Array<ObjectTypeCallProperty>;\n  internalSlots?: Array<ObjectTypeInternalSlot>;\n  exact: boolean;\n  inexact?: boolean | null;\n}\n\nexport interface ObjectTypeInternalSlot extends BaseNode {\n  type: \"ObjectTypeInternalSlot\";\n  id: Identifier;\n  value: FlowType;\n  optional: boolean;\n  static: boolean;\n  method: boolean;\n}\n\nexport interface ObjectTypeCallProperty extends BaseNode {\n  type: \"ObjectTypeCallProperty\";\n  value: FlowType;\n  static: boolean;\n}\n\nexport interface ObjectTypeIndexer extends BaseNode {\n  type: \"ObjectTypeIndexer\";\n  id?: Identifier | null;\n  key: FlowType;\n  value: FlowType;\n  variance?: Variance | null;\n  static: boolean;\n}\n\nexport interface ObjectTypeProperty extends BaseNode {\n  type: \"ObjectTypeProperty\";\n  key: Identifier | StringLiteral;\n  value: FlowType;\n  variance?: Variance | null;\n  kind: \"init\" | \"get\" | \"set\";\n  method: boolean;\n  optional: boolean;\n  proto: boolean;\n  static: boolean;\n}\n\nexport interface ObjectTypeSpreadProperty extends BaseNode {\n  type: \"ObjectTypeSpreadProperty\";\n  argument: FlowType;\n}\n\nexport interface OpaqueType extends BaseNode {\n  type: \"OpaqueType\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  supertype?: FlowType | null;\n  impltype: FlowType;\n}\n\nexport interface QualifiedTypeIdentifier extends BaseNode {\n  type: \"QualifiedTypeIdentifier\";\n  id: Identifier;\n  qualification: Identifier | QualifiedTypeIdentifier;\n}\n\nexport interface StringLiteralTypeAnnotation extends BaseNode {\n  type: \"StringLiteralTypeAnnotation\";\n  value: string;\n}\n\nexport interface StringTypeAnnotation extends BaseNode {\n  type: \"StringTypeAnnotation\";\n}\n\nexport interface SymbolTypeAnnotation extends BaseNode {\n  type: \"SymbolTypeAnnotation\";\n}\n\nexport interface ThisTypeAnnotation extends BaseNode {\n  type: \"ThisTypeAnnotation\";\n}\n\nexport interface TupleTypeAnnotation extends BaseNode {\n  type: \"TupleTypeAnnotation\";\n  types: Array<FlowType>;\n}\n\nexport interface TypeofTypeAnnotation extends BaseNode {\n  type: \"TypeofTypeAnnotation\";\n  argument: FlowType;\n}\n\nexport interface TypeAlias extends BaseNode {\n  type: \"TypeAlias\";\n  id: Identifier;\n  typeParameters?: TypeParameterDeclaration | null;\n  right: FlowType;\n}\n\nexport interface TypeAnnotation extends BaseNode {\n  type: \"TypeAnnotation\";\n  typeAnnotation: FlowType;\n}\n\nexport interface TypeCastExpression extends BaseNode {\n  type: \"TypeCastExpression\";\n  expression: Expression;\n  typeAnnotation: TypeAnnotation;\n}\n\nexport interface TypeParameter extends BaseNode {\n  type: \"TypeParameter\";\n  bound?: TypeAnnotation | null;\n  default?: FlowType | null;\n  variance?: Variance | null;\n  name: string;\n}\n\nexport interface TypeParameterDeclaration extends BaseNode {\n  type: \"TypeParameterDeclaration\";\n  params: Array<TypeParameter>;\n}\n\nexport interface TypeParameterInstantiation extends BaseNode {\n  type: \"TypeParameterInstantiation\";\n  params: Array<FlowType>;\n}\n\nexport interface UnionTypeAnnotation extends BaseNode {\n  type: \"UnionTypeAnnotation\";\n  types: Array<FlowType>;\n}\n\nexport interface Variance extends BaseNode {\n  type: \"Variance\";\n  kind: \"minus\" | \"plus\";\n}\n\nexport interface VoidTypeAnnotation extends BaseNode {\n  type: \"VoidTypeAnnotation\";\n}\n\nexport interface EnumDeclaration extends BaseNode {\n  type: \"EnumDeclaration\";\n  id: Identifier;\n  body: EnumBooleanBody | EnumNumberBody | EnumStringBody | EnumSymbolBody;\n}\n\nexport interface EnumBooleanBody extends BaseNode {\n  type: \"EnumBooleanBody\";\n  members: Array<EnumBooleanMember>;\n  explicitType: boolean;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumNumberBody extends BaseNode {\n  type: \"EnumNumberBody\";\n  members: Array<EnumNumberMember>;\n  explicitType: boolean;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumStringBody extends BaseNode {\n  type: \"EnumStringBody\";\n  members: Array<EnumStringMember | EnumDefaultedMember>;\n  explicitType: boolean;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumSymbolBody extends BaseNode {\n  type: \"EnumSymbolBody\";\n  members: Array<EnumDefaultedMember>;\n  hasUnknownMembers: boolean;\n}\n\nexport interface EnumBooleanMember extends BaseNode {\n  type: \"EnumBooleanMember\";\n  id: Identifier;\n  init: BooleanLiteral;\n}\n\nexport interface EnumNumberMember extends BaseNode {\n  type: \"EnumNumberMember\";\n  id: Identifier;\n  init: NumericLiteral;\n}\n\nexport interface EnumStringMember extends BaseNode {\n  type: \"EnumStringMember\";\n  id: Identifier;\n  init: StringLiteral;\n}\n\nexport interface EnumDefaultedMember extends BaseNode {\n  type: \"EnumDefaultedMember\";\n  id: Identifier;\n}\n\nexport interface IndexedAccessType extends BaseNode {\n  type: \"IndexedAccessType\";\n  objectType: FlowType;\n  indexType: FlowType;\n}\n\nexport interface OptionalIndexedAccessType extends BaseNode {\n  type: \"OptionalIndexedAccessType\";\n  objectType: FlowType;\n  indexType: FlowType;\n  optional: boolean;\n}\n\nexport interface JSXAttribute extends BaseNode {\n  type: \"JSXAttribute\";\n  name: JSXIdentifier | JSXNamespacedName;\n  value?:\n    | JSXElement\n    | JSXFragment\n    | StringLiteral\n    | JSXExpressionContainer\n    | null;\n}\n\nexport interface JSXClosingElement extends BaseNode {\n  type: \"JSXClosingElement\";\n  name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;\n}\n\nexport interface JSXElement extends BaseNode {\n  type: \"JSXElement\";\n  openingElement: JSXOpeningElement;\n  closingElement?: JSXClosingElement | null;\n  children: Array<\n    JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment\n  >;\n  selfClosing?: boolean | null;\n}\n\nexport interface JSXEmptyExpression extends BaseNode {\n  type: \"JSXEmptyExpression\";\n}\n\nexport interface JSXExpressionContainer extends BaseNode {\n  type: \"JSXExpressionContainer\";\n  expression: Expression | JSXEmptyExpression;\n}\n\nexport interface JSXSpreadChild extends BaseNode {\n  type: \"JSXSpreadChild\";\n  expression: Expression;\n}\n\nexport interface JSXIdentifier extends BaseNode {\n  type: \"JSXIdentifier\";\n  name: string;\n}\n\nexport interface JSXMemberExpression extends BaseNode {\n  type: \"JSXMemberExpression\";\n  object: JSXMemberExpression | JSXIdentifier;\n  property: JSXIdentifier;\n}\n\nexport interface JSXNamespacedName extends BaseNode {\n  type: \"JSXNamespacedName\";\n  namespace: JSXIdentifier;\n  name: JSXIdentifier;\n}\n\nexport interface JSXOpeningElement extends BaseNode {\n  type: \"JSXOpeningElement\";\n  name: JSXIdentifier | JSXMemberExpression | JSXNamespacedName;\n  attributes: Array<JSXAttribute | JSXSpreadAttribute>;\n  selfClosing: boolean;\n  typeArguments?: TypeParameterInstantiation | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface JSXSpreadAttribute extends BaseNode {\n  type: \"JSXSpreadAttribute\";\n  argument: Expression;\n}\n\nexport interface JSXText extends BaseNode {\n  type: \"JSXText\";\n  value: string;\n}\n\nexport interface JSXFragment extends BaseNode {\n  type: \"JSXFragment\";\n  openingFragment: JSXOpeningFragment;\n  closingFragment: JSXClosingFragment;\n  children: Array<\n    JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment\n  >;\n}\n\nexport interface JSXOpeningFragment extends BaseNode {\n  type: \"JSXOpeningFragment\";\n}\n\nexport interface JSXClosingFragment extends BaseNode {\n  type: \"JSXClosingFragment\";\n}\n\nexport interface Noop extends BaseNode {\n  type: \"Noop\";\n}\n\nexport interface Placeholder extends BaseNode {\n  type: \"Placeholder\";\n  expectedNode:\n    | \"Identifier\"\n    | \"StringLiteral\"\n    | \"Expression\"\n    | \"Statement\"\n    | \"Declaration\"\n    | \"BlockStatement\"\n    | \"ClassBody\"\n    | \"Pattern\";\n  name: Identifier;\n  decorators?: Array<Decorator> | null;\n  optional?: boolean | null;\n  typeAnnotation?: TypeAnnotation | TSTypeAnnotation | Noop | null;\n}\n\nexport interface V8IntrinsicIdentifier extends BaseNode {\n  type: \"V8IntrinsicIdentifier\";\n  name: string;\n}\n\nexport interface ArgumentPlaceholder extends BaseNode {\n  type: \"ArgumentPlaceholder\";\n}\n\nexport interface BindExpression extends BaseNode {\n  type: \"BindExpression\";\n  object: Expression;\n  callee: Expression;\n}\n\nexport interface ImportAttribute extends BaseNode {\n  type: \"ImportAttribute\";\n  key: Identifier | StringLiteral;\n  value: StringLiteral;\n}\n\nexport interface Decorator extends BaseNode {\n  type: \"Decorator\";\n  expression: Expression;\n}\n\nexport interface DoExpression extends BaseNode {\n  type: \"DoExpression\";\n  body: BlockStatement;\n  async: boolean;\n}\n\nexport interface ExportDefaultSpecifier extends BaseNode {\n  type: \"ExportDefaultSpecifier\";\n  exported: Identifier;\n}\n\nexport interface RecordExpression extends BaseNode {\n  type: \"RecordExpression\";\n  properties: Array<ObjectProperty | SpreadElement>;\n}\n\nexport interface TupleExpression extends BaseNode {\n  type: \"TupleExpression\";\n  elements: Array<Expression | SpreadElement>;\n}\n\nexport interface DecimalLiteral extends BaseNode {\n  type: \"DecimalLiteral\";\n  value: string;\n}\n\nexport interface ModuleExpression extends BaseNode {\n  type: \"ModuleExpression\";\n  body: Program;\n}\n\nexport interface TopicReference extends BaseNode {\n  type: \"TopicReference\";\n}\n\nexport interface PipelineTopicExpression extends BaseNode {\n  type: \"PipelineTopicExpression\";\n  expression: Expression;\n}\n\nexport interface PipelineBareFunction extends BaseNode {\n  type: \"PipelineBareFunction\";\n  callee: Expression;\n}\n\nexport interface PipelinePrimaryTopicReference extends BaseNode {\n  type: \"PipelinePrimaryTopicReference\";\n}\n\nexport interface TSParameterProperty extends BaseNode {\n  type: \"TSParameterProperty\";\n  parameter: Identifier | AssignmentPattern;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  decorators?: Array<Decorator> | null;\n  override?: boolean | null;\n  readonly?: boolean | null;\n}\n\nexport interface TSDeclareFunction extends BaseNode {\n  type: \"TSDeclareFunction\";\n  id?: Identifier | null;\n  typeParameters?: TSTypeParameterDeclaration | Noop | null;\n  params: Array<Identifier | Pattern | RestElement>;\n  returnType?: TSTypeAnnotation | Noop | null;\n  async?: boolean;\n  declare?: boolean | null;\n  generator?: boolean;\n}\n\nexport interface TSDeclareMethod extends BaseNode {\n  type: \"TSDeclareMethod\";\n  decorators?: Array<Decorator> | null;\n  key: Identifier | StringLiteral | NumericLiteral | BigIntLiteral | Expression;\n  typeParameters?: TSTypeParameterDeclaration | Noop | null;\n  params: Array<Identifier | Pattern | RestElement | TSParameterProperty>;\n  returnType?: TSTypeAnnotation | Noop | null;\n  abstract?: boolean | null;\n  access?: \"public\" | \"private\" | \"protected\" | null;\n  accessibility?: \"public\" | \"private\" | \"protected\" | null;\n  async?: boolean;\n  computed?: boolean;\n  generator?: boolean;\n  kind?: \"get\" | \"set\" | \"method\" | \"constructor\";\n  optional?: boolean | null;\n  override?: boolean;\n  static?: boolean;\n}\n\nexport interface TSQualifiedName extends BaseNode {\n  type: \"TSQualifiedName\";\n  left: TSEntityName;\n  right: Identifier;\n}\n\nexport interface TSCallSignatureDeclaration extends BaseNode {\n  type: \"TSCallSignatureDeclaration\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSConstructSignatureDeclaration extends BaseNode {\n  type: \"TSConstructSignatureDeclaration\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSPropertySignature extends BaseNode {\n  type: \"TSPropertySignature\";\n  key: Expression;\n  typeAnnotation?: TSTypeAnnotation | null;\n  computed?: boolean;\n  kind: \"get\" | \"set\";\n  optional?: boolean | null;\n  readonly?: boolean | null;\n}\n\nexport interface TSMethodSignature extends BaseNode {\n  type: \"TSMethodSignature\";\n  key: Expression;\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n  computed?: boolean;\n  kind: \"method\" | \"get\" | \"set\";\n  optional?: boolean | null;\n}\n\nexport interface TSIndexSignature extends BaseNode {\n  type: \"TSIndexSignature\";\n  parameters: Array<Identifier>;\n  typeAnnotation?: TSTypeAnnotation | null;\n  readonly?: boolean | null;\n  static?: boolean | null;\n}\n\nexport interface TSAnyKeyword extends BaseNode {\n  type: \"TSAnyKeyword\";\n}\n\nexport interface TSBooleanKeyword extends BaseNode {\n  type: \"TSBooleanKeyword\";\n}\n\nexport interface TSBigIntKeyword extends BaseNode {\n  type: \"TSBigIntKeyword\";\n}\n\nexport interface TSIntrinsicKeyword extends BaseNode {\n  type: \"TSIntrinsicKeyword\";\n}\n\nexport interface TSNeverKeyword extends BaseNode {\n  type: \"TSNeverKeyword\";\n}\n\nexport interface TSNullKeyword extends BaseNode {\n  type: \"TSNullKeyword\";\n}\n\nexport interface TSNumberKeyword extends BaseNode {\n  type: \"TSNumberKeyword\";\n}\n\nexport interface TSObjectKeyword extends BaseNode {\n  type: \"TSObjectKeyword\";\n}\n\nexport interface TSStringKeyword extends BaseNode {\n  type: \"TSStringKeyword\";\n}\n\nexport interface TSSymbolKeyword extends BaseNode {\n  type: \"TSSymbolKeyword\";\n}\n\nexport interface TSUndefinedKeyword extends BaseNode {\n  type: \"TSUndefinedKeyword\";\n}\n\nexport interface TSUnknownKeyword extends BaseNode {\n  type: \"TSUnknownKeyword\";\n}\n\nexport interface TSVoidKeyword extends BaseNode {\n  type: \"TSVoidKeyword\";\n}\n\nexport interface TSThisType extends BaseNode {\n  type: \"TSThisType\";\n}\n\nexport interface TSFunctionType extends BaseNode {\n  type: \"TSFunctionType\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n}\n\nexport interface TSConstructorType extends BaseNode {\n  type: \"TSConstructorType\";\n  typeParameters?: TSTypeParameterDeclaration | null;\n  parameters: Array<ArrayPattern | Identifier | ObjectPattern | RestElement>;\n  typeAnnotation?: TSTypeAnnotation | null;\n  abstract?: boolean | null;\n}\n\nexport interface TSTypeReference extends BaseNode {\n  type: \"TSTypeReference\";\n  typeName: TSEntityName;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSTypePredicate extends BaseNode {\n  type: \"TSTypePredicate\";\n  parameterName: Identifier | TSThisType;\n  typeAnnotation?: TSTypeAnnotation | null;\n  asserts?: boolean | null;\n}\n\nexport interface TSTypeQuery extends BaseNode {\n  type: \"TSTypeQuery\";\n  exprName: TSEntityName | TSImportType;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSTypeLiteral extends BaseNode {\n  type: \"TSTypeLiteral\";\n  members: Array<TSTypeElement>;\n}\n\nexport interface TSArrayType extends BaseNode {\n  type: \"TSArrayType\";\n  elementType: TSType;\n}\n\nexport interface TSTupleType extends BaseNode {\n  type: \"TSTupleType\";\n  elementTypes: Array<TSType | TSNamedTupleMember>;\n}\n\nexport interface TSOptionalType extends BaseNode {\n  type: \"TSOptionalType\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSRestType extends BaseNode {\n  type: \"TSRestType\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSNamedTupleMember extends BaseNode {\n  type: \"TSNamedTupleMember\";\n  label: Identifier;\n  elementType: TSType;\n  optional: boolean;\n}\n\nexport interface TSUnionType extends BaseNode {\n  type: \"TSUnionType\";\n  types: Array<TSType>;\n}\n\nexport interface TSIntersectionType extends BaseNode {\n  type: \"TSIntersectionType\";\n  types: Array<TSType>;\n}\n\nexport interface TSConditionalType extends BaseNode {\n  type: \"TSConditionalType\";\n  checkType: TSType;\n  extendsType: TSType;\n  trueType: TSType;\n  falseType: TSType;\n}\n\nexport interface TSInferType extends BaseNode {\n  type: \"TSInferType\";\n  typeParameter: TSTypeParameter;\n}\n\nexport interface TSParenthesizedType extends BaseNode {\n  type: \"TSParenthesizedType\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSTypeOperator extends BaseNode {\n  type: \"TSTypeOperator\";\n  typeAnnotation: TSType;\n  operator: string;\n}\n\nexport interface TSIndexedAccessType extends BaseNode {\n  type: \"TSIndexedAccessType\";\n  objectType: TSType;\n  indexType: TSType;\n}\n\nexport interface TSMappedType extends BaseNode {\n  type: \"TSMappedType\";\n  typeParameter: TSTypeParameter;\n  typeAnnotation?: TSType | null;\n  nameType?: TSType | null;\n  optional?: true | false | \"+\" | \"-\" | null;\n  readonly?: true | false | \"+\" | \"-\" | null;\n}\n\nexport interface TSLiteralType extends BaseNode {\n  type: \"TSLiteralType\";\n  literal:\n    | NumericLiteral\n    | StringLiteral\n    | BooleanLiteral\n    | BigIntLiteral\n    | TemplateLiteral\n    | UnaryExpression;\n}\n\nexport interface TSExpressionWithTypeArguments extends BaseNode {\n  type: \"TSExpressionWithTypeArguments\";\n  expression: TSEntityName;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSInterfaceDeclaration extends BaseNode {\n  type: \"TSInterfaceDeclaration\";\n  id: Identifier;\n  typeParameters?: TSTypeParameterDeclaration | null;\n  extends?: Array<TSExpressionWithTypeArguments> | null;\n  body: TSInterfaceBody;\n  declare?: boolean | null;\n}\n\nexport interface TSInterfaceBody extends BaseNode {\n  type: \"TSInterfaceBody\";\n  body: Array<TSTypeElement>;\n}\n\nexport interface TSTypeAliasDeclaration extends BaseNode {\n  type: \"TSTypeAliasDeclaration\";\n  id: Identifier;\n  typeParameters?: TSTypeParameterDeclaration | null;\n  typeAnnotation: TSType;\n  declare?: boolean | null;\n}\n\nexport interface TSInstantiationExpression extends BaseNode {\n  type: \"TSInstantiationExpression\";\n  expression: Expression;\n  typeParameters?: TSTypeParameterInstantiation | null;\n}\n\nexport interface TSAsExpression extends BaseNode {\n  type: \"TSAsExpression\";\n  expression: Expression;\n  typeAnnotation: TSType;\n}\n\nexport interface TSSatisfiesExpression extends BaseNode {\n  type: \"TSSatisfiesExpression\";\n  expression: Expression;\n  typeAnnotation: TSType;\n}\n\nexport interface TSTypeAssertion extends BaseNode {\n  type: \"TSTypeAssertion\";\n  typeAnnotation: TSType;\n  expression: Expression;\n}\n\nexport interface TSEnumBody extends BaseNode {\n  type: \"TSEnumBody\";\n  members: Array<TSEnumMember>;\n}\n\nexport interface TSEnumDeclaration extends BaseNode {\n  type: \"TSEnumDeclaration\";\n  id: Identifier;\n  members: Array<TSEnumMember>;\n  body?: TSEnumBody | null;\n  const?: boolean | null;\n  declare?: boolean | null;\n  initializer?: Expression | null;\n}\n\nexport interface TSEnumMember extends BaseNode {\n  type: \"TSEnumMember\";\n  id: Identifier | StringLiteral;\n  initializer?: Expression | null;\n}\n\nexport interface TSModuleDeclaration extends BaseNode {\n  type: \"TSModuleDeclaration\";\n  id: Identifier | StringLiteral;\n  body: TSModuleBlock | TSModuleDeclaration;\n  declare?: boolean | null;\n  global?: boolean | null;\n  kind: \"global\" | \"module\" | \"namespace\";\n}\n\nexport interface TSModuleBlock extends BaseNode {\n  type: \"TSModuleBlock\";\n  body: Array<Statement>;\n}\n\nexport interface TSImportType extends BaseNode {\n  type: \"TSImportType\";\n  argument: StringLiteral;\n  qualifier?: TSEntityName | null;\n  typeParameters?: TSTypeParameterInstantiation | null;\n  options?: Expression | null;\n}\n\nexport interface TSImportEqualsDeclaration extends BaseNode {\n  type: \"TSImportEqualsDeclaration\";\n  id: Identifier;\n  moduleReference: TSEntityName | TSExternalModuleReference;\n  importKind?: \"type\" | \"value\" | null;\n  isExport: boolean;\n}\n\nexport interface TSExternalModuleReference extends BaseNode {\n  type: \"TSExternalModuleReference\";\n  expression: StringLiteral;\n}\n\nexport interface TSNonNullExpression extends BaseNode {\n  type: \"TSNonNullExpression\";\n  expression: Expression;\n}\n\nexport interface TSExportAssignment extends BaseNode {\n  type: \"TSExportAssignment\";\n  expression: Expression;\n}\n\nexport interface TSNamespaceExportDeclaration extends BaseNode {\n  type: \"TSNamespaceExportDeclaration\";\n  id: Identifier;\n}\n\nexport interface TSTypeAnnotation extends BaseNode {\n  type: \"TSTypeAnnotation\";\n  typeAnnotation: TSType;\n}\n\nexport interface TSTypeParameterInstantiation extends BaseNode {\n  type: \"TSTypeParameterInstantiation\";\n  params: Array<TSType>;\n}\n\nexport interface TSTypeParameterDeclaration extends BaseNode {\n  type: \"TSTypeParameterDeclaration\";\n  params: Array<TSTypeParameter>;\n}\n\nexport interface TSTypeParameter extends BaseNode {\n  type: \"TSTypeParameter\";\n  constraint?: TSType | null;\n  default?: TSType | null;\n  name: string;\n  const?: boolean | null;\n  in?: boolean | null;\n  out?: boolean | null;\n}\n\nexport type Standardized =\n  | ArrayExpression\n  | AssignmentExpression\n  | BinaryExpression\n  | InterpreterDirective\n  | Directive\n  | DirectiveLiteral\n  | BlockStatement\n  | BreakStatement\n  | CallExpression\n  | CatchClause\n  | ConditionalExpression\n  | ContinueStatement\n  | DebuggerStatement\n  | DoWhileStatement\n  | EmptyStatement\n  | ExpressionStatement\n  | File\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Identifier\n  | IfStatement\n  | LabeledStatement\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | LogicalExpression\n  | MemberExpression\n  | NewExpression\n  | Program\n  | ObjectExpression\n  | ObjectMethod\n  | ObjectProperty\n  | RestElement\n  | ReturnStatement\n  | SequenceExpression\n  | ParenthesizedExpression\n  | SwitchCase\n  | SwitchStatement\n  | ThisExpression\n  | ThrowStatement\n  | TryStatement\n  | UnaryExpression\n  | UpdateExpression\n  | VariableDeclaration\n  | VariableDeclarator\n  | WhileStatement\n  | WithStatement\n  | AssignmentPattern\n  | ArrayPattern\n  | ArrowFunctionExpression\n  | ClassBody\n  | ClassExpression\n  | ClassDeclaration\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ExportSpecifier\n  | ForOfStatement\n  | ImportDeclaration\n  | ImportDefaultSpecifier\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | ImportExpression\n  | MetaProperty\n  | ClassMethod\n  | ObjectPattern\n  | SpreadElement\n  | Super\n  | TaggedTemplateExpression\n  | TemplateElement\n  | TemplateLiteral\n  | YieldExpression\n  | AwaitExpression\n  | Import\n  | BigIntLiteral\n  | ExportNamespaceSpecifier\n  | OptionalMemberExpression\n  | OptionalCallExpression\n  | ClassProperty\n  | ClassAccessorProperty\n  | ClassPrivateProperty\n  | ClassPrivateMethod\n  | PrivateName\n  | StaticBlock;\nexport type Expression =\n  | ArrayExpression\n  | AssignmentExpression\n  | BinaryExpression\n  | CallExpression\n  | ConditionalExpression\n  | FunctionExpression\n  | Identifier\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | LogicalExpression\n  | MemberExpression\n  | NewExpression\n  | ObjectExpression\n  | SequenceExpression\n  | ParenthesizedExpression\n  | ThisExpression\n  | UnaryExpression\n  | UpdateExpression\n  | ArrowFunctionExpression\n  | ClassExpression\n  | ImportExpression\n  | MetaProperty\n  | Super\n  | TaggedTemplateExpression\n  | TemplateLiteral\n  | YieldExpression\n  | AwaitExpression\n  | Import\n  | BigIntLiteral\n  | OptionalMemberExpression\n  | OptionalCallExpression\n  | TypeCastExpression\n  | JSXElement\n  | JSXFragment\n  | BindExpression\n  | DoExpression\n  | RecordExpression\n  | TupleExpression\n  | DecimalLiteral\n  | ModuleExpression\n  | TopicReference\n  | PipelineTopicExpression\n  | PipelineBareFunction\n  | PipelinePrimaryTopicReference\n  | TSInstantiationExpression\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSNonNullExpression;\nexport type Binary = BinaryExpression | LogicalExpression;\nexport type Scopable =\n  | BlockStatement\n  | CatchClause\n  | DoWhileStatement\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Program\n  | ObjectMethod\n  | SwitchStatement\n  | WhileStatement\n  | ArrowFunctionExpression\n  | ClassExpression\n  | ClassDeclaration\n  | ForOfStatement\n  | ClassMethod\n  | ClassPrivateMethod\n  | StaticBlock\n  | TSModuleBlock;\nexport type BlockParent =\n  | BlockStatement\n  | CatchClause\n  | DoWhileStatement\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | FunctionExpression\n  | Program\n  | ObjectMethod\n  | SwitchStatement\n  | WhileStatement\n  | ArrowFunctionExpression\n  | ForOfStatement\n  | ClassMethod\n  | ClassPrivateMethod\n  | StaticBlock\n  | TSModuleBlock;\nexport type Block = BlockStatement | Program | TSModuleBlock;\nexport type Statement =\n  | BlockStatement\n  | BreakStatement\n  | ContinueStatement\n  | DebuggerStatement\n  | DoWhileStatement\n  | EmptyStatement\n  | ExpressionStatement\n  | ForInStatement\n  | ForStatement\n  | FunctionDeclaration\n  | IfStatement\n  | LabeledStatement\n  | ReturnStatement\n  | SwitchStatement\n  | ThrowStatement\n  | TryStatement\n  | VariableDeclaration\n  | WhileStatement\n  | WithStatement\n  | ClassDeclaration\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ForOfStatement\n  | ImportDeclaration\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | InterfaceDeclaration\n  | OpaqueType\n  | TypeAlias\n  | EnumDeclaration\n  | TSDeclareFunction\n  | TSInterfaceDeclaration\n  | TSTypeAliasDeclaration\n  | TSEnumDeclaration\n  | TSModuleDeclaration\n  | TSImportEqualsDeclaration\n  | TSExportAssignment\n  | TSNamespaceExportDeclaration;\nexport type Terminatorless =\n  | BreakStatement\n  | ContinueStatement\n  | ReturnStatement\n  | ThrowStatement\n  | YieldExpression\n  | AwaitExpression;\nexport type CompletionStatement =\n  | BreakStatement\n  | ContinueStatement\n  | ReturnStatement\n  | ThrowStatement;\nexport type Conditional = ConditionalExpression | IfStatement;\nexport type Loop =\n  | DoWhileStatement\n  | ForInStatement\n  | ForStatement\n  | WhileStatement\n  | ForOfStatement;\nexport type While = DoWhileStatement | WhileStatement;\nexport type ExpressionWrapper =\n  | ExpressionStatement\n  | ParenthesizedExpression\n  | TypeCastExpression;\nexport type For = ForInStatement | ForStatement | ForOfStatement;\nexport type ForXStatement = ForInStatement | ForOfStatement;\nexport type Function =\n  | FunctionDeclaration\n  | FunctionExpression\n  | ObjectMethod\n  | ArrowFunctionExpression\n  | ClassMethod\n  | ClassPrivateMethod;\nexport type FunctionParent =\n  | FunctionDeclaration\n  | FunctionExpression\n  | ObjectMethod\n  | ArrowFunctionExpression\n  | ClassMethod\n  | ClassPrivateMethod\n  | StaticBlock\n  | TSModuleBlock;\nexport type Pureish =\n  | FunctionDeclaration\n  | FunctionExpression\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | ArrowFunctionExpression\n  | BigIntLiteral\n  | DecimalLiteral;\nexport type Declaration =\n  | FunctionDeclaration\n  | VariableDeclaration\n  | ClassDeclaration\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ImportDeclaration\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | InterfaceDeclaration\n  | OpaqueType\n  | TypeAlias\n  | EnumDeclaration\n  | TSDeclareFunction\n  | TSInterfaceDeclaration\n  | TSTypeAliasDeclaration\n  | TSEnumDeclaration\n  | TSModuleDeclaration;\nexport type PatternLike =\n  | Identifier\n  | RestElement\n  | AssignmentPattern\n  | ArrayPattern\n  | ObjectPattern\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSNonNullExpression;\nexport type LVal =\n  | Identifier\n  | MemberExpression\n  | RestElement\n  | AssignmentPattern\n  | ArrayPattern\n  | ObjectPattern\n  | TSParameterProperty\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSNonNullExpression;\nexport type TSEntityName = Identifier | TSQualifiedName;\nexport type Literal =\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | RegExpLiteral\n  | TemplateLiteral\n  | BigIntLiteral\n  | DecimalLiteral;\nexport type Immutable =\n  | StringLiteral\n  | NumericLiteral\n  | NullLiteral\n  | BooleanLiteral\n  | BigIntLiteral\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXElement\n  | JSXExpressionContainer\n  | JSXSpreadChild\n  | JSXOpeningElement\n  | JSXText\n  | JSXFragment\n  | JSXOpeningFragment\n  | JSXClosingFragment\n  | DecimalLiteral;\nexport type UserWhitespacable =\n  | ObjectMethod\n  | ObjectProperty\n  | ObjectTypeInternalSlot\n  | ObjectTypeCallProperty\n  | ObjectTypeIndexer\n  | ObjectTypeProperty\n  | ObjectTypeSpreadProperty;\nexport type Method = ObjectMethod | ClassMethod | ClassPrivateMethod;\nexport type ObjectMember = ObjectMethod | ObjectProperty;\nexport type Property =\n  | ObjectProperty\n  | ClassProperty\n  | ClassAccessorProperty\n  | ClassPrivateProperty;\nexport type UnaryLike = UnaryExpression | SpreadElement;\nexport type Pattern = AssignmentPattern | ArrayPattern | ObjectPattern;\nexport type Class = ClassExpression | ClassDeclaration;\nexport type ImportOrExportDeclaration =\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ImportDeclaration;\nexport type ExportDeclaration =\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration;\nexport type ModuleSpecifier =\n  | ExportSpecifier\n  | ImportDefaultSpecifier\n  | ImportNamespaceSpecifier\n  | ImportSpecifier\n  | ExportNamespaceSpecifier\n  | ExportDefaultSpecifier;\nexport type Accessor = ClassAccessorProperty;\nexport type Private = ClassPrivateProperty | ClassPrivateMethod | PrivateName;\nexport type Flow =\n  | AnyTypeAnnotation\n  | ArrayTypeAnnotation\n  | BooleanTypeAnnotation\n  | BooleanLiteralTypeAnnotation\n  | NullLiteralTypeAnnotation\n  | ClassImplements\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | DeclaredPredicate\n  | ExistsTypeAnnotation\n  | FunctionTypeAnnotation\n  | FunctionTypeParam\n  | GenericTypeAnnotation\n  | InferredPredicate\n  | InterfaceExtends\n  | InterfaceDeclaration\n  | InterfaceTypeAnnotation\n  | IntersectionTypeAnnotation\n  | MixedTypeAnnotation\n  | EmptyTypeAnnotation\n  | NullableTypeAnnotation\n  | NumberLiteralTypeAnnotation\n  | NumberTypeAnnotation\n  | ObjectTypeAnnotation\n  | ObjectTypeInternalSlot\n  | ObjectTypeCallProperty\n  | ObjectTypeIndexer\n  | ObjectTypeProperty\n  | ObjectTypeSpreadProperty\n  | OpaqueType\n  | QualifiedTypeIdentifier\n  | StringLiteralTypeAnnotation\n  | StringTypeAnnotation\n  | SymbolTypeAnnotation\n  | ThisTypeAnnotation\n  | TupleTypeAnnotation\n  | TypeofTypeAnnotation\n  | TypeAlias\n  | TypeAnnotation\n  | TypeCastExpression\n  | TypeParameter\n  | TypeParameterDeclaration\n  | TypeParameterInstantiation\n  | UnionTypeAnnotation\n  | Variance\n  | VoidTypeAnnotation\n  | EnumDeclaration\n  | EnumBooleanBody\n  | EnumNumberBody\n  | EnumStringBody\n  | EnumSymbolBody\n  | EnumBooleanMember\n  | EnumNumberMember\n  | EnumStringMember\n  | EnumDefaultedMember\n  | IndexedAccessType\n  | OptionalIndexedAccessType;\nexport type FlowType =\n  | AnyTypeAnnotation\n  | ArrayTypeAnnotation\n  | BooleanTypeAnnotation\n  | BooleanLiteralTypeAnnotation\n  | NullLiteralTypeAnnotation\n  | ExistsTypeAnnotation\n  | FunctionTypeAnnotation\n  | GenericTypeAnnotation\n  | InterfaceTypeAnnotation\n  | IntersectionTypeAnnotation\n  | MixedTypeAnnotation\n  | EmptyTypeAnnotation\n  | NullableTypeAnnotation\n  | NumberLiteralTypeAnnotation\n  | NumberTypeAnnotation\n  | ObjectTypeAnnotation\n  | StringLiteralTypeAnnotation\n  | StringTypeAnnotation\n  | SymbolTypeAnnotation\n  | ThisTypeAnnotation\n  | TupleTypeAnnotation\n  | TypeofTypeAnnotation\n  | UnionTypeAnnotation\n  | VoidTypeAnnotation\n  | IndexedAccessType\n  | OptionalIndexedAccessType;\nexport type FlowBaseAnnotation =\n  | AnyTypeAnnotation\n  | BooleanTypeAnnotation\n  | NullLiteralTypeAnnotation\n  | MixedTypeAnnotation\n  | EmptyTypeAnnotation\n  | NumberTypeAnnotation\n  | StringTypeAnnotation\n  | SymbolTypeAnnotation\n  | ThisTypeAnnotation\n  | VoidTypeAnnotation;\nexport type FlowDeclaration =\n  | DeclareClass\n  | DeclareFunction\n  | DeclareInterface\n  | DeclareModule\n  | DeclareModuleExports\n  | DeclareTypeAlias\n  | DeclareOpaqueType\n  | DeclareVariable\n  | DeclareExportDeclaration\n  | DeclareExportAllDeclaration\n  | InterfaceDeclaration\n  | OpaqueType\n  | TypeAlias;\nexport type FlowPredicate = DeclaredPredicate | InferredPredicate;\nexport type EnumBody =\n  | EnumBooleanBody\n  | EnumNumberBody\n  | EnumStringBody\n  | EnumSymbolBody;\nexport type EnumMember =\n  | EnumBooleanMember\n  | EnumNumberMember\n  | EnumStringMember\n  | EnumDefaultedMember;\nexport type JSX =\n  | JSXAttribute\n  | JSXClosingElement\n  | JSXElement\n  | JSXEmptyExpression\n  | JSXExpressionContainer\n  | JSXSpreadChild\n  | JSXIdentifier\n  | JSXMemberExpression\n  | JSXNamespacedName\n  | JSXOpeningElement\n  | JSXSpreadAttribute\n  | JSXText\n  | JSXFragment\n  | JSXOpeningFragment\n  | JSXClosingFragment;\nexport type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;\nexport type TypeScript =\n  | TSParameterProperty\n  | TSDeclareFunction\n  | TSDeclareMethod\n  | TSQualifiedName\n  | TSCallSignatureDeclaration\n  | TSConstructSignatureDeclaration\n  | TSPropertySignature\n  | TSMethodSignature\n  | TSIndexSignature\n  | TSAnyKeyword\n  | TSBooleanKeyword\n  | TSBigIntKeyword\n  | TSIntrinsicKeyword\n  | TSNeverKeyword\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSUndefinedKeyword\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TSThisType\n  | TSFunctionType\n  | TSConstructorType\n  | TSTypeReference\n  | TSTypePredicate\n  | TSTypeQuery\n  | TSTypeLiteral\n  | TSArrayType\n  | TSTupleType\n  | TSOptionalType\n  | TSRestType\n  | TSNamedTupleMember\n  | TSUnionType\n  | TSIntersectionType\n  | TSConditionalType\n  | TSInferType\n  | TSParenthesizedType\n  | TSTypeOperator\n  | TSIndexedAccessType\n  | TSMappedType\n  | TSLiteralType\n  | TSExpressionWithTypeArguments\n  | TSInterfaceDeclaration\n  | TSInterfaceBody\n  | TSTypeAliasDeclaration\n  | TSInstantiationExpression\n  | TSAsExpression\n  | TSSatisfiesExpression\n  | TSTypeAssertion\n  | TSEnumBody\n  | TSEnumDeclaration\n  | TSEnumMember\n  | TSModuleDeclaration\n  | TSModuleBlock\n  | TSImportType\n  | TSImportEqualsDeclaration\n  | TSExternalModuleReference\n  | TSNonNullExpression\n  | TSExportAssignment\n  | TSNamespaceExportDeclaration\n  | TSTypeAnnotation\n  | TSTypeParameterInstantiation\n  | TSTypeParameterDeclaration\n  | TSTypeParameter;\nexport type TSTypeElement =\n  | TSCallSignatureDeclaration\n  | TSConstructSignatureDeclaration\n  | TSPropertySignature\n  | TSMethodSignature\n  | TSIndexSignature;\nexport type TSType =\n  | TSAnyKeyword\n  | TSBooleanKeyword\n  | TSBigIntKeyword\n  | TSIntrinsicKeyword\n  | TSNeverKeyword\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSUndefinedKeyword\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TSThisType\n  | TSFunctionType\n  | TSConstructorType\n  | TSTypeReference\n  | TSTypePredicate\n  | TSTypeQuery\n  | TSTypeLiteral\n  | TSArrayType\n  | TSTupleType\n  | TSOptionalType\n  | TSRestType\n  | TSUnionType\n  | TSIntersectionType\n  | TSConditionalType\n  | TSInferType\n  | TSParenthesizedType\n  | TSTypeOperator\n  | TSIndexedAccessType\n  | TSMappedType\n  | TSLiteralType\n  | TSExpressionWithTypeArguments\n  | TSImportType;\nexport type TSBaseType =\n  | TSAnyKeyword\n  | TSBooleanKeyword\n  | TSBigIntKeyword\n  | TSIntrinsicKeyword\n  | TSNeverKeyword\n  | TSNullKeyword\n  | TSNumberKeyword\n  | TSObjectKeyword\n  | TSStringKeyword\n  | TSSymbolKeyword\n  | TSUndefinedKeyword\n  | TSUnknownKeyword\n  | TSVoidKeyword\n  | TSThisType\n  | TSLiteralType;\nexport type ModuleDeclaration =\n  | ExportAllDeclaration\n  | ExportDefaultDeclaration\n  | ExportNamedDeclaration\n  | ImportDeclaration;\n\nexport interface Aliases {\n  Standardized: Standardized;\n  Expression: Expression;\n  Binary: Binary;\n  Scopable: Scopable;\n  BlockParent: BlockParent;\n  Block: Block;\n  Statement: Statement;\n  Terminatorless: Terminatorless;\n  CompletionStatement: CompletionStatement;\n  Conditional: Conditional;\n  Loop: Loop;\n  While: While;\n  ExpressionWrapper: ExpressionWrapper;\n  For: For;\n  ForXStatement: ForXStatement;\n  Function: Function;\n  FunctionParent: FunctionParent;\n  Pureish: Pureish;\n  Declaration: Declaration;\n  PatternLike: PatternLike;\n  LVal: LVal;\n  TSEntityName: TSEntityName;\n  Literal: Literal;\n  Immutable: Immutable;\n  UserWhitespacable: UserWhitespacable;\n  Method: Method;\n  ObjectMember: ObjectMember;\n  Property: Property;\n  UnaryLike: UnaryLike;\n  Pattern: Pattern;\n  Class: Class;\n  ImportOrExportDeclaration: ImportOrExportDeclaration;\n  ExportDeclaration: ExportDeclaration;\n  ModuleSpecifier: ModuleSpecifier;\n  Accessor: Accessor;\n  Private: Private;\n  Flow: Flow;\n  FlowType: FlowType;\n  FlowBaseAnnotation: FlowBaseAnnotation;\n  FlowDeclaration: FlowDeclaration;\n  FlowPredicate: FlowPredicate;\n  EnumBody: EnumBody;\n  EnumMember: EnumMember;\n  JSX: JSX;\n  Miscellaneous: Miscellaneous;\n  TypeScript: TypeScript;\n  TSTypeElement: TSTypeElement;\n  TSType: TSType;\n  TSBaseType: TSBaseType;\n  ModuleDeclaration: ModuleDeclaration;\n}\n\nexport type DeprecatedAliases =\n  | NumberLiteral\n  | RegexLiteral\n  | RestProperty\n  | SpreadProperty;\n\nexport interface ParentMaps {\n  AnyTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ArgumentPlaceholder: CallExpression | NewExpression | OptionalCallExpression;\n  ArrayExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ArrayPattern:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | CatchClause\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectProperty\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSMethodSignature\n    | VariableDeclarator;\n  ArrayTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ArrowFunctionExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  AssignmentExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  AssignmentPattern:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectProperty\n    | RestElement\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSParameterProperty\n    | VariableDeclarator;\n  AwaitExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BigIntLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BinaryExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BindExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BlockStatement:\n    | ArrowFunctionExpression\n    | BlockStatement\n    | CatchClause\n    | ClassMethod\n    | ClassPrivateMethod\n    | DeclareModule\n    | DoExpression\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | IfStatement\n    | LabeledStatement\n    | ObjectMethod\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | TryStatement\n    | WhileStatement\n    | WithStatement;\n  BooleanLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | EnumBooleanMember\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  BooleanLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  BooleanTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  BreakStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  CallExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  CatchClause: TryStatement;\n  ClassAccessorProperty: ClassBody;\n  ClassBody: ClassDeclaration | ClassExpression;\n  ClassDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ClassExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ClassImplements:\n    | ClassDeclaration\n    | ClassExpression\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclaredPredicate;\n  ClassMethod: ClassBody;\n  ClassPrivateMethod: ClassBody;\n  ClassPrivateProperty: ClassBody;\n  ClassProperty: ClassBody;\n  CommentBlock: File;\n  CommentLine: File;\n  ConditionalExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ContinueStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DebuggerStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DecimalLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  DeclareClass:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareExportAllDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareExportDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareFunction:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareInterface:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareModule:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareModuleExports:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareOpaqueType:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareTypeAlias:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclareVariable:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  DeclaredPredicate:\n    | ArrowFunctionExpression\n    | DeclareExportDeclaration\n    | DeclareFunction\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression;\n  Decorator:\n    | ArrayPattern\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | ObjectProperty\n    | Placeholder\n    | RestElement\n    | TSDeclareMethod\n    | TSParameterProperty;\n  Directive: BlockStatement | Program;\n  DirectiveLiteral: Directive;\n  DoExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  DoWhileStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  EmptyStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  EmptyTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  EnumBooleanBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  EnumBooleanMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumBooleanBody;\n  EnumDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  EnumDefaultedMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumStringBody\n    | EnumSymbolBody;\n  EnumNumberBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  EnumNumberMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumNumberBody;\n  EnumStringBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  EnumStringMember:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumStringBody;\n  EnumSymbolBody:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | EnumDeclaration;\n  ExistsTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ExportAllDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ExportDefaultDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ExportDefaultSpecifier: ExportNamedDeclaration;\n  ExportNamedDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ExportNamespaceSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;\n  ExportSpecifier: DeclareExportDeclaration | ExportNamedDeclaration;\n  ExpressionStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  File: null;\n  ForInStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ForOfStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ForStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  FunctionDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  FunctionExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  FunctionTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  FunctionTypeParam:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | FunctionTypeAnnotation;\n  GenericTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  Identifier:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | BreakStatement\n    | CallExpression\n    | CatchClause\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassImplements\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | ContinueStatement\n    | DeclareClass\n    | DeclareFunction\n    | DeclareInterface\n    | DeclareModule\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclareVariable\n    | Decorator\n    | DoWhileStatement\n    | EnumBooleanMember\n    | EnumDeclaration\n    | EnumDefaultedMember\n    | EnumNumberMember\n    | EnumStringMember\n    | ExportDefaultDeclaration\n    | ExportDefaultSpecifier\n    | ExportNamespaceSpecifier\n    | ExportSpecifier\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | FunctionTypeParam\n    | GenericTypeAnnotation\n    | IfStatement\n    | ImportAttribute\n    | ImportDefaultSpecifier\n    | ImportExpression\n    | ImportNamespaceSpecifier\n    | ImportSpecifier\n    | InterfaceDeclaration\n    | InterfaceExtends\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LabeledStatement\n    | LogicalExpression\n    | MemberExpression\n    | MetaProperty\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | OpaqueType\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | Placeholder\n    | PrivateName\n    | QualifiedTypeIdentifier\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSExpressionWithTypeArguments\n    | TSFunctionType\n    | TSImportEqualsDeclaration\n    | TSImportType\n    | TSIndexSignature\n    | TSInstantiationExpression\n    | TSInterfaceDeclaration\n    | TSMethodSignature\n    | TSModuleDeclaration\n    | TSNamedTupleMember\n    | TSNamespaceExportDeclaration\n    | TSNonNullExpression\n    | TSParameterProperty\n    | TSPropertySignature\n    | TSQualifiedName\n    | TSSatisfiesExpression\n    | TSTypeAliasDeclaration\n    | TSTypeAssertion\n    | TSTypePredicate\n    | TSTypeQuery\n    | TSTypeReference\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeAlias\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  IfStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  Import:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ImportAttribute:\n    | DeclareExportAllDeclaration\n    | DeclareExportDeclaration\n    | ExportAllDeclaration\n    | ExportNamedDeclaration\n    | ImportDeclaration;\n  ImportDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  ImportDefaultSpecifier: ImportDeclaration;\n  ImportExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ImportNamespaceSpecifier: ImportDeclaration;\n  ImportSpecifier: ImportDeclaration;\n  IndexedAccessType:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  InferredPredicate:\n    | ArrowFunctionExpression\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression;\n  InterfaceDeclaration:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  InterfaceExtends:\n    | ClassDeclaration\n    | ClassExpression\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclareInterface\n    | DeclaredPredicate\n    | InterfaceDeclaration\n    | InterfaceTypeAnnotation;\n  InterfaceTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  InterpreterDirective: Program;\n  IntersectionTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  JSXAttribute: JSXOpeningElement;\n  JSXClosingElement: JSXElement;\n  JSXClosingFragment: JSXFragment;\n  JSXElement:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXAttribute\n    | JSXElement\n    | JSXExpressionContainer\n    | JSXFragment\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  JSXEmptyExpression: JSXExpressionContainer;\n  JSXExpressionContainer: JSXAttribute | JSXElement | JSXFragment;\n  JSXFragment:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXAttribute\n    | JSXElement\n    | JSXExpressionContainer\n    | JSXFragment\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  JSXIdentifier:\n    | JSXAttribute\n    | JSXClosingElement\n    | JSXMemberExpression\n    | JSXNamespacedName\n    | JSXOpeningElement;\n  JSXMemberExpression:\n    | JSXClosingElement\n    | JSXMemberExpression\n    | JSXOpeningElement;\n  JSXNamespacedName: JSXAttribute | JSXClosingElement | JSXOpeningElement;\n  JSXOpeningElement: JSXElement;\n  JSXOpeningFragment: JSXFragment;\n  JSXSpreadAttribute: JSXOpeningElement;\n  JSXSpreadChild: JSXElement | JSXFragment;\n  JSXText: JSXElement | JSXFragment;\n  LabeledStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  LogicalExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  MemberExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  MetaProperty:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  MixedTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ModuleExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  NewExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  Noop:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | FunctionDeclaration\n    | FunctionExpression\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | Placeholder\n    | RestElement\n    | TSDeclareFunction\n    | TSDeclareMethod;\n  NullLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  NullLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NullableTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NumberLiteral: null;\n  NumberLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NumberTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  NumericLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | EnumNumberMember\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ObjectExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ObjectMethod: ObjectExpression;\n  ObjectPattern:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | CatchClause\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectProperty\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSMethodSignature\n    | VariableDeclarator;\n  ObjectProperty: ObjectExpression | ObjectPattern | RecordExpression;\n  ObjectTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclareInterface\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | InterfaceDeclaration\n    | InterfaceTypeAnnotation\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ObjectTypeCallProperty:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeIndexer:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeInternalSlot:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeProperty:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  ObjectTypeSpreadProperty:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeAnnotation;\n  OpaqueType:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  OptionalCallExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  OptionalIndexedAccessType:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  OptionalMemberExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ParenthesizedExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  PipelineBareFunction:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  PipelinePrimaryTopicReference:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  PipelineTopicExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  Placeholder: Node;\n  PrivateName:\n    | BinaryExpression\n    | ClassAccessorProperty\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | MemberExpression\n    | ObjectProperty;\n  Program: File | ModuleExpression;\n  QualifiedTypeIdentifier:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | GenericTypeAnnotation\n    | InterfaceExtends\n    | QualifiedTypeIdentifier;\n  RecordExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  RegExpLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  RegexLiteral: null;\n  RestElement:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | ObjectPattern\n    | ObjectProperty\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSMethodSignature\n    | VariableDeclarator;\n  RestProperty: null;\n  ReturnStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  SequenceExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  SpreadElement:\n    | ArrayExpression\n    | CallExpression\n    | NewExpression\n    | ObjectExpression\n    | OptionalCallExpression\n    | RecordExpression\n    | TupleExpression;\n  SpreadProperty: null;\n  StaticBlock: ClassBody;\n  StringLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | DeclareExportAllDeclaration\n    | DeclareExportDeclaration\n    | DeclareModule\n    | Decorator\n    | DoWhileStatement\n    | EnumStringMember\n    | ExportAllDeclaration\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ExportSpecifier\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportAttribute\n    | ImportDeclaration\n    | ImportExpression\n    | ImportSpecifier\n    | JSXAttribute\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | ObjectTypeProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSExternalModuleReference\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSModuleDeclaration\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  StringLiteralTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  StringTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  Super:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  SwitchCase: SwitchStatement;\n  SwitchStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  SymbolTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  TSAnyKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSArrayType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSAsExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSBigIntKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSBooleanKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSCallSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;\n  TSConditionalType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSConstructSignatureDeclaration: TSInterfaceBody | TSTypeLiteral;\n  TSConstructorType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSDeclareFunction:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSDeclareMethod: ClassBody;\n  TSEnumBody: TSEnumDeclaration;\n  TSEnumDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSEnumMember: TSEnumBody | TSEnumDeclaration;\n  TSExportAssignment:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSExpressionWithTypeArguments:\n    | ClassDeclaration\n    | ClassExpression\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSInterfaceDeclaration\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSExternalModuleReference: TSImportEqualsDeclaration;\n  TSFunctionType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSImportEqualsDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSImportType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSTypeQuery\n    | TSUnionType\n    | TemplateLiteral;\n  TSIndexSignature: ClassBody | TSInterfaceBody | TSTypeLiteral;\n  TSIndexedAccessType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSInferType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSInstantiationExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSInterfaceBody: TSInterfaceDeclaration;\n  TSInterfaceDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSIntersectionType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSIntrinsicKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSLiteralType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSMappedType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSMethodSignature: TSInterfaceBody | TSTypeLiteral;\n  TSModuleBlock: TSModuleDeclaration;\n  TSModuleDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | TSModuleDeclaration\n    | WhileStatement\n    | WithStatement;\n  TSNamedTupleMember: TSTupleType;\n  TSNamespaceExportDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSNeverKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSNonNullExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSNullKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSNumberKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSObjectKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSOptionalType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSParameterProperty:\n    | ArrayPattern\n    | AssignmentExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | ForInStatement\n    | ForOfStatement\n    | RestElement\n    | TSDeclareMethod\n    | VariableDeclarator;\n  TSParenthesizedType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSPropertySignature: TSInterfaceBody | TSTypeLiteral;\n  TSQualifiedName:\n    | TSExpressionWithTypeArguments\n    | TSImportEqualsDeclaration\n    | TSImportType\n    | TSQualifiedName\n    | TSTypeQuery\n    | TSTypeReference;\n  TSRestType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSSatisfiesExpression:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSStringKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSSymbolKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSThisType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSTypePredicate\n    | TSUnionType\n    | TemplateLiteral;\n  TSTupleType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeAliasDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TSTypeAnnotation:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | FunctionDeclaration\n    | FunctionExpression\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | Placeholder\n    | RestElement\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSIndexSignature\n    | TSMethodSignature\n    | TSPropertySignature\n    | TSTypePredicate;\n  TSTypeAssertion:\n    | ArrayExpression\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | RestElement\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TSTypeLiteral:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeOperator:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeParameter: TSInferType | TSMappedType | TSTypeParameterDeclaration;\n  TSTypeParameterDeclaration:\n    | ArrowFunctionExpression\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | FunctionDeclaration\n    | FunctionExpression\n    | ObjectMethod\n    | TSCallSignatureDeclaration\n    | TSConstructSignatureDeclaration\n    | TSConstructorType\n    | TSDeclareFunction\n    | TSDeclareMethod\n    | TSFunctionType\n    | TSInterfaceDeclaration\n    | TSMethodSignature\n    | TSTypeAliasDeclaration;\n  TSTypeParameterInstantiation:\n    | CallExpression\n    | ClassDeclaration\n    | ClassExpression\n    | JSXOpeningElement\n    | NewExpression\n    | OptionalCallExpression\n    | TSExpressionWithTypeArguments\n    | TSImportType\n    | TSInstantiationExpression\n    | TSTypeQuery\n    | TSTypeReference\n    | TaggedTemplateExpression;\n  TSTypePredicate:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeQuery:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSTypeReference:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSUndefinedKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSUnionType:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSUnknownKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TSVoidKeyword:\n    | TSArrayType\n    | TSAsExpression\n    | TSConditionalType\n    | TSIndexedAccessType\n    | TSIntersectionType\n    | TSMappedType\n    | TSNamedTupleMember\n    | TSOptionalType\n    | TSParenthesizedType\n    | TSRestType\n    | TSSatisfiesExpression\n    | TSTupleType\n    | TSTypeAliasDeclaration\n    | TSTypeAnnotation\n    | TSTypeAssertion\n    | TSTypeOperator\n    | TSTypeParameter\n    | TSTypeParameterInstantiation\n    | TSUnionType\n    | TemplateLiteral;\n  TaggedTemplateExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TemplateElement: TemplateLiteral;\n  TemplateLiteral:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ThisExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  ThisTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  ThrowStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TopicReference:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TryStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TupleExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TupleTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  TypeAlias:\n    | BlockStatement\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  TypeAnnotation:\n    | ArrayPattern\n    | ArrowFunctionExpression\n    | AssignmentPattern\n    | ClassAccessorProperty\n    | ClassMethod\n    | ClassPrivateMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | DeclareExportDeclaration\n    | DeclareModuleExports\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression\n    | Identifier\n    | ObjectMethod\n    | ObjectPattern\n    | Placeholder\n    | RestElement\n    | TypeCastExpression\n    | TypeParameter;\n  TypeCastExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  TypeParameter:\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | TypeParameterDeclaration;\n  TypeParameterDeclaration:\n    | ArrowFunctionExpression\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateMethod\n    | DeclareClass\n    | DeclareExportDeclaration\n    | DeclareInterface\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionDeclaration\n    | FunctionExpression\n    | FunctionTypeAnnotation\n    | InterfaceDeclaration\n    | ObjectMethod\n    | OpaqueType\n    | TypeAlias;\n  TypeParameterInstantiation:\n    | CallExpression\n    | ClassDeclaration\n    | ClassExpression\n    | ClassImplements\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | GenericTypeAnnotation\n    | InterfaceExtends\n    | JSXOpeningElement\n    | NewExpression\n    | OptionalCallExpression\n    | TaggedTemplateExpression;\n  TypeofTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  UnaryExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSLiteralType\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  UnionTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  UpdateExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n  V8IntrinsicIdentifier: CallExpression | NewExpression;\n  VariableDeclaration:\n    | BlockStatement\n    | DoWhileStatement\n    | ExportNamedDeclaration\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  VariableDeclarator: VariableDeclaration;\n  Variance:\n    | ClassAccessorProperty\n    | ClassPrivateProperty\n    | ClassProperty\n    | DeclareExportDeclaration\n    | DeclaredPredicate\n    | ObjectTypeIndexer\n    | ObjectTypeProperty\n    | TypeParameter;\n  VoidTypeAnnotation:\n    | ArrayTypeAnnotation\n    | DeclareExportDeclaration\n    | DeclareOpaqueType\n    | DeclareTypeAlias\n    | DeclaredPredicate\n    | FunctionTypeAnnotation\n    | FunctionTypeParam\n    | IndexedAccessType\n    | IntersectionTypeAnnotation\n    | NullableTypeAnnotation\n    | ObjectTypeCallProperty\n    | ObjectTypeIndexer\n    | ObjectTypeInternalSlot\n    | ObjectTypeProperty\n    | ObjectTypeSpreadProperty\n    | OpaqueType\n    | OptionalIndexedAccessType\n    | TupleTypeAnnotation\n    | TypeAlias\n    | TypeAnnotation\n    | TypeParameter\n    | TypeParameterInstantiation\n    | TypeofTypeAnnotation\n    | UnionTypeAnnotation;\n  WhileStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  WithStatement:\n    | BlockStatement\n    | DoWhileStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | LabeledStatement\n    | Program\n    | StaticBlock\n    | SwitchCase\n    | TSModuleBlock\n    | WhileStatement\n    | WithStatement;\n  YieldExpression:\n    | ArrayExpression\n    | ArrowFunctionExpression\n    | AssignmentExpression\n    | AssignmentPattern\n    | AwaitExpression\n    | BinaryExpression\n    | BindExpression\n    | CallExpression\n    | ClassAccessorProperty\n    | ClassDeclaration\n    | ClassExpression\n    | ClassMethod\n    | ClassPrivateProperty\n    | ClassProperty\n    | ConditionalExpression\n    | Decorator\n    | DoWhileStatement\n    | ExportDefaultDeclaration\n    | ExpressionStatement\n    | ForInStatement\n    | ForOfStatement\n    | ForStatement\n    | IfStatement\n    | ImportExpression\n    | JSXExpressionContainer\n    | JSXSpreadAttribute\n    | JSXSpreadChild\n    | LogicalExpression\n    | MemberExpression\n    | NewExpression\n    | ObjectMethod\n    | ObjectProperty\n    | OptionalCallExpression\n    | OptionalMemberExpression\n    | ParenthesizedExpression\n    | PipelineBareFunction\n    | PipelineTopicExpression\n    | ReturnStatement\n    | SequenceExpression\n    | SpreadElement\n    | SwitchCase\n    | SwitchStatement\n    | TSAsExpression\n    | TSDeclareMethod\n    | TSEnumDeclaration\n    | TSEnumMember\n    | TSExportAssignment\n    | TSImportType\n    | TSInstantiationExpression\n    | TSMethodSignature\n    | TSNonNullExpression\n    | TSPropertySignature\n    | TSSatisfiesExpression\n    | TSTypeAssertion\n    | TaggedTemplateExpression\n    | TemplateLiteral\n    | ThrowStatement\n    | TupleExpression\n    | TypeCastExpression\n    | UnaryExpression\n    | UpdateExpression\n    | VariableDeclarator\n    | WhileStatement\n    | WithStatement\n    | YieldExpression;\n}\n"],"mappings":"","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/builders/generated/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/builders/generated/index.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/builders/generated/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -184,4 +184,5 @@
 exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction;
 exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod;
+exports.tSEnumBody = exports.tsEnumBody = tsEnumBody;
 exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration;
 exports.tSEnumMember = exports.tsEnumMember = tsEnumMember;
@@ -2702,4 +2703,13 @@
   return node;
 }
+function tsEnumBody(members) {
+  const node = {
+    type: "TSEnumBody",
+    members
+  };
+  const defs = NODE_FIELDS.TSEnumBody;
+  validate(defs.members, node, "members", members, 1);
+  return node;
+}
 function tsEnumDeclaration(id, members) {
   const node = {
Index: imaps-frontend/node_modules/@babel/types/lib/builders/generated/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/builders/generated/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/builders/generated/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_validate","require","_deprecationWarning","utils","validateInternal","validate","NODE_FIELDS","arrayExpression","elements","node","type","defs","ArrayExpression","assignmentExpression","operator","left","right","AssignmentExpression","binaryExpression","BinaryExpression","interpreterDirective","value","InterpreterDirective","directive","Directive","directiveLiteral","DirectiveLiteral","blockStatement","body","directives","BlockStatement","breakStatement","label","BreakStatement","callExpression","callee","_arguments","arguments","CallExpression","catchClause","param","CatchClause","conditionalExpression","test","consequent","alternate","ConditionalExpression","continueStatement","ContinueStatement","debuggerStatement","doWhileStatement","DoWhileStatement","emptyStatement","expressionStatement","expression","ExpressionStatement","file","program","comments","tokens","File","forInStatement","ForInStatement","forStatement","init","update","ForStatement","functionDeclaration","id","params","generator","async","FunctionDeclaration","functionExpression","FunctionExpression","identifier","name","Identifier","ifStatement","IfStatement","labeledStatement","LabeledStatement","stringLiteral","StringLiteral","numericLiteral","NumericLiteral","nullLiteral","booleanLiteral","BooleanLiteral","regExpLiteral","pattern","flags","RegExpLiteral","logicalExpression","LogicalExpression","memberExpression","object","property","computed","optional","MemberExpression","newExpression","NewExpression","sourceType","interpreter","Program","objectExpression","properties","ObjectExpression","objectMethod","kind","key","ObjectMethod","objectProperty","shorthand","decorators","ObjectProperty","restElement","argument","RestElement","returnStatement","ReturnStatement","sequenceExpression","expressions","SequenceExpression","parenthesizedExpression","ParenthesizedExpression","switchCase","SwitchCase","switchStatement","discriminant","cases","SwitchStatement","thisExpression","throwStatement","ThrowStatement","tryStatement","block","handler","finalizer","TryStatement","unaryExpression","prefix","UnaryExpression","updateExpression","UpdateExpression","variableDeclaration","declarations","VariableDeclaration","variableDeclarator","VariableDeclarator","whileStatement","WhileStatement","withStatement","WithStatement","assignmentPattern","AssignmentPattern","arrayPattern","ArrayPattern","arrowFunctionExpression","ArrowFunctionExpression","classBody","ClassBody","classExpression","superClass","ClassExpression","classDeclaration","ClassDeclaration","exportAllDeclaration","source","ExportAllDeclaration","exportDefaultDeclaration","declaration","ExportDefaultDeclaration","exportNamedDeclaration","specifiers","ExportNamedDeclaration","exportSpecifier","local","exported","ExportSpecifier","forOfStatement","_await","await","ForOfStatement","importDeclaration","ImportDeclaration","importDefaultSpecifier","ImportDefaultSpecifier","importNamespaceSpecifier","ImportNamespaceSpecifier","importSpecifier","imported","ImportSpecifier","importExpression","options","ImportExpression","metaProperty","meta","MetaProperty","classMethod","_static","static","ClassMethod","objectPattern","ObjectPattern","spreadElement","SpreadElement","_super","taggedTemplateExpression","tag","quasi","TaggedTemplateExpression","templateElement","tail","TemplateElement","templateLiteral","quasis","TemplateLiteral","yieldExpression","delegate","YieldExpression","awaitExpression","AwaitExpression","_import","bigIntLiteral","BigIntLiteral","exportNamespaceSpecifier","ExportNamespaceSpecifier","optionalMemberExpression","OptionalMemberExpression","optionalCallExpression","OptionalCallExpression","classProperty","typeAnnotation","ClassProperty","classAccessorProperty","ClassAccessorProperty","classPrivateProperty","ClassPrivateProperty","classPrivateMethod","ClassPrivateMethod","privateName","PrivateName","staticBlock","StaticBlock","anyTypeAnnotation","arrayTypeAnnotation","elementType","ArrayTypeAnnotation","booleanTypeAnnotation","booleanLiteralTypeAnnotation","BooleanLiteralTypeAnnotation","nullLiteralTypeAnnotation","classImplements","typeParameters","ClassImplements","declareClass","_extends","extends","DeclareClass","declareFunction","DeclareFunction","declareInterface","DeclareInterface","declareModule","DeclareModule","declareModuleExports","DeclareModuleExports","declareTypeAlias","DeclareTypeAlias","declareOpaqueType","supertype","DeclareOpaqueType","declareVariable","DeclareVariable","declareExportDeclaration","attributes","DeclareExportDeclaration","declareExportAllDeclaration","DeclareExportAllDeclaration","declaredPredicate","DeclaredPredicate","existsTypeAnnotation","functionTypeAnnotation","rest","returnType","FunctionTypeAnnotation","functionTypeParam","FunctionTypeParam","genericTypeAnnotation","GenericTypeAnnotation","inferredPredicate","interfaceExtends","InterfaceExtends","interfaceDeclaration","InterfaceDeclaration","interfaceTypeAnnotation","InterfaceTypeAnnotation","intersectionTypeAnnotation","types","IntersectionTypeAnnotation","mixedTypeAnnotation","emptyTypeAnnotation","nullableTypeAnnotation","NullableTypeAnnotation","numberLiteralTypeAnnotation","NumberLiteralTypeAnnotation","numberTypeAnnotation","objectTypeAnnotation","indexers","callProperties","internalSlots","exact","ObjectTypeAnnotation","objectTypeInternalSlot","method","ObjectTypeInternalSlot","objectTypeCallProperty","ObjectTypeCallProperty","objectTypeIndexer","variance","ObjectTypeIndexer","objectTypeProperty","proto","ObjectTypeProperty","objectTypeSpreadProperty","ObjectTypeSpreadProperty","opaqueType","impltype","OpaqueType","qualifiedTypeIdentifier","qualification","QualifiedTypeIdentifier","stringLiteralTypeAnnotation","StringLiteralTypeAnnotation","stringTypeAnnotation","symbolTypeAnnotation","thisTypeAnnotation","tupleTypeAnnotation","TupleTypeAnnotation","typeofTypeAnnotation","TypeofTypeAnnotation","typeAlias","TypeAlias","TypeAnnotation","typeCastExpression","TypeCastExpression","typeParameter","bound","_default","default","TypeParameter","typeParameterDeclaration","TypeParameterDeclaration","typeParameterInstantiation","TypeParameterInstantiation","unionTypeAnnotation","UnionTypeAnnotation","Variance","voidTypeAnnotation","enumDeclaration","EnumDeclaration","enumBooleanBody","members","explicitType","hasUnknownMembers","EnumBooleanBody","enumNumberBody","EnumNumberBody","enumStringBody","EnumStringBody","enumSymbolBody","EnumSymbolBody","enumBooleanMember","EnumBooleanMember","enumNumberMember","EnumNumberMember","enumStringMember","EnumStringMember","enumDefaultedMember","EnumDefaultedMember","indexedAccessType","objectType","indexType","IndexedAccessType","optionalIndexedAccessType","OptionalIndexedAccessType","jsxAttribute","JSXAttribute","jsxClosingElement","JSXClosingElement","jsxElement","openingElement","closingElement","children","selfClosing","JSXElement","jsxEmptyExpression","jsxExpressionContainer","JSXExpressionContainer","jsxSpreadChild","JSXSpreadChild","jsxIdentifier","JSXIdentifier","jsxMemberExpression","JSXMemberExpression","jsxNamespacedName","namespace","JSXNamespacedName","jsxOpeningElement","JSXOpeningElement","jsxSpreadAttribute","JSXSpreadAttribute","jsxText","JSXText","jsxFragment","openingFragment","closingFragment","JSXFragment","jsxOpeningFragment","jsxClosingFragment","noop","placeholder","expectedNode","Placeholder","v8IntrinsicIdentifier","V8IntrinsicIdentifier","argumentPlaceholder","bindExpression","BindExpression","importAttribute","ImportAttribute","decorator","Decorator","doExpression","DoExpression","exportDefaultSpecifier","ExportDefaultSpecifier","recordExpression","RecordExpression","tupleExpression","TupleExpression","decimalLiteral","DecimalLiteral","moduleExpression","ModuleExpression","topicReference","pipelineTopicExpression","PipelineTopicExpression","pipelineBareFunction","PipelineBareFunction","pipelinePrimaryTopicReference","tsParameterProperty","parameter","TSParameterProperty","tsDeclareFunction","TSDeclareFunction","tsDeclareMethod","TSDeclareMethod","tsQualifiedName","TSQualifiedName","tsCallSignatureDeclaration","parameters","TSCallSignatureDeclaration","tsConstructSignatureDeclaration","TSConstructSignatureDeclaration","tsPropertySignature","TSPropertySignature","tsMethodSignature","TSMethodSignature","tsIndexSignature","TSIndexSignature","tsAnyKeyword","tsBooleanKeyword","tsBigIntKeyword","tsIntrinsicKeyword","tsNeverKeyword","tsNullKeyword","tsNumberKeyword","tsObjectKeyword","tsStringKeyword","tsSymbolKeyword","tsUndefinedKeyword","tsUnknownKeyword","tsVoidKeyword","tsThisType","tsFunctionType","TSFunctionType","tsConstructorType","TSConstructorType","tsTypeReference","typeName","TSTypeReference","tsTypePredicate","parameterName","asserts","TSTypePredicate","tsTypeQuery","exprName","TSTypeQuery","tsTypeLiteral","TSTypeLiteral","tsArrayType","TSArrayType","tsTupleType","elementTypes","TSTupleType","tsOptionalType","TSOptionalType","tsRestType","TSRestType","tsNamedTupleMember","TSNamedTupleMember","tsUnionType","TSUnionType","tsIntersectionType","TSIntersectionType","tsConditionalType","checkType","extendsType","trueType","falseType","TSConditionalType","tsInferType","TSInferType","tsParenthesizedType","TSParenthesizedType","tsTypeOperator","TSTypeOperator","tsIndexedAccessType","TSIndexedAccessType","tsMappedType","nameType","TSMappedType","tsLiteralType","literal","TSLiteralType","tsExpressionWithTypeArguments","TSExpressionWithTypeArguments","tsInterfaceDeclaration","TSInterfaceDeclaration","tsInterfaceBody","TSInterfaceBody","tsTypeAliasDeclaration","TSTypeAliasDeclaration","tsInstantiationExpression","TSInstantiationExpression","tsAsExpression","TSAsExpression","tsSatisfiesExpression","TSSatisfiesExpression","tsTypeAssertion","TSTypeAssertion","tsEnumDeclaration","TSEnumDeclaration","tsEnumMember","initializer","TSEnumMember","tsModuleDeclaration","TSModuleDeclaration","tsModuleBlock","TSModuleBlock","tsImportType","qualifier","TSImportType","tsImportEqualsDeclaration","moduleReference","isExport","TSImportEqualsDeclaration","tsExternalModuleReference","TSExternalModuleReference","tsNonNullExpression","TSNonNullExpression","tsExportAssignment","TSExportAssignment","tsNamespaceExportDeclaration","TSNamespaceExportDeclaration","tsTypeAnnotation","TSTypeAnnotation","tsTypeParameterInstantiation","TSTypeParameterInstantiation","tsTypeParameterDeclaration","TSTypeParameterDeclaration","tsTypeParameter","constraint","TSTypeParameter","NumberLiteral","deprecationWarning","RegexLiteral","RestProperty","SpreadProperty"],"sources":["../../../src/builders/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport * as _validate from \"../../validators/validate.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\nimport * as utils from \"../../definitions/utils.ts\";\n\nconst { validateInternal: validate } = _validate;\nconst { NODE_FIELDS } = utils;\n\nexport function arrayExpression(\n  elements: Array<null | t.Expression | t.SpreadElement> = [],\n): t.ArrayExpression {\n  const node: t.ArrayExpression = {\n    type: \"ArrayExpression\",\n    elements,\n  };\n  const defs = NODE_FIELDS.ArrayExpression;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function assignmentExpression(\n  operator: string,\n  left: t.LVal | t.OptionalMemberExpression,\n  right: t.Expression,\n): t.AssignmentExpression {\n  const node: t.AssignmentExpression = {\n    type: \"AssignmentExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.AssignmentExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function binaryExpression(\n  operator:\n    | \"+\"\n    | \"-\"\n    | \"/\"\n    | \"%\"\n    | \"*\"\n    | \"**\"\n    | \"&\"\n    | \"|\"\n    | \">>\"\n    | \">>>\"\n    | \"<<\"\n    | \"^\"\n    | \"==\"\n    | \"===\"\n    | \"!=\"\n    | \"!==\"\n    | \"in\"\n    | \"instanceof\"\n    | \">\"\n    | \"<\"\n    | \">=\"\n    | \"<=\"\n    | \"|>\",\n  left: t.Expression | t.PrivateName,\n  right: t.Expression,\n): t.BinaryExpression {\n  const node: t.BinaryExpression = {\n    type: \"BinaryExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.BinaryExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function interpreterDirective(value: string): t.InterpreterDirective {\n  const node: t.InterpreterDirective = {\n    type: \"InterpreterDirective\",\n    value,\n  };\n  const defs = NODE_FIELDS.InterpreterDirective;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function directive(value: t.DirectiveLiteral): t.Directive {\n  const node: t.Directive = {\n    type: \"Directive\",\n    value,\n  };\n  const defs = NODE_FIELDS.Directive;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function directiveLiteral(value: string): t.DirectiveLiteral {\n  const node: t.DirectiveLiteral = {\n    type: \"DirectiveLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.DirectiveLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function blockStatement(\n  body: Array<t.Statement>,\n  directives: Array<t.Directive> = [],\n): t.BlockStatement {\n  const node: t.BlockStatement = {\n    type: \"BlockStatement\",\n    body,\n    directives,\n  };\n  const defs = NODE_FIELDS.BlockStatement;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.directives, node, \"directives\", directives, 1);\n  return node;\n}\nexport function breakStatement(\n  label: t.Identifier | null = null,\n): t.BreakStatement {\n  const node: t.BreakStatement = {\n    type: \"BreakStatement\",\n    label,\n  };\n  const defs = NODE_FIELDS.BreakStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  return node;\n}\nexport function callExpression(\n  callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n): t.CallExpression {\n  const node: t.CallExpression = {\n    type: \"CallExpression\",\n    callee,\n    arguments: _arguments,\n  };\n  const defs = NODE_FIELDS.CallExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  return node;\n}\nexport function catchClause(\n  param:\n    | t.Identifier\n    | t.ArrayPattern\n    | t.ObjectPattern\n    | null\n    | undefined = null,\n  body: t.BlockStatement,\n): t.CatchClause {\n  const node: t.CatchClause = {\n    type: \"CatchClause\",\n    param,\n    body,\n  };\n  const defs = NODE_FIELDS.CatchClause;\n  validate(defs.param, node, \"param\", param, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function conditionalExpression(\n  test: t.Expression,\n  consequent: t.Expression,\n  alternate: t.Expression,\n): t.ConditionalExpression {\n  const node: t.ConditionalExpression = {\n    type: \"ConditionalExpression\",\n    test,\n    consequent,\n    alternate,\n  };\n  const defs = NODE_FIELDS.ConditionalExpression;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  validate(defs.alternate, node, \"alternate\", alternate, 1);\n  return node;\n}\nexport function continueStatement(\n  label: t.Identifier | null = null,\n): t.ContinueStatement {\n  const node: t.ContinueStatement = {\n    type: \"ContinueStatement\",\n    label,\n  };\n  const defs = NODE_FIELDS.ContinueStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  return node;\n}\nexport function debuggerStatement(): t.DebuggerStatement {\n  return {\n    type: \"DebuggerStatement\",\n  };\n}\nexport function doWhileStatement(\n  test: t.Expression,\n  body: t.Statement,\n): t.DoWhileStatement {\n  const node: t.DoWhileStatement = {\n    type: \"DoWhileStatement\",\n    test,\n    body,\n  };\n  const defs = NODE_FIELDS.DoWhileStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function emptyStatement(): t.EmptyStatement {\n  return {\n    type: \"EmptyStatement\",\n  };\n}\nexport function expressionStatement(\n  expression: t.Expression,\n): t.ExpressionStatement {\n  const node: t.ExpressionStatement = {\n    type: \"ExpressionStatement\",\n    expression,\n  };\n  const defs = NODE_FIELDS.ExpressionStatement;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function file(\n  program: t.Program,\n  comments: Array<t.CommentBlock | t.CommentLine> | null = null,\n  tokens: Array<any> | null = null,\n): t.File {\n  const node: t.File = {\n    type: \"File\",\n    program,\n    comments,\n    tokens,\n  };\n  const defs = NODE_FIELDS.File;\n  validate(defs.program, node, \"program\", program, 1);\n  validate(defs.comments, node, \"comments\", comments, 1);\n  validate(defs.tokens, node, \"tokens\", tokens);\n  return node;\n}\nexport function forInStatement(\n  left: t.VariableDeclaration | t.LVal,\n  right: t.Expression,\n  body: t.Statement,\n): t.ForInStatement {\n  const node: t.ForInStatement = {\n    type: \"ForInStatement\",\n    left,\n    right,\n    body,\n  };\n  const defs = NODE_FIELDS.ForInStatement;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function forStatement(\n  init: t.VariableDeclaration | t.Expression | null | undefined = null,\n  test: t.Expression | null | undefined = null,\n  update: t.Expression | null | undefined = null,\n  body: t.Statement,\n): t.ForStatement {\n  const node: t.ForStatement = {\n    type: \"ForStatement\",\n    init,\n    test,\n    update,\n    body,\n  };\n  const defs = NODE_FIELDS.ForStatement;\n  validate(defs.init, node, \"init\", init, 1);\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.update, node, \"update\", update, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function functionDeclaration(\n  id: t.Identifier | null | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  generator: boolean = false,\n  async: boolean = false,\n): t.FunctionDeclaration {\n  const node: t.FunctionDeclaration = {\n    type: \"FunctionDeclaration\",\n    id,\n    params,\n    body,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.FunctionDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function functionExpression(\n  id: t.Identifier | null | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  generator: boolean = false,\n  async: boolean = false,\n): t.FunctionExpression {\n  const node: t.FunctionExpression = {\n    type: \"FunctionExpression\",\n    id,\n    params,\n    body,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.FunctionExpression;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function identifier(name: string): t.Identifier {\n  const node: t.Identifier = {\n    type: \"Identifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.Identifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport function ifStatement(\n  test: t.Expression,\n  consequent: t.Statement,\n  alternate: t.Statement | null = null,\n): t.IfStatement {\n  const node: t.IfStatement = {\n    type: \"IfStatement\",\n    test,\n    consequent,\n    alternate,\n  };\n  const defs = NODE_FIELDS.IfStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  validate(defs.alternate, node, \"alternate\", alternate, 1);\n  return node;\n}\nexport function labeledStatement(\n  label: t.Identifier,\n  body: t.Statement,\n): t.LabeledStatement {\n  const node: t.LabeledStatement = {\n    type: \"LabeledStatement\",\n    label,\n    body,\n  };\n  const defs = NODE_FIELDS.LabeledStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function stringLiteral(value: string): t.StringLiteral {\n  const node: t.StringLiteral = {\n    type: \"StringLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.StringLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function numericLiteral(value: number): t.NumericLiteral {\n  const node: t.NumericLiteral = {\n    type: \"NumericLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.NumericLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function nullLiteral(): t.NullLiteral {\n  return {\n    type: \"NullLiteral\",\n  };\n}\nexport function booleanLiteral(value: boolean): t.BooleanLiteral {\n  const node: t.BooleanLiteral = {\n    type: \"BooleanLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.BooleanLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function regExpLiteral(\n  pattern: string,\n  flags: string = \"\",\n): t.RegExpLiteral {\n  const node: t.RegExpLiteral = {\n    type: \"RegExpLiteral\",\n    pattern,\n    flags,\n  };\n  const defs = NODE_FIELDS.RegExpLiteral;\n  validate(defs.pattern, node, \"pattern\", pattern);\n  validate(defs.flags, node, \"flags\", flags);\n  return node;\n}\nexport function logicalExpression(\n  operator: \"||\" | \"&&\" | \"??\",\n  left: t.Expression,\n  right: t.Expression,\n): t.LogicalExpression {\n  const node: t.LogicalExpression = {\n    type: \"LogicalExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.LogicalExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function memberExpression(\n  object: t.Expression | t.Super,\n  property: t.Expression | t.Identifier | t.PrivateName,\n  computed: boolean = false,\n  optional: boolean | null = null,\n): t.MemberExpression {\n  const node: t.MemberExpression = {\n    type: \"MemberExpression\",\n    object,\n    property,\n    computed,\n    optional,\n  };\n  const defs = NODE_FIELDS.MemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function newExpression(\n  callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n): t.NewExpression {\n  const node: t.NewExpression = {\n    type: \"NewExpression\",\n    callee,\n    arguments: _arguments,\n  };\n  const defs = NODE_FIELDS.NewExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  return node;\n}\nexport function program(\n  body: Array<t.Statement>,\n  directives: Array<t.Directive> = [],\n  sourceType: \"script\" | \"module\" = \"script\",\n  interpreter: t.InterpreterDirective | null = null,\n): t.Program {\n  const node: t.Program = {\n    type: \"Program\",\n    body,\n    directives,\n    sourceType,\n    interpreter,\n  };\n  const defs = NODE_FIELDS.Program;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.directives, node, \"directives\", directives, 1);\n  validate(defs.sourceType, node, \"sourceType\", sourceType);\n  validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n  return node;\n}\nexport function objectExpression(\n  properties: Array<t.ObjectMethod | t.ObjectProperty | t.SpreadElement>,\n): t.ObjectExpression {\n  const node: t.ObjectExpression = {\n    type: \"ObjectExpression\",\n    properties,\n  };\n  const defs = NODE_FIELDS.ObjectExpression;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function objectMethod(\n  kind: \"method\" | \"get\" | \"set\" | undefined = \"method\",\n  key:\n    | t.Expression\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  computed: boolean = false,\n  generator: boolean = false,\n  async: boolean = false,\n): t.ObjectMethod {\n  const node: t.ObjectMethod = {\n    type: \"ObjectMethod\",\n    kind,\n    key,\n    params,\n    body,\n    computed,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.ObjectMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function objectProperty(\n  key:\n    | t.Expression\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.DecimalLiteral\n    | t.PrivateName,\n  value: t.Expression | t.PatternLike,\n  computed: boolean = false,\n  shorthand: boolean = false,\n  decorators: Array<t.Decorator> | null = null,\n): t.ObjectProperty {\n  const node: t.ObjectProperty = {\n    type: \"ObjectProperty\",\n    key,\n    value,\n    computed,\n    shorthand,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ObjectProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.shorthand, node, \"shorthand\", shorthand);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function restElement(argument: t.LVal): t.RestElement {\n  const node: t.RestElement = {\n    type: \"RestElement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.RestElement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function returnStatement(\n  argument: t.Expression | null = null,\n): t.ReturnStatement {\n  const node: t.ReturnStatement = {\n    type: \"ReturnStatement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ReturnStatement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function sequenceExpression(\n  expressions: Array<t.Expression>,\n): t.SequenceExpression {\n  const node: t.SequenceExpression = {\n    type: \"SequenceExpression\",\n    expressions,\n  };\n  const defs = NODE_FIELDS.SequenceExpression;\n  validate(defs.expressions, node, \"expressions\", expressions, 1);\n  return node;\n}\nexport function parenthesizedExpression(\n  expression: t.Expression,\n): t.ParenthesizedExpression {\n  const node: t.ParenthesizedExpression = {\n    type: \"ParenthesizedExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.ParenthesizedExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function switchCase(\n  test: t.Expression | null | undefined = null,\n  consequent: Array<t.Statement>,\n): t.SwitchCase {\n  const node: t.SwitchCase = {\n    type: \"SwitchCase\",\n    test,\n    consequent,\n  };\n  const defs = NODE_FIELDS.SwitchCase;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  return node;\n}\nexport function switchStatement(\n  discriminant: t.Expression,\n  cases: Array<t.SwitchCase>,\n): t.SwitchStatement {\n  const node: t.SwitchStatement = {\n    type: \"SwitchStatement\",\n    discriminant,\n    cases,\n  };\n  const defs = NODE_FIELDS.SwitchStatement;\n  validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n  validate(defs.cases, node, \"cases\", cases, 1);\n  return node;\n}\nexport function thisExpression(): t.ThisExpression {\n  return {\n    type: \"ThisExpression\",\n  };\n}\nexport function throwStatement(argument: t.Expression): t.ThrowStatement {\n  const node: t.ThrowStatement = {\n    type: \"ThrowStatement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ThrowStatement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function tryStatement(\n  block: t.BlockStatement,\n  handler: t.CatchClause | null = null,\n  finalizer: t.BlockStatement | null = null,\n): t.TryStatement {\n  const node: t.TryStatement = {\n    type: \"TryStatement\",\n    block,\n    handler,\n    finalizer,\n  };\n  const defs = NODE_FIELDS.TryStatement;\n  validate(defs.block, node, \"block\", block, 1);\n  validate(defs.handler, node, \"handler\", handler, 1);\n  validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n  return node;\n}\nexport function unaryExpression(\n  operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\",\n  argument: t.Expression,\n  prefix: boolean = true,\n): t.UnaryExpression {\n  const node: t.UnaryExpression = {\n    type: \"UnaryExpression\",\n    operator,\n    argument,\n    prefix,\n  };\n  const defs = NODE_FIELDS.UnaryExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.prefix, node, \"prefix\", prefix);\n  return node;\n}\nexport function updateExpression(\n  operator: \"++\" | \"--\",\n  argument: t.Expression,\n  prefix: boolean = false,\n): t.UpdateExpression {\n  const node: t.UpdateExpression = {\n    type: \"UpdateExpression\",\n    operator,\n    argument,\n    prefix,\n  };\n  const defs = NODE_FIELDS.UpdateExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.prefix, node, \"prefix\", prefix);\n  return node;\n}\nexport function variableDeclaration(\n  kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  declarations: Array<t.VariableDeclarator>,\n): t.VariableDeclaration {\n  const node: t.VariableDeclaration = {\n    type: \"VariableDeclaration\",\n    kind,\n    declarations,\n  };\n  const defs = NODE_FIELDS.VariableDeclaration;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.declarations, node, \"declarations\", declarations, 1);\n  return node;\n}\nexport function variableDeclarator(\n  id: t.LVal,\n  init: t.Expression | null = null,\n): t.VariableDeclarator {\n  const node: t.VariableDeclarator = {\n    type: \"VariableDeclarator\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.VariableDeclarator;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function whileStatement(\n  test: t.Expression,\n  body: t.Statement,\n): t.WhileStatement {\n  const node: t.WhileStatement = {\n    type: \"WhileStatement\",\n    test,\n    body,\n  };\n  const defs = NODE_FIELDS.WhileStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function withStatement(\n  object: t.Expression,\n  body: t.Statement,\n): t.WithStatement {\n  const node: t.WithStatement = {\n    type: \"WithStatement\",\n    object,\n    body,\n  };\n  const defs = NODE_FIELDS.WithStatement;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function assignmentPattern(\n  left:\n    | t.Identifier\n    | t.ObjectPattern\n    | t.ArrayPattern\n    | t.MemberExpression\n    | t.TSAsExpression\n    | t.TSSatisfiesExpression\n    | t.TSTypeAssertion\n    | t.TSNonNullExpression,\n  right: t.Expression,\n): t.AssignmentPattern {\n  const node: t.AssignmentPattern = {\n    type: \"AssignmentPattern\",\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.AssignmentPattern;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function arrayPattern(\n  elements: Array<null | t.PatternLike | t.LVal>,\n): t.ArrayPattern {\n  const node: t.ArrayPattern = {\n    type: \"ArrayPattern\",\n    elements,\n  };\n  const defs = NODE_FIELDS.ArrayPattern;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function arrowFunctionExpression(\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement | t.Expression,\n  async: boolean = false,\n): t.ArrowFunctionExpression {\n  const node: t.ArrowFunctionExpression = {\n    type: \"ArrowFunctionExpression\",\n    params,\n    body,\n    async,\n    expression: null,\n  };\n  const defs = NODE_FIELDS.ArrowFunctionExpression;\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function classBody(\n  body: Array<\n    | t.ClassMethod\n    | t.ClassPrivateMethod\n    | t.ClassProperty\n    | t.ClassPrivateProperty\n    | t.ClassAccessorProperty\n    | t.TSDeclareMethod\n    | t.TSIndexSignature\n    | t.StaticBlock\n  >,\n): t.ClassBody {\n  const node: t.ClassBody = {\n    type: \"ClassBody\",\n    body,\n  };\n  const defs = NODE_FIELDS.ClassBody;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function classExpression(\n  id: t.Identifier | null | undefined = null,\n  superClass: t.Expression | null | undefined = null,\n  body: t.ClassBody,\n  decorators: Array<t.Decorator> | null = null,\n): t.ClassExpression {\n  const node: t.ClassExpression = {\n    type: \"ClassExpression\",\n    id,\n    superClass,\n    body,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ClassExpression;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.superClass, node, \"superClass\", superClass, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function classDeclaration(\n  id: t.Identifier | null | undefined = null,\n  superClass: t.Expression | null | undefined = null,\n  body: t.ClassBody,\n  decorators: Array<t.Decorator> | null = null,\n): t.ClassDeclaration {\n  const node: t.ClassDeclaration = {\n    type: \"ClassDeclaration\",\n    id,\n    superClass,\n    body,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ClassDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.superClass, node, \"superClass\", superClass, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function exportAllDeclaration(\n  source: t.StringLiteral,\n): t.ExportAllDeclaration {\n  const node: t.ExportAllDeclaration = {\n    type: \"ExportAllDeclaration\",\n    source,\n  };\n  const defs = NODE_FIELDS.ExportAllDeclaration;\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function exportDefaultDeclaration(\n  declaration:\n    | t.TSDeclareFunction\n    | t.FunctionDeclaration\n    | t.ClassDeclaration\n    | t.Expression,\n): t.ExportDefaultDeclaration {\n  const node: t.ExportDefaultDeclaration = {\n    type: \"ExportDefaultDeclaration\",\n    declaration,\n  };\n  const defs = NODE_FIELDS.ExportDefaultDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  return node;\n}\nexport function exportNamedDeclaration(\n  declaration: t.Declaration | null = null,\n  specifiers: Array<\n    t.ExportSpecifier | t.ExportDefaultSpecifier | t.ExportNamespaceSpecifier\n  > = [],\n  source: t.StringLiteral | null = null,\n): t.ExportNamedDeclaration {\n  const node: t.ExportNamedDeclaration = {\n    type: \"ExportNamedDeclaration\",\n    declaration,\n    specifiers,\n    source,\n  };\n  const defs = NODE_FIELDS.ExportNamedDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function exportSpecifier(\n  local: t.Identifier,\n  exported: t.Identifier | t.StringLiteral,\n): t.ExportSpecifier {\n  const node: t.ExportSpecifier = {\n    type: \"ExportSpecifier\",\n    local,\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function forOfStatement(\n  left: t.VariableDeclaration | t.LVal,\n  right: t.Expression,\n  body: t.Statement,\n  _await: boolean = false,\n): t.ForOfStatement {\n  const node: t.ForOfStatement = {\n    type: \"ForOfStatement\",\n    left,\n    right,\n    body,\n    await: _await,\n  };\n  const defs = NODE_FIELDS.ForOfStatement;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.await, node, \"await\", _await);\n  return node;\n}\nexport function importDeclaration(\n  specifiers: Array<\n    t.ImportSpecifier | t.ImportDefaultSpecifier | t.ImportNamespaceSpecifier\n  >,\n  source: t.StringLiteral,\n): t.ImportDeclaration {\n  const node: t.ImportDeclaration = {\n    type: \"ImportDeclaration\",\n    specifiers,\n    source,\n  };\n  const defs = NODE_FIELDS.ImportDeclaration;\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function importDefaultSpecifier(\n  local: t.Identifier,\n): t.ImportDefaultSpecifier {\n  const node: t.ImportDefaultSpecifier = {\n    type: \"ImportDefaultSpecifier\",\n    local,\n  };\n  const defs = NODE_FIELDS.ImportDefaultSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  return node;\n}\nexport function importNamespaceSpecifier(\n  local: t.Identifier,\n): t.ImportNamespaceSpecifier {\n  const node: t.ImportNamespaceSpecifier = {\n    type: \"ImportNamespaceSpecifier\",\n    local,\n  };\n  const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  return node;\n}\nexport function importSpecifier(\n  local: t.Identifier,\n  imported: t.Identifier | t.StringLiteral,\n): t.ImportSpecifier {\n  const node: t.ImportSpecifier = {\n    type: \"ImportSpecifier\",\n    local,\n    imported,\n  };\n  const defs = NODE_FIELDS.ImportSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  validate(defs.imported, node, \"imported\", imported, 1);\n  return node;\n}\nexport function importExpression(\n  source: t.Expression,\n  options: t.Expression | null = null,\n): t.ImportExpression {\n  const node: t.ImportExpression = {\n    type: \"ImportExpression\",\n    source,\n    options,\n  };\n  const defs = NODE_FIELDS.ImportExpression;\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.options, node, \"options\", options, 1);\n  return node;\n}\nexport function metaProperty(\n  meta: t.Identifier,\n  property: t.Identifier,\n): t.MetaProperty {\n  const node: t.MetaProperty = {\n    type: \"MetaProperty\",\n    meta,\n    property,\n  };\n  const defs = NODE_FIELDS.MetaProperty;\n  validate(defs.meta, node, \"meta\", meta, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  return node;\n}\nexport function classMethod(\n  kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined = \"method\",\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  body: t.BlockStatement,\n  computed: boolean = false,\n  _static: boolean = false,\n  generator: boolean = false,\n  async: boolean = false,\n): t.ClassMethod {\n  const node: t.ClassMethod = {\n    type: \"ClassMethod\",\n    kind,\n    key,\n    params,\n    body,\n    computed,\n    static: _static,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.ClassMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function objectPattern(\n  properties: Array<t.RestElement | t.ObjectProperty>,\n): t.ObjectPattern {\n  const node: t.ObjectPattern = {\n    type: \"ObjectPattern\",\n    properties,\n  };\n  const defs = NODE_FIELDS.ObjectPattern;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function spreadElement(argument: t.Expression): t.SpreadElement {\n  const node: t.SpreadElement = {\n    type: \"SpreadElement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.SpreadElement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nfunction _super(): t.Super {\n  return {\n    type: \"Super\",\n  };\n}\nexport { _super as super };\nexport function taggedTemplateExpression(\n  tag: t.Expression,\n  quasi: t.TemplateLiteral,\n): t.TaggedTemplateExpression {\n  const node: t.TaggedTemplateExpression = {\n    type: \"TaggedTemplateExpression\",\n    tag,\n    quasi,\n  };\n  const defs = NODE_FIELDS.TaggedTemplateExpression;\n  validate(defs.tag, node, \"tag\", tag, 1);\n  validate(defs.quasi, node, \"quasi\", quasi, 1);\n  return node;\n}\nexport function templateElement(\n  value: { raw: string; cooked?: string },\n  tail: boolean = false,\n): t.TemplateElement {\n  const node: t.TemplateElement = {\n    type: \"TemplateElement\",\n    value,\n    tail,\n  };\n  const defs = NODE_FIELDS.TemplateElement;\n  validate(defs.value, node, \"value\", value);\n  validate(defs.tail, node, \"tail\", tail);\n  return node;\n}\nexport function templateLiteral(\n  quasis: Array<t.TemplateElement>,\n  expressions: Array<t.Expression | t.TSType>,\n): t.TemplateLiteral {\n  const node: t.TemplateLiteral = {\n    type: \"TemplateLiteral\",\n    quasis,\n    expressions,\n  };\n  const defs = NODE_FIELDS.TemplateLiteral;\n  validate(defs.quasis, node, \"quasis\", quasis, 1);\n  validate(defs.expressions, node, \"expressions\", expressions, 1);\n  return node;\n}\nexport function yieldExpression(\n  argument: t.Expression | null = null,\n  delegate: boolean = false,\n): t.YieldExpression {\n  const node: t.YieldExpression = {\n    type: \"YieldExpression\",\n    argument,\n    delegate,\n  };\n  const defs = NODE_FIELDS.YieldExpression;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.delegate, node, \"delegate\", delegate);\n  return node;\n}\nexport function awaitExpression(argument: t.Expression): t.AwaitExpression {\n  const node: t.AwaitExpression = {\n    type: \"AwaitExpression\",\n    argument,\n  };\n  const defs = NODE_FIELDS.AwaitExpression;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nfunction _import(): t.Import {\n  return {\n    type: \"Import\",\n  };\n}\nexport { _import as import };\nexport function bigIntLiteral(value: string): t.BigIntLiteral {\n  const node: t.BigIntLiteral = {\n    type: \"BigIntLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.BigIntLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function exportNamespaceSpecifier(\n  exported: t.Identifier,\n): t.ExportNamespaceSpecifier {\n  const node: t.ExportNamespaceSpecifier = {\n    type: \"ExportNamespaceSpecifier\",\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function optionalMemberExpression(\n  object: t.Expression,\n  property: t.Expression | t.Identifier,\n  computed: boolean | undefined = false,\n  optional: boolean,\n): t.OptionalMemberExpression {\n  const node: t.OptionalMemberExpression = {\n    type: \"OptionalMemberExpression\",\n    object,\n    property,\n    computed,\n    optional,\n  };\n  const defs = NODE_FIELDS.OptionalMemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function optionalCallExpression(\n  callee: t.Expression,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n  optional: boolean,\n): t.OptionalCallExpression {\n  const node: t.OptionalCallExpression = {\n    type: \"OptionalCallExpression\",\n    callee,\n    arguments: _arguments,\n    optional,\n  };\n  const defs = NODE_FIELDS.OptionalCallExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function classProperty(\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  value: t.Expression | null = null,\n  typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  computed: boolean = false,\n  _static: boolean = false,\n): t.ClassProperty {\n  const node: t.ClassProperty = {\n    type: \"ClassProperty\",\n    key,\n    value,\n    typeAnnotation,\n    decorators,\n    computed,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classAccessorProperty(\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression\n    | t.PrivateName,\n  value: t.Expression | null = null,\n  typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  computed: boolean = false,\n  _static: boolean = false,\n): t.ClassAccessorProperty {\n  const node: t.ClassAccessorProperty = {\n    type: \"ClassAccessorProperty\",\n    key,\n    value,\n    typeAnnotation,\n    decorators,\n    computed,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassAccessorProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classPrivateProperty(\n  key: t.PrivateName,\n  value: t.Expression | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  _static: boolean = false,\n): t.ClassPrivateProperty {\n  const node: t.ClassPrivateProperty = {\n    type: \"ClassPrivateProperty\",\n    key,\n    value,\n    decorators,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassPrivateProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classPrivateMethod(\n  kind: \"get\" | \"set\" | \"method\" | undefined = \"method\",\n  key: t.PrivateName,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  body: t.BlockStatement,\n  _static: boolean = false,\n): t.ClassPrivateMethod {\n  const node: t.ClassPrivateMethod = {\n    type: \"ClassPrivateMethod\",\n    kind,\n    key,\n    params,\n    body,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassPrivateMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function privateName(id: t.Identifier): t.PrivateName {\n  const node: t.PrivateName = {\n    type: \"PrivateName\",\n    id,\n  };\n  const defs = NODE_FIELDS.PrivateName;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function staticBlock(body: Array<t.Statement>): t.StaticBlock {\n  const node: t.StaticBlock = {\n    type: \"StaticBlock\",\n    body,\n  };\n  const defs = NODE_FIELDS.StaticBlock;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function anyTypeAnnotation(): t.AnyTypeAnnotation {\n  return {\n    type: \"AnyTypeAnnotation\",\n  };\n}\nexport function arrayTypeAnnotation(\n  elementType: t.FlowType,\n): t.ArrayTypeAnnotation {\n  const node: t.ArrayTypeAnnotation = {\n    type: \"ArrayTypeAnnotation\",\n    elementType,\n  };\n  const defs = NODE_FIELDS.ArrayTypeAnnotation;\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  return node;\n}\nexport function booleanTypeAnnotation(): t.BooleanTypeAnnotation {\n  return {\n    type: \"BooleanTypeAnnotation\",\n  };\n}\nexport function booleanLiteralTypeAnnotation(\n  value: boolean,\n): t.BooleanLiteralTypeAnnotation {\n  const node: t.BooleanLiteralTypeAnnotation = {\n    type: \"BooleanLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function nullLiteralTypeAnnotation(): t.NullLiteralTypeAnnotation {\n  return {\n    type: \"NullLiteralTypeAnnotation\",\n  };\n}\nexport function classImplements(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.ClassImplements {\n  const node: t.ClassImplements = {\n    type: \"ClassImplements\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.ClassImplements;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function declareClass(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.DeclareClass {\n  const node: t.DeclareClass = {\n    type: \"DeclareClass\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.DeclareClass;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function declareFunction(id: t.Identifier): t.DeclareFunction {\n  const node: t.DeclareFunction = {\n    type: \"DeclareFunction\",\n    id,\n  };\n  const defs = NODE_FIELDS.DeclareFunction;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function declareInterface(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.DeclareInterface {\n  const node: t.DeclareInterface = {\n    type: \"DeclareInterface\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.DeclareInterface;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function declareModule(\n  id: t.Identifier | t.StringLiteral,\n  body: t.BlockStatement,\n  kind: \"CommonJS\" | \"ES\" | null = null,\n): t.DeclareModule {\n  const node: t.DeclareModule = {\n    type: \"DeclareModule\",\n    id,\n    body,\n    kind,\n  };\n  const defs = NODE_FIELDS.DeclareModule;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.kind, node, \"kind\", kind);\n  return node;\n}\nexport function declareModuleExports(\n  typeAnnotation: t.TypeAnnotation,\n): t.DeclareModuleExports {\n  const node: t.DeclareModuleExports = {\n    type: \"DeclareModuleExports\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.DeclareModuleExports;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function declareTypeAlias(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  right: t.FlowType,\n): t.DeclareTypeAlias {\n  const node: t.DeclareTypeAlias = {\n    type: \"DeclareTypeAlias\",\n    id,\n    typeParameters,\n    right,\n  };\n  const defs = NODE_FIELDS.DeclareTypeAlias;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function declareOpaqueType(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null = null,\n  supertype: t.FlowType | null = null,\n): t.DeclareOpaqueType {\n  const node: t.DeclareOpaqueType = {\n    type: \"DeclareOpaqueType\",\n    id,\n    typeParameters,\n    supertype,\n  };\n  const defs = NODE_FIELDS.DeclareOpaqueType;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.supertype, node, \"supertype\", supertype, 1);\n  return node;\n}\nexport function declareVariable(id: t.Identifier): t.DeclareVariable {\n  const node: t.DeclareVariable = {\n    type: \"DeclareVariable\",\n    id,\n  };\n  const defs = NODE_FIELDS.DeclareVariable;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function declareExportDeclaration(\n  declaration: t.Flow | null = null,\n  specifiers: Array<\n    t.ExportSpecifier | t.ExportNamespaceSpecifier\n  > | null = null,\n  source: t.StringLiteral | null = null,\n  attributes: Array<t.ImportAttribute> | null = null,\n): t.DeclareExportDeclaration {\n  const node: t.DeclareExportDeclaration = {\n    type: \"DeclareExportDeclaration\",\n    declaration,\n    specifiers,\n    source,\n    attributes,\n  };\n  const defs = NODE_FIELDS.DeclareExportDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  return node;\n}\nexport function declareExportAllDeclaration(\n  source: t.StringLiteral,\n  attributes: Array<t.ImportAttribute> | null = null,\n): t.DeclareExportAllDeclaration {\n  const node: t.DeclareExportAllDeclaration = {\n    type: \"DeclareExportAllDeclaration\",\n    source,\n    attributes,\n  };\n  const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  return node;\n}\nexport function declaredPredicate(value: t.Flow): t.DeclaredPredicate {\n  const node: t.DeclaredPredicate = {\n    type: \"DeclaredPredicate\",\n    value,\n  };\n  const defs = NODE_FIELDS.DeclaredPredicate;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function existsTypeAnnotation(): t.ExistsTypeAnnotation {\n  return {\n    type: \"ExistsTypeAnnotation\",\n  };\n}\nexport function functionTypeAnnotation(\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  params: Array<t.FunctionTypeParam>,\n  rest: t.FunctionTypeParam | null | undefined = null,\n  returnType: t.FlowType,\n): t.FunctionTypeAnnotation {\n  const node: t.FunctionTypeAnnotation = {\n    type: \"FunctionTypeAnnotation\",\n    typeParameters,\n    params,\n    rest,\n    returnType,\n  };\n  const defs = NODE_FIELDS.FunctionTypeAnnotation;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.rest, node, \"rest\", rest, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport function functionTypeParam(\n  name: t.Identifier | null | undefined = null,\n  typeAnnotation: t.FlowType,\n): t.FunctionTypeParam {\n  const node: t.FunctionTypeParam = {\n    type: \"FunctionTypeParam\",\n    name,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.FunctionTypeParam;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function genericTypeAnnotation(\n  id: t.Identifier | t.QualifiedTypeIdentifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.GenericTypeAnnotation {\n  const node: t.GenericTypeAnnotation = {\n    type: \"GenericTypeAnnotation\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.GenericTypeAnnotation;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function inferredPredicate(): t.InferredPredicate {\n  return {\n    type: \"InferredPredicate\",\n  };\n}\nexport function interfaceExtends(\n  id: t.Identifier | t.QualifiedTypeIdentifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.InterfaceExtends {\n  const node: t.InterfaceExtends = {\n    type: \"InterfaceExtends\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.InterfaceExtends;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function interfaceDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.InterfaceDeclaration {\n  const node: t.InterfaceDeclaration = {\n    type: \"InterfaceDeclaration\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.InterfaceDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function interfaceTypeAnnotation(\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.InterfaceTypeAnnotation {\n  const node: t.InterfaceTypeAnnotation = {\n    type: \"InterfaceTypeAnnotation\",\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function intersectionTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.IntersectionTypeAnnotation {\n  const node: t.IntersectionTypeAnnotation = {\n    type: \"IntersectionTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function mixedTypeAnnotation(): t.MixedTypeAnnotation {\n  return {\n    type: \"MixedTypeAnnotation\",\n  };\n}\nexport function emptyTypeAnnotation(): t.EmptyTypeAnnotation {\n  return {\n    type: \"EmptyTypeAnnotation\",\n  };\n}\nexport function nullableTypeAnnotation(\n  typeAnnotation: t.FlowType,\n): t.NullableTypeAnnotation {\n  const node: t.NullableTypeAnnotation = {\n    type: \"NullableTypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.NullableTypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function numberLiteralTypeAnnotation(\n  value: number,\n): t.NumberLiteralTypeAnnotation {\n  const node: t.NumberLiteralTypeAnnotation = {\n    type: \"NumberLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function numberTypeAnnotation(): t.NumberTypeAnnotation {\n  return {\n    type: \"NumberTypeAnnotation\",\n  };\n}\nexport function objectTypeAnnotation(\n  properties: Array<t.ObjectTypeProperty | t.ObjectTypeSpreadProperty>,\n  indexers: Array<t.ObjectTypeIndexer> = [],\n  callProperties: Array<t.ObjectTypeCallProperty> = [],\n  internalSlots: Array<t.ObjectTypeInternalSlot> = [],\n  exact: boolean = false,\n): t.ObjectTypeAnnotation {\n  const node: t.ObjectTypeAnnotation = {\n    type: \"ObjectTypeAnnotation\",\n    properties,\n    indexers,\n    callProperties,\n    internalSlots,\n    exact,\n  };\n  const defs = NODE_FIELDS.ObjectTypeAnnotation;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  validate(defs.indexers, node, \"indexers\", indexers, 1);\n  validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n  validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n  validate(defs.exact, node, \"exact\", exact);\n  return node;\n}\nexport function objectTypeInternalSlot(\n  id: t.Identifier,\n  value: t.FlowType,\n  optional: boolean,\n  _static: boolean,\n  method: boolean,\n): t.ObjectTypeInternalSlot {\n  const node: t.ObjectTypeInternalSlot = {\n    type: \"ObjectTypeInternalSlot\",\n    id,\n    value,\n    optional,\n    static: _static,\n    method,\n  };\n  const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  validate(defs.static, node, \"static\", _static);\n  validate(defs.method, node, \"method\", method);\n  return node;\n}\nexport function objectTypeCallProperty(\n  value: t.FlowType,\n): t.ObjectTypeCallProperty {\n  const node: t.ObjectTypeCallProperty = {\n    type: \"ObjectTypeCallProperty\",\n    value,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeCallProperty;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function objectTypeIndexer(\n  id: t.Identifier | null | undefined = null,\n  key: t.FlowType,\n  value: t.FlowType,\n  variance: t.Variance | null = null,\n): t.ObjectTypeIndexer {\n  const node: t.ObjectTypeIndexer = {\n    type: \"ObjectTypeIndexer\",\n    id,\n    key,\n    value,\n    variance,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeIndexer;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function objectTypeProperty(\n  key: t.Identifier | t.StringLiteral,\n  value: t.FlowType,\n  variance: t.Variance | null = null,\n): t.ObjectTypeProperty {\n  const node: t.ObjectTypeProperty = {\n    type: \"ObjectTypeProperty\",\n    key,\n    value,\n    variance,\n    kind: null,\n    method: null,\n    optional: null,\n    proto: null,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function objectTypeSpreadProperty(\n  argument: t.FlowType,\n): t.ObjectTypeSpreadProperty {\n  const node: t.ObjectTypeSpreadProperty = {\n    type: \"ObjectTypeSpreadProperty\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function opaqueType(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  supertype: t.FlowType | null | undefined = null,\n  impltype: t.FlowType,\n): t.OpaqueType {\n  const node: t.OpaqueType = {\n    type: \"OpaqueType\",\n    id,\n    typeParameters,\n    supertype,\n    impltype,\n  };\n  const defs = NODE_FIELDS.OpaqueType;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.supertype, node, \"supertype\", supertype, 1);\n  validate(defs.impltype, node, \"impltype\", impltype, 1);\n  return node;\n}\nexport function qualifiedTypeIdentifier(\n  id: t.Identifier,\n  qualification: t.Identifier | t.QualifiedTypeIdentifier,\n): t.QualifiedTypeIdentifier {\n  const node: t.QualifiedTypeIdentifier = {\n    type: \"QualifiedTypeIdentifier\",\n    id,\n    qualification,\n  };\n  const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.qualification, node, \"qualification\", qualification, 1);\n  return node;\n}\nexport function stringLiteralTypeAnnotation(\n  value: string,\n): t.StringLiteralTypeAnnotation {\n  const node: t.StringLiteralTypeAnnotation = {\n    type: \"StringLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function stringTypeAnnotation(): t.StringTypeAnnotation {\n  return {\n    type: \"StringTypeAnnotation\",\n  };\n}\nexport function symbolTypeAnnotation(): t.SymbolTypeAnnotation {\n  return {\n    type: \"SymbolTypeAnnotation\",\n  };\n}\nexport function thisTypeAnnotation(): t.ThisTypeAnnotation {\n  return {\n    type: \"ThisTypeAnnotation\",\n  };\n}\nexport function tupleTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.TupleTypeAnnotation {\n  const node: t.TupleTypeAnnotation = {\n    type: \"TupleTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.TupleTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function typeofTypeAnnotation(\n  argument: t.FlowType,\n): t.TypeofTypeAnnotation {\n  const node: t.TypeofTypeAnnotation = {\n    type: \"TypeofTypeAnnotation\",\n    argument,\n  };\n  const defs = NODE_FIELDS.TypeofTypeAnnotation;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function typeAlias(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  right: t.FlowType,\n): t.TypeAlias {\n  const node: t.TypeAlias = {\n    type: \"TypeAlias\",\n    id,\n    typeParameters,\n    right,\n  };\n  const defs = NODE_FIELDS.TypeAlias;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function typeAnnotation(typeAnnotation: t.FlowType): t.TypeAnnotation {\n  const node: t.TypeAnnotation = {\n    type: \"TypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function typeCastExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TypeAnnotation,\n): t.TypeCastExpression {\n  const node: t.TypeCastExpression = {\n    type: \"TypeCastExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TypeCastExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function typeParameter(\n  bound: t.TypeAnnotation | null = null,\n  _default: t.FlowType | null = null,\n  variance: t.Variance | null = null,\n): t.TypeParameter {\n  const node: t.TypeParameter = {\n    type: \"TypeParameter\",\n    bound,\n    default: _default,\n    variance,\n    name: null,\n  };\n  const defs = NODE_FIELDS.TypeParameter;\n  validate(defs.bound, node, \"bound\", bound, 1);\n  validate(defs.default, node, \"default\", _default, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function typeParameterDeclaration(\n  params: Array<t.TypeParameter>,\n): t.TypeParameterDeclaration {\n  const node: t.TypeParameterDeclaration = {\n    type: \"TypeParameterDeclaration\",\n    params,\n  };\n  const defs = NODE_FIELDS.TypeParameterDeclaration;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport function typeParameterInstantiation(\n  params: Array<t.FlowType>,\n): t.TypeParameterInstantiation {\n  const node: t.TypeParameterInstantiation = {\n    type: \"TypeParameterInstantiation\",\n    params,\n  };\n  const defs = NODE_FIELDS.TypeParameterInstantiation;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport function unionTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.UnionTypeAnnotation {\n  const node: t.UnionTypeAnnotation = {\n    type: \"UnionTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.UnionTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function variance(kind: \"minus\" | \"plus\"): t.Variance {\n  const node: t.Variance = {\n    type: \"Variance\",\n    kind,\n  };\n  const defs = NODE_FIELDS.Variance;\n  validate(defs.kind, node, \"kind\", kind);\n  return node;\n}\nexport function voidTypeAnnotation(): t.VoidTypeAnnotation {\n  return {\n    type: \"VoidTypeAnnotation\",\n  };\n}\nexport function enumDeclaration(\n  id: t.Identifier,\n  body:\n    | t.EnumBooleanBody\n    | t.EnumNumberBody\n    | t.EnumStringBody\n    | t.EnumSymbolBody,\n): t.EnumDeclaration {\n  const node: t.EnumDeclaration = {\n    type: \"EnumDeclaration\",\n    id,\n    body,\n  };\n  const defs = NODE_FIELDS.EnumDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function enumBooleanBody(\n  members: Array<t.EnumBooleanMember>,\n): t.EnumBooleanBody {\n  const node: t.EnumBooleanBody = {\n    type: \"EnumBooleanBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumBooleanBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumNumberBody(\n  members: Array<t.EnumNumberMember>,\n): t.EnumNumberBody {\n  const node: t.EnumNumberBody = {\n    type: \"EnumNumberBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumNumberBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumStringBody(\n  members: Array<t.EnumStringMember | t.EnumDefaultedMember>,\n): t.EnumStringBody {\n  const node: t.EnumStringBody = {\n    type: \"EnumStringBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumStringBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumSymbolBody(\n  members: Array<t.EnumDefaultedMember>,\n): t.EnumSymbolBody {\n  const node: t.EnumSymbolBody = {\n    type: \"EnumSymbolBody\",\n    members,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumSymbolBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumBooleanMember(id: t.Identifier): t.EnumBooleanMember {\n  const node: t.EnumBooleanMember = {\n    type: \"EnumBooleanMember\",\n    id,\n    init: null,\n  };\n  const defs = NODE_FIELDS.EnumBooleanMember;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function enumNumberMember(\n  id: t.Identifier,\n  init: t.NumericLiteral,\n): t.EnumNumberMember {\n  const node: t.EnumNumberMember = {\n    type: \"EnumNumberMember\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.EnumNumberMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function enumStringMember(\n  id: t.Identifier,\n  init: t.StringLiteral,\n): t.EnumStringMember {\n  const node: t.EnumStringMember = {\n    type: \"EnumStringMember\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.EnumStringMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function enumDefaultedMember(id: t.Identifier): t.EnumDefaultedMember {\n  const node: t.EnumDefaultedMember = {\n    type: \"EnumDefaultedMember\",\n    id,\n  };\n  const defs = NODE_FIELDS.EnumDefaultedMember;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function indexedAccessType(\n  objectType: t.FlowType,\n  indexType: t.FlowType,\n): t.IndexedAccessType {\n  const node: t.IndexedAccessType = {\n    type: \"IndexedAccessType\",\n    objectType,\n    indexType,\n  };\n  const defs = NODE_FIELDS.IndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport function optionalIndexedAccessType(\n  objectType: t.FlowType,\n  indexType: t.FlowType,\n): t.OptionalIndexedAccessType {\n  const node: t.OptionalIndexedAccessType = {\n    type: \"OptionalIndexedAccessType\",\n    objectType,\n    indexType,\n    optional: null,\n  };\n  const defs = NODE_FIELDS.OptionalIndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport function jsxAttribute(\n  name: t.JSXIdentifier | t.JSXNamespacedName,\n  value:\n    | t.JSXElement\n    | t.JSXFragment\n    | t.StringLiteral\n    | t.JSXExpressionContainer\n    | null = null,\n): t.JSXAttribute {\n  const node: t.JSXAttribute = {\n    type: \"JSXAttribute\",\n    name,\n    value,\n  };\n  const defs = NODE_FIELDS.JSXAttribute;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport { jsxAttribute as jSXAttribute };\nexport function jsxClosingElement(\n  name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n): t.JSXClosingElement {\n  const node: t.JSXClosingElement = {\n    type: \"JSXClosingElement\",\n    name,\n  };\n  const defs = NODE_FIELDS.JSXClosingElement;\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport { jsxClosingElement as jSXClosingElement };\nexport function jsxElement(\n  openingElement: t.JSXOpeningElement,\n  closingElement: t.JSXClosingElement | null | undefined = null,\n  children: Array<\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXElement\n    | t.JSXFragment\n  >,\n  selfClosing: boolean | null = null,\n): t.JSXElement {\n  const node: t.JSXElement = {\n    type: \"JSXElement\",\n    openingElement,\n    closingElement,\n    children,\n    selfClosing,\n  };\n  const defs = NODE_FIELDS.JSXElement;\n  validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n  validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n  validate(defs.children, node, \"children\", children, 1);\n  validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n  return node;\n}\nexport { jsxElement as jSXElement };\nexport function jsxEmptyExpression(): t.JSXEmptyExpression {\n  return {\n    type: \"JSXEmptyExpression\",\n  };\n}\nexport { jsxEmptyExpression as jSXEmptyExpression };\nexport function jsxExpressionContainer(\n  expression: t.Expression | t.JSXEmptyExpression,\n): t.JSXExpressionContainer {\n  const node: t.JSXExpressionContainer = {\n    type: \"JSXExpressionContainer\",\n    expression,\n  };\n  const defs = NODE_FIELDS.JSXExpressionContainer;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { jsxExpressionContainer as jSXExpressionContainer };\nexport function jsxSpreadChild(expression: t.Expression): t.JSXSpreadChild {\n  const node: t.JSXSpreadChild = {\n    type: \"JSXSpreadChild\",\n    expression,\n  };\n  const defs = NODE_FIELDS.JSXSpreadChild;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { jsxSpreadChild as jSXSpreadChild };\nexport function jsxIdentifier(name: string): t.JSXIdentifier {\n  const node: t.JSXIdentifier = {\n    type: \"JSXIdentifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.JSXIdentifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport { jsxIdentifier as jSXIdentifier };\nexport function jsxMemberExpression(\n  object: t.JSXMemberExpression | t.JSXIdentifier,\n  property: t.JSXIdentifier,\n): t.JSXMemberExpression {\n  const node: t.JSXMemberExpression = {\n    type: \"JSXMemberExpression\",\n    object,\n    property,\n  };\n  const defs = NODE_FIELDS.JSXMemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  return node;\n}\nexport { jsxMemberExpression as jSXMemberExpression };\nexport function jsxNamespacedName(\n  namespace: t.JSXIdentifier,\n  name: t.JSXIdentifier,\n): t.JSXNamespacedName {\n  const node: t.JSXNamespacedName = {\n    type: \"JSXNamespacedName\",\n    namespace,\n    name,\n  };\n  const defs = NODE_FIELDS.JSXNamespacedName;\n  validate(defs.namespace, node, \"namespace\", namespace, 1);\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport { jsxNamespacedName as jSXNamespacedName };\nexport function jsxOpeningElement(\n  name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  selfClosing: boolean = false,\n): t.JSXOpeningElement {\n  const node: t.JSXOpeningElement = {\n    type: \"JSXOpeningElement\",\n    name,\n    attributes,\n    selfClosing,\n  };\n  const defs = NODE_FIELDS.JSXOpeningElement;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n  return node;\n}\nexport { jsxOpeningElement as jSXOpeningElement };\nexport function jsxSpreadAttribute(\n  argument: t.Expression,\n): t.JSXSpreadAttribute {\n  const node: t.JSXSpreadAttribute = {\n    type: \"JSXSpreadAttribute\",\n    argument,\n  };\n  const defs = NODE_FIELDS.JSXSpreadAttribute;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport { jsxSpreadAttribute as jSXSpreadAttribute };\nexport function jsxText(value: string): t.JSXText {\n  const node: t.JSXText = {\n    type: \"JSXText\",\n    value,\n  };\n  const defs = NODE_FIELDS.JSXText;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport { jsxText as jSXText };\nexport function jsxFragment(\n  openingFragment: t.JSXOpeningFragment,\n  closingFragment: t.JSXClosingFragment,\n  children: Array<\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXElement\n    | t.JSXFragment\n  >,\n): t.JSXFragment {\n  const node: t.JSXFragment = {\n    type: \"JSXFragment\",\n    openingFragment,\n    closingFragment,\n    children,\n  };\n  const defs = NODE_FIELDS.JSXFragment;\n  validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n  validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n  validate(defs.children, node, \"children\", children, 1);\n  return node;\n}\nexport { jsxFragment as jSXFragment };\nexport function jsxOpeningFragment(): t.JSXOpeningFragment {\n  return {\n    type: \"JSXOpeningFragment\",\n  };\n}\nexport { jsxOpeningFragment as jSXOpeningFragment };\nexport function jsxClosingFragment(): t.JSXClosingFragment {\n  return {\n    type: \"JSXClosingFragment\",\n  };\n}\nexport { jsxClosingFragment as jSXClosingFragment };\nexport function noop(): t.Noop {\n  return {\n    type: \"Noop\",\n  };\n}\nexport function placeholder(\n  expectedNode:\n    | \"Identifier\"\n    | \"StringLiteral\"\n    | \"Expression\"\n    | \"Statement\"\n    | \"Declaration\"\n    | \"BlockStatement\"\n    | \"ClassBody\"\n    | \"Pattern\",\n  name: t.Identifier,\n): t.Placeholder {\n  const node: t.Placeholder = {\n    type: \"Placeholder\",\n    expectedNode,\n    name,\n  };\n  const defs = NODE_FIELDS.Placeholder;\n  validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport function v8IntrinsicIdentifier(name: string): t.V8IntrinsicIdentifier {\n  const node: t.V8IntrinsicIdentifier = {\n    type: \"V8IntrinsicIdentifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport function argumentPlaceholder(): t.ArgumentPlaceholder {\n  return {\n    type: \"ArgumentPlaceholder\",\n  };\n}\nexport function bindExpression(\n  object: t.Expression,\n  callee: t.Expression,\n): t.BindExpression {\n  const node: t.BindExpression = {\n    type: \"BindExpression\",\n    object,\n    callee,\n  };\n  const defs = NODE_FIELDS.BindExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.callee, node, \"callee\", callee, 1);\n  return node;\n}\nexport function importAttribute(\n  key: t.Identifier | t.StringLiteral,\n  value: t.StringLiteral,\n): t.ImportAttribute {\n  const node: t.ImportAttribute = {\n    type: \"ImportAttribute\",\n    key,\n    value,\n  };\n  const defs = NODE_FIELDS.ImportAttribute;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function decorator(expression: t.Expression): t.Decorator {\n  const node: t.Decorator = {\n    type: \"Decorator\",\n    expression,\n  };\n  const defs = NODE_FIELDS.Decorator;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function doExpression(\n  body: t.BlockStatement,\n  async: boolean = false,\n): t.DoExpression {\n  const node: t.DoExpression = {\n    type: \"DoExpression\",\n    body,\n    async,\n  };\n  const defs = NODE_FIELDS.DoExpression;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function exportDefaultSpecifier(\n  exported: t.Identifier,\n): t.ExportDefaultSpecifier {\n  const node: t.ExportDefaultSpecifier = {\n    type: \"ExportDefaultSpecifier\",\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportDefaultSpecifier;\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function recordExpression(\n  properties: Array<t.ObjectProperty | t.SpreadElement>,\n): t.RecordExpression {\n  const node: t.RecordExpression = {\n    type: \"RecordExpression\",\n    properties,\n  };\n  const defs = NODE_FIELDS.RecordExpression;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function tupleExpression(\n  elements: Array<t.Expression | t.SpreadElement> = [],\n): t.TupleExpression {\n  const node: t.TupleExpression = {\n    type: \"TupleExpression\",\n    elements,\n  };\n  const defs = NODE_FIELDS.TupleExpression;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function decimalLiteral(value: string): t.DecimalLiteral {\n  const node: t.DecimalLiteral = {\n    type: \"DecimalLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.DecimalLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function moduleExpression(body: t.Program): t.ModuleExpression {\n  const node: t.ModuleExpression = {\n    type: \"ModuleExpression\",\n    body,\n  };\n  const defs = NODE_FIELDS.ModuleExpression;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function topicReference(): t.TopicReference {\n  return {\n    type: \"TopicReference\",\n  };\n}\nexport function pipelineTopicExpression(\n  expression: t.Expression,\n): t.PipelineTopicExpression {\n  const node: t.PipelineTopicExpression = {\n    type: \"PipelineTopicExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.PipelineTopicExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function pipelineBareFunction(\n  callee: t.Expression,\n): t.PipelineBareFunction {\n  const node: t.PipelineBareFunction = {\n    type: \"PipelineBareFunction\",\n    callee,\n  };\n  const defs = NODE_FIELDS.PipelineBareFunction;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  return node;\n}\nexport function pipelinePrimaryTopicReference(): t.PipelinePrimaryTopicReference {\n  return {\n    type: \"PipelinePrimaryTopicReference\",\n  };\n}\nexport function tsParameterProperty(\n  parameter: t.Identifier | t.AssignmentPattern,\n): t.TSParameterProperty {\n  const node: t.TSParameterProperty = {\n    type: \"TSParameterProperty\",\n    parameter,\n  };\n  const defs = NODE_FIELDS.TSParameterProperty;\n  validate(defs.parameter, node, \"parameter\", parameter, 1);\n  return node;\n}\nexport { tsParameterProperty as tSParameterProperty };\nexport function tsDeclareFunction(\n  id: t.Identifier | null | undefined = null,\n  typeParameters:\n    | t.TSTypeParameterDeclaration\n    | t.Noop\n    | null\n    | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareFunction {\n  const node: t.TSDeclareFunction = {\n    type: \"TSDeclareFunction\",\n    id,\n    typeParameters,\n    params,\n    returnType,\n  };\n  const defs = NODE_FIELDS.TSDeclareFunction;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport { tsDeclareFunction as tSDeclareFunction };\nexport function tsDeclareMethod(\n  decorators: Array<t.Decorator> | null | undefined = null,\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  typeParameters:\n    | t.TSTypeParameterDeclaration\n    | t.Noop\n    | null\n    | undefined = null,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareMethod {\n  const node: t.TSDeclareMethod = {\n    type: \"TSDeclareMethod\",\n    decorators,\n    key,\n    typeParameters,\n    params,\n    returnType,\n  };\n  const defs = NODE_FIELDS.TSDeclareMethod;\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport { tsDeclareMethod as tSDeclareMethod };\nexport function tsQualifiedName(\n  left: t.TSEntityName,\n  right: t.Identifier,\n): t.TSQualifiedName {\n  const node: t.TSQualifiedName = {\n    type: \"TSQualifiedName\",\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.TSQualifiedName;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport { tsQualifiedName as tSQualifiedName };\nexport function tsCallSignatureDeclaration(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSCallSignatureDeclaration {\n  const node: t.TSCallSignatureDeclaration = {\n    type: \"TSCallSignatureDeclaration\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsCallSignatureDeclaration as tSCallSignatureDeclaration };\nexport function tsConstructSignatureDeclaration(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructSignatureDeclaration {\n  const node: t.TSConstructSignatureDeclaration = {\n    type: \"TSConstructSignatureDeclaration\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsConstructSignatureDeclaration as tSConstructSignatureDeclaration };\nexport function tsPropertySignature(\n  key: t.Expression,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSPropertySignature {\n  const node: t.TSPropertySignature = {\n    type: \"TSPropertySignature\",\n    key,\n    typeAnnotation,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSPropertySignature;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsPropertySignature as tSPropertySignature };\nexport function tsMethodSignature(\n  key: t.Expression,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSMethodSignature {\n  const node: t.TSMethodSignature = {\n    type: \"TSMethodSignature\",\n    key,\n    typeParameters,\n    parameters,\n    typeAnnotation,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSMethodSignature;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsMethodSignature as tSMethodSignature };\nexport function tsIndexSignature(\n  parameters: Array<t.Identifier>,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSIndexSignature {\n  const node: t.TSIndexSignature = {\n    type: \"TSIndexSignature\",\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSIndexSignature;\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsIndexSignature as tSIndexSignature };\nexport function tsAnyKeyword(): t.TSAnyKeyword {\n  return {\n    type: \"TSAnyKeyword\",\n  };\n}\nexport { tsAnyKeyword as tSAnyKeyword };\nexport function tsBooleanKeyword(): t.TSBooleanKeyword {\n  return {\n    type: \"TSBooleanKeyword\",\n  };\n}\nexport { tsBooleanKeyword as tSBooleanKeyword };\nexport function tsBigIntKeyword(): t.TSBigIntKeyword {\n  return {\n    type: \"TSBigIntKeyword\",\n  };\n}\nexport { tsBigIntKeyword as tSBigIntKeyword };\nexport function tsIntrinsicKeyword(): t.TSIntrinsicKeyword {\n  return {\n    type: \"TSIntrinsicKeyword\",\n  };\n}\nexport { tsIntrinsicKeyword as tSIntrinsicKeyword };\nexport function tsNeverKeyword(): t.TSNeverKeyword {\n  return {\n    type: \"TSNeverKeyword\",\n  };\n}\nexport { tsNeverKeyword as tSNeverKeyword };\nexport function tsNullKeyword(): t.TSNullKeyword {\n  return {\n    type: \"TSNullKeyword\",\n  };\n}\nexport { tsNullKeyword as tSNullKeyword };\nexport function tsNumberKeyword(): t.TSNumberKeyword {\n  return {\n    type: \"TSNumberKeyword\",\n  };\n}\nexport { tsNumberKeyword as tSNumberKeyword };\nexport function tsObjectKeyword(): t.TSObjectKeyword {\n  return {\n    type: \"TSObjectKeyword\",\n  };\n}\nexport { tsObjectKeyword as tSObjectKeyword };\nexport function tsStringKeyword(): t.TSStringKeyword {\n  return {\n    type: \"TSStringKeyword\",\n  };\n}\nexport { tsStringKeyword as tSStringKeyword };\nexport function tsSymbolKeyword(): t.TSSymbolKeyword {\n  return {\n    type: \"TSSymbolKeyword\",\n  };\n}\nexport { tsSymbolKeyword as tSSymbolKeyword };\nexport function tsUndefinedKeyword(): t.TSUndefinedKeyword {\n  return {\n    type: \"TSUndefinedKeyword\",\n  };\n}\nexport { tsUndefinedKeyword as tSUndefinedKeyword };\nexport function tsUnknownKeyword(): t.TSUnknownKeyword {\n  return {\n    type: \"TSUnknownKeyword\",\n  };\n}\nexport { tsUnknownKeyword as tSUnknownKeyword };\nexport function tsVoidKeyword(): t.TSVoidKeyword {\n  return {\n    type: \"TSVoidKeyword\",\n  };\n}\nexport { tsVoidKeyword as tSVoidKeyword };\nexport function tsThisType(): t.TSThisType {\n  return {\n    type: \"TSThisType\",\n  };\n}\nexport { tsThisType as tSThisType };\nexport function tsFunctionType(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSFunctionType {\n  const node: t.TSFunctionType = {\n    type: \"TSFunctionType\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSFunctionType;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsFunctionType as tSFunctionType };\nexport function tsConstructorType(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructorType {\n  const node: t.TSConstructorType = {\n    type: \"TSConstructorType\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSConstructorType;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsConstructorType as tSConstructorType };\nexport function tsTypeReference(\n  typeName: t.TSEntityName,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeReference {\n  const node: t.TSTypeReference = {\n    type: \"TSTypeReference\",\n    typeName,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSTypeReference;\n  validate(defs.typeName, node, \"typeName\", typeName, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsTypeReference as tSTypeReference };\nexport function tsTypePredicate(\n  parameterName: t.Identifier | t.TSThisType,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n  asserts: boolean | null = null,\n): t.TSTypePredicate {\n  const node: t.TSTypePredicate = {\n    type: \"TSTypePredicate\",\n    parameterName,\n    typeAnnotation,\n    asserts,\n  };\n  const defs = NODE_FIELDS.TSTypePredicate;\n  validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.asserts, node, \"asserts\", asserts);\n  return node;\n}\nexport { tsTypePredicate as tSTypePredicate };\nexport function tsTypeQuery(\n  exprName: t.TSEntityName | t.TSImportType,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeQuery {\n  const node: t.TSTypeQuery = {\n    type: \"TSTypeQuery\",\n    exprName,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSTypeQuery;\n  validate(defs.exprName, node, \"exprName\", exprName, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsTypeQuery as tSTypeQuery };\nexport function tsTypeLiteral(\n  members: Array<t.TSTypeElement>,\n): t.TSTypeLiteral {\n  const node: t.TSTypeLiteral = {\n    type: \"TSTypeLiteral\",\n    members,\n  };\n  const defs = NODE_FIELDS.TSTypeLiteral;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsTypeLiteral as tSTypeLiteral };\nexport function tsArrayType(elementType: t.TSType): t.TSArrayType {\n  const node: t.TSArrayType = {\n    type: \"TSArrayType\",\n    elementType,\n  };\n  const defs = NODE_FIELDS.TSArrayType;\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  return node;\n}\nexport { tsArrayType as tSArrayType };\nexport function tsTupleType(\n  elementTypes: Array<t.TSType | t.TSNamedTupleMember>,\n): t.TSTupleType {\n  const node: t.TSTupleType = {\n    type: \"TSTupleType\",\n    elementTypes,\n  };\n  const defs = NODE_FIELDS.TSTupleType;\n  validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n  return node;\n}\nexport { tsTupleType as tSTupleType };\nexport function tsOptionalType(typeAnnotation: t.TSType): t.TSOptionalType {\n  const node: t.TSOptionalType = {\n    type: \"TSOptionalType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSOptionalType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsOptionalType as tSOptionalType };\nexport function tsRestType(typeAnnotation: t.TSType): t.TSRestType {\n  const node: t.TSRestType = {\n    type: \"TSRestType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSRestType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsRestType as tSRestType };\nexport function tsNamedTupleMember(\n  label: t.Identifier,\n  elementType: t.TSType,\n  optional: boolean = false,\n): t.TSNamedTupleMember {\n  const node: t.TSNamedTupleMember = {\n    type: \"TSNamedTupleMember\",\n    label,\n    elementType,\n    optional,\n  };\n  const defs = NODE_FIELDS.TSNamedTupleMember;\n  validate(defs.label, node, \"label\", label, 1);\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport { tsNamedTupleMember as tSNamedTupleMember };\nexport function tsUnionType(types: Array<t.TSType>): t.TSUnionType {\n  const node: t.TSUnionType = {\n    type: \"TSUnionType\",\n    types,\n  };\n  const defs = NODE_FIELDS.TSUnionType;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsUnionType as tSUnionType };\nexport function tsIntersectionType(\n  types: Array<t.TSType>,\n): t.TSIntersectionType {\n  const node: t.TSIntersectionType = {\n    type: \"TSIntersectionType\",\n    types,\n  };\n  const defs = NODE_FIELDS.TSIntersectionType;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsIntersectionType as tSIntersectionType };\nexport function tsConditionalType(\n  checkType: t.TSType,\n  extendsType: t.TSType,\n  trueType: t.TSType,\n  falseType: t.TSType,\n): t.TSConditionalType {\n  const node: t.TSConditionalType = {\n    type: \"TSConditionalType\",\n    checkType,\n    extendsType,\n    trueType,\n    falseType,\n  };\n  const defs = NODE_FIELDS.TSConditionalType;\n  validate(defs.checkType, node, \"checkType\", checkType, 1);\n  validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n  validate(defs.trueType, node, \"trueType\", trueType, 1);\n  validate(defs.falseType, node, \"falseType\", falseType, 1);\n  return node;\n}\nexport { tsConditionalType as tSConditionalType };\nexport function tsInferType(typeParameter: t.TSTypeParameter): t.TSInferType {\n  const node: t.TSInferType = {\n    type: \"TSInferType\",\n    typeParameter,\n  };\n  const defs = NODE_FIELDS.TSInferType;\n  validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n  return node;\n}\nexport { tsInferType as tSInferType };\nexport function tsParenthesizedType(\n  typeAnnotation: t.TSType,\n): t.TSParenthesizedType {\n  const node: t.TSParenthesizedType = {\n    type: \"TSParenthesizedType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSParenthesizedType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsParenthesizedType as tSParenthesizedType };\nexport function tsTypeOperator(typeAnnotation: t.TSType): t.TSTypeOperator {\n  const node: t.TSTypeOperator = {\n    type: \"TSTypeOperator\",\n    typeAnnotation,\n    operator: null,\n  };\n  const defs = NODE_FIELDS.TSTypeOperator;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeOperator as tSTypeOperator };\nexport function tsIndexedAccessType(\n  objectType: t.TSType,\n  indexType: t.TSType,\n): t.TSIndexedAccessType {\n  const node: t.TSIndexedAccessType = {\n    type: \"TSIndexedAccessType\",\n    objectType,\n    indexType,\n  };\n  const defs = NODE_FIELDS.TSIndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport { tsIndexedAccessType as tSIndexedAccessType };\nexport function tsMappedType(\n  typeParameter: t.TSTypeParameter,\n  typeAnnotation: t.TSType | null = null,\n  nameType: t.TSType | null = null,\n): t.TSMappedType {\n  const node: t.TSMappedType = {\n    type: \"TSMappedType\",\n    typeParameter,\n    typeAnnotation,\n    nameType,\n  };\n  const defs = NODE_FIELDS.TSMappedType;\n  validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.nameType, node, \"nameType\", nameType, 1);\n  return node;\n}\nexport { tsMappedType as tSMappedType };\nexport function tsLiteralType(\n  literal:\n    | t.NumericLiteral\n    | t.StringLiteral\n    | t.BooleanLiteral\n    | t.BigIntLiteral\n    | t.TemplateLiteral\n    | t.UnaryExpression,\n): t.TSLiteralType {\n  const node: t.TSLiteralType = {\n    type: \"TSLiteralType\",\n    literal,\n  };\n  const defs = NODE_FIELDS.TSLiteralType;\n  validate(defs.literal, node, \"literal\", literal, 1);\n  return node;\n}\nexport { tsLiteralType as tSLiteralType };\nexport function tsExpressionWithTypeArguments(\n  expression: t.TSEntityName,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSExpressionWithTypeArguments {\n  const node: t.TSExpressionWithTypeArguments = {\n    type: \"TSExpressionWithTypeArguments\",\n    expression,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSExpressionWithTypeArguments;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsExpressionWithTypeArguments as tSExpressionWithTypeArguments };\nexport function tsInterfaceDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.TSExpressionWithTypeArguments> | null | undefined = null,\n  body: t.TSInterfaceBody,\n): t.TSInterfaceDeclaration {\n  const node: t.TSInterfaceDeclaration = {\n    type: \"TSInterfaceDeclaration\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.TSInterfaceDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsInterfaceDeclaration as tSInterfaceDeclaration };\nexport function tsInterfaceBody(\n  body: Array<t.TSTypeElement>,\n): t.TSInterfaceBody {\n  const node: t.TSInterfaceBody = {\n    type: \"TSInterfaceBody\",\n    body,\n  };\n  const defs = NODE_FIELDS.TSInterfaceBody;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsInterfaceBody as tSInterfaceBody };\nexport function tsTypeAliasDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  typeAnnotation: t.TSType,\n): t.TSTypeAliasDeclaration {\n  const node: t.TSTypeAliasDeclaration = {\n    type: \"TSTypeAliasDeclaration\",\n    id,\n    typeParameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeAliasDeclaration as tSTypeAliasDeclaration };\nexport function tsInstantiationExpression(\n  expression: t.Expression,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSInstantiationExpression {\n  const node: t.TSInstantiationExpression = {\n    type: \"TSInstantiationExpression\",\n    expression,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSInstantiationExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsInstantiationExpression as tSInstantiationExpression };\nexport function tsAsExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TSType,\n): t.TSAsExpression {\n  const node: t.TSAsExpression = {\n    type: \"TSAsExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSAsExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsAsExpression as tSAsExpression };\nexport function tsSatisfiesExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TSType,\n): t.TSSatisfiesExpression {\n  const node: t.TSSatisfiesExpression = {\n    type: \"TSSatisfiesExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSSatisfiesExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsSatisfiesExpression as tSSatisfiesExpression };\nexport function tsTypeAssertion(\n  typeAnnotation: t.TSType,\n  expression: t.Expression,\n): t.TSTypeAssertion {\n  const node: t.TSTypeAssertion = {\n    type: \"TSTypeAssertion\",\n    typeAnnotation,\n    expression,\n  };\n  const defs = NODE_FIELDS.TSTypeAssertion;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsTypeAssertion as tSTypeAssertion };\nexport function tsEnumDeclaration(\n  id: t.Identifier,\n  members: Array<t.TSEnumMember>,\n): t.TSEnumDeclaration {\n  const node: t.TSEnumDeclaration = {\n    type: \"TSEnumDeclaration\",\n    id,\n    members,\n  };\n  const defs = NODE_FIELDS.TSEnumDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsEnumDeclaration as tSEnumDeclaration };\nexport function tsEnumMember(\n  id: t.Identifier | t.StringLiteral,\n  initializer: t.Expression | null = null,\n): t.TSEnumMember {\n  const node: t.TSEnumMember = {\n    type: \"TSEnumMember\",\n    id,\n    initializer,\n  };\n  const defs = NODE_FIELDS.TSEnumMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.initializer, node, \"initializer\", initializer, 1);\n  return node;\n}\nexport { tsEnumMember as tSEnumMember };\nexport function tsModuleDeclaration(\n  id: t.Identifier | t.StringLiteral,\n  body: t.TSModuleBlock | t.TSModuleDeclaration,\n): t.TSModuleDeclaration {\n  const node: t.TSModuleDeclaration = {\n    type: \"TSModuleDeclaration\",\n    id,\n    body,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSModuleDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsModuleDeclaration as tSModuleDeclaration };\nexport function tsModuleBlock(body: Array<t.Statement>): t.TSModuleBlock {\n  const node: t.TSModuleBlock = {\n    type: \"TSModuleBlock\",\n    body,\n  };\n  const defs = NODE_FIELDS.TSModuleBlock;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsModuleBlock as tSModuleBlock };\nexport function tsImportType(\n  argument: t.StringLiteral,\n  qualifier: t.TSEntityName | null = null,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSImportType {\n  const node: t.TSImportType = {\n    type: \"TSImportType\",\n    argument,\n    qualifier,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSImportType;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsImportType as tSImportType };\nexport function tsImportEqualsDeclaration(\n  id: t.Identifier,\n  moduleReference: t.TSEntityName | t.TSExternalModuleReference,\n): t.TSImportEqualsDeclaration {\n  const node: t.TSImportEqualsDeclaration = {\n    type: \"TSImportEqualsDeclaration\",\n    id,\n    moduleReference,\n    isExport: null,\n  };\n  const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n  return node;\n}\nexport { tsImportEqualsDeclaration as tSImportEqualsDeclaration };\nexport function tsExternalModuleReference(\n  expression: t.StringLiteral,\n): t.TSExternalModuleReference {\n  const node: t.TSExternalModuleReference = {\n    type: \"TSExternalModuleReference\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSExternalModuleReference;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsExternalModuleReference as tSExternalModuleReference };\nexport function tsNonNullExpression(\n  expression: t.Expression,\n): t.TSNonNullExpression {\n  const node: t.TSNonNullExpression = {\n    type: \"TSNonNullExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSNonNullExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsNonNullExpression as tSNonNullExpression };\nexport function tsExportAssignment(\n  expression: t.Expression,\n): t.TSExportAssignment {\n  const node: t.TSExportAssignment = {\n    type: \"TSExportAssignment\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSExportAssignment;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsExportAssignment as tSExportAssignment };\nexport function tsNamespaceExportDeclaration(\n  id: t.Identifier,\n): t.TSNamespaceExportDeclaration {\n  const node: t.TSNamespaceExportDeclaration = {\n    type: \"TSNamespaceExportDeclaration\",\n    id,\n  };\n  const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport { tsNamespaceExportDeclaration as tSNamespaceExportDeclaration };\nexport function tsTypeAnnotation(typeAnnotation: t.TSType): t.TSTypeAnnotation {\n  const node: t.TSTypeAnnotation = {\n    type: \"TSTypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSTypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeAnnotation as tSTypeAnnotation };\nexport function tsTypeParameterInstantiation(\n  params: Array<t.TSType>,\n): t.TSTypeParameterInstantiation {\n  const node: t.TSTypeParameterInstantiation = {\n    type: \"TSTypeParameterInstantiation\",\n    params,\n  };\n  const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport { tsTypeParameterInstantiation as tSTypeParameterInstantiation };\nexport function tsTypeParameterDeclaration(\n  params: Array<t.TSTypeParameter>,\n): t.TSTypeParameterDeclaration {\n  const node: t.TSTypeParameterDeclaration = {\n    type: \"TSTypeParameterDeclaration\",\n    params,\n  };\n  const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport { tsTypeParameterDeclaration as tSTypeParameterDeclaration };\nexport function tsTypeParameter(\n  constraint: t.TSType | null | undefined = null,\n  _default: t.TSType | null | undefined = null,\n  name: string,\n): t.TSTypeParameter {\n  const node: t.TSTypeParameter = {\n    type: \"TSTypeParameter\",\n    constraint,\n    default: _default,\n    name,\n  };\n  const defs = NODE_FIELDS.TSTypeParameter;\n  validate(defs.constraint, node, \"constraint\", constraint, 1);\n  validate(defs.default, node, \"default\", _default, 1);\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport { tsTypeParameter as tSTypeParameter };\n/** @deprecated */\nfunction NumberLiteral(value: number) {\n  deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n  return numericLiteral(value);\n}\nexport { NumberLiteral as numberLiteral };\n/** @deprecated */\nfunction RegexLiteral(pattern: string, flags: string = \"\") {\n  deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n  return regExpLiteral(pattern, flags);\n}\nexport { RegexLiteral as regexLiteral };\n/** @deprecated */\nfunction RestProperty(argument: t.LVal) {\n  deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n  return restElement(argument);\n}\nexport { RestProperty as restProperty };\n/** @deprecated */\nfunction SpreadProperty(argument: t.Expression) {\n  deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n  return spreadElement(argument);\n}\nexport { SpreadProperty as spreadProperty };\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_validate","require","_deprecationWarning","utils","validateInternal","validate","NODE_FIELDS","arrayExpression","elements","node","type","defs","ArrayExpression","assignmentExpression","operator","left","right","AssignmentExpression","binaryExpression","BinaryExpression","interpreterDirective","value","InterpreterDirective","directive","Directive","directiveLiteral","DirectiveLiteral","blockStatement","body","directives","BlockStatement","breakStatement","label","BreakStatement","callExpression","callee","_arguments","arguments","CallExpression","catchClause","param","CatchClause","conditionalExpression","test","consequent","alternate","ConditionalExpression","continueStatement","ContinueStatement","debuggerStatement","doWhileStatement","DoWhileStatement","emptyStatement","expressionStatement","expression","ExpressionStatement","file","program","comments","tokens","File","forInStatement","ForInStatement","forStatement","init","update","ForStatement","functionDeclaration","id","params","generator","async","FunctionDeclaration","functionExpression","FunctionExpression","identifier","name","Identifier","ifStatement","IfStatement","labeledStatement","LabeledStatement","stringLiteral","StringLiteral","numericLiteral","NumericLiteral","nullLiteral","booleanLiteral","BooleanLiteral","regExpLiteral","pattern","flags","RegExpLiteral","logicalExpression","LogicalExpression","memberExpression","object","property","computed","optional","MemberExpression","newExpression","NewExpression","sourceType","interpreter","Program","objectExpression","properties","ObjectExpression","objectMethod","kind","key","ObjectMethod","objectProperty","shorthand","decorators","ObjectProperty","restElement","argument","RestElement","returnStatement","ReturnStatement","sequenceExpression","expressions","SequenceExpression","parenthesizedExpression","ParenthesizedExpression","switchCase","SwitchCase","switchStatement","discriminant","cases","SwitchStatement","thisExpression","throwStatement","ThrowStatement","tryStatement","block","handler","finalizer","TryStatement","unaryExpression","prefix","UnaryExpression","updateExpression","UpdateExpression","variableDeclaration","declarations","VariableDeclaration","variableDeclarator","VariableDeclarator","whileStatement","WhileStatement","withStatement","WithStatement","assignmentPattern","AssignmentPattern","arrayPattern","ArrayPattern","arrowFunctionExpression","ArrowFunctionExpression","classBody","ClassBody","classExpression","superClass","ClassExpression","classDeclaration","ClassDeclaration","exportAllDeclaration","source","ExportAllDeclaration","exportDefaultDeclaration","declaration","ExportDefaultDeclaration","exportNamedDeclaration","specifiers","ExportNamedDeclaration","exportSpecifier","local","exported","ExportSpecifier","forOfStatement","_await","await","ForOfStatement","importDeclaration","ImportDeclaration","importDefaultSpecifier","ImportDefaultSpecifier","importNamespaceSpecifier","ImportNamespaceSpecifier","importSpecifier","imported","ImportSpecifier","importExpression","options","ImportExpression","metaProperty","meta","MetaProperty","classMethod","_static","static","ClassMethod","objectPattern","ObjectPattern","spreadElement","SpreadElement","_super","taggedTemplateExpression","tag","quasi","TaggedTemplateExpression","templateElement","tail","TemplateElement","templateLiteral","quasis","TemplateLiteral","yieldExpression","delegate","YieldExpression","awaitExpression","AwaitExpression","_import","bigIntLiteral","BigIntLiteral","exportNamespaceSpecifier","ExportNamespaceSpecifier","optionalMemberExpression","OptionalMemberExpression","optionalCallExpression","OptionalCallExpression","classProperty","typeAnnotation","ClassProperty","classAccessorProperty","ClassAccessorProperty","classPrivateProperty","ClassPrivateProperty","classPrivateMethod","ClassPrivateMethod","privateName","PrivateName","staticBlock","StaticBlock","anyTypeAnnotation","arrayTypeAnnotation","elementType","ArrayTypeAnnotation","booleanTypeAnnotation","booleanLiteralTypeAnnotation","BooleanLiteralTypeAnnotation","nullLiteralTypeAnnotation","classImplements","typeParameters","ClassImplements","declareClass","_extends","extends","DeclareClass","declareFunction","DeclareFunction","declareInterface","DeclareInterface","declareModule","DeclareModule","declareModuleExports","DeclareModuleExports","declareTypeAlias","DeclareTypeAlias","declareOpaqueType","supertype","DeclareOpaqueType","declareVariable","DeclareVariable","declareExportDeclaration","attributes","DeclareExportDeclaration","declareExportAllDeclaration","DeclareExportAllDeclaration","declaredPredicate","DeclaredPredicate","existsTypeAnnotation","functionTypeAnnotation","rest","returnType","FunctionTypeAnnotation","functionTypeParam","FunctionTypeParam","genericTypeAnnotation","GenericTypeAnnotation","inferredPredicate","interfaceExtends","InterfaceExtends","interfaceDeclaration","InterfaceDeclaration","interfaceTypeAnnotation","InterfaceTypeAnnotation","intersectionTypeAnnotation","types","IntersectionTypeAnnotation","mixedTypeAnnotation","emptyTypeAnnotation","nullableTypeAnnotation","NullableTypeAnnotation","numberLiteralTypeAnnotation","NumberLiteralTypeAnnotation","numberTypeAnnotation","objectTypeAnnotation","indexers","callProperties","internalSlots","exact","ObjectTypeAnnotation","objectTypeInternalSlot","method","ObjectTypeInternalSlot","objectTypeCallProperty","ObjectTypeCallProperty","objectTypeIndexer","variance","ObjectTypeIndexer","objectTypeProperty","proto","ObjectTypeProperty","objectTypeSpreadProperty","ObjectTypeSpreadProperty","opaqueType","impltype","OpaqueType","qualifiedTypeIdentifier","qualification","QualifiedTypeIdentifier","stringLiteralTypeAnnotation","StringLiteralTypeAnnotation","stringTypeAnnotation","symbolTypeAnnotation","thisTypeAnnotation","tupleTypeAnnotation","TupleTypeAnnotation","typeofTypeAnnotation","TypeofTypeAnnotation","typeAlias","TypeAlias","TypeAnnotation","typeCastExpression","TypeCastExpression","typeParameter","bound","_default","default","TypeParameter","typeParameterDeclaration","TypeParameterDeclaration","typeParameterInstantiation","TypeParameterInstantiation","unionTypeAnnotation","UnionTypeAnnotation","Variance","voidTypeAnnotation","enumDeclaration","EnumDeclaration","enumBooleanBody","members","explicitType","hasUnknownMembers","EnumBooleanBody","enumNumberBody","EnumNumberBody","enumStringBody","EnumStringBody","enumSymbolBody","EnumSymbolBody","enumBooleanMember","EnumBooleanMember","enumNumberMember","EnumNumberMember","enumStringMember","EnumStringMember","enumDefaultedMember","EnumDefaultedMember","indexedAccessType","objectType","indexType","IndexedAccessType","optionalIndexedAccessType","OptionalIndexedAccessType","jsxAttribute","JSXAttribute","jsxClosingElement","JSXClosingElement","jsxElement","openingElement","closingElement","children","selfClosing","JSXElement","jsxEmptyExpression","jsxExpressionContainer","JSXExpressionContainer","jsxSpreadChild","JSXSpreadChild","jsxIdentifier","JSXIdentifier","jsxMemberExpression","JSXMemberExpression","jsxNamespacedName","namespace","JSXNamespacedName","jsxOpeningElement","JSXOpeningElement","jsxSpreadAttribute","JSXSpreadAttribute","jsxText","JSXText","jsxFragment","openingFragment","closingFragment","JSXFragment","jsxOpeningFragment","jsxClosingFragment","noop","placeholder","expectedNode","Placeholder","v8IntrinsicIdentifier","V8IntrinsicIdentifier","argumentPlaceholder","bindExpression","BindExpression","importAttribute","ImportAttribute","decorator","Decorator","doExpression","DoExpression","exportDefaultSpecifier","ExportDefaultSpecifier","recordExpression","RecordExpression","tupleExpression","TupleExpression","decimalLiteral","DecimalLiteral","moduleExpression","ModuleExpression","topicReference","pipelineTopicExpression","PipelineTopicExpression","pipelineBareFunction","PipelineBareFunction","pipelinePrimaryTopicReference","tsParameterProperty","parameter","TSParameterProperty","tsDeclareFunction","TSDeclareFunction","tsDeclareMethod","TSDeclareMethod","tsQualifiedName","TSQualifiedName","tsCallSignatureDeclaration","parameters","TSCallSignatureDeclaration","tsConstructSignatureDeclaration","TSConstructSignatureDeclaration","tsPropertySignature","TSPropertySignature","tsMethodSignature","TSMethodSignature","tsIndexSignature","TSIndexSignature","tsAnyKeyword","tsBooleanKeyword","tsBigIntKeyword","tsIntrinsicKeyword","tsNeverKeyword","tsNullKeyword","tsNumberKeyword","tsObjectKeyword","tsStringKeyword","tsSymbolKeyword","tsUndefinedKeyword","tsUnknownKeyword","tsVoidKeyword","tsThisType","tsFunctionType","TSFunctionType","tsConstructorType","TSConstructorType","tsTypeReference","typeName","TSTypeReference","tsTypePredicate","parameterName","asserts","TSTypePredicate","tsTypeQuery","exprName","TSTypeQuery","tsTypeLiteral","TSTypeLiteral","tsArrayType","TSArrayType","tsTupleType","elementTypes","TSTupleType","tsOptionalType","TSOptionalType","tsRestType","TSRestType","tsNamedTupleMember","TSNamedTupleMember","tsUnionType","TSUnionType","tsIntersectionType","TSIntersectionType","tsConditionalType","checkType","extendsType","trueType","falseType","TSConditionalType","tsInferType","TSInferType","tsParenthesizedType","TSParenthesizedType","tsTypeOperator","TSTypeOperator","tsIndexedAccessType","TSIndexedAccessType","tsMappedType","nameType","TSMappedType","tsLiteralType","literal","TSLiteralType","tsExpressionWithTypeArguments","TSExpressionWithTypeArguments","tsInterfaceDeclaration","TSInterfaceDeclaration","tsInterfaceBody","TSInterfaceBody","tsTypeAliasDeclaration","TSTypeAliasDeclaration","tsInstantiationExpression","TSInstantiationExpression","tsAsExpression","TSAsExpression","tsSatisfiesExpression","TSSatisfiesExpression","tsTypeAssertion","TSTypeAssertion","tsEnumBody","TSEnumBody","tsEnumDeclaration","TSEnumDeclaration","tsEnumMember","initializer","TSEnumMember","tsModuleDeclaration","TSModuleDeclaration","tsModuleBlock","TSModuleBlock","tsImportType","qualifier","TSImportType","tsImportEqualsDeclaration","moduleReference","isExport","TSImportEqualsDeclaration","tsExternalModuleReference","TSExternalModuleReference","tsNonNullExpression","TSNonNullExpression","tsExportAssignment","TSExportAssignment","tsNamespaceExportDeclaration","TSNamespaceExportDeclaration","tsTypeAnnotation","TSTypeAnnotation","tsTypeParameterInstantiation","TSTypeParameterInstantiation","tsTypeParameterDeclaration","TSTypeParameterDeclaration","tsTypeParameter","constraint","TSTypeParameter","NumberLiteral","deprecationWarning","RegexLiteral","RestProperty","SpreadProperty"],"sources":["../../../src/builders/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport * as _validate from \"../../validators/validate.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\nimport * as utils from \"../../definitions/utils.ts\";\n\nconst { validateInternal: validate } = _validate;\nconst { NODE_FIELDS } = utils;\n\nexport function arrayExpression(\n  elements: Array<null | t.Expression | t.SpreadElement> = [],\n): t.ArrayExpression {\n  const node: t.ArrayExpression = {\n    type: \"ArrayExpression\",\n    elements,\n  };\n  const defs = NODE_FIELDS.ArrayExpression;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function assignmentExpression(\n  operator: string,\n  left: t.LVal | t.OptionalMemberExpression,\n  right: t.Expression,\n): t.AssignmentExpression {\n  const node: t.AssignmentExpression = {\n    type: \"AssignmentExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.AssignmentExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function binaryExpression(\n  operator:\n    | \"+\"\n    | \"-\"\n    | \"/\"\n    | \"%\"\n    | \"*\"\n    | \"**\"\n    | \"&\"\n    | \"|\"\n    | \">>\"\n    | \">>>\"\n    | \"<<\"\n    | \"^\"\n    | \"==\"\n    | \"===\"\n    | \"!=\"\n    | \"!==\"\n    | \"in\"\n    | \"instanceof\"\n    | \">\"\n    | \"<\"\n    | \">=\"\n    | \"<=\"\n    | \"|>\",\n  left: t.Expression | t.PrivateName,\n  right: t.Expression,\n): t.BinaryExpression {\n  const node: t.BinaryExpression = {\n    type: \"BinaryExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.BinaryExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function interpreterDirective(value: string): t.InterpreterDirective {\n  const node: t.InterpreterDirective = {\n    type: \"InterpreterDirective\",\n    value,\n  };\n  const defs = NODE_FIELDS.InterpreterDirective;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function directive(value: t.DirectiveLiteral): t.Directive {\n  const node: t.Directive = {\n    type: \"Directive\",\n    value,\n  };\n  const defs = NODE_FIELDS.Directive;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function directiveLiteral(value: string): t.DirectiveLiteral {\n  const node: t.DirectiveLiteral = {\n    type: \"DirectiveLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.DirectiveLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function blockStatement(\n  body: Array<t.Statement>,\n  directives: Array<t.Directive> = [],\n): t.BlockStatement {\n  const node: t.BlockStatement = {\n    type: \"BlockStatement\",\n    body,\n    directives,\n  };\n  const defs = NODE_FIELDS.BlockStatement;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.directives, node, \"directives\", directives, 1);\n  return node;\n}\nexport function breakStatement(\n  label: t.Identifier | null = null,\n): t.BreakStatement {\n  const node: t.BreakStatement = {\n    type: \"BreakStatement\",\n    label,\n  };\n  const defs = NODE_FIELDS.BreakStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  return node;\n}\nexport function callExpression(\n  callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n): t.CallExpression {\n  const node: t.CallExpression = {\n    type: \"CallExpression\",\n    callee,\n    arguments: _arguments,\n  };\n  const defs = NODE_FIELDS.CallExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  return node;\n}\nexport function catchClause(\n  param:\n    | t.Identifier\n    | t.ArrayPattern\n    | t.ObjectPattern\n    | null\n    | undefined = null,\n  body: t.BlockStatement,\n): t.CatchClause {\n  const node: t.CatchClause = {\n    type: \"CatchClause\",\n    param,\n    body,\n  };\n  const defs = NODE_FIELDS.CatchClause;\n  validate(defs.param, node, \"param\", param, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function conditionalExpression(\n  test: t.Expression,\n  consequent: t.Expression,\n  alternate: t.Expression,\n): t.ConditionalExpression {\n  const node: t.ConditionalExpression = {\n    type: \"ConditionalExpression\",\n    test,\n    consequent,\n    alternate,\n  };\n  const defs = NODE_FIELDS.ConditionalExpression;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  validate(defs.alternate, node, \"alternate\", alternate, 1);\n  return node;\n}\nexport function continueStatement(\n  label: t.Identifier | null = null,\n): t.ContinueStatement {\n  const node: t.ContinueStatement = {\n    type: \"ContinueStatement\",\n    label,\n  };\n  const defs = NODE_FIELDS.ContinueStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  return node;\n}\nexport function debuggerStatement(): t.DebuggerStatement {\n  return {\n    type: \"DebuggerStatement\",\n  };\n}\nexport function doWhileStatement(\n  test: t.Expression,\n  body: t.Statement,\n): t.DoWhileStatement {\n  const node: t.DoWhileStatement = {\n    type: \"DoWhileStatement\",\n    test,\n    body,\n  };\n  const defs = NODE_FIELDS.DoWhileStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function emptyStatement(): t.EmptyStatement {\n  return {\n    type: \"EmptyStatement\",\n  };\n}\nexport function expressionStatement(\n  expression: t.Expression,\n): t.ExpressionStatement {\n  const node: t.ExpressionStatement = {\n    type: \"ExpressionStatement\",\n    expression,\n  };\n  const defs = NODE_FIELDS.ExpressionStatement;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function file(\n  program: t.Program,\n  comments: Array<t.CommentBlock | t.CommentLine> | null = null,\n  tokens: Array<any> | null = null,\n): t.File {\n  const node: t.File = {\n    type: \"File\",\n    program,\n    comments,\n    tokens,\n  };\n  const defs = NODE_FIELDS.File;\n  validate(defs.program, node, \"program\", program, 1);\n  validate(defs.comments, node, \"comments\", comments, 1);\n  validate(defs.tokens, node, \"tokens\", tokens);\n  return node;\n}\nexport function forInStatement(\n  left: t.VariableDeclaration | t.LVal,\n  right: t.Expression,\n  body: t.Statement,\n): t.ForInStatement {\n  const node: t.ForInStatement = {\n    type: \"ForInStatement\",\n    left,\n    right,\n    body,\n  };\n  const defs = NODE_FIELDS.ForInStatement;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function forStatement(\n  init: t.VariableDeclaration | t.Expression | null | undefined = null,\n  test: t.Expression | null | undefined = null,\n  update: t.Expression | null | undefined = null,\n  body: t.Statement,\n): t.ForStatement {\n  const node: t.ForStatement = {\n    type: \"ForStatement\",\n    init,\n    test,\n    update,\n    body,\n  };\n  const defs = NODE_FIELDS.ForStatement;\n  validate(defs.init, node, \"init\", init, 1);\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.update, node, \"update\", update, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function functionDeclaration(\n  id: t.Identifier | null | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  generator: boolean = false,\n  async: boolean = false,\n): t.FunctionDeclaration {\n  const node: t.FunctionDeclaration = {\n    type: \"FunctionDeclaration\",\n    id,\n    params,\n    body,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.FunctionDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function functionExpression(\n  id: t.Identifier | null | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  generator: boolean = false,\n  async: boolean = false,\n): t.FunctionExpression {\n  const node: t.FunctionExpression = {\n    type: \"FunctionExpression\",\n    id,\n    params,\n    body,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.FunctionExpression;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function identifier(name: string): t.Identifier {\n  const node: t.Identifier = {\n    type: \"Identifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.Identifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport function ifStatement(\n  test: t.Expression,\n  consequent: t.Statement,\n  alternate: t.Statement | null = null,\n): t.IfStatement {\n  const node: t.IfStatement = {\n    type: \"IfStatement\",\n    test,\n    consequent,\n    alternate,\n  };\n  const defs = NODE_FIELDS.IfStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  validate(defs.alternate, node, \"alternate\", alternate, 1);\n  return node;\n}\nexport function labeledStatement(\n  label: t.Identifier,\n  body: t.Statement,\n): t.LabeledStatement {\n  const node: t.LabeledStatement = {\n    type: \"LabeledStatement\",\n    label,\n    body,\n  };\n  const defs = NODE_FIELDS.LabeledStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function stringLiteral(value: string): t.StringLiteral {\n  const node: t.StringLiteral = {\n    type: \"StringLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.StringLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function numericLiteral(value: number): t.NumericLiteral {\n  const node: t.NumericLiteral = {\n    type: \"NumericLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.NumericLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function nullLiteral(): t.NullLiteral {\n  return {\n    type: \"NullLiteral\",\n  };\n}\nexport function booleanLiteral(value: boolean): t.BooleanLiteral {\n  const node: t.BooleanLiteral = {\n    type: \"BooleanLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.BooleanLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function regExpLiteral(\n  pattern: string,\n  flags: string = \"\",\n): t.RegExpLiteral {\n  const node: t.RegExpLiteral = {\n    type: \"RegExpLiteral\",\n    pattern,\n    flags,\n  };\n  const defs = NODE_FIELDS.RegExpLiteral;\n  validate(defs.pattern, node, \"pattern\", pattern);\n  validate(defs.flags, node, \"flags\", flags);\n  return node;\n}\nexport function logicalExpression(\n  operator: \"||\" | \"&&\" | \"??\",\n  left: t.Expression,\n  right: t.Expression,\n): t.LogicalExpression {\n  const node: t.LogicalExpression = {\n    type: \"LogicalExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.LogicalExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function memberExpression(\n  object: t.Expression | t.Super,\n  property: t.Expression | t.Identifier | t.PrivateName,\n  computed: boolean = false,\n  optional: boolean | null = null,\n): t.MemberExpression {\n  const node: t.MemberExpression = {\n    type: \"MemberExpression\",\n    object,\n    property,\n    computed,\n    optional,\n  };\n  const defs = NODE_FIELDS.MemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function newExpression(\n  callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n): t.NewExpression {\n  const node: t.NewExpression = {\n    type: \"NewExpression\",\n    callee,\n    arguments: _arguments,\n  };\n  const defs = NODE_FIELDS.NewExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  return node;\n}\nexport function program(\n  body: Array<t.Statement>,\n  directives: Array<t.Directive> = [],\n  sourceType: \"script\" | \"module\" = \"script\",\n  interpreter: t.InterpreterDirective | null = null,\n): t.Program {\n  const node: t.Program = {\n    type: \"Program\",\n    body,\n    directives,\n    sourceType,\n    interpreter,\n  };\n  const defs = NODE_FIELDS.Program;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.directives, node, \"directives\", directives, 1);\n  validate(defs.sourceType, node, \"sourceType\", sourceType);\n  validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n  return node;\n}\nexport function objectExpression(\n  properties: Array<t.ObjectMethod | t.ObjectProperty | t.SpreadElement>,\n): t.ObjectExpression {\n  const node: t.ObjectExpression = {\n    type: \"ObjectExpression\",\n    properties,\n  };\n  const defs = NODE_FIELDS.ObjectExpression;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function objectMethod(\n  kind: \"method\" | \"get\" | \"set\" | undefined = \"method\",\n  key:\n    | t.Expression\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  computed: boolean = false,\n  generator: boolean = false,\n  async: boolean = false,\n): t.ObjectMethod {\n  const node: t.ObjectMethod = {\n    type: \"ObjectMethod\",\n    kind,\n    key,\n    params,\n    body,\n    computed,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.ObjectMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function objectProperty(\n  key:\n    | t.Expression\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.DecimalLiteral\n    | t.PrivateName,\n  value: t.Expression | t.PatternLike,\n  computed: boolean = false,\n  shorthand: boolean = false,\n  decorators: Array<t.Decorator> | null = null,\n): t.ObjectProperty {\n  const node: t.ObjectProperty = {\n    type: \"ObjectProperty\",\n    key,\n    value,\n    computed,\n    shorthand,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ObjectProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.shorthand, node, \"shorthand\", shorthand);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function restElement(argument: t.LVal): t.RestElement {\n  const node: t.RestElement = {\n    type: \"RestElement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.RestElement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function returnStatement(\n  argument: t.Expression | null = null,\n): t.ReturnStatement {\n  const node: t.ReturnStatement = {\n    type: \"ReturnStatement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ReturnStatement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function sequenceExpression(\n  expressions: Array<t.Expression>,\n): t.SequenceExpression {\n  const node: t.SequenceExpression = {\n    type: \"SequenceExpression\",\n    expressions,\n  };\n  const defs = NODE_FIELDS.SequenceExpression;\n  validate(defs.expressions, node, \"expressions\", expressions, 1);\n  return node;\n}\nexport function parenthesizedExpression(\n  expression: t.Expression,\n): t.ParenthesizedExpression {\n  const node: t.ParenthesizedExpression = {\n    type: \"ParenthesizedExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.ParenthesizedExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function switchCase(\n  test: t.Expression | null | undefined = null,\n  consequent: Array<t.Statement>,\n): t.SwitchCase {\n  const node: t.SwitchCase = {\n    type: \"SwitchCase\",\n    test,\n    consequent,\n  };\n  const defs = NODE_FIELDS.SwitchCase;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  return node;\n}\nexport function switchStatement(\n  discriminant: t.Expression,\n  cases: Array<t.SwitchCase>,\n): t.SwitchStatement {\n  const node: t.SwitchStatement = {\n    type: \"SwitchStatement\",\n    discriminant,\n    cases,\n  };\n  const defs = NODE_FIELDS.SwitchStatement;\n  validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n  validate(defs.cases, node, \"cases\", cases, 1);\n  return node;\n}\nexport function thisExpression(): t.ThisExpression {\n  return {\n    type: \"ThisExpression\",\n  };\n}\nexport function throwStatement(argument: t.Expression): t.ThrowStatement {\n  const node: t.ThrowStatement = {\n    type: \"ThrowStatement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ThrowStatement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function tryStatement(\n  block: t.BlockStatement,\n  handler: t.CatchClause | null = null,\n  finalizer: t.BlockStatement | null = null,\n): t.TryStatement {\n  const node: t.TryStatement = {\n    type: \"TryStatement\",\n    block,\n    handler,\n    finalizer,\n  };\n  const defs = NODE_FIELDS.TryStatement;\n  validate(defs.block, node, \"block\", block, 1);\n  validate(defs.handler, node, \"handler\", handler, 1);\n  validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n  return node;\n}\nexport function unaryExpression(\n  operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\",\n  argument: t.Expression,\n  prefix: boolean = true,\n): t.UnaryExpression {\n  const node: t.UnaryExpression = {\n    type: \"UnaryExpression\",\n    operator,\n    argument,\n    prefix,\n  };\n  const defs = NODE_FIELDS.UnaryExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.prefix, node, \"prefix\", prefix);\n  return node;\n}\nexport function updateExpression(\n  operator: \"++\" | \"--\",\n  argument: t.Expression,\n  prefix: boolean = false,\n): t.UpdateExpression {\n  const node: t.UpdateExpression = {\n    type: \"UpdateExpression\",\n    operator,\n    argument,\n    prefix,\n  };\n  const defs = NODE_FIELDS.UpdateExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.prefix, node, \"prefix\", prefix);\n  return node;\n}\nexport function variableDeclaration(\n  kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  declarations: Array<t.VariableDeclarator>,\n): t.VariableDeclaration {\n  const node: t.VariableDeclaration = {\n    type: \"VariableDeclaration\",\n    kind,\n    declarations,\n  };\n  const defs = NODE_FIELDS.VariableDeclaration;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.declarations, node, \"declarations\", declarations, 1);\n  return node;\n}\nexport function variableDeclarator(\n  id: t.LVal,\n  init: t.Expression | null = null,\n): t.VariableDeclarator {\n  const node: t.VariableDeclarator = {\n    type: \"VariableDeclarator\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.VariableDeclarator;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function whileStatement(\n  test: t.Expression,\n  body: t.Statement,\n): t.WhileStatement {\n  const node: t.WhileStatement = {\n    type: \"WhileStatement\",\n    test,\n    body,\n  };\n  const defs = NODE_FIELDS.WhileStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function withStatement(\n  object: t.Expression,\n  body: t.Statement,\n): t.WithStatement {\n  const node: t.WithStatement = {\n    type: \"WithStatement\",\n    object,\n    body,\n  };\n  const defs = NODE_FIELDS.WithStatement;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function assignmentPattern(\n  left:\n    | t.Identifier\n    | t.ObjectPattern\n    | t.ArrayPattern\n    | t.MemberExpression\n    | t.TSAsExpression\n    | t.TSSatisfiesExpression\n    | t.TSTypeAssertion\n    | t.TSNonNullExpression,\n  right: t.Expression,\n): t.AssignmentPattern {\n  const node: t.AssignmentPattern = {\n    type: \"AssignmentPattern\",\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.AssignmentPattern;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function arrayPattern(\n  elements: Array<null | t.PatternLike | t.LVal>,\n): t.ArrayPattern {\n  const node: t.ArrayPattern = {\n    type: \"ArrayPattern\",\n    elements,\n  };\n  const defs = NODE_FIELDS.ArrayPattern;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function arrowFunctionExpression(\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement | t.Expression,\n  async: boolean = false,\n): t.ArrowFunctionExpression {\n  const node: t.ArrowFunctionExpression = {\n    type: \"ArrowFunctionExpression\",\n    params,\n    body,\n    async,\n    expression: null,\n  };\n  const defs = NODE_FIELDS.ArrowFunctionExpression;\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function classBody(\n  body: Array<\n    | t.ClassMethod\n    | t.ClassPrivateMethod\n    | t.ClassProperty\n    | t.ClassPrivateProperty\n    | t.ClassAccessorProperty\n    | t.TSDeclareMethod\n    | t.TSIndexSignature\n    | t.StaticBlock\n  >,\n): t.ClassBody {\n  const node: t.ClassBody = {\n    type: \"ClassBody\",\n    body,\n  };\n  const defs = NODE_FIELDS.ClassBody;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function classExpression(\n  id: t.Identifier | null | undefined = null,\n  superClass: t.Expression | null | undefined = null,\n  body: t.ClassBody,\n  decorators: Array<t.Decorator> | null = null,\n): t.ClassExpression {\n  const node: t.ClassExpression = {\n    type: \"ClassExpression\",\n    id,\n    superClass,\n    body,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ClassExpression;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.superClass, node, \"superClass\", superClass, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function classDeclaration(\n  id: t.Identifier | null | undefined = null,\n  superClass: t.Expression | null | undefined = null,\n  body: t.ClassBody,\n  decorators: Array<t.Decorator> | null = null,\n): t.ClassDeclaration {\n  const node: t.ClassDeclaration = {\n    type: \"ClassDeclaration\",\n    id,\n    superClass,\n    body,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ClassDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.superClass, node, \"superClass\", superClass, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function exportAllDeclaration(\n  source: t.StringLiteral,\n): t.ExportAllDeclaration {\n  const node: t.ExportAllDeclaration = {\n    type: \"ExportAllDeclaration\",\n    source,\n  };\n  const defs = NODE_FIELDS.ExportAllDeclaration;\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function exportDefaultDeclaration(\n  declaration:\n    | t.TSDeclareFunction\n    | t.FunctionDeclaration\n    | t.ClassDeclaration\n    | t.Expression,\n): t.ExportDefaultDeclaration {\n  const node: t.ExportDefaultDeclaration = {\n    type: \"ExportDefaultDeclaration\",\n    declaration,\n  };\n  const defs = NODE_FIELDS.ExportDefaultDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  return node;\n}\nexport function exportNamedDeclaration(\n  declaration: t.Declaration | null = null,\n  specifiers: Array<\n    t.ExportSpecifier | t.ExportDefaultSpecifier | t.ExportNamespaceSpecifier\n  > = [],\n  source: t.StringLiteral | null = null,\n): t.ExportNamedDeclaration {\n  const node: t.ExportNamedDeclaration = {\n    type: \"ExportNamedDeclaration\",\n    declaration,\n    specifiers,\n    source,\n  };\n  const defs = NODE_FIELDS.ExportNamedDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function exportSpecifier(\n  local: t.Identifier,\n  exported: t.Identifier | t.StringLiteral,\n): t.ExportSpecifier {\n  const node: t.ExportSpecifier = {\n    type: \"ExportSpecifier\",\n    local,\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function forOfStatement(\n  left: t.VariableDeclaration | t.LVal,\n  right: t.Expression,\n  body: t.Statement,\n  _await: boolean = false,\n): t.ForOfStatement {\n  const node: t.ForOfStatement = {\n    type: \"ForOfStatement\",\n    left,\n    right,\n    body,\n    await: _await,\n  };\n  const defs = NODE_FIELDS.ForOfStatement;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.await, node, \"await\", _await);\n  return node;\n}\nexport function importDeclaration(\n  specifiers: Array<\n    t.ImportSpecifier | t.ImportDefaultSpecifier | t.ImportNamespaceSpecifier\n  >,\n  source: t.StringLiteral,\n): t.ImportDeclaration {\n  const node: t.ImportDeclaration = {\n    type: \"ImportDeclaration\",\n    specifiers,\n    source,\n  };\n  const defs = NODE_FIELDS.ImportDeclaration;\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function importDefaultSpecifier(\n  local: t.Identifier,\n): t.ImportDefaultSpecifier {\n  const node: t.ImportDefaultSpecifier = {\n    type: \"ImportDefaultSpecifier\",\n    local,\n  };\n  const defs = NODE_FIELDS.ImportDefaultSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  return node;\n}\nexport function importNamespaceSpecifier(\n  local: t.Identifier,\n): t.ImportNamespaceSpecifier {\n  const node: t.ImportNamespaceSpecifier = {\n    type: \"ImportNamespaceSpecifier\",\n    local,\n  };\n  const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  return node;\n}\nexport function importSpecifier(\n  local: t.Identifier,\n  imported: t.Identifier | t.StringLiteral,\n): t.ImportSpecifier {\n  const node: t.ImportSpecifier = {\n    type: \"ImportSpecifier\",\n    local,\n    imported,\n  };\n  const defs = NODE_FIELDS.ImportSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  validate(defs.imported, node, \"imported\", imported, 1);\n  return node;\n}\nexport function importExpression(\n  source: t.Expression,\n  options: t.Expression | null = null,\n): t.ImportExpression {\n  const node: t.ImportExpression = {\n    type: \"ImportExpression\",\n    source,\n    options,\n  };\n  const defs = NODE_FIELDS.ImportExpression;\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.options, node, \"options\", options, 1);\n  return node;\n}\nexport function metaProperty(\n  meta: t.Identifier,\n  property: t.Identifier,\n): t.MetaProperty {\n  const node: t.MetaProperty = {\n    type: \"MetaProperty\",\n    meta,\n    property,\n  };\n  const defs = NODE_FIELDS.MetaProperty;\n  validate(defs.meta, node, \"meta\", meta, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  return node;\n}\nexport function classMethod(\n  kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined = \"method\",\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  body: t.BlockStatement,\n  computed: boolean = false,\n  _static: boolean = false,\n  generator: boolean = false,\n  async: boolean = false,\n): t.ClassMethod {\n  const node: t.ClassMethod = {\n    type: \"ClassMethod\",\n    kind,\n    key,\n    params,\n    body,\n    computed,\n    static: _static,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.ClassMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function objectPattern(\n  properties: Array<t.RestElement | t.ObjectProperty>,\n): t.ObjectPattern {\n  const node: t.ObjectPattern = {\n    type: \"ObjectPattern\",\n    properties,\n  };\n  const defs = NODE_FIELDS.ObjectPattern;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function spreadElement(argument: t.Expression): t.SpreadElement {\n  const node: t.SpreadElement = {\n    type: \"SpreadElement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.SpreadElement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nfunction _super(): t.Super {\n  return {\n    type: \"Super\",\n  };\n}\nexport { _super as super };\nexport function taggedTemplateExpression(\n  tag: t.Expression,\n  quasi: t.TemplateLiteral,\n): t.TaggedTemplateExpression {\n  const node: t.TaggedTemplateExpression = {\n    type: \"TaggedTemplateExpression\",\n    tag,\n    quasi,\n  };\n  const defs = NODE_FIELDS.TaggedTemplateExpression;\n  validate(defs.tag, node, \"tag\", tag, 1);\n  validate(defs.quasi, node, \"quasi\", quasi, 1);\n  return node;\n}\nexport function templateElement(\n  value: { raw: string; cooked?: string },\n  tail: boolean = false,\n): t.TemplateElement {\n  const node: t.TemplateElement = {\n    type: \"TemplateElement\",\n    value,\n    tail,\n  };\n  const defs = NODE_FIELDS.TemplateElement;\n  validate(defs.value, node, \"value\", value);\n  validate(defs.tail, node, \"tail\", tail);\n  return node;\n}\nexport function templateLiteral(\n  quasis: Array<t.TemplateElement>,\n  expressions: Array<t.Expression | t.TSType>,\n): t.TemplateLiteral {\n  const node: t.TemplateLiteral = {\n    type: \"TemplateLiteral\",\n    quasis,\n    expressions,\n  };\n  const defs = NODE_FIELDS.TemplateLiteral;\n  validate(defs.quasis, node, \"quasis\", quasis, 1);\n  validate(defs.expressions, node, \"expressions\", expressions, 1);\n  return node;\n}\nexport function yieldExpression(\n  argument: t.Expression | null = null,\n  delegate: boolean = false,\n): t.YieldExpression {\n  const node: t.YieldExpression = {\n    type: \"YieldExpression\",\n    argument,\n    delegate,\n  };\n  const defs = NODE_FIELDS.YieldExpression;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.delegate, node, \"delegate\", delegate);\n  return node;\n}\nexport function awaitExpression(argument: t.Expression): t.AwaitExpression {\n  const node: t.AwaitExpression = {\n    type: \"AwaitExpression\",\n    argument,\n  };\n  const defs = NODE_FIELDS.AwaitExpression;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nfunction _import(): t.Import {\n  return {\n    type: \"Import\",\n  };\n}\nexport { _import as import };\nexport function bigIntLiteral(value: string): t.BigIntLiteral {\n  const node: t.BigIntLiteral = {\n    type: \"BigIntLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.BigIntLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function exportNamespaceSpecifier(\n  exported: t.Identifier,\n): t.ExportNamespaceSpecifier {\n  const node: t.ExportNamespaceSpecifier = {\n    type: \"ExportNamespaceSpecifier\",\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function optionalMemberExpression(\n  object: t.Expression,\n  property: t.Expression | t.Identifier,\n  computed: boolean | undefined = false,\n  optional: boolean,\n): t.OptionalMemberExpression {\n  const node: t.OptionalMemberExpression = {\n    type: \"OptionalMemberExpression\",\n    object,\n    property,\n    computed,\n    optional,\n  };\n  const defs = NODE_FIELDS.OptionalMemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function optionalCallExpression(\n  callee: t.Expression,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n  optional: boolean,\n): t.OptionalCallExpression {\n  const node: t.OptionalCallExpression = {\n    type: \"OptionalCallExpression\",\n    callee,\n    arguments: _arguments,\n    optional,\n  };\n  const defs = NODE_FIELDS.OptionalCallExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function classProperty(\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  value: t.Expression | null = null,\n  typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  computed: boolean = false,\n  _static: boolean = false,\n): t.ClassProperty {\n  const node: t.ClassProperty = {\n    type: \"ClassProperty\",\n    key,\n    value,\n    typeAnnotation,\n    decorators,\n    computed,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classAccessorProperty(\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression\n    | t.PrivateName,\n  value: t.Expression | null = null,\n  typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  computed: boolean = false,\n  _static: boolean = false,\n): t.ClassAccessorProperty {\n  const node: t.ClassAccessorProperty = {\n    type: \"ClassAccessorProperty\",\n    key,\n    value,\n    typeAnnotation,\n    decorators,\n    computed,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassAccessorProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classPrivateProperty(\n  key: t.PrivateName,\n  value: t.Expression | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  _static: boolean = false,\n): t.ClassPrivateProperty {\n  const node: t.ClassPrivateProperty = {\n    type: \"ClassPrivateProperty\",\n    key,\n    value,\n    decorators,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassPrivateProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classPrivateMethod(\n  kind: \"get\" | \"set\" | \"method\" | undefined = \"method\",\n  key: t.PrivateName,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  body: t.BlockStatement,\n  _static: boolean = false,\n): t.ClassPrivateMethod {\n  const node: t.ClassPrivateMethod = {\n    type: \"ClassPrivateMethod\",\n    kind,\n    key,\n    params,\n    body,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassPrivateMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function privateName(id: t.Identifier): t.PrivateName {\n  const node: t.PrivateName = {\n    type: \"PrivateName\",\n    id,\n  };\n  const defs = NODE_FIELDS.PrivateName;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function staticBlock(body: Array<t.Statement>): t.StaticBlock {\n  const node: t.StaticBlock = {\n    type: \"StaticBlock\",\n    body,\n  };\n  const defs = NODE_FIELDS.StaticBlock;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function anyTypeAnnotation(): t.AnyTypeAnnotation {\n  return {\n    type: \"AnyTypeAnnotation\",\n  };\n}\nexport function arrayTypeAnnotation(\n  elementType: t.FlowType,\n): t.ArrayTypeAnnotation {\n  const node: t.ArrayTypeAnnotation = {\n    type: \"ArrayTypeAnnotation\",\n    elementType,\n  };\n  const defs = NODE_FIELDS.ArrayTypeAnnotation;\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  return node;\n}\nexport function booleanTypeAnnotation(): t.BooleanTypeAnnotation {\n  return {\n    type: \"BooleanTypeAnnotation\",\n  };\n}\nexport function booleanLiteralTypeAnnotation(\n  value: boolean,\n): t.BooleanLiteralTypeAnnotation {\n  const node: t.BooleanLiteralTypeAnnotation = {\n    type: \"BooleanLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function nullLiteralTypeAnnotation(): t.NullLiteralTypeAnnotation {\n  return {\n    type: \"NullLiteralTypeAnnotation\",\n  };\n}\nexport function classImplements(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.ClassImplements {\n  const node: t.ClassImplements = {\n    type: \"ClassImplements\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.ClassImplements;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function declareClass(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.DeclareClass {\n  const node: t.DeclareClass = {\n    type: \"DeclareClass\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.DeclareClass;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function declareFunction(id: t.Identifier): t.DeclareFunction {\n  const node: t.DeclareFunction = {\n    type: \"DeclareFunction\",\n    id,\n  };\n  const defs = NODE_FIELDS.DeclareFunction;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function declareInterface(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.DeclareInterface {\n  const node: t.DeclareInterface = {\n    type: \"DeclareInterface\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.DeclareInterface;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function declareModule(\n  id: t.Identifier | t.StringLiteral,\n  body: t.BlockStatement,\n  kind: \"CommonJS\" | \"ES\" | null = null,\n): t.DeclareModule {\n  const node: t.DeclareModule = {\n    type: \"DeclareModule\",\n    id,\n    body,\n    kind,\n  };\n  const defs = NODE_FIELDS.DeclareModule;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.kind, node, \"kind\", kind);\n  return node;\n}\nexport function declareModuleExports(\n  typeAnnotation: t.TypeAnnotation,\n): t.DeclareModuleExports {\n  const node: t.DeclareModuleExports = {\n    type: \"DeclareModuleExports\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.DeclareModuleExports;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function declareTypeAlias(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  right: t.FlowType,\n): t.DeclareTypeAlias {\n  const node: t.DeclareTypeAlias = {\n    type: \"DeclareTypeAlias\",\n    id,\n    typeParameters,\n    right,\n  };\n  const defs = NODE_FIELDS.DeclareTypeAlias;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function declareOpaqueType(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null = null,\n  supertype: t.FlowType | null = null,\n): t.DeclareOpaqueType {\n  const node: t.DeclareOpaqueType = {\n    type: \"DeclareOpaqueType\",\n    id,\n    typeParameters,\n    supertype,\n  };\n  const defs = NODE_FIELDS.DeclareOpaqueType;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.supertype, node, \"supertype\", supertype, 1);\n  return node;\n}\nexport function declareVariable(id: t.Identifier): t.DeclareVariable {\n  const node: t.DeclareVariable = {\n    type: \"DeclareVariable\",\n    id,\n  };\n  const defs = NODE_FIELDS.DeclareVariable;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function declareExportDeclaration(\n  declaration: t.Flow | null = null,\n  specifiers: Array<\n    t.ExportSpecifier | t.ExportNamespaceSpecifier\n  > | null = null,\n  source: t.StringLiteral | null = null,\n  attributes: Array<t.ImportAttribute> | null = null,\n): t.DeclareExportDeclaration {\n  const node: t.DeclareExportDeclaration = {\n    type: \"DeclareExportDeclaration\",\n    declaration,\n    specifiers,\n    source,\n    attributes,\n  };\n  const defs = NODE_FIELDS.DeclareExportDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  return node;\n}\nexport function declareExportAllDeclaration(\n  source: t.StringLiteral,\n  attributes: Array<t.ImportAttribute> | null = null,\n): t.DeclareExportAllDeclaration {\n  const node: t.DeclareExportAllDeclaration = {\n    type: \"DeclareExportAllDeclaration\",\n    source,\n    attributes,\n  };\n  const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  return node;\n}\nexport function declaredPredicate(value: t.Flow): t.DeclaredPredicate {\n  const node: t.DeclaredPredicate = {\n    type: \"DeclaredPredicate\",\n    value,\n  };\n  const defs = NODE_FIELDS.DeclaredPredicate;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function existsTypeAnnotation(): t.ExistsTypeAnnotation {\n  return {\n    type: \"ExistsTypeAnnotation\",\n  };\n}\nexport function functionTypeAnnotation(\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  params: Array<t.FunctionTypeParam>,\n  rest: t.FunctionTypeParam | null | undefined = null,\n  returnType: t.FlowType,\n): t.FunctionTypeAnnotation {\n  const node: t.FunctionTypeAnnotation = {\n    type: \"FunctionTypeAnnotation\",\n    typeParameters,\n    params,\n    rest,\n    returnType,\n  };\n  const defs = NODE_FIELDS.FunctionTypeAnnotation;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.rest, node, \"rest\", rest, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport function functionTypeParam(\n  name: t.Identifier | null | undefined = null,\n  typeAnnotation: t.FlowType,\n): t.FunctionTypeParam {\n  const node: t.FunctionTypeParam = {\n    type: \"FunctionTypeParam\",\n    name,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.FunctionTypeParam;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function genericTypeAnnotation(\n  id: t.Identifier | t.QualifiedTypeIdentifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.GenericTypeAnnotation {\n  const node: t.GenericTypeAnnotation = {\n    type: \"GenericTypeAnnotation\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.GenericTypeAnnotation;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function inferredPredicate(): t.InferredPredicate {\n  return {\n    type: \"InferredPredicate\",\n  };\n}\nexport function interfaceExtends(\n  id: t.Identifier | t.QualifiedTypeIdentifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.InterfaceExtends {\n  const node: t.InterfaceExtends = {\n    type: \"InterfaceExtends\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.InterfaceExtends;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function interfaceDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.InterfaceDeclaration {\n  const node: t.InterfaceDeclaration = {\n    type: \"InterfaceDeclaration\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.InterfaceDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function interfaceTypeAnnotation(\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.InterfaceTypeAnnotation {\n  const node: t.InterfaceTypeAnnotation = {\n    type: \"InterfaceTypeAnnotation\",\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function intersectionTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.IntersectionTypeAnnotation {\n  const node: t.IntersectionTypeAnnotation = {\n    type: \"IntersectionTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function mixedTypeAnnotation(): t.MixedTypeAnnotation {\n  return {\n    type: \"MixedTypeAnnotation\",\n  };\n}\nexport function emptyTypeAnnotation(): t.EmptyTypeAnnotation {\n  return {\n    type: \"EmptyTypeAnnotation\",\n  };\n}\nexport function nullableTypeAnnotation(\n  typeAnnotation: t.FlowType,\n): t.NullableTypeAnnotation {\n  const node: t.NullableTypeAnnotation = {\n    type: \"NullableTypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.NullableTypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function numberLiteralTypeAnnotation(\n  value: number,\n): t.NumberLiteralTypeAnnotation {\n  const node: t.NumberLiteralTypeAnnotation = {\n    type: \"NumberLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function numberTypeAnnotation(): t.NumberTypeAnnotation {\n  return {\n    type: \"NumberTypeAnnotation\",\n  };\n}\nexport function objectTypeAnnotation(\n  properties: Array<t.ObjectTypeProperty | t.ObjectTypeSpreadProperty>,\n  indexers: Array<t.ObjectTypeIndexer> = [],\n  callProperties: Array<t.ObjectTypeCallProperty> = [],\n  internalSlots: Array<t.ObjectTypeInternalSlot> = [],\n  exact: boolean = false,\n): t.ObjectTypeAnnotation {\n  const node: t.ObjectTypeAnnotation = {\n    type: \"ObjectTypeAnnotation\",\n    properties,\n    indexers,\n    callProperties,\n    internalSlots,\n    exact,\n  };\n  const defs = NODE_FIELDS.ObjectTypeAnnotation;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  validate(defs.indexers, node, \"indexers\", indexers, 1);\n  validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n  validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n  validate(defs.exact, node, \"exact\", exact);\n  return node;\n}\nexport function objectTypeInternalSlot(\n  id: t.Identifier,\n  value: t.FlowType,\n  optional: boolean,\n  _static: boolean,\n  method: boolean,\n): t.ObjectTypeInternalSlot {\n  const node: t.ObjectTypeInternalSlot = {\n    type: \"ObjectTypeInternalSlot\",\n    id,\n    value,\n    optional,\n    static: _static,\n    method,\n  };\n  const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  validate(defs.static, node, \"static\", _static);\n  validate(defs.method, node, \"method\", method);\n  return node;\n}\nexport function objectTypeCallProperty(\n  value: t.FlowType,\n): t.ObjectTypeCallProperty {\n  const node: t.ObjectTypeCallProperty = {\n    type: \"ObjectTypeCallProperty\",\n    value,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeCallProperty;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function objectTypeIndexer(\n  id: t.Identifier | null | undefined = null,\n  key: t.FlowType,\n  value: t.FlowType,\n  variance: t.Variance | null = null,\n): t.ObjectTypeIndexer {\n  const node: t.ObjectTypeIndexer = {\n    type: \"ObjectTypeIndexer\",\n    id,\n    key,\n    value,\n    variance,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeIndexer;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function objectTypeProperty(\n  key: t.Identifier | t.StringLiteral,\n  value: t.FlowType,\n  variance: t.Variance | null = null,\n): t.ObjectTypeProperty {\n  const node: t.ObjectTypeProperty = {\n    type: \"ObjectTypeProperty\",\n    key,\n    value,\n    variance,\n    kind: null,\n    method: null,\n    optional: null,\n    proto: null,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function objectTypeSpreadProperty(\n  argument: t.FlowType,\n): t.ObjectTypeSpreadProperty {\n  const node: t.ObjectTypeSpreadProperty = {\n    type: \"ObjectTypeSpreadProperty\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function opaqueType(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  supertype: t.FlowType | null | undefined = null,\n  impltype: t.FlowType,\n): t.OpaqueType {\n  const node: t.OpaqueType = {\n    type: \"OpaqueType\",\n    id,\n    typeParameters,\n    supertype,\n    impltype,\n  };\n  const defs = NODE_FIELDS.OpaqueType;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.supertype, node, \"supertype\", supertype, 1);\n  validate(defs.impltype, node, \"impltype\", impltype, 1);\n  return node;\n}\nexport function qualifiedTypeIdentifier(\n  id: t.Identifier,\n  qualification: t.Identifier | t.QualifiedTypeIdentifier,\n): t.QualifiedTypeIdentifier {\n  const node: t.QualifiedTypeIdentifier = {\n    type: \"QualifiedTypeIdentifier\",\n    id,\n    qualification,\n  };\n  const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.qualification, node, \"qualification\", qualification, 1);\n  return node;\n}\nexport function stringLiteralTypeAnnotation(\n  value: string,\n): t.StringLiteralTypeAnnotation {\n  const node: t.StringLiteralTypeAnnotation = {\n    type: \"StringLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function stringTypeAnnotation(): t.StringTypeAnnotation {\n  return {\n    type: \"StringTypeAnnotation\",\n  };\n}\nexport function symbolTypeAnnotation(): t.SymbolTypeAnnotation {\n  return {\n    type: \"SymbolTypeAnnotation\",\n  };\n}\nexport function thisTypeAnnotation(): t.ThisTypeAnnotation {\n  return {\n    type: \"ThisTypeAnnotation\",\n  };\n}\nexport function tupleTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.TupleTypeAnnotation {\n  const node: t.TupleTypeAnnotation = {\n    type: \"TupleTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.TupleTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function typeofTypeAnnotation(\n  argument: t.FlowType,\n): t.TypeofTypeAnnotation {\n  const node: t.TypeofTypeAnnotation = {\n    type: \"TypeofTypeAnnotation\",\n    argument,\n  };\n  const defs = NODE_FIELDS.TypeofTypeAnnotation;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function typeAlias(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  right: t.FlowType,\n): t.TypeAlias {\n  const node: t.TypeAlias = {\n    type: \"TypeAlias\",\n    id,\n    typeParameters,\n    right,\n  };\n  const defs = NODE_FIELDS.TypeAlias;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function typeAnnotation(typeAnnotation: t.FlowType): t.TypeAnnotation {\n  const node: t.TypeAnnotation = {\n    type: \"TypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function typeCastExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TypeAnnotation,\n): t.TypeCastExpression {\n  const node: t.TypeCastExpression = {\n    type: \"TypeCastExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TypeCastExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function typeParameter(\n  bound: t.TypeAnnotation | null = null,\n  _default: t.FlowType | null = null,\n  variance: t.Variance | null = null,\n): t.TypeParameter {\n  const node: t.TypeParameter = {\n    type: \"TypeParameter\",\n    bound,\n    default: _default,\n    variance,\n    name: null,\n  };\n  const defs = NODE_FIELDS.TypeParameter;\n  validate(defs.bound, node, \"bound\", bound, 1);\n  validate(defs.default, node, \"default\", _default, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function typeParameterDeclaration(\n  params: Array<t.TypeParameter>,\n): t.TypeParameterDeclaration {\n  const node: t.TypeParameterDeclaration = {\n    type: \"TypeParameterDeclaration\",\n    params,\n  };\n  const defs = NODE_FIELDS.TypeParameterDeclaration;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport function typeParameterInstantiation(\n  params: Array<t.FlowType>,\n): t.TypeParameterInstantiation {\n  const node: t.TypeParameterInstantiation = {\n    type: \"TypeParameterInstantiation\",\n    params,\n  };\n  const defs = NODE_FIELDS.TypeParameterInstantiation;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport function unionTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.UnionTypeAnnotation {\n  const node: t.UnionTypeAnnotation = {\n    type: \"UnionTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.UnionTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function variance(kind: \"minus\" | \"plus\"): t.Variance {\n  const node: t.Variance = {\n    type: \"Variance\",\n    kind,\n  };\n  const defs = NODE_FIELDS.Variance;\n  validate(defs.kind, node, \"kind\", kind);\n  return node;\n}\nexport function voidTypeAnnotation(): t.VoidTypeAnnotation {\n  return {\n    type: \"VoidTypeAnnotation\",\n  };\n}\nexport function enumDeclaration(\n  id: t.Identifier,\n  body:\n    | t.EnumBooleanBody\n    | t.EnumNumberBody\n    | t.EnumStringBody\n    | t.EnumSymbolBody,\n): t.EnumDeclaration {\n  const node: t.EnumDeclaration = {\n    type: \"EnumDeclaration\",\n    id,\n    body,\n  };\n  const defs = NODE_FIELDS.EnumDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function enumBooleanBody(\n  members: Array<t.EnumBooleanMember>,\n): t.EnumBooleanBody {\n  const node: t.EnumBooleanBody = {\n    type: \"EnumBooleanBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumBooleanBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumNumberBody(\n  members: Array<t.EnumNumberMember>,\n): t.EnumNumberBody {\n  const node: t.EnumNumberBody = {\n    type: \"EnumNumberBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumNumberBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumStringBody(\n  members: Array<t.EnumStringMember | t.EnumDefaultedMember>,\n): t.EnumStringBody {\n  const node: t.EnumStringBody = {\n    type: \"EnumStringBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumStringBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumSymbolBody(\n  members: Array<t.EnumDefaultedMember>,\n): t.EnumSymbolBody {\n  const node: t.EnumSymbolBody = {\n    type: \"EnumSymbolBody\",\n    members,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumSymbolBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumBooleanMember(id: t.Identifier): t.EnumBooleanMember {\n  const node: t.EnumBooleanMember = {\n    type: \"EnumBooleanMember\",\n    id,\n    init: null,\n  };\n  const defs = NODE_FIELDS.EnumBooleanMember;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function enumNumberMember(\n  id: t.Identifier,\n  init: t.NumericLiteral,\n): t.EnumNumberMember {\n  const node: t.EnumNumberMember = {\n    type: \"EnumNumberMember\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.EnumNumberMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function enumStringMember(\n  id: t.Identifier,\n  init: t.StringLiteral,\n): t.EnumStringMember {\n  const node: t.EnumStringMember = {\n    type: \"EnumStringMember\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.EnumStringMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function enumDefaultedMember(id: t.Identifier): t.EnumDefaultedMember {\n  const node: t.EnumDefaultedMember = {\n    type: \"EnumDefaultedMember\",\n    id,\n  };\n  const defs = NODE_FIELDS.EnumDefaultedMember;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function indexedAccessType(\n  objectType: t.FlowType,\n  indexType: t.FlowType,\n): t.IndexedAccessType {\n  const node: t.IndexedAccessType = {\n    type: \"IndexedAccessType\",\n    objectType,\n    indexType,\n  };\n  const defs = NODE_FIELDS.IndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport function optionalIndexedAccessType(\n  objectType: t.FlowType,\n  indexType: t.FlowType,\n): t.OptionalIndexedAccessType {\n  const node: t.OptionalIndexedAccessType = {\n    type: \"OptionalIndexedAccessType\",\n    objectType,\n    indexType,\n    optional: null,\n  };\n  const defs = NODE_FIELDS.OptionalIndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport function jsxAttribute(\n  name: t.JSXIdentifier | t.JSXNamespacedName,\n  value:\n    | t.JSXElement\n    | t.JSXFragment\n    | t.StringLiteral\n    | t.JSXExpressionContainer\n    | null = null,\n): t.JSXAttribute {\n  const node: t.JSXAttribute = {\n    type: \"JSXAttribute\",\n    name,\n    value,\n  };\n  const defs = NODE_FIELDS.JSXAttribute;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport { jsxAttribute as jSXAttribute };\nexport function jsxClosingElement(\n  name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n): t.JSXClosingElement {\n  const node: t.JSXClosingElement = {\n    type: \"JSXClosingElement\",\n    name,\n  };\n  const defs = NODE_FIELDS.JSXClosingElement;\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport { jsxClosingElement as jSXClosingElement };\nexport function jsxElement(\n  openingElement: t.JSXOpeningElement,\n  closingElement: t.JSXClosingElement | null | undefined = null,\n  children: Array<\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXElement\n    | t.JSXFragment\n  >,\n  selfClosing: boolean | null = null,\n): t.JSXElement {\n  const node: t.JSXElement = {\n    type: \"JSXElement\",\n    openingElement,\n    closingElement,\n    children,\n    selfClosing,\n  };\n  const defs = NODE_FIELDS.JSXElement;\n  validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n  validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n  validate(defs.children, node, \"children\", children, 1);\n  validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n  return node;\n}\nexport { jsxElement as jSXElement };\nexport function jsxEmptyExpression(): t.JSXEmptyExpression {\n  return {\n    type: \"JSXEmptyExpression\",\n  };\n}\nexport { jsxEmptyExpression as jSXEmptyExpression };\nexport function jsxExpressionContainer(\n  expression: t.Expression | t.JSXEmptyExpression,\n): t.JSXExpressionContainer {\n  const node: t.JSXExpressionContainer = {\n    type: \"JSXExpressionContainer\",\n    expression,\n  };\n  const defs = NODE_FIELDS.JSXExpressionContainer;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { jsxExpressionContainer as jSXExpressionContainer };\nexport function jsxSpreadChild(expression: t.Expression): t.JSXSpreadChild {\n  const node: t.JSXSpreadChild = {\n    type: \"JSXSpreadChild\",\n    expression,\n  };\n  const defs = NODE_FIELDS.JSXSpreadChild;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { jsxSpreadChild as jSXSpreadChild };\nexport function jsxIdentifier(name: string): t.JSXIdentifier {\n  const node: t.JSXIdentifier = {\n    type: \"JSXIdentifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.JSXIdentifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport { jsxIdentifier as jSXIdentifier };\nexport function jsxMemberExpression(\n  object: t.JSXMemberExpression | t.JSXIdentifier,\n  property: t.JSXIdentifier,\n): t.JSXMemberExpression {\n  const node: t.JSXMemberExpression = {\n    type: \"JSXMemberExpression\",\n    object,\n    property,\n  };\n  const defs = NODE_FIELDS.JSXMemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  return node;\n}\nexport { jsxMemberExpression as jSXMemberExpression };\nexport function jsxNamespacedName(\n  namespace: t.JSXIdentifier,\n  name: t.JSXIdentifier,\n): t.JSXNamespacedName {\n  const node: t.JSXNamespacedName = {\n    type: \"JSXNamespacedName\",\n    namespace,\n    name,\n  };\n  const defs = NODE_FIELDS.JSXNamespacedName;\n  validate(defs.namespace, node, \"namespace\", namespace, 1);\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport { jsxNamespacedName as jSXNamespacedName };\nexport function jsxOpeningElement(\n  name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  selfClosing: boolean = false,\n): t.JSXOpeningElement {\n  const node: t.JSXOpeningElement = {\n    type: \"JSXOpeningElement\",\n    name,\n    attributes,\n    selfClosing,\n  };\n  const defs = NODE_FIELDS.JSXOpeningElement;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n  return node;\n}\nexport { jsxOpeningElement as jSXOpeningElement };\nexport function jsxSpreadAttribute(\n  argument: t.Expression,\n): t.JSXSpreadAttribute {\n  const node: t.JSXSpreadAttribute = {\n    type: \"JSXSpreadAttribute\",\n    argument,\n  };\n  const defs = NODE_FIELDS.JSXSpreadAttribute;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport { jsxSpreadAttribute as jSXSpreadAttribute };\nexport function jsxText(value: string): t.JSXText {\n  const node: t.JSXText = {\n    type: \"JSXText\",\n    value,\n  };\n  const defs = NODE_FIELDS.JSXText;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport { jsxText as jSXText };\nexport function jsxFragment(\n  openingFragment: t.JSXOpeningFragment,\n  closingFragment: t.JSXClosingFragment,\n  children: Array<\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXElement\n    | t.JSXFragment\n  >,\n): t.JSXFragment {\n  const node: t.JSXFragment = {\n    type: \"JSXFragment\",\n    openingFragment,\n    closingFragment,\n    children,\n  };\n  const defs = NODE_FIELDS.JSXFragment;\n  validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n  validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n  validate(defs.children, node, \"children\", children, 1);\n  return node;\n}\nexport { jsxFragment as jSXFragment };\nexport function jsxOpeningFragment(): t.JSXOpeningFragment {\n  return {\n    type: \"JSXOpeningFragment\",\n  };\n}\nexport { jsxOpeningFragment as jSXOpeningFragment };\nexport function jsxClosingFragment(): t.JSXClosingFragment {\n  return {\n    type: \"JSXClosingFragment\",\n  };\n}\nexport { jsxClosingFragment as jSXClosingFragment };\nexport function noop(): t.Noop {\n  return {\n    type: \"Noop\",\n  };\n}\nexport function placeholder(\n  expectedNode:\n    | \"Identifier\"\n    | \"StringLiteral\"\n    | \"Expression\"\n    | \"Statement\"\n    | \"Declaration\"\n    | \"BlockStatement\"\n    | \"ClassBody\"\n    | \"Pattern\",\n  name: t.Identifier,\n): t.Placeholder {\n  const node: t.Placeholder = {\n    type: \"Placeholder\",\n    expectedNode,\n    name,\n  };\n  const defs = NODE_FIELDS.Placeholder;\n  validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport function v8IntrinsicIdentifier(name: string): t.V8IntrinsicIdentifier {\n  const node: t.V8IntrinsicIdentifier = {\n    type: \"V8IntrinsicIdentifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport function argumentPlaceholder(): t.ArgumentPlaceholder {\n  return {\n    type: \"ArgumentPlaceholder\",\n  };\n}\nexport function bindExpression(\n  object: t.Expression,\n  callee: t.Expression,\n): t.BindExpression {\n  const node: t.BindExpression = {\n    type: \"BindExpression\",\n    object,\n    callee,\n  };\n  const defs = NODE_FIELDS.BindExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.callee, node, \"callee\", callee, 1);\n  return node;\n}\nexport function importAttribute(\n  key: t.Identifier | t.StringLiteral,\n  value: t.StringLiteral,\n): t.ImportAttribute {\n  const node: t.ImportAttribute = {\n    type: \"ImportAttribute\",\n    key,\n    value,\n  };\n  const defs = NODE_FIELDS.ImportAttribute;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function decorator(expression: t.Expression): t.Decorator {\n  const node: t.Decorator = {\n    type: \"Decorator\",\n    expression,\n  };\n  const defs = NODE_FIELDS.Decorator;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function doExpression(\n  body: t.BlockStatement,\n  async: boolean = false,\n): t.DoExpression {\n  const node: t.DoExpression = {\n    type: \"DoExpression\",\n    body,\n    async,\n  };\n  const defs = NODE_FIELDS.DoExpression;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function exportDefaultSpecifier(\n  exported: t.Identifier,\n): t.ExportDefaultSpecifier {\n  const node: t.ExportDefaultSpecifier = {\n    type: \"ExportDefaultSpecifier\",\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportDefaultSpecifier;\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function recordExpression(\n  properties: Array<t.ObjectProperty | t.SpreadElement>,\n): t.RecordExpression {\n  const node: t.RecordExpression = {\n    type: \"RecordExpression\",\n    properties,\n  };\n  const defs = NODE_FIELDS.RecordExpression;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function tupleExpression(\n  elements: Array<t.Expression | t.SpreadElement> = [],\n): t.TupleExpression {\n  const node: t.TupleExpression = {\n    type: \"TupleExpression\",\n    elements,\n  };\n  const defs = NODE_FIELDS.TupleExpression;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function decimalLiteral(value: string): t.DecimalLiteral {\n  const node: t.DecimalLiteral = {\n    type: \"DecimalLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.DecimalLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function moduleExpression(body: t.Program): t.ModuleExpression {\n  const node: t.ModuleExpression = {\n    type: \"ModuleExpression\",\n    body,\n  };\n  const defs = NODE_FIELDS.ModuleExpression;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function topicReference(): t.TopicReference {\n  return {\n    type: \"TopicReference\",\n  };\n}\nexport function pipelineTopicExpression(\n  expression: t.Expression,\n): t.PipelineTopicExpression {\n  const node: t.PipelineTopicExpression = {\n    type: \"PipelineTopicExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.PipelineTopicExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function pipelineBareFunction(\n  callee: t.Expression,\n): t.PipelineBareFunction {\n  const node: t.PipelineBareFunction = {\n    type: \"PipelineBareFunction\",\n    callee,\n  };\n  const defs = NODE_FIELDS.PipelineBareFunction;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  return node;\n}\nexport function pipelinePrimaryTopicReference(): t.PipelinePrimaryTopicReference {\n  return {\n    type: \"PipelinePrimaryTopicReference\",\n  };\n}\nexport function tsParameterProperty(\n  parameter: t.Identifier | t.AssignmentPattern,\n): t.TSParameterProperty {\n  const node: t.TSParameterProperty = {\n    type: \"TSParameterProperty\",\n    parameter,\n  };\n  const defs = NODE_FIELDS.TSParameterProperty;\n  validate(defs.parameter, node, \"parameter\", parameter, 1);\n  return node;\n}\nexport { tsParameterProperty as tSParameterProperty };\nexport function tsDeclareFunction(\n  id: t.Identifier | null | undefined = null,\n  typeParameters:\n    | t.TSTypeParameterDeclaration\n    | t.Noop\n    | null\n    | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareFunction {\n  const node: t.TSDeclareFunction = {\n    type: \"TSDeclareFunction\",\n    id,\n    typeParameters,\n    params,\n    returnType,\n  };\n  const defs = NODE_FIELDS.TSDeclareFunction;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport { tsDeclareFunction as tSDeclareFunction };\nexport function tsDeclareMethod(\n  decorators: Array<t.Decorator> | null | undefined = null,\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  typeParameters:\n    | t.TSTypeParameterDeclaration\n    | t.Noop\n    | null\n    | undefined = null,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareMethod {\n  const node: t.TSDeclareMethod = {\n    type: \"TSDeclareMethod\",\n    decorators,\n    key,\n    typeParameters,\n    params,\n    returnType,\n  };\n  const defs = NODE_FIELDS.TSDeclareMethod;\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport { tsDeclareMethod as tSDeclareMethod };\nexport function tsQualifiedName(\n  left: t.TSEntityName,\n  right: t.Identifier,\n): t.TSQualifiedName {\n  const node: t.TSQualifiedName = {\n    type: \"TSQualifiedName\",\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.TSQualifiedName;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport { tsQualifiedName as tSQualifiedName };\nexport function tsCallSignatureDeclaration(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSCallSignatureDeclaration {\n  const node: t.TSCallSignatureDeclaration = {\n    type: \"TSCallSignatureDeclaration\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsCallSignatureDeclaration as tSCallSignatureDeclaration };\nexport function tsConstructSignatureDeclaration(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructSignatureDeclaration {\n  const node: t.TSConstructSignatureDeclaration = {\n    type: \"TSConstructSignatureDeclaration\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsConstructSignatureDeclaration as tSConstructSignatureDeclaration };\nexport function tsPropertySignature(\n  key: t.Expression,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSPropertySignature {\n  const node: t.TSPropertySignature = {\n    type: \"TSPropertySignature\",\n    key,\n    typeAnnotation,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSPropertySignature;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsPropertySignature as tSPropertySignature };\nexport function tsMethodSignature(\n  key: t.Expression,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSMethodSignature {\n  const node: t.TSMethodSignature = {\n    type: \"TSMethodSignature\",\n    key,\n    typeParameters,\n    parameters,\n    typeAnnotation,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSMethodSignature;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsMethodSignature as tSMethodSignature };\nexport function tsIndexSignature(\n  parameters: Array<t.Identifier>,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSIndexSignature {\n  const node: t.TSIndexSignature = {\n    type: \"TSIndexSignature\",\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSIndexSignature;\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsIndexSignature as tSIndexSignature };\nexport function tsAnyKeyword(): t.TSAnyKeyword {\n  return {\n    type: \"TSAnyKeyword\",\n  };\n}\nexport { tsAnyKeyword as tSAnyKeyword };\nexport function tsBooleanKeyword(): t.TSBooleanKeyword {\n  return {\n    type: \"TSBooleanKeyword\",\n  };\n}\nexport { tsBooleanKeyword as tSBooleanKeyword };\nexport function tsBigIntKeyword(): t.TSBigIntKeyword {\n  return {\n    type: \"TSBigIntKeyword\",\n  };\n}\nexport { tsBigIntKeyword as tSBigIntKeyword };\nexport function tsIntrinsicKeyword(): t.TSIntrinsicKeyword {\n  return {\n    type: \"TSIntrinsicKeyword\",\n  };\n}\nexport { tsIntrinsicKeyword as tSIntrinsicKeyword };\nexport function tsNeverKeyword(): t.TSNeverKeyword {\n  return {\n    type: \"TSNeverKeyword\",\n  };\n}\nexport { tsNeverKeyword as tSNeverKeyword };\nexport function tsNullKeyword(): t.TSNullKeyword {\n  return {\n    type: \"TSNullKeyword\",\n  };\n}\nexport { tsNullKeyword as tSNullKeyword };\nexport function tsNumberKeyword(): t.TSNumberKeyword {\n  return {\n    type: \"TSNumberKeyword\",\n  };\n}\nexport { tsNumberKeyword as tSNumberKeyword };\nexport function tsObjectKeyword(): t.TSObjectKeyword {\n  return {\n    type: \"TSObjectKeyword\",\n  };\n}\nexport { tsObjectKeyword as tSObjectKeyword };\nexport function tsStringKeyword(): t.TSStringKeyword {\n  return {\n    type: \"TSStringKeyword\",\n  };\n}\nexport { tsStringKeyword as tSStringKeyword };\nexport function tsSymbolKeyword(): t.TSSymbolKeyword {\n  return {\n    type: \"TSSymbolKeyword\",\n  };\n}\nexport { tsSymbolKeyword as tSSymbolKeyword };\nexport function tsUndefinedKeyword(): t.TSUndefinedKeyword {\n  return {\n    type: \"TSUndefinedKeyword\",\n  };\n}\nexport { tsUndefinedKeyword as tSUndefinedKeyword };\nexport function tsUnknownKeyword(): t.TSUnknownKeyword {\n  return {\n    type: \"TSUnknownKeyword\",\n  };\n}\nexport { tsUnknownKeyword as tSUnknownKeyword };\nexport function tsVoidKeyword(): t.TSVoidKeyword {\n  return {\n    type: \"TSVoidKeyword\",\n  };\n}\nexport { tsVoidKeyword as tSVoidKeyword };\nexport function tsThisType(): t.TSThisType {\n  return {\n    type: \"TSThisType\",\n  };\n}\nexport { tsThisType as tSThisType };\nexport function tsFunctionType(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSFunctionType {\n  const node: t.TSFunctionType = {\n    type: \"TSFunctionType\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSFunctionType;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsFunctionType as tSFunctionType };\nexport function tsConstructorType(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructorType {\n  const node: t.TSConstructorType = {\n    type: \"TSConstructorType\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSConstructorType;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsConstructorType as tSConstructorType };\nexport function tsTypeReference(\n  typeName: t.TSEntityName,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeReference {\n  const node: t.TSTypeReference = {\n    type: \"TSTypeReference\",\n    typeName,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSTypeReference;\n  validate(defs.typeName, node, \"typeName\", typeName, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsTypeReference as tSTypeReference };\nexport function tsTypePredicate(\n  parameterName: t.Identifier | t.TSThisType,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n  asserts: boolean | null = null,\n): t.TSTypePredicate {\n  const node: t.TSTypePredicate = {\n    type: \"TSTypePredicate\",\n    parameterName,\n    typeAnnotation,\n    asserts,\n  };\n  const defs = NODE_FIELDS.TSTypePredicate;\n  validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.asserts, node, \"asserts\", asserts);\n  return node;\n}\nexport { tsTypePredicate as tSTypePredicate };\nexport function tsTypeQuery(\n  exprName: t.TSEntityName | t.TSImportType,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeQuery {\n  const node: t.TSTypeQuery = {\n    type: \"TSTypeQuery\",\n    exprName,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSTypeQuery;\n  validate(defs.exprName, node, \"exprName\", exprName, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsTypeQuery as tSTypeQuery };\nexport function tsTypeLiteral(\n  members: Array<t.TSTypeElement>,\n): t.TSTypeLiteral {\n  const node: t.TSTypeLiteral = {\n    type: \"TSTypeLiteral\",\n    members,\n  };\n  const defs = NODE_FIELDS.TSTypeLiteral;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsTypeLiteral as tSTypeLiteral };\nexport function tsArrayType(elementType: t.TSType): t.TSArrayType {\n  const node: t.TSArrayType = {\n    type: \"TSArrayType\",\n    elementType,\n  };\n  const defs = NODE_FIELDS.TSArrayType;\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  return node;\n}\nexport { tsArrayType as tSArrayType };\nexport function tsTupleType(\n  elementTypes: Array<t.TSType | t.TSNamedTupleMember>,\n): t.TSTupleType {\n  const node: t.TSTupleType = {\n    type: \"TSTupleType\",\n    elementTypes,\n  };\n  const defs = NODE_FIELDS.TSTupleType;\n  validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n  return node;\n}\nexport { tsTupleType as tSTupleType };\nexport function tsOptionalType(typeAnnotation: t.TSType): t.TSOptionalType {\n  const node: t.TSOptionalType = {\n    type: \"TSOptionalType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSOptionalType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsOptionalType as tSOptionalType };\nexport function tsRestType(typeAnnotation: t.TSType): t.TSRestType {\n  const node: t.TSRestType = {\n    type: \"TSRestType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSRestType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsRestType as tSRestType };\nexport function tsNamedTupleMember(\n  label: t.Identifier,\n  elementType: t.TSType,\n  optional: boolean = false,\n): t.TSNamedTupleMember {\n  const node: t.TSNamedTupleMember = {\n    type: \"TSNamedTupleMember\",\n    label,\n    elementType,\n    optional,\n  };\n  const defs = NODE_FIELDS.TSNamedTupleMember;\n  validate(defs.label, node, \"label\", label, 1);\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport { tsNamedTupleMember as tSNamedTupleMember };\nexport function tsUnionType(types: Array<t.TSType>): t.TSUnionType {\n  const node: t.TSUnionType = {\n    type: \"TSUnionType\",\n    types,\n  };\n  const defs = NODE_FIELDS.TSUnionType;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsUnionType as tSUnionType };\nexport function tsIntersectionType(\n  types: Array<t.TSType>,\n): t.TSIntersectionType {\n  const node: t.TSIntersectionType = {\n    type: \"TSIntersectionType\",\n    types,\n  };\n  const defs = NODE_FIELDS.TSIntersectionType;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsIntersectionType as tSIntersectionType };\nexport function tsConditionalType(\n  checkType: t.TSType,\n  extendsType: t.TSType,\n  trueType: t.TSType,\n  falseType: t.TSType,\n): t.TSConditionalType {\n  const node: t.TSConditionalType = {\n    type: \"TSConditionalType\",\n    checkType,\n    extendsType,\n    trueType,\n    falseType,\n  };\n  const defs = NODE_FIELDS.TSConditionalType;\n  validate(defs.checkType, node, \"checkType\", checkType, 1);\n  validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n  validate(defs.trueType, node, \"trueType\", trueType, 1);\n  validate(defs.falseType, node, \"falseType\", falseType, 1);\n  return node;\n}\nexport { tsConditionalType as tSConditionalType };\nexport function tsInferType(typeParameter: t.TSTypeParameter): t.TSInferType {\n  const node: t.TSInferType = {\n    type: \"TSInferType\",\n    typeParameter,\n  };\n  const defs = NODE_FIELDS.TSInferType;\n  validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n  return node;\n}\nexport { tsInferType as tSInferType };\nexport function tsParenthesizedType(\n  typeAnnotation: t.TSType,\n): t.TSParenthesizedType {\n  const node: t.TSParenthesizedType = {\n    type: \"TSParenthesizedType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSParenthesizedType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsParenthesizedType as tSParenthesizedType };\nexport function tsTypeOperator(typeAnnotation: t.TSType): t.TSTypeOperator {\n  const node: t.TSTypeOperator = {\n    type: \"TSTypeOperator\",\n    typeAnnotation,\n    operator: null,\n  };\n  const defs = NODE_FIELDS.TSTypeOperator;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeOperator as tSTypeOperator };\nexport function tsIndexedAccessType(\n  objectType: t.TSType,\n  indexType: t.TSType,\n): t.TSIndexedAccessType {\n  const node: t.TSIndexedAccessType = {\n    type: \"TSIndexedAccessType\",\n    objectType,\n    indexType,\n  };\n  const defs = NODE_FIELDS.TSIndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport { tsIndexedAccessType as tSIndexedAccessType };\nexport function tsMappedType(\n  typeParameter: t.TSTypeParameter,\n  typeAnnotation: t.TSType | null = null,\n  nameType: t.TSType | null = null,\n): t.TSMappedType {\n  const node: t.TSMappedType = {\n    type: \"TSMappedType\",\n    typeParameter,\n    typeAnnotation,\n    nameType,\n  };\n  const defs = NODE_FIELDS.TSMappedType;\n  validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.nameType, node, \"nameType\", nameType, 1);\n  return node;\n}\nexport { tsMappedType as tSMappedType };\nexport function tsLiteralType(\n  literal:\n    | t.NumericLiteral\n    | t.StringLiteral\n    | t.BooleanLiteral\n    | t.BigIntLiteral\n    | t.TemplateLiteral\n    | t.UnaryExpression,\n): t.TSLiteralType {\n  const node: t.TSLiteralType = {\n    type: \"TSLiteralType\",\n    literal,\n  };\n  const defs = NODE_FIELDS.TSLiteralType;\n  validate(defs.literal, node, \"literal\", literal, 1);\n  return node;\n}\nexport { tsLiteralType as tSLiteralType };\nexport function tsExpressionWithTypeArguments(\n  expression: t.TSEntityName,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSExpressionWithTypeArguments {\n  const node: t.TSExpressionWithTypeArguments = {\n    type: \"TSExpressionWithTypeArguments\",\n    expression,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSExpressionWithTypeArguments;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsExpressionWithTypeArguments as tSExpressionWithTypeArguments };\nexport function tsInterfaceDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.TSExpressionWithTypeArguments> | null | undefined = null,\n  body: t.TSInterfaceBody,\n): t.TSInterfaceDeclaration {\n  const node: t.TSInterfaceDeclaration = {\n    type: \"TSInterfaceDeclaration\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.TSInterfaceDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsInterfaceDeclaration as tSInterfaceDeclaration };\nexport function tsInterfaceBody(\n  body: Array<t.TSTypeElement>,\n): t.TSInterfaceBody {\n  const node: t.TSInterfaceBody = {\n    type: \"TSInterfaceBody\",\n    body,\n  };\n  const defs = NODE_FIELDS.TSInterfaceBody;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsInterfaceBody as tSInterfaceBody };\nexport function tsTypeAliasDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  typeAnnotation: t.TSType,\n): t.TSTypeAliasDeclaration {\n  const node: t.TSTypeAliasDeclaration = {\n    type: \"TSTypeAliasDeclaration\",\n    id,\n    typeParameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeAliasDeclaration as tSTypeAliasDeclaration };\nexport function tsInstantiationExpression(\n  expression: t.Expression,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSInstantiationExpression {\n  const node: t.TSInstantiationExpression = {\n    type: \"TSInstantiationExpression\",\n    expression,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSInstantiationExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsInstantiationExpression as tSInstantiationExpression };\nexport function tsAsExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TSType,\n): t.TSAsExpression {\n  const node: t.TSAsExpression = {\n    type: \"TSAsExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSAsExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsAsExpression as tSAsExpression };\nexport function tsSatisfiesExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TSType,\n): t.TSSatisfiesExpression {\n  const node: t.TSSatisfiesExpression = {\n    type: \"TSSatisfiesExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSSatisfiesExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsSatisfiesExpression as tSSatisfiesExpression };\nexport function tsTypeAssertion(\n  typeAnnotation: t.TSType,\n  expression: t.Expression,\n): t.TSTypeAssertion {\n  const node: t.TSTypeAssertion = {\n    type: \"TSTypeAssertion\",\n    typeAnnotation,\n    expression,\n  };\n  const defs = NODE_FIELDS.TSTypeAssertion;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsTypeAssertion as tSTypeAssertion };\nexport function tsEnumBody(members: Array<t.TSEnumMember>): t.TSEnumBody {\n  const node: t.TSEnumBody = {\n    type: \"TSEnumBody\",\n    members,\n  };\n  const defs = NODE_FIELDS.TSEnumBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsEnumBody as tSEnumBody };\nexport function tsEnumDeclaration(\n  id: t.Identifier,\n  members: Array<t.TSEnumMember>,\n): t.TSEnumDeclaration {\n  const node: t.TSEnumDeclaration = {\n    type: \"TSEnumDeclaration\",\n    id,\n    members,\n  };\n  const defs = NODE_FIELDS.TSEnumDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsEnumDeclaration as tSEnumDeclaration };\nexport function tsEnumMember(\n  id: t.Identifier | t.StringLiteral,\n  initializer: t.Expression | null = null,\n): t.TSEnumMember {\n  const node: t.TSEnumMember = {\n    type: \"TSEnumMember\",\n    id,\n    initializer,\n  };\n  const defs = NODE_FIELDS.TSEnumMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.initializer, node, \"initializer\", initializer, 1);\n  return node;\n}\nexport { tsEnumMember as tSEnumMember };\nexport function tsModuleDeclaration(\n  id: t.Identifier | t.StringLiteral,\n  body: t.TSModuleBlock | t.TSModuleDeclaration,\n): t.TSModuleDeclaration {\n  const node: t.TSModuleDeclaration = {\n    type: \"TSModuleDeclaration\",\n    id,\n    body,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSModuleDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsModuleDeclaration as tSModuleDeclaration };\nexport function tsModuleBlock(body: Array<t.Statement>): t.TSModuleBlock {\n  const node: t.TSModuleBlock = {\n    type: \"TSModuleBlock\",\n    body,\n  };\n  const defs = NODE_FIELDS.TSModuleBlock;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsModuleBlock as tSModuleBlock };\nexport function tsImportType(\n  argument: t.StringLiteral,\n  qualifier: t.TSEntityName | null = null,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSImportType {\n  const node: t.TSImportType = {\n    type: \"TSImportType\",\n    argument,\n    qualifier,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSImportType;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsImportType as tSImportType };\nexport function tsImportEqualsDeclaration(\n  id: t.Identifier,\n  moduleReference: t.TSEntityName | t.TSExternalModuleReference,\n): t.TSImportEqualsDeclaration {\n  const node: t.TSImportEqualsDeclaration = {\n    type: \"TSImportEqualsDeclaration\",\n    id,\n    moduleReference,\n    isExport: null,\n  };\n  const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n  return node;\n}\nexport { tsImportEqualsDeclaration as tSImportEqualsDeclaration };\nexport function tsExternalModuleReference(\n  expression: t.StringLiteral,\n): t.TSExternalModuleReference {\n  const node: t.TSExternalModuleReference = {\n    type: \"TSExternalModuleReference\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSExternalModuleReference;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsExternalModuleReference as tSExternalModuleReference };\nexport function tsNonNullExpression(\n  expression: t.Expression,\n): t.TSNonNullExpression {\n  const node: t.TSNonNullExpression = {\n    type: \"TSNonNullExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSNonNullExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsNonNullExpression as tSNonNullExpression };\nexport function tsExportAssignment(\n  expression: t.Expression,\n): t.TSExportAssignment {\n  const node: t.TSExportAssignment = {\n    type: \"TSExportAssignment\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSExportAssignment;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsExportAssignment as tSExportAssignment };\nexport function tsNamespaceExportDeclaration(\n  id: t.Identifier,\n): t.TSNamespaceExportDeclaration {\n  const node: t.TSNamespaceExportDeclaration = {\n    type: \"TSNamespaceExportDeclaration\",\n    id,\n  };\n  const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport { tsNamespaceExportDeclaration as tSNamespaceExportDeclaration };\nexport function tsTypeAnnotation(typeAnnotation: t.TSType): t.TSTypeAnnotation {\n  const node: t.TSTypeAnnotation = {\n    type: \"TSTypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSTypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeAnnotation as tSTypeAnnotation };\nexport function tsTypeParameterInstantiation(\n  params: Array<t.TSType>,\n): t.TSTypeParameterInstantiation {\n  const node: t.TSTypeParameterInstantiation = {\n    type: \"TSTypeParameterInstantiation\",\n    params,\n  };\n  const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport { tsTypeParameterInstantiation as tSTypeParameterInstantiation };\nexport function tsTypeParameterDeclaration(\n  params: Array<t.TSTypeParameter>,\n): t.TSTypeParameterDeclaration {\n  const node: t.TSTypeParameterDeclaration = {\n    type: \"TSTypeParameterDeclaration\",\n    params,\n  };\n  const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport { tsTypeParameterDeclaration as tSTypeParameterDeclaration };\nexport function tsTypeParameter(\n  constraint: t.TSType | null | undefined = null,\n  _default: t.TSType | null | undefined = null,\n  name: string,\n): t.TSTypeParameter {\n  const node: t.TSTypeParameter = {\n    type: \"TSTypeParameter\",\n    constraint,\n    default: _default,\n    name,\n  };\n  const defs = NODE_FIELDS.TSTypeParameter;\n  validate(defs.constraint, node, \"constraint\", constraint, 1);\n  validate(defs.default, node, \"default\", _default, 1);\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport { tsTypeParameter as tSTypeParameter };\n/** @deprecated */\nfunction NumberLiteral(value: number) {\n  deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n  return numericLiteral(value);\n}\nexport { NumberLiteral as numberLiteral };\n/** @deprecated */\nfunction RegexLiteral(pattern: string, flags: string = \"\") {\n  deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n  return regExpLiteral(pattern, flags);\n}\nexport { RegexLiteral as regexLiteral };\n/** @deprecated */\nfunction RestProperty(argument: t.LVal) {\n  deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n  return restElement(argument);\n}\nexport { RestProperty as restProperty };\n/** @deprecated */\nfunction SpreadProperty(argument: t.Expression) {\n  deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n  return spreadElement(argument);\n}\nexport { SpreadProperty as spreadProperty };\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/builders/generated/uppercase.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/builders/generated/uppercase.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/builders/generated/uppercase.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1036,4 +1036,10 @@
   }
 });
+Object.defineProperty(exports, "TSEnumBody", {
+  enumerable: true,
+  get: function () {
+    return _index.tsEnumBody;
+  }
+});
 Object.defineProperty(exports, "TSEnumDeclaration", {
   enumerable: true,
Index: imaps-frontend/node_modules/@babel/types/lib/builders/generated/uppercase.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/builders/generated/uppercase.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/builders/generated/uppercase.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_index","require"],"sources":["../../../src/builders/generated/uppercase.js"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/**\n * This file is written in JavaScript and not TypeScript because uppercase builders\n * conflict with AST types. TypeScript reads the uppercase.d.ts file instead.\n */\n\nexport {\n  arrayExpression as ArrayExpression,\n  assignmentExpression as AssignmentExpression,\n  binaryExpression as BinaryExpression,\n  interpreterDirective as InterpreterDirective,\n  directive as Directive,\n  directiveLiteral as DirectiveLiteral,\n  blockStatement as BlockStatement,\n  breakStatement as BreakStatement,\n  callExpression as CallExpression,\n  catchClause as CatchClause,\n  conditionalExpression as ConditionalExpression,\n  continueStatement as ContinueStatement,\n  debuggerStatement as DebuggerStatement,\n  doWhileStatement as DoWhileStatement,\n  emptyStatement as EmptyStatement,\n  expressionStatement as ExpressionStatement,\n  file as File,\n  forInStatement as ForInStatement,\n  forStatement as ForStatement,\n  functionDeclaration as FunctionDeclaration,\n  functionExpression as FunctionExpression,\n  identifier as Identifier,\n  ifStatement as IfStatement,\n  labeledStatement as LabeledStatement,\n  stringLiteral as StringLiteral,\n  numericLiteral as NumericLiteral,\n  nullLiteral as NullLiteral,\n  booleanLiteral as BooleanLiteral,\n  regExpLiteral as RegExpLiteral,\n  logicalExpression as LogicalExpression,\n  memberExpression as MemberExpression,\n  newExpression as NewExpression,\n  program as Program,\n  objectExpression as ObjectExpression,\n  objectMethod as ObjectMethod,\n  objectProperty as ObjectProperty,\n  restElement as RestElement,\n  returnStatement as ReturnStatement,\n  sequenceExpression as SequenceExpression,\n  parenthesizedExpression as ParenthesizedExpression,\n  switchCase as SwitchCase,\n  switchStatement as SwitchStatement,\n  thisExpression as ThisExpression,\n  throwStatement as ThrowStatement,\n  tryStatement as TryStatement,\n  unaryExpression as UnaryExpression,\n  updateExpression as UpdateExpression,\n  variableDeclaration as VariableDeclaration,\n  variableDeclarator as VariableDeclarator,\n  whileStatement as WhileStatement,\n  withStatement as WithStatement,\n  assignmentPattern as AssignmentPattern,\n  arrayPattern as ArrayPattern,\n  arrowFunctionExpression as ArrowFunctionExpression,\n  classBody as ClassBody,\n  classExpression as ClassExpression,\n  classDeclaration as ClassDeclaration,\n  exportAllDeclaration as ExportAllDeclaration,\n  exportDefaultDeclaration as ExportDefaultDeclaration,\n  exportNamedDeclaration as ExportNamedDeclaration,\n  exportSpecifier as ExportSpecifier,\n  forOfStatement as ForOfStatement,\n  importDeclaration as ImportDeclaration,\n  importDefaultSpecifier as ImportDefaultSpecifier,\n  importNamespaceSpecifier as ImportNamespaceSpecifier,\n  importSpecifier as ImportSpecifier,\n  importExpression as ImportExpression,\n  metaProperty as MetaProperty,\n  classMethod as ClassMethod,\n  objectPattern as ObjectPattern,\n  spreadElement as SpreadElement,\n  super as Super,\n  taggedTemplateExpression as TaggedTemplateExpression,\n  templateElement as TemplateElement,\n  templateLiteral as TemplateLiteral,\n  yieldExpression as YieldExpression,\n  awaitExpression as AwaitExpression,\n  import as Import,\n  bigIntLiteral as BigIntLiteral,\n  exportNamespaceSpecifier as ExportNamespaceSpecifier,\n  optionalMemberExpression as OptionalMemberExpression,\n  optionalCallExpression as OptionalCallExpression,\n  classProperty as ClassProperty,\n  classAccessorProperty as ClassAccessorProperty,\n  classPrivateProperty as ClassPrivateProperty,\n  classPrivateMethod as ClassPrivateMethod,\n  privateName as PrivateName,\n  staticBlock as StaticBlock,\n  anyTypeAnnotation as AnyTypeAnnotation,\n  arrayTypeAnnotation as ArrayTypeAnnotation,\n  booleanTypeAnnotation as BooleanTypeAnnotation,\n  booleanLiteralTypeAnnotation as BooleanLiteralTypeAnnotation,\n  nullLiteralTypeAnnotation as NullLiteralTypeAnnotation,\n  classImplements as ClassImplements,\n  declareClass as DeclareClass,\n  declareFunction as DeclareFunction,\n  declareInterface as DeclareInterface,\n  declareModule as DeclareModule,\n  declareModuleExports as DeclareModuleExports,\n  declareTypeAlias as DeclareTypeAlias,\n  declareOpaqueType as DeclareOpaqueType,\n  declareVariable as DeclareVariable,\n  declareExportDeclaration as DeclareExportDeclaration,\n  declareExportAllDeclaration as DeclareExportAllDeclaration,\n  declaredPredicate as DeclaredPredicate,\n  existsTypeAnnotation as ExistsTypeAnnotation,\n  functionTypeAnnotation as FunctionTypeAnnotation,\n  functionTypeParam as FunctionTypeParam,\n  genericTypeAnnotation as GenericTypeAnnotation,\n  inferredPredicate as InferredPredicate,\n  interfaceExtends as InterfaceExtends,\n  interfaceDeclaration as InterfaceDeclaration,\n  interfaceTypeAnnotation as InterfaceTypeAnnotation,\n  intersectionTypeAnnotation as IntersectionTypeAnnotation,\n  mixedTypeAnnotation as MixedTypeAnnotation,\n  emptyTypeAnnotation as EmptyTypeAnnotation,\n  nullableTypeAnnotation as NullableTypeAnnotation,\n  numberLiteralTypeAnnotation as NumberLiteralTypeAnnotation,\n  numberTypeAnnotation as NumberTypeAnnotation,\n  objectTypeAnnotation as ObjectTypeAnnotation,\n  objectTypeInternalSlot as ObjectTypeInternalSlot,\n  objectTypeCallProperty as ObjectTypeCallProperty,\n  objectTypeIndexer as ObjectTypeIndexer,\n  objectTypeProperty as ObjectTypeProperty,\n  objectTypeSpreadProperty as ObjectTypeSpreadProperty,\n  opaqueType as OpaqueType,\n  qualifiedTypeIdentifier as QualifiedTypeIdentifier,\n  stringLiteralTypeAnnotation as StringLiteralTypeAnnotation,\n  stringTypeAnnotation as StringTypeAnnotation,\n  symbolTypeAnnotation as SymbolTypeAnnotation,\n  thisTypeAnnotation as ThisTypeAnnotation,\n  tupleTypeAnnotation as TupleTypeAnnotation,\n  typeofTypeAnnotation as TypeofTypeAnnotation,\n  typeAlias as TypeAlias,\n  typeAnnotation as TypeAnnotation,\n  typeCastExpression as TypeCastExpression,\n  typeParameter as TypeParameter,\n  typeParameterDeclaration as TypeParameterDeclaration,\n  typeParameterInstantiation as TypeParameterInstantiation,\n  unionTypeAnnotation as UnionTypeAnnotation,\n  variance as Variance,\n  voidTypeAnnotation as VoidTypeAnnotation,\n  enumDeclaration as EnumDeclaration,\n  enumBooleanBody as EnumBooleanBody,\n  enumNumberBody as EnumNumberBody,\n  enumStringBody as EnumStringBody,\n  enumSymbolBody as EnumSymbolBody,\n  enumBooleanMember as EnumBooleanMember,\n  enumNumberMember as EnumNumberMember,\n  enumStringMember as EnumStringMember,\n  enumDefaultedMember as EnumDefaultedMember,\n  indexedAccessType as IndexedAccessType,\n  optionalIndexedAccessType as OptionalIndexedAccessType,\n  jsxAttribute as JSXAttribute,\n  jsxClosingElement as JSXClosingElement,\n  jsxElement as JSXElement,\n  jsxEmptyExpression as JSXEmptyExpression,\n  jsxExpressionContainer as JSXExpressionContainer,\n  jsxSpreadChild as JSXSpreadChild,\n  jsxIdentifier as JSXIdentifier,\n  jsxMemberExpression as JSXMemberExpression,\n  jsxNamespacedName as JSXNamespacedName,\n  jsxOpeningElement as JSXOpeningElement,\n  jsxSpreadAttribute as JSXSpreadAttribute,\n  jsxText as JSXText,\n  jsxFragment as JSXFragment,\n  jsxOpeningFragment as JSXOpeningFragment,\n  jsxClosingFragment as JSXClosingFragment,\n  noop as Noop,\n  placeholder as Placeholder,\n  v8IntrinsicIdentifier as V8IntrinsicIdentifier,\n  argumentPlaceholder as ArgumentPlaceholder,\n  bindExpression as BindExpression,\n  importAttribute as ImportAttribute,\n  decorator as Decorator,\n  doExpression as DoExpression,\n  exportDefaultSpecifier as ExportDefaultSpecifier,\n  recordExpression as RecordExpression,\n  tupleExpression as TupleExpression,\n  decimalLiteral as DecimalLiteral,\n  moduleExpression as ModuleExpression,\n  topicReference as TopicReference,\n  pipelineTopicExpression as PipelineTopicExpression,\n  pipelineBareFunction as PipelineBareFunction,\n  pipelinePrimaryTopicReference as PipelinePrimaryTopicReference,\n  tsParameterProperty as TSParameterProperty,\n  tsDeclareFunction as TSDeclareFunction,\n  tsDeclareMethod as TSDeclareMethod,\n  tsQualifiedName as TSQualifiedName,\n  tsCallSignatureDeclaration as TSCallSignatureDeclaration,\n  tsConstructSignatureDeclaration as TSConstructSignatureDeclaration,\n  tsPropertySignature as TSPropertySignature,\n  tsMethodSignature as TSMethodSignature,\n  tsIndexSignature as TSIndexSignature,\n  tsAnyKeyword as TSAnyKeyword,\n  tsBooleanKeyword as TSBooleanKeyword,\n  tsBigIntKeyword as TSBigIntKeyword,\n  tsIntrinsicKeyword as TSIntrinsicKeyword,\n  tsNeverKeyword as TSNeverKeyword,\n  tsNullKeyword as TSNullKeyword,\n  tsNumberKeyword as TSNumberKeyword,\n  tsObjectKeyword as TSObjectKeyword,\n  tsStringKeyword as TSStringKeyword,\n  tsSymbolKeyword as TSSymbolKeyword,\n  tsUndefinedKeyword as TSUndefinedKeyword,\n  tsUnknownKeyword as TSUnknownKeyword,\n  tsVoidKeyword as TSVoidKeyword,\n  tsThisType as TSThisType,\n  tsFunctionType as TSFunctionType,\n  tsConstructorType as TSConstructorType,\n  tsTypeReference as TSTypeReference,\n  tsTypePredicate as TSTypePredicate,\n  tsTypeQuery as TSTypeQuery,\n  tsTypeLiteral as TSTypeLiteral,\n  tsArrayType as TSArrayType,\n  tsTupleType as TSTupleType,\n  tsOptionalType as TSOptionalType,\n  tsRestType as TSRestType,\n  tsNamedTupleMember as TSNamedTupleMember,\n  tsUnionType as TSUnionType,\n  tsIntersectionType as TSIntersectionType,\n  tsConditionalType as TSConditionalType,\n  tsInferType as TSInferType,\n  tsParenthesizedType as TSParenthesizedType,\n  tsTypeOperator as TSTypeOperator,\n  tsIndexedAccessType as TSIndexedAccessType,\n  tsMappedType as TSMappedType,\n  tsLiteralType as TSLiteralType,\n  tsExpressionWithTypeArguments as TSExpressionWithTypeArguments,\n  tsInterfaceDeclaration as TSInterfaceDeclaration,\n  tsInterfaceBody as TSInterfaceBody,\n  tsTypeAliasDeclaration as TSTypeAliasDeclaration,\n  tsInstantiationExpression as TSInstantiationExpression,\n  tsAsExpression as TSAsExpression,\n  tsSatisfiesExpression as TSSatisfiesExpression,\n  tsTypeAssertion as TSTypeAssertion,\n  tsEnumDeclaration as TSEnumDeclaration,\n  tsEnumMember as TSEnumMember,\n  tsModuleDeclaration as TSModuleDeclaration,\n  tsModuleBlock as TSModuleBlock,\n  tsImportType as TSImportType,\n  tsImportEqualsDeclaration as TSImportEqualsDeclaration,\n  tsExternalModuleReference as TSExternalModuleReference,\n  tsNonNullExpression as TSNonNullExpression,\n  tsExportAssignment as TSExportAssignment,\n  tsNamespaceExportDeclaration as TSNamespaceExportDeclaration,\n  tsTypeAnnotation as TSTypeAnnotation,\n  tsTypeParameterInstantiation as TSTypeParameterInstantiation,\n  tsTypeParameterDeclaration as TSTypeParameterDeclaration,\n  tsTypeParameter as TSTypeParameter,\n  numberLiteral as NumberLiteral,\n  regexLiteral as RegexLiteral,\n  restProperty as RestProperty,\n  spreadProperty as SpreadProperty,\n} from \"./index.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAAA,MAAA,GAAAC,OAAA","ignoreList":[]}
+{"version":3,"names":["_index","require"],"sources":["../../../src/builders/generated/uppercase.js"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/**\n * This file is written in JavaScript and not TypeScript because uppercase builders\n * conflict with AST types. TypeScript reads the uppercase.d.ts file instead.\n */\n\nexport {\n  arrayExpression as ArrayExpression,\n  assignmentExpression as AssignmentExpression,\n  binaryExpression as BinaryExpression,\n  interpreterDirective as InterpreterDirective,\n  directive as Directive,\n  directiveLiteral as DirectiveLiteral,\n  blockStatement as BlockStatement,\n  breakStatement as BreakStatement,\n  callExpression as CallExpression,\n  catchClause as CatchClause,\n  conditionalExpression as ConditionalExpression,\n  continueStatement as ContinueStatement,\n  debuggerStatement as DebuggerStatement,\n  doWhileStatement as DoWhileStatement,\n  emptyStatement as EmptyStatement,\n  expressionStatement as ExpressionStatement,\n  file as File,\n  forInStatement as ForInStatement,\n  forStatement as ForStatement,\n  functionDeclaration as FunctionDeclaration,\n  functionExpression as FunctionExpression,\n  identifier as Identifier,\n  ifStatement as IfStatement,\n  labeledStatement as LabeledStatement,\n  stringLiteral as StringLiteral,\n  numericLiteral as NumericLiteral,\n  nullLiteral as NullLiteral,\n  booleanLiteral as BooleanLiteral,\n  regExpLiteral as RegExpLiteral,\n  logicalExpression as LogicalExpression,\n  memberExpression as MemberExpression,\n  newExpression as NewExpression,\n  program as Program,\n  objectExpression as ObjectExpression,\n  objectMethod as ObjectMethod,\n  objectProperty as ObjectProperty,\n  restElement as RestElement,\n  returnStatement as ReturnStatement,\n  sequenceExpression as SequenceExpression,\n  parenthesizedExpression as ParenthesizedExpression,\n  switchCase as SwitchCase,\n  switchStatement as SwitchStatement,\n  thisExpression as ThisExpression,\n  throwStatement as ThrowStatement,\n  tryStatement as TryStatement,\n  unaryExpression as UnaryExpression,\n  updateExpression as UpdateExpression,\n  variableDeclaration as VariableDeclaration,\n  variableDeclarator as VariableDeclarator,\n  whileStatement as WhileStatement,\n  withStatement as WithStatement,\n  assignmentPattern as AssignmentPattern,\n  arrayPattern as ArrayPattern,\n  arrowFunctionExpression as ArrowFunctionExpression,\n  classBody as ClassBody,\n  classExpression as ClassExpression,\n  classDeclaration as ClassDeclaration,\n  exportAllDeclaration as ExportAllDeclaration,\n  exportDefaultDeclaration as ExportDefaultDeclaration,\n  exportNamedDeclaration as ExportNamedDeclaration,\n  exportSpecifier as ExportSpecifier,\n  forOfStatement as ForOfStatement,\n  importDeclaration as ImportDeclaration,\n  importDefaultSpecifier as ImportDefaultSpecifier,\n  importNamespaceSpecifier as ImportNamespaceSpecifier,\n  importSpecifier as ImportSpecifier,\n  importExpression as ImportExpression,\n  metaProperty as MetaProperty,\n  classMethod as ClassMethod,\n  objectPattern as ObjectPattern,\n  spreadElement as SpreadElement,\n  super as Super,\n  taggedTemplateExpression as TaggedTemplateExpression,\n  templateElement as TemplateElement,\n  templateLiteral as TemplateLiteral,\n  yieldExpression as YieldExpression,\n  awaitExpression as AwaitExpression,\n  import as Import,\n  bigIntLiteral as BigIntLiteral,\n  exportNamespaceSpecifier as ExportNamespaceSpecifier,\n  optionalMemberExpression as OptionalMemberExpression,\n  optionalCallExpression as OptionalCallExpression,\n  classProperty as ClassProperty,\n  classAccessorProperty as ClassAccessorProperty,\n  classPrivateProperty as ClassPrivateProperty,\n  classPrivateMethod as ClassPrivateMethod,\n  privateName as PrivateName,\n  staticBlock as StaticBlock,\n  anyTypeAnnotation as AnyTypeAnnotation,\n  arrayTypeAnnotation as ArrayTypeAnnotation,\n  booleanTypeAnnotation as BooleanTypeAnnotation,\n  booleanLiteralTypeAnnotation as BooleanLiteralTypeAnnotation,\n  nullLiteralTypeAnnotation as NullLiteralTypeAnnotation,\n  classImplements as ClassImplements,\n  declareClass as DeclareClass,\n  declareFunction as DeclareFunction,\n  declareInterface as DeclareInterface,\n  declareModule as DeclareModule,\n  declareModuleExports as DeclareModuleExports,\n  declareTypeAlias as DeclareTypeAlias,\n  declareOpaqueType as DeclareOpaqueType,\n  declareVariable as DeclareVariable,\n  declareExportDeclaration as DeclareExportDeclaration,\n  declareExportAllDeclaration as DeclareExportAllDeclaration,\n  declaredPredicate as DeclaredPredicate,\n  existsTypeAnnotation as ExistsTypeAnnotation,\n  functionTypeAnnotation as FunctionTypeAnnotation,\n  functionTypeParam as FunctionTypeParam,\n  genericTypeAnnotation as GenericTypeAnnotation,\n  inferredPredicate as InferredPredicate,\n  interfaceExtends as InterfaceExtends,\n  interfaceDeclaration as InterfaceDeclaration,\n  interfaceTypeAnnotation as InterfaceTypeAnnotation,\n  intersectionTypeAnnotation as IntersectionTypeAnnotation,\n  mixedTypeAnnotation as MixedTypeAnnotation,\n  emptyTypeAnnotation as EmptyTypeAnnotation,\n  nullableTypeAnnotation as NullableTypeAnnotation,\n  numberLiteralTypeAnnotation as NumberLiteralTypeAnnotation,\n  numberTypeAnnotation as NumberTypeAnnotation,\n  objectTypeAnnotation as ObjectTypeAnnotation,\n  objectTypeInternalSlot as ObjectTypeInternalSlot,\n  objectTypeCallProperty as ObjectTypeCallProperty,\n  objectTypeIndexer as ObjectTypeIndexer,\n  objectTypeProperty as ObjectTypeProperty,\n  objectTypeSpreadProperty as ObjectTypeSpreadProperty,\n  opaqueType as OpaqueType,\n  qualifiedTypeIdentifier as QualifiedTypeIdentifier,\n  stringLiteralTypeAnnotation as StringLiteralTypeAnnotation,\n  stringTypeAnnotation as StringTypeAnnotation,\n  symbolTypeAnnotation as SymbolTypeAnnotation,\n  thisTypeAnnotation as ThisTypeAnnotation,\n  tupleTypeAnnotation as TupleTypeAnnotation,\n  typeofTypeAnnotation as TypeofTypeAnnotation,\n  typeAlias as TypeAlias,\n  typeAnnotation as TypeAnnotation,\n  typeCastExpression as TypeCastExpression,\n  typeParameter as TypeParameter,\n  typeParameterDeclaration as TypeParameterDeclaration,\n  typeParameterInstantiation as TypeParameterInstantiation,\n  unionTypeAnnotation as UnionTypeAnnotation,\n  variance as Variance,\n  voidTypeAnnotation as VoidTypeAnnotation,\n  enumDeclaration as EnumDeclaration,\n  enumBooleanBody as EnumBooleanBody,\n  enumNumberBody as EnumNumberBody,\n  enumStringBody as EnumStringBody,\n  enumSymbolBody as EnumSymbolBody,\n  enumBooleanMember as EnumBooleanMember,\n  enumNumberMember as EnumNumberMember,\n  enumStringMember as EnumStringMember,\n  enumDefaultedMember as EnumDefaultedMember,\n  indexedAccessType as IndexedAccessType,\n  optionalIndexedAccessType as OptionalIndexedAccessType,\n  jsxAttribute as JSXAttribute,\n  jsxClosingElement as JSXClosingElement,\n  jsxElement as JSXElement,\n  jsxEmptyExpression as JSXEmptyExpression,\n  jsxExpressionContainer as JSXExpressionContainer,\n  jsxSpreadChild as JSXSpreadChild,\n  jsxIdentifier as JSXIdentifier,\n  jsxMemberExpression as JSXMemberExpression,\n  jsxNamespacedName as JSXNamespacedName,\n  jsxOpeningElement as JSXOpeningElement,\n  jsxSpreadAttribute as JSXSpreadAttribute,\n  jsxText as JSXText,\n  jsxFragment as JSXFragment,\n  jsxOpeningFragment as JSXOpeningFragment,\n  jsxClosingFragment as JSXClosingFragment,\n  noop as Noop,\n  placeholder as Placeholder,\n  v8IntrinsicIdentifier as V8IntrinsicIdentifier,\n  argumentPlaceholder as ArgumentPlaceholder,\n  bindExpression as BindExpression,\n  importAttribute as ImportAttribute,\n  decorator as Decorator,\n  doExpression as DoExpression,\n  exportDefaultSpecifier as ExportDefaultSpecifier,\n  recordExpression as RecordExpression,\n  tupleExpression as TupleExpression,\n  decimalLiteral as DecimalLiteral,\n  moduleExpression as ModuleExpression,\n  topicReference as TopicReference,\n  pipelineTopicExpression as PipelineTopicExpression,\n  pipelineBareFunction as PipelineBareFunction,\n  pipelinePrimaryTopicReference as PipelinePrimaryTopicReference,\n  tsParameterProperty as TSParameterProperty,\n  tsDeclareFunction as TSDeclareFunction,\n  tsDeclareMethod as TSDeclareMethod,\n  tsQualifiedName as TSQualifiedName,\n  tsCallSignatureDeclaration as TSCallSignatureDeclaration,\n  tsConstructSignatureDeclaration as TSConstructSignatureDeclaration,\n  tsPropertySignature as TSPropertySignature,\n  tsMethodSignature as TSMethodSignature,\n  tsIndexSignature as TSIndexSignature,\n  tsAnyKeyword as TSAnyKeyword,\n  tsBooleanKeyword as TSBooleanKeyword,\n  tsBigIntKeyword as TSBigIntKeyword,\n  tsIntrinsicKeyword as TSIntrinsicKeyword,\n  tsNeverKeyword as TSNeverKeyword,\n  tsNullKeyword as TSNullKeyword,\n  tsNumberKeyword as TSNumberKeyword,\n  tsObjectKeyword as TSObjectKeyword,\n  tsStringKeyword as TSStringKeyword,\n  tsSymbolKeyword as TSSymbolKeyword,\n  tsUndefinedKeyword as TSUndefinedKeyword,\n  tsUnknownKeyword as TSUnknownKeyword,\n  tsVoidKeyword as TSVoidKeyword,\n  tsThisType as TSThisType,\n  tsFunctionType as TSFunctionType,\n  tsConstructorType as TSConstructorType,\n  tsTypeReference as TSTypeReference,\n  tsTypePredicate as TSTypePredicate,\n  tsTypeQuery as TSTypeQuery,\n  tsTypeLiteral as TSTypeLiteral,\n  tsArrayType as TSArrayType,\n  tsTupleType as TSTupleType,\n  tsOptionalType as TSOptionalType,\n  tsRestType as TSRestType,\n  tsNamedTupleMember as TSNamedTupleMember,\n  tsUnionType as TSUnionType,\n  tsIntersectionType as TSIntersectionType,\n  tsConditionalType as TSConditionalType,\n  tsInferType as TSInferType,\n  tsParenthesizedType as TSParenthesizedType,\n  tsTypeOperator as TSTypeOperator,\n  tsIndexedAccessType as TSIndexedAccessType,\n  tsMappedType as TSMappedType,\n  tsLiteralType as TSLiteralType,\n  tsExpressionWithTypeArguments as TSExpressionWithTypeArguments,\n  tsInterfaceDeclaration as TSInterfaceDeclaration,\n  tsInterfaceBody as TSInterfaceBody,\n  tsTypeAliasDeclaration as TSTypeAliasDeclaration,\n  tsInstantiationExpression as TSInstantiationExpression,\n  tsAsExpression as TSAsExpression,\n  tsSatisfiesExpression as TSSatisfiesExpression,\n  tsTypeAssertion as TSTypeAssertion,\n  tsEnumBody as TSEnumBody,\n  tsEnumDeclaration as TSEnumDeclaration,\n  tsEnumMember as TSEnumMember,\n  tsModuleDeclaration as TSModuleDeclaration,\n  tsModuleBlock as TSModuleBlock,\n  tsImportType as TSImportType,\n  tsImportEqualsDeclaration as TSImportEqualsDeclaration,\n  tsExternalModuleReference as TSExternalModuleReference,\n  tsNonNullExpression as TSNonNullExpression,\n  tsExportAssignment as TSExportAssignment,\n  tsNamespaceExportDeclaration as TSNamespaceExportDeclaration,\n  tsTypeAnnotation as TSTypeAnnotation,\n  tsTypeParameterInstantiation as TSTypeParameterInstantiation,\n  tsTypeParameterDeclaration as TSTypeParameterDeclaration,\n  tsTypeParameter as TSTypeParameter,\n  numberLiteral as NumberLiteral,\n  regexLiteral as RegexLiteral,\n  restProperty as RestProperty,\n  spreadProperty as SpreadProperty,\n} from \"./index.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAAA,MAAA,GAAAC,OAAA","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/core.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/core.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/core.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -127,17 +127,21 @@
       validate: (0, _utils.assertNodeType)("Expression", "Super", "V8IntrinsicIdentifier")
     },
-    arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder")
-  }, !process.env.BABEL_TYPES_8_BREAKING ? {
+    arguments: (0, _utils.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"),
+    typeArguments: {
+      validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+      optional: true
+    }
+  }, {
     optional: {
       validate: (0, _utils.assertValueType)("boolean"),
       optional: true
-    }
-  } : {}, {
-    typeArguments: {
-      validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
-      optional: true
     },
     typeParameters: {
       validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+      optional: true
+    }
+  }, process.env.BABEL_TYPES_8_BREAKING ? {} : {
+    optional: {
+      validate: (0, _utils.assertValueType)("boolean"),
       optional: true
     }
@@ -303,5 +307,5 @@
 defineType("FunctionDeclaration", {
   builder: ["id", "params", "body", "generator", "async"],
-  visitor: ["id", "typeParameters", "params", "returnType", "body"],
+  visitor: ["id", "typeParameters", "params", "predicate", "returnType", "body"],
   fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {
     body: {
@@ -881,5 +885,5 @@
 defineType("ArrowFunctionExpression", {
   builder: ["params", "body", "async"],
-  visitor: ["typeParameters", "params", "returnType", "body"],
+  visitor: ["typeParameters", "params", "predicate", "returnType", "body"],
   aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
   fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
@@ -922,5 +926,5 @@
       validate: (0, _utils.assertNodeType)("Expression")
     },
-    superTypeParameters: {
+    ["superTypeParameters"]: {
       validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
       optional: true
@@ -959,5 +963,5 @@
       validate: (0, _utils.assertNodeType)("Expression")
     },
-    superTypeParameters: {
+    ["superTypeParameters"]: {
       validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
       optional: true
@@ -1312,5 +1316,5 @@
       validate: (0, _utils.assertNodeType)("TemplateLiteral")
     },
-    typeParameters: {
+    ["typeParameters"]: {
       validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
       optional: true
@@ -1458,5 +1462,5 @@
   builder: ["callee", "arguments", "optional"],
   aliases: ["Expression"],
-  fields: {
+  fields: Object.assign({
     callee: {
       validate: (0, _utils.assertNodeType)("Expression")
@@ -1469,13 +1473,14 @@
       validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
       optional: true
-    },
+    }
+  }, {
     typeParameters: {
       validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
       optional: true
     }
-  }
+  })
 });
 defineType("ClassProperty", {
-  visitor: ["decorators", "key", "typeAnnotation", "value"],
+  visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
   builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
   aliases: ["Property"],
@@ -1557,5 +1562,5 @@
 });
 defineType("ClassPrivateProperty", {
-  visitor: ["decorators", "key", "typeAnnotation", "value"],
+  visitor: ["decorators", "variance", "key", "typeAnnotation", "value"],
   builder: ["key", "value", "decorators", "static"],
   aliases: ["Property", "Private"],
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/core.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/core.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/core.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_is","require","_isValidIdentifier","_helperValidatorIdentifier","_helperStringParser","_index","_utils","defineType","defineAliasedType","fields","elements","validate","arrayOf","assertNodeOrValueType","default","process","env","BABEL_TYPES_8_BREAKING","undefined","visitor","aliases","operator","assertValueType","Object","assign","identifier","assertOneOf","ASSIGNMENT_OPERATORS","pattern","node","key","val","validator","is","left","type","assertNodeType","right","builder","BINARY_OPERATORS","expression","inOp","oneOfNodeTypes","value","directives","arrayOfType","body","validateArrayOfType","label","optional","callee","arguments","typeArguments","typeParameters","param","test","consequent","alternate","program","comments","each","assertEach","tokens","init","update","functionCommon","params","generator","async","exports","functionTypeAnnotationCommon","returnType","functionDeclarationCommon","declare","id","predicate","parent","inherits","patternLikeCommon","typeAnnotation","decorators","name","chain","isValidIdentifier","TypeError","match","exec","parentKey","nonComp","computed","imported","meta","isKeyword","isReservedWord","deprecatedAlias","Number","isFinite","error","Error","flags","invalid","LOGICAL_OPERATORS","object","property","normal","sourceType","interpreter","properties","kind","shorthand","argument","listKey","index","length","expressions","discriminant","cases","block","handler","finalizer","prefix","UNARY_OPERATORS","UPDATE_OPERATORS","declarations","withoutInit","forEach","decl","definite","superClass","superTypeParameters","implements","mixins","abstract","importAttributes","attributes","assertions","deprecated","source","exportKind","validateOptional","declaration","validateType","specifiers","sourced","sourceless","local","exported","lval","await","module","phase","importKind","options","classMethodOrPropertyCommon","accessibility","static","override","classMethodOrDeclareMethodCommon","access","tag","quasi","assertShape","raw","cooked","templateElementCookedValidator","unterminatedCalled","str","firstInvalidLoc","readStringContents","unterminated","strictNumericEscape","invalidEscapeSequence","numericSeparatorInEscapeSequence","unexpectedNumericSeparator","invalidDigit","invalidCodePoint","tail","quasis","delegate","assertOptionalChainStart","readonly","variance"],"sources":["../../src/definitions/core.ts"],"sourcesContent":["import is from \"../validators/is.ts\";\nimport isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isKeyword, isReservedWord } from \"@babel/helper-validator-identifier\";\nimport type * as t from \"../index.ts\";\nimport { readStringContents } from \"@babel/helper-string-parser\";\n\nimport {\n  BINARY_OPERATORS,\n  LOGICAL_OPERATORS,\n  ASSIGNMENT_OPERATORS,\n  UNARY_OPERATORS,\n  UPDATE_OPERATORS,\n} from \"../constants/index.ts\";\n\nimport {\n  defineAliasedType,\n  assertShape,\n  assertOptionalChainStart,\n  assertValueType,\n  assertNodeType,\n  assertNodeOrValueType,\n  assertEach,\n  chain,\n  assertOneOf,\n  validateOptional,\n  type Validator,\n  arrayOf,\n  arrayOfType,\n  validateArrayOfType,\n  validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Standardized\");\n\ndefineType(\"ArrayExpression\", {\n  fields: {\n    elements: {\n      validate: arrayOf(\n        assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\"),\n      ),\n      default:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? []\n          : undefined,\n    },\n  },\n  visitor: [\"elements\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"AssignmentExpression\", {\n  fields: {\n    operator: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"string\")\n          : Object.assign(\n              (function () {\n                const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n                const pattern = assertOneOf(\"=\");\n\n                return function (node: t.AssignmentExpression, key, val) {\n                  const validator = is(\"Pattern\", node.left)\n                    ? pattern\n                    : identifier;\n                  validator(node, key, val);\n                } as Validator;\n              })(),\n              { type: \"string\" },\n            ),\n    },\n    left: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\", \"OptionalMemberExpression\")\n          : assertNodeType(\n              \"Identifier\",\n              \"MemberExpression\",\n              \"OptionalMemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  builder: [\"operator\", \"left\", \"right\"],\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"BinaryExpression\", {\n  builder: [\"operator\", \"left\", \"right\"],\n  fields: {\n    operator: {\n      validate: assertOneOf(...BINARY_OPERATORS),\n    },\n    left: {\n      validate: (function () {\n        const expression = assertNodeType(\"Expression\");\n        const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.BinaryExpression, key, val) {\n            const validator = node.operator === \"in\" ? inOp : expression;\n            validator(node, key, val);\n          } as Validator,\n          // todo(ts): can be discriminated union by `operator` property\n          { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] },\n        );\n        return validator;\n      })(),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Binary\", \"Expression\"],\n});\n\ndefineType(\"InterpreterDirective\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"Directive\", {\n  visitor: [\"value\"],\n  fields: {\n    value: {\n      validate: assertNodeType(\"DirectiveLiteral\"),\n    },\n  },\n});\n\ndefineType(\"DirectiveLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"BlockStatement\", {\n  builder: [\"body\", \"directives\"],\n  visitor: [\"directives\", \"body\"],\n  fields: {\n    directives: {\n      validate: arrayOfType(\"Directive\"),\n      default: [],\n    },\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"],\n});\n\ndefineType(\"BreakStatement\", {\n  visitor: [\"label\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n  },\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"CallExpression\", {\n  visitor: [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n  builder: [\"callee\", \"arguments\"],\n  aliases: [\"Expression\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\", \"Super\", \"V8IntrinsicIdentifier\"),\n    },\n    arguments: validateArrayOfType(\n      \"Expression\",\n      \"SpreadElement\",\n      \"ArgumentPlaceholder\",\n    ),\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }\n      : {}),\n    typeArguments: {\n      validate: assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    typeParameters: {\n      validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"CatchClause\", {\n  visitor: [\"param\", \"body\"],\n  fields: {\n    param: {\n      validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n  aliases: [\"Scopable\", \"BlockParent\"],\n});\n\ndefineType(\"ConditionalExpression\", {\n  visitor: [\"test\", \"consequent\", \"alternate\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    consequent: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    alternate: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Expression\", \"Conditional\"],\n});\n\ndefineType(\"ContinueStatement\", {\n  visitor: [\"label\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n  },\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"DebuggerStatement\", {\n  aliases: [\"Statement\"],\n});\n\ndefineType(\"DoWhileStatement\", {\n  builder: [\"test\", \"body\"],\n  visitor: [\"body\", \"test\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n  aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n});\n\ndefineType(\"EmptyStatement\", {\n  aliases: [\"Statement\"],\n});\n\ndefineType(\"ExpressionStatement\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Statement\", \"ExpressionWrapper\"],\n});\n\ndefineType(\"File\", {\n  builder: [\"program\", \"comments\", \"tokens\"],\n  visitor: [\"program\"],\n  fields: {\n    program: {\n      validate: assertNodeType(\"Program\"),\n    },\n    comments: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? Object.assign(() => {}, {\n              each: { oneOfNodeTypes: [\"CommentBlock\", \"CommentLine\"] },\n            })\n          : assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n      optional: true,\n    },\n    tokens: {\n      // todo(ts): add Token type\n      validate: assertEach(Object.assign(() => {}, { type: \"any\" })),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ForInStatement\", {\n  visitor: [\"left\", \"right\", \"body\"],\n  aliases: [\n    \"Scopable\",\n    \"Statement\",\n    \"For\",\n    \"BlockParent\",\n    \"Loop\",\n    \"ForXStatement\",\n  ],\n  fields: {\n    left: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"VariableDeclaration\", \"LVal\")\n          : assertNodeType(\n              \"VariableDeclaration\",\n              \"Identifier\",\n              \"MemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"ForStatement\", {\n  visitor: [\"init\", \"test\", \"update\", \"body\"],\n  aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n  fields: {\n    init: {\n      validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n      optional: true,\n    },\n    test: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    update: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\nexport const functionCommon = () => ({\n  params: validateArrayOfType(\"Identifier\", \"Pattern\", \"RestElement\"),\n  generator: {\n    default: false,\n  },\n  async: {\n    default: false,\n  },\n});\n\nexport const functionTypeAnnotationCommon = () => ({\n  returnType: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n      : assertNodeType(\n          \"TypeAnnotation\",\n          \"TSTypeAnnotation\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n  typeParameters: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\")\n      : assertNodeType(\n          \"TypeParameterDeclaration\",\n          \"TSTypeParameterDeclaration\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n});\n\nexport const functionDeclarationCommon = () => ({\n  ...functionCommon(),\n  declare: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  id: {\n    validate: assertNodeType(\"Identifier\"),\n    optional: true, // May be null for `export default function`\n  },\n});\n\ndefineType(\"FunctionDeclaration\", {\n  builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n  visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\", \"body\"],\n  fields: {\n    ...functionDeclarationCommon(),\n    ...functionTypeAnnotationCommon(),\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Statement\",\n    \"Pureish\",\n    \"Declaration\",\n  ],\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const identifier = assertNodeType(\"Identifier\");\n\n          return function (parent, key, node) {\n            if (!is(\"ExportDefaultDeclaration\", parent)) {\n              identifier(node, \"id\", node.id);\n            }\n          };\n        })(),\n});\n\ndefineType(\"FunctionExpression\", {\n  inherits: \"FunctionDeclaration\",\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Expression\",\n    \"Pureish\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n});\n\nexport const patternLikeCommon = () => ({\n  typeAnnotation: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n      : assertNodeType(\n          \"TypeAnnotation\",\n          \"TSTypeAnnotation\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n  optional: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  decorators: {\n    validate: arrayOfType(\"Decorator\"),\n    optional: true,\n  },\n});\n\ndefineType(\"Identifier\", {\n  builder: [\"name\"],\n  visitor: [\"typeAnnotation\", \"decorators\" /* for legacy param decorators */],\n  aliases: [\"Expression\", \"PatternLike\", \"LVal\", \"TSEntityName\"],\n  fields: {\n    ...patternLikeCommon(),\n    name: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"string\"),\n              Object.assign(\n                function (node, key, val) {\n                  if (!isValidIdentifier(val, false)) {\n                    throw new TypeError(\n                      `\"${val}\" is not a valid identifier name`,\n                    );\n                  }\n                } as Validator,\n                { type: \"string\" },\n              ),\n            )\n          : assertValueType(\"string\"),\n    },\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? function (parent, key, node) {\n          const match = /\\.(\\w+)$/.exec(key);\n          if (!match) return;\n\n          const [, parentKey] = match;\n          const nonComp = { computed: false };\n\n          // We can't check if `parent.property === node`, because nodes are validated\n          // before replacing them in the AST.\n          if (parentKey === \"property\") {\n            if (is(\"MemberExpression\", parent, nonComp)) return;\n            if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n          } else if (parentKey === \"key\") {\n            if (is(\"Property\", parent, nonComp)) return;\n            if (is(\"Method\", parent, nonComp)) return;\n          } else if (parentKey === \"exported\") {\n            if (is(\"ExportSpecifier\", parent)) return;\n          } else if (parentKey === \"imported\") {\n            if (is(\"ImportSpecifier\", parent, { imported: node })) return;\n          } else if (parentKey === \"meta\") {\n            if (is(\"MetaProperty\", parent, { meta: node })) return;\n          }\n\n          if (\n            // Ideally we should call isStrictReservedWord if this node is a descendant\n            // of a block in strict mode. Also, we should pass the inModule option so\n            // we can disable \"await\" in module.\n            (isKeyword(node.name) || isReservedWord(node.name, false)) &&\n            // Even if \"this\" is a keyword, we are using the Identifier\n            // node to represent it.\n            node.name !== \"this\"\n          ) {\n            throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n          }\n        }\n      : undefined,\n});\n\ndefineType(\"IfStatement\", {\n  visitor: [\"test\", \"consequent\", \"alternate\"],\n  aliases: [\"Statement\", \"Conditional\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    consequent: {\n      validate: assertNodeType(\"Statement\"),\n    },\n    alternate: {\n      optional: true,\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"LabeledStatement\", {\n  visitor: [\"label\", \"body\"],\n  aliases: [\"Statement\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"StringLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NumericLiteral\", {\n  builder: [\"value\"],\n  deprecatedAlias: \"NumberLiteral\",\n  fields: {\n    value: {\n      validate: chain(\n        assertValueType(\"number\"),\n        Object.assign(\n          function (node, key, val) {\n            if (1 / val < 0 || !Number.isFinite(val)) {\n              const error = new Error(\n                \"NumericLiterals must be non-negative finite numbers. \" +\n                  `You can use t.valueToNode(${val}) instead.`,\n              );\n              if (process.env.BABEL_8_BREAKING) {\n                // TODO(@nicolo-ribaudo) Fix regenerator to not pass negative\n                // numbers here.\n                if (!IS_STANDALONE) {\n                  if (!new Error().stack.includes(\"regenerator\")) {\n                    throw error;\n                  }\n                }\n              } else {\n                // TODO: Enable this warning once regenerator is fixed.\n                // https://github.com/facebook/regenerator/pull/680\n                // console.warn(error);\n              }\n            }\n          } satisfies Validator,\n          { type: \"number\" },\n        ),\n      ),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NullLiteral\", {\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"BooleanLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"boolean\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"RegExpLiteral\", {\n  builder: [\"pattern\", \"flags\"],\n  deprecatedAlias: \"RegexLiteral\",\n  aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n  fields: {\n    pattern: {\n      validate: assertValueType(\"string\"),\n    },\n    flags: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"string\"),\n              Object.assign(\n                function (node, key, val) {\n                  const invalid = /[^gimsuy]/.exec(val);\n                  if (invalid) {\n                    throw new TypeError(\n                      `\"${invalid[0]}\" is not a valid RegExp flag`,\n                    );\n                  }\n                } as Validator,\n                { type: \"string\" },\n              ),\n            )\n          : assertValueType(\"string\"),\n      default: \"\",\n    },\n  },\n});\n\ndefineType(\"LogicalExpression\", {\n  builder: [\"operator\", \"left\", \"right\"],\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Binary\", \"Expression\"],\n  fields: {\n    operator: {\n      validate: assertOneOf(...LOGICAL_OPERATORS),\n    },\n    left: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"MemberExpression\", {\n  builder: [\n    \"object\",\n    \"property\",\n    \"computed\",\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? [\"optional\"]\n      : []),\n  ],\n  visitor: [\"object\", \"property\"],\n  aliases: [\"Expression\", \"LVal\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\", \"Super\"),\n    },\n    property: {\n      validate: (function () {\n        const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = function (\n          node: t.MemberExpression,\n          key,\n          val,\n        ) {\n          const validator: Validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n        // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n        validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"PrivateName\"];\n        return validator;\n      })(),\n    },\n    computed: {\n      default: false,\n    },\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }\n      : {}),\n  },\n});\n\ndefineType(\"NewExpression\", { inherits: \"CallExpression\" });\n\ndefineType(\"Program\", {\n  // Note: We explicitly leave 'interpreter' out here because it is\n  // conceptually comment-like, and Babel does not traverse comments either.\n  visitor: [\"directives\", \"body\"],\n  builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n  fields: {\n    sourceType: {\n      validate: assertOneOf(\"script\", \"module\"),\n      default: \"script\",\n    },\n    interpreter: {\n      validate: assertNodeType(\"InterpreterDirective\"),\n      default: null,\n      optional: true,\n    },\n    directives: {\n      validate: arrayOfType(\"Directive\"),\n      default: [],\n    },\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"Block\"],\n});\n\ndefineType(\"ObjectExpression\", {\n  visitor: [\"properties\"],\n  aliases: [\"Expression\"],\n  fields: {\n    properties: validateArrayOfType(\n      \"ObjectMethod\",\n      \"ObjectProperty\",\n      \"SpreadElement\",\n    ),\n  },\n});\n\ndefineType(\"ObjectMethod\", {\n  builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    kind: {\n      validate: assertOneOf(\"method\", \"get\", \"set\"),\n      ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n        ? { default: \"method\" }\n        : {}),\n    },\n    computed: {\n      default: false,\n    },\n    key: {\n      validate: (function () {\n        const normal = assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = function (node: t.ObjectMethod, key, val) {\n          const validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n        // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n        validator.oneOfNodeTypes = [\n          \"Expression\",\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        ];\n        return validator;\n      })(),\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n  aliases: [\n    \"UserWhitespacable\",\n    \"Function\",\n    \"Scopable\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Method\",\n    \"ObjectMember\",\n  ],\n});\n\ndefineType(\"ObjectProperty\", {\n  builder: [\n    \"key\",\n    \"value\",\n    \"computed\",\n    \"shorthand\",\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? [\"decorators\"]\n      : []),\n  ],\n  fields: {\n    computed: {\n      default: false,\n    },\n    key: {\n      validate: (function () {\n        const normal = process.env.BABEL_8_BREAKING\n          ? assertNodeType(\n              \"Identifier\",\n              \"StringLiteral\",\n              \"NumericLiteral\",\n              \"BigIntLiteral\",\n              \"PrivateName\",\n            )\n          : assertNodeType(\n              \"Identifier\",\n              \"StringLiteral\",\n              \"NumericLiteral\",\n              \"BigIntLiteral\",\n              // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n              \"DecimalLiteral\",\n              \"PrivateName\",\n            );\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.ObjectProperty, key, val) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          } as Validator,\n          {\n            // todo(ts): can be discriminated union by `computed` property\n            oneOfNodeTypes: process.env.BABEL_8_BREAKING\n              ? [\n                  \"Expression\",\n                  \"Identifier\",\n                  \"StringLiteral\",\n                  \"NumericLiteral\",\n                  \"BigIntLiteral\",\n                  \"PrivateName\",\n                ]\n              : [\n                  \"Expression\",\n                  \"Identifier\",\n                  \"StringLiteral\",\n                  \"NumericLiteral\",\n                  \"BigIntLiteral\",\n                  \"DecimalLiteral\",\n                  \"PrivateName\",\n                ],\n          },\n        );\n        return validator;\n      })(),\n    },\n    value: {\n      // Value may be PatternLike if this is an AssignmentProperty\n      // https://github.com/babel/babylon/issues/434\n      validate: assertNodeType(\"Expression\", \"PatternLike\"),\n    },\n    shorthand: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"boolean\"),\n              Object.assign(\n                function (node: t.ObjectProperty, key, shorthand) {\n                  if (!shorthand) return;\n\n                  if (node.computed) {\n                    throw new TypeError(\n                      \"Property shorthand of ObjectProperty cannot be true if computed is true\",\n                    );\n                  }\n\n                  if (!is(\"Identifier\", node.key)) {\n                    throw new TypeError(\n                      \"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\",\n                    );\n                  }\n                } as Validator,\n                { type: \"boolean\" },\n              ),\n            )\n          : assertValueType(\"boolean\"),\n      default: false,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n  visitor: [\"key\", \"value\", \"decorators\"],\n  aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const pattern = assertNodeType(\n            \"Identifier\",\n            \"Pattern\",\n            \"TSAsExpression\",\n            \"TSSatisfiesExpression\",\n            \"TSNonNullExpression\",\n            \"TSTypeAssertion\",\n          );\n          const expression = assertNodeType(\"Expression\");\n\n          return function (parent, key, node) {\n            const validator = is(\"ObjectPattern\", parent)\n              ? pattern\n              : expression;\n            validator(node, \"value\", node.value);\n          };\n        })(),\n});\n\ndefineType(\"RestElement\", {\n  visitor: [\"argument\", \"typeAnnotation\"],\n  builder: [\"argument\"],\n  aliases: [\"LVal\", \"PatternLike\"],\n  deprecatedAlias: \"RestProperty\",\n  fields: {\n    ...patternLikeCommon(),\n    argument: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\")\n          : assertNodeType(\n              \"Identifier\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"MemberExpression\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? function (parent: t.ArrayPattern | t.ObjectPattern, key) {\n          const match = /(\\w+)\\[(\\d+)\\]/.exec(key);\n          if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n\n          const [, listKey, index] = match as unknown as [\n            string,\n            keyof typeof parent,\n            string,\n          ];\n          if ((parent[listKey] as t.Node[]).length > +index + 1) {\n            throw new TypeError(\n              `RestElement must be last element of ${listKey}`,\n            );\n          }\n        }\n      : undefined,\n});\n\ndefineType(\"ReturnStatement\", {\n  visitor: [\"argument\"],\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"SequenceExpression\", {\n  visitor: [\"expressions\"],\n  fields: {\n    expressions: validateArrayOfType(\"Expression\"),\n  },\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"ParenthesizedExpression\", {\n  visitor: [\"expression\"],\n  aliases: [\"Expression\", \"ExpressionWrapper\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"SwitchCase\", {\n  visitor: [\"test\", \"consequent\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    consequent: validateArrayOfType(\"Statement\"),\n  },\n});\n\ndefineType(\"SwitchStatement\", {\n  visitor: [\"discriminant\", \"cases\"],\n  aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n  fields: {\n    discriminant: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    cases: validateArrayOfType(\"SwitchCase\"),\n  },\n});\n\ndefineType(\"ThisExpression\", {\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"ThrowStatement\", {\n  visitor: [\"argument\"],\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"TryStatement\", {\n  visitor: [\"block\", \"handler\", \"finalizer\"],\n  aliases: [\"Statement\"],\n  fields: {\n    block: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"BlockStatement\"),\n              Object.assign(\n                function (node: t.TryStatement) {\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (!node.handler && !node.finalizer) {\n                    throw new TypeError(\n                      \"TryStatement expects either a handler or finalizer, or both\",\n                    );\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"BlockStatement\"] },\n              ),\n            )\n          : assertNodeType(\"BlockStatement\"),\n    },\n    handler: {\n      optional: true,\n      validate: assertNodeType(\"CatchClause\"),\n    },\n    finalizer: {\n      optional: true,\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"UnaryExpression\", {\n  builder: [\"operator\", \"argument\", \"prefix\"],\n  fields: {\n    prefix: {\n      default: true,\n    },\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    operator: {\n      validate: assertOneOf(...UNARY_OPERATORS),\n    },\n  },\n  visitor: [\"argument\"],\n  aliases: [\"UnaryLike\", \"Expression\"],\n});\n\ndefineType(\"UpdateExpression\", {\n  builder: [\"operator\", \"argument\", \"prefix\"],\n  fields: {\n    prefix: {\n      default: false,\n    },\n    argument: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"Expression\")\n          : assertNodeType(\"Identifier\", \"MemberExpression\"),\n    },\n    operator: {\n      validate: assertOneOf(...UPDATE_OPERATORS),\n    },\n  },\n  visitor: [\"argument\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"VariableDeclaration\", {\n  builder: [\"kind\", \"declarations\"],\n  visitor: [\"declarations\"],\n  aliases: [\"Statement\", \"Declaration\"],\n  fields: {\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    kind: {\n      validate: assertOneOf(\n        \"var\",\n        \"let\",\n        \"const\",\n        // https://github.com/tc39/proposal-explicit-resource-management\n        \"using\",\n        // https://github.com/tc39/proposal-async-explicit-resource-management\n        \"await using\",\n      ),\n    },\n    declarations: validateArrayOfType(\"VariableDeclarator\"),\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? (() => {\n          const withoutInit = assertNodeType(\"Identifier\");\n\n          return function (parent, key, node: t.VariableDeclaration) {\n            if (is(\"ForXStatement\", parent, { left: node })) {\n              if (node.declarations.length !== 1) {\n                throw new TypeError(\n                  `Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`,\n                );\n              }\n            } else {\n              node.declarations.forEach(decl => {\n                if (!decl.init) withoutInit(decl, \"id\", decl.id);\n              });\n            }\n          };\n        })()\n      : undefined,\n});\n\ndefineType(\"VariableDeclarator\", {\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\")\n          : assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n    },\n    definite: {\n      optional: true,\n      validate: assertValueType(\"boolean\"),\n    },\n    init: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"WhileStatement\", {\n  visitor: [\"test\", \"body\"],\n  aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"WithStatement\", {\n  visitor: [\"object\", \"body\"],\n  aliases: [\"Statement\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\n// --- ES2015 ---\ndefineType(\"AssignmentPattern\", {\n  visitor: [\"left\", \"right\", \"decorators\" /* for legacy param decorators */],\n  builder: [\"left\", \"right\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    left: {\n      validate: assertNodeType(\n        \"Identifier\",\n        \"ObjectPattern\",\n        \"ArrayPattern\",\n        \"MemberExpression\",\n        \"TSAsExpression\",\n        \"TSSatisfiesExpression\",\n        \"TSTypeAssertion\",\n        \"TSNonNullExpression\",\n      ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    // For TypeScript\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ArrayPattern\", {\n  visitor: [\"elements\", \"typeAnnotation\"],\n  builder: [\"elements\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    elements: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(assertNodeOrValueType(\"null\", \"PatternLike\", \"LVal\")),\n      ),\n    },\n  },\n});\n\ndefineType(\"ArrowFunctionExpression\", {\n  builder: [\"params\", \"body\", \"async\"],\n  visitor: [\"typeParameters\", \"params\", \"returnType\", \"body\"],\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Expression\",\n    \"Pureish\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    expression: {\n      // https://github.com/babel/babylon/issues/505\n      validate: assertValueType(\"boolean\"),\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\", \"Expression\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassBody\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\n      \"ClassMethod\",\n      \"ClassPrivateMethod\",\n      \"ClassProperty\",\n      \"ClassPrivateProperty\",\n      \"ClassAccessorProperty\",\n      \"TSDeclareMethod\",\n      \"TSIndexSignature\",\n      \"StaticBlock\",\n    ),\n  },\n});\n\ndefineType(\"ClassExpression\", {\n  builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n  visitor: [\n    \"decorators\",\n    \"id\",\n    \"typeParameters\",\n    \"superClass\",\n    \"superTypeParameters\",\n    \"mixins\",\n    \"implements\",\n    \"body\",\n  ],\n  aliases: [\"Scopable\", \"Class\", \"Expression\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n    typeParameters: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n          )\n        : assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"ClassBody\"),\n    },\n    superClass: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n    superTypeParameters: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n    implements: {\n      validate: arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n        \"ClassImplements\",\n      ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    mixins: {\n      validate: assertNodeType(\"InterfaceExtends\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassDeclaration\", {\n  inherits: \"ClassExpression\",\n  aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      // The id may be omitted if this is the child of an\n      // ExportDefaultDeclaration.\n      optional: true,\n    },\n    typeParameters: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n          )\n        : assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"ClassBody\"),\n    },\n    superClass: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n    superTypeParameters: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n    implements: {\n      validate: arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n        \"ClassImplements\",\n      ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    mixins: {\n      validate: assertNodeType(\"InterfaceExtends\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    abstract: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n  },\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const identifier = assertNodeType(\"Identifier\");\n          return function (parent, key, node) {\n            if (!is(\"ExportDefaultDeclaration\", parent)) {\n              identifier(node, \"id\", node.id);\n            }\n          };\n        })(),\n});\n\nexport const importAttributes = {\n  attributes: {\n    optional: true,\n    validate: arrayOfType(\"ImportAttribute\"),\n  },\n  assertions: {\n    deprecated: true,\n    optional: true,\n    validate: arrayOfType(\"ImportAttribute\"),\n  },\n};\n\ndefineType(\"ExportAllDeclaration\", {\n  builder: [\"source\"],\n  visitor: [\"source\", \"attributes\", \"assertions\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"ExportDefaultDeclaration\", {\n  visitor: [\"declaration\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    declaration: validateType(\n      \"TSDeclareFunction\",\n      \"FunctionDeclaration\",\n      \"ClassDeclaration\",\n      \"Expression\",\n    ),\n    exportKind: validateOptional(assertOneOf(\"value\")),\n  },\n});\n\ndefineType(\"ExportNamedDeclaration\", {\n  builder: [\"declaration\", \"specifiers\", \"source\"],\n  visitor: process.env\n    ? [\"declaration\", \"specifiers\", \"source\", \"attributes\"]\n    : [\"declaration\", \"specifiers\", \"source\", \"attributes\", \"assertions\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    declaration: {\n      optional: true,\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"Declaration\"),\n              Object.assign(\n                function (node: t.ExportNamedDeclaration, key, val) {\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (val && node.specifiers.length) {\n                    throw new TypeError(\n                      \"Only declaration or specifiers is allowed on ExportNamedDeclaration\",\n                    );\n                  }\n\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (val && node.source) {\n                    throw new TypeError(\n                      \"Cannot export a declaration from a source\",\n                    );\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"Declaration\"] },\n              ),\n            )\n          : assertNodeType(\"Declaration\"),\n    },\n    ...importAttributes,\n    specifiers: {\n      default: [],\n      validate: arrayOf(\n        (function () {\n          const sourced = assertNodeType(\n            \"ExportSpecifier\",\n            \"ExportDefaultSpecifier\",\n            \"ExportNamespaceSpecifier\",\n          );\n          const sourceless = assertNodeType(\"ExportSpecifier\");\n\n          if (\n            !process.env.BABEL_8_BREAKING &&\n            !process.env.BABEL_TYPES_8_BREAKING\n          )\n            return sourced;\n\n          return Object.assign(\n            function (node: t.ExportNamedDeclaration, key, val) {\n              const validator = node.source ? sourced : sourceless;\n              validator(node, key, val);\n            } as Validator,\n            {\n              oneOfNodeTypes: [\n                \"ExportSpecifier\",\n                \"ExportDefaultSpecifier\",\n                \"ExportNamespaceSpecifier\",\n              ],\n            },\n          );\n        })(),\n      ),\n    },\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n      optional: true,\n    },\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n  },\n});\n\ndefineType(\"ExportSpecifier\", {\n  visitor: [\"local\", \"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    exported: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    exportKind: {\n      // And TypeScript's \"export { type foo } from\"\n      validate: assertOneOf(\"type\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ForOfStatement\", {\n  visitor: [\"left\", \"right\", \"body\"],\n  builder: [\"left\", \"right\", \"body\", \"await\"],\n  aliases: [\n    \"Scopable\",\n    \"Statement\",\n    \"For\",\n    \"BlockParent\",\n    \"Loop\",\n    \"ForXStatement\",\n  ],\n  fields: {\n    left: {\n      validate: (function () {\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          !process.env.BABEL_TYPES_8_BREAKING\n        ) {\n          return assertNodeType(\"VariableDeclaration\", \"LVal\");\n        }\n\n        const declaration = assertNodeType(\"VariableDeclaration\");\n        const lval = assertNodeType(\n          \"Identifier\",\n          \"MemberExpression\",\n          \"ArrayPattern\",\n          \"ObjectPattern\",\n          \"TSAsExpression\",\n          \"TSSatisfiesExpression\",\n          \"TSTypeAssertion\",\n          \"TSNonNullExpression\",\n        );\n\n        return Object.assign(\n          function (node, key, val) {\n            if (is(\"VariableDeclaration\", val)) {\n              declaration(node, key, val);\n            } else {\n              lval(node, key, val);\n            }\n          } as Validator,\n          {\n            oneOfNodeTypes: [\n              \"VariableDeclaration\",\n              \"Identifier\",\n              \"MemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ],\n          },\n        );\n      })(),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n    await: {\n      default: false,\n    },\n  },\n});\n\ndefineType(\"ImportDeclaration\", {\n  builder: [\"specifiers\", \"source\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"specifiers\", \"source\", \"attributes\"]\n    : [\"specifiers\", \"source\", \"attributes\", \"assertions\"],\n  aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n  fields: {\n    ...importAttributes,\n    module: {\n      optional: true,\n      validate: assertValueType(\"boolean\"),\n    },\n    phase: {\n      default: null,\n      validate: assertOneOf(\"source\", \"defer\"),\n    },\n    specifiers: validateArrayOfType(\n      \"ImportSpecifier\",\n      \"ImportDefaultSpecifier\",\n      \"ImportNamespaceSpecifier\",\n    ),\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n    importKind: {\n      // Handle TypeScript/Flowtype's extension \"import type foo from\"\n      // TypeScript doesn't support typeof\n      validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ImportDefaultSpecifier\", {\n  visitor: [\"local\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"ImportNamespaceSpecifier\", {\n  visitor: [\"local\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"ImportSpecifier\", {\n  visitor: [\"imported\", \"local\"],\n  builder: [\"local\", \"imported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    imported: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    importKind: {\n      // Handle Flowtype's extension \"import {typeof foo} from\"\n      // And TypeScript's \"import { type foo } from\"\n      validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ImportExpression\", {\n  visitor: [\"source\", \"options\"],\n  aliases: [\"Expression\"],\n  fields: {\n    phase: {\n      default: null,\n      validate: assertOneOf(\"source\", \"defer\"),\n    },\n    source: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    options: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"MetaProperty\", {\n  visitor: [\"meta\", \"property\"],\n  aliases: [\"Expression\"],\n  fields: {\n    meta: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"Identifier\"),\n              Object.assign(\n                function (node: t.MetaProperty, key, val) {\n                  let property;\n                  switch (val.name) {\n                    case \"function\":\n                      property = \"sent\";\n                      break;\n                    case \"new\":\n                      property = \"target\";\n                      break;\n                    case \"import\":\n                      property = \"meta\";\n                      break;\n                  }\n                  if (!is(\"Identifier\", node.property, { name: property })) {\n                    throw new TypeError(\"Unrecognised MetaProperty\");\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"Identifier\"] },\n              ),\n            )\n          : assertNodeType(\"Identifier\"),\n    },\n    property: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\nexport const classMethodOrPropertyCommon = () => ({\n  abstract: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  accessibility: {\n    validate: assertOneOf(\"public\", \"private\", \"protected\"),\n    optional: true,\n  },\n  static: {\n    default: false,\n  },\n  override: {\n    default: false,\n  },\n  computed: {\n    default: false,\n  },\n  optional: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  key: {\n    validate: chain(\n      (function () {\n        const normal = assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const computed = assertNodeType(\"Expression\");\n\n        return function (node: any, key: string, val: any) {\n          const validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n      })(),\n      assertNodeType(\n        \"Identifier\",\n        \"StringLiteral\",\n        \"NumericLiteral\",\n        \"BigIntLiteral\",\n        \"Expression\",\n      ),\n    ),\n  },\n});\n\nexport const classMethodOrDeclareMethodCommon = () => ({\n  ...functionCommon(),\n  ...classMethodOrPropertyCommon(),\n  params: validateArrayOfType(\n    \"Identifier\",\n    \"Pattern\",\n    \"RestElement\",\n    \"TSParameterProperty\",\n  ),\n  kind: {\n    validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n    default: \"method\",\n  },\n  access: {\n    validate: chain(\n      assertValueType(\"string\"),\n      assertOneOf(\"public\", \"private\", \"protected\"),\n    ),\n    optional: true,\n  },\n  decorators: {\n    validate: arrayOfType(\"Decorator\"),\n    optional: true,\n  },\n});\n\ndefineType(\"ClassMethod\", {\n  aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n  builder: [\n    \"kind\",\n    \"key\",\n    \"params\",\n    \"body\",\n    \"computed\",\n    \"static\",\n    \"generator\",\n    \"async\",\n  ],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...functionTypeAnnotationCommon(),\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"ObjectPattern\", {\n  visitor: [\n    \"properties\",\n    \"typeAnnotation\",\n    \"decorators\" /* for legacy param decorators */,\n  ],\n  builder: [\"properties\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    properties: validateArrayOfType(\"RestElement\", \"ObjectProperty\"),\n  },\n});\n\ndefineType(\"SpreadElement\", {\n  visitor: [\"argument\"],\n  aliases: [\"UnaryLike\"],\n  deprecatedAlias: \"SpreadProperty\",\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\n  \"Super\",\n  process.env.BABEL_8_BREAKING\n    ? undefined\n    : {\n        aliases: [\"Expression\"],\n      },\n);\n\ndefineType(\"TaggedTemplateExpression\", {\n  visitor: [\"tag\", \"typeParameters\", \"quasi\"],\n  builder: [\"tag\", \"quasi\"],\n  aliases: [\"Expression\"],\n  fields: {\n    tag: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    quasi: {\n      validate: assertNodeType(\"TemplateLiteral\"),\n    },\n    typeParameters: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TemplateElement\", {\n  builder: [\"value\", \"tail\"],\n  fields: {\n    value: {\n      validate: chain(\n        assertShape({\n          raw: {\n            validate: assertValueType(\"string\"),\n          },\n          cooked: {\n            validate: assertValueType(\"string\"),\n            optional: true,\n          },\n        }),\n        function templateElementCookedValidator(node: t.TemplateElement) {\n          const raw = node.value.raw;\n\n          let unterminatedCalled = false;\n\n          const error = () => {\n            // unreachable\n            throw new Error(\"Internal @babel/types error.\");\n          };\n          const { str, firstInvalidLoc } = readStringContents(\n            \"template\",\n            raw,\n            0,\n            0,\n            0,\n            {\n              unterminated() {\n                unterminatedCalled = true;\n              },\n              strictNumericEscape: error,\n              invalidEscapeSequence: error,\n              numericSeparatorInEscapeSequence: error,\n              unexpectedNumericSeparator: error,\n              invalidDigit: error,\n              invalidCodePoint: error,\n            },\n          );\n          if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n\n          node.value.cooked = firstInvalidLoc ? null : str;\n        },\n      ),\n    },\n    tail: {\n      default: false,\n    },\n  },\n});\n\ndefineType(\"TemplateLiteral\", {\n  visitor: [\"quasis\", \"expressions\"],\n  aliases: [\"Expression\", \"Literal\"],\n  fields: {\n    quasis: validateArrayOfType(\"TemplateElement\"),\n    expressions: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(\n          assertNodeType(\n            \"Expression\",\n            // For TypeScript template literal types\n            \"TSType\",\n          ),\n        ),\n        function (node: t.TemplateLiteral, key, val) {\n          if (node.quasis.length !== val.length + 1) {\n            throw new TypeError(\n              `Number of ${\n                node.type\n              } quasis should be exactly one more than the number of expressions.\\nExpected ${\n                val.length + 1\n              } quasis but got ${node.quasis.length}`,\n            );\n          }\n        } as Validator,\n      ),\n    },\n  },\n});\n\ndefineType(\"YieldExpression\", {\n  builder: [\"argument\", \"delegate\"],\n  visitor: [\"argument\"],\n  aliases: [\"Expression\", \"Terminatorless\"],\n  fields: {\n    delegate: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"boolean\"),\n              Object.assign(\n                function (node: t.YieldExpression, key, val) {\n                  if (val && !node.argument) {\n                    throw new TypeError(\n                      \"Property delegate of YieldExpression cannot be true if there is no argument\",\n                    );\n                  }\n                } as Validator,\n                { type: \"boolean\" },\n              ),\n            )\n          : assertValueType(\"boolean\"),\n      default: false,\n    },\n    argument: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\n// --- ES2017 ---\ndefineType(\"AwaitExpression\", {\n  builder: [\"argument\"],\n  visitor: [\"argument\"],\n  aliases: [\"Expression\", \"Terminatorless\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\n// --- ES2019 ---\ndefineType(\"Import\", {\n  aliases: [\"Expression\"],\n});\n\n// --- ES2020 ---\ndefineType(\"BigIntLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"ExportNamespaceSpecifier\", {\n  visitor: [\"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    exported: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"OptionalMemberExpression\", {\n  builder: [\"object\", \"property\", \"computed\", \"optional\"],\n  visitor: [\"object\", \"property\"],\n  aliases: [\"Expression\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    property: {\n      validate: (function () {\n        const normal = assertNodeType(\"Identifier\");\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.OptionalMemberExpression, key, val) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          } as Validator,\n          // todo(ts): can be discriminated union by `computed` property\n          { oneOfNodeTypes: [\"Expression\", \"Identifier\"] },\n        );\n        return validator;\n      })(),\n    },\n    computed: {\n      default: false,\n    },\n    optional: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"boolean\")\n          : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n    },\n  },\n});\n\ndefineType(\"OptionalCallExpression\", {\n  visitor: [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n  builder: [\"callee\", \"arguments\", \"optional\"],\n  aliases: [\"Expression\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    arguments: validateArrayOfType(\n      \"Expression\",\n      \"SpreadElement\",\n      \"ArgumentPlaceholder\",\n    ),\n    optional: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"boolean\")\n          : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n    },\n    typeArguments: {\n      validate: assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    typeParameters: {\n      validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n      optional: true,\n    },\n  },\n});\n\n// --- ES2022 ---\ndefineType(\"ClassProperty\", {\n  visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\n    \"key\",\n    \"value\",\n    \"typeAnnotation\",\n    \"decorators\",\n    \"computed\",\n    \"static\",\n  ],\n  aliases: [\"Property\"],\n  fields: {\n    ...classMethodOrPropertyCommon(),\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassAccessorProperty\", {\n  visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\n    \"key\",\n    \"value\",\n    \"typeAnnotation\",\n    \"decorators\",\n    \"computed\",\n    \"static\",\n  ],\n  aliases: [\"Property\", \"Accessor\"],\n  fields: {\n    ...classMethodOrPropertyCommon(),\n    key: {\n      validate: chain(\n        (function () {\n          const normal = assertNodeType(\n            \"Identifier\",\n            \"StringLiteral\",\n            \"NumericLiteral\",\n            \"BigIntLiteral\",\n            \"PrivateName\",\n          );\n          const computed = assertNodeType(\"Expression\");\n\n          return function (node: any, key: string, val: any) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          };\n        })(),\n        assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n          \"Expression\",\n          \"PrivateName\",\n        ),\n      ),\n    },\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassPrivateProperty\", {\n  visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\"key\", \"value\", \"decorators\", \"static\"],\n  aliases: [\"Property\", \"Private\"],\n  fields: {\n    key: {\n      validate: assertNodeType(\"PrivateName\"),\n    },\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    static: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassPrivateMethod\", {\n  builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  aliases: [\n    \"Function\",\n    \"Scopable\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Method\",\n    \"Private\",\n  ],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...functionTypeAnnotationCommon(),\n    kind: {\n      validate: assertOneOf(\"get\", \"set\", \"method\"),\n      default: \"method\",\n    },\n    key: {\n      validate: assertNodeType(\"PrivateName\"),\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"PrivateName\", {\n  visitor: [\"id\"],\n  aliases: [\"Private\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"StaticBlock\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"],\n});\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_is","require","_isValidIdentifier","_helperValidatorIdentifier","_helperStringParser","_index","_utils","defineType","defineAliasedType","fields","elements","validate","arrayOf","assertNodeOrValueType","default","process","env","BABEL_TYPES_8_BREAKING","undefined","visitor","aliases","operator","assertValueType","Object","assign","identifier","assertOneOf","ASSIGNMENT_OPERATORS","pattern","node","key","val","validator","is","left","type","assertNodeType","right","builder","BINARY_OPERATORS","expression","inOp","oneOfNodeTypes","value","directives","arrayOfType","body","validateArrayOfType","label","optional","callee","arguments","typeArguments","typeParameters","param","test","consequent","alternate","program","comments","each","assertEach","tokens","init","update","functionCommon","params","generator","async","exports","functionTypeAnnotationCommon","returnType","functionDeclarationCommon","declare","id","predicate","parent","inherits","patternLikeCommon","typeAnnotation","decorators","name","chain","isValidIdentifier","TypeError","match","exec","parentKey","nonComp","computed","imported","meta","isKeyword","isReservedWord","deprecatedAlias","Number","isFinite","error","Error","flags","invalid","LOGICAL_OPERATORS","object","property","normal","sourceType","interpreter","properties","kind","shorthand","argument","listKey","index","length","expressions","discriminant","cases","block","handler","finalizer","prefix","UNARY_OPERATORS","UPDATE_OPERATORS","declarations","withoutInit","forEach","decl","definite","superClass","implements","mixins","abstract","importAttributes","attributes","assertions","deprecated","source","exportKind","validateOptional","declaration","validateType","specifiers","sourced","sourceless","local","exported","lval","await","module","phase","importKind","options","classMethodOrPropertyCommon","accessibility","static","override","classMethodOrDeclareMethodCommon","access","tag","quasi","assertShape","raw","cooked","templateElementCookedValidator","unterminatedCalled","str","firstInvalidLoc","readStringContents","unterminated","strictNumericEscape","invalidEscapeSequence","numericSeparatorInEscapeSequence","unexpectedNumericSeparator","invalidDigit","invalidCodePoint","tail","quasis","delegate","assertOptionalChainStart","readonly","variance"],"sources":["../../src/definitions/core.ts"],"sourcesContent":["import is from \"../validators/is.ts\";\nimport isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isKeyword, isReservedWord } from \"@babel/helper-validator-identifier\";\nimport type * as t from \"../index.ts\";\nimport { readStringContents } from \"@babel/helper-string-parser\";\n\nimport {\n  BINARY_OPERATORS,\n  LOGICAL_OPERATORS,\n  ASSIGNMENT_OPERATORS,\n  UNARY_OPERATORS,\n  UPDATE_OPERATORS,\n} from \"../constants/index.ts\";\n\nimport {\n  defineAliasedType,\n  assertShape,\n  assertOptionalChainStart,\n  assertValueType,\n  assertNodeType,\n  assertNodeOrValueType,\n  assertEach,\n  chain,\n  assertOneOf,\n  validateOptional,\n  type Validator,\n  arrayOf,\n  arrayOfType,\n  validateArrayOfType,\n  validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Standardized\");\n\ndefineType(\"ArrayExpression\", {\n  fields: {\n    elements: {\n      validate: arrayOf(\n        assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\"),\n      ),\n      default:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? []\n          : undefined,\n    },\n  },\n  visitor: [\"elements\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"AssignmentExpression\", {\n  fields: {\n    operator: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"string\")\n          : Object.assign(\n              (function () {\n                const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n                const pattern = assertOneOf(\"=\");\n\n                return function (node: t.AssignmentExpression, key, val) {\n                  const validator = is(\"Pattern\", node.left)\n                    ? pattern\n                    : identifier;\n                  validator(node, key, val);\n                } as Validator;\n              })(),\n              { type: \"string\" },\n            ),\n    },\n    left: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\", \"OptionalMemberExpression\")\n          : assertNodeType(\n              \"Identifier\",\n              \"MemberExpression\",\n              \"OptionalMemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  builder: [\"operator\", \"left\", \"right\"],\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"BinaryExpression\", {\n  builder: [\"operator\", \"left\", \"right\"],\n  fields: {\n    operator: {\n      validate: assertOneOf(...BINARY_OPERATORS),\n    },\n    left: {\n      validate: (function () {\n        const expression = assertNodeType(\"Expression\");\n        const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.BinaryExpression, key, val) {\n            const validator = node.operator === \"in\" ? inOp : expression;\n            validator(node, key, val);\n          } as Validator,\n          // todo(ts): can be discriminated union by `operator` property\n          { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] },\n        );\n        return validator;\n      })(),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Binary\", \"Expression\"],\n});\n\ndefineType(\"InterpreterDirective\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"Directive\", {\n  visitor: [\"value\"],\n  fields: {\n    value: {\n      validate: assertNodeType(\"DirectiveLiteral\"),\n    },\n  },\n});\n\ndefineType(\"DirectiveLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"BlockStatement\", {\n  builder: [\"body\", \"directives\"],\n  visitor: [\"directives\", \"body\"],\n  fields: {\n    directives: {\n      validate: arrayOfType(\"Directive\"),\n      default: [],\n    },\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"],\n});\n\ndefineType(\"BreakStatement\", {\n  visitor: [\"label\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n  },\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"CallExpression\", {\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"callee\", \"arguments\", \"typeArguments\"]\n    : [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n  builder: [\"callee\", \"arguments\"],\n  aliases: [\"Expression\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\", \"Super\", \"V8IntrinsicIdentifier\"),\n    },\n    arguments: validateArrayOfType(\n      \"Expression\",\n      \"SpreadElement\",\n      \"ArgumentPlaceholder\",\n    ),\n    typeArguments: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterInstantiation\",\n            \"TSTypeParameterInstantiation\",\n          )\n        : assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n          typeParameters: {\n            validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n            optional: true,\n          },\n        }),\n    ...(process.env.BABEL_TYPES_8_BREAKING\n      ? {}\n      : {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"CatchClause\", {\n  visitor: [\"param\", \"body\"],\n  fields: {\n    param: {\n      validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n  aliases: [\"Scopable\", \"BlockParent\"],\n});\n\ndefineType(\"ConditionalExpression\", {\n  visitor: [\"test\", \"consequent\", \"alternate\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    consequent: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    alternate: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Expression\", \"Conditional\"],\n});\n\ndefineType(\"ContinueStatement\", {\n  visitor: [\"label\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n  },\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"DebuggerStatement\", {\n  aliases: [\"Statement\"],\n});\n\ndefineType(\"DoWhileStatement\", {\n  builder: [\"test\", \"body\"],\n  visitor: [\"body\", \"test\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n  aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n});\n\ndefineType(\"EmptyStatement\", {\n  aliases: [\"Statement\"],\n});\n\ndefineType(\"ExpressionStatement\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Statement\", \"ExpressionWrapper\"],\n});\n\ndefineType(\"File\", {\n  builder: [\"program\", \"comments\", \"tokens\"],\n  visitor: [\"program\"],\n  fields: {\n    program: {\n      validate: assertNodeType(\"Program\"),\n    },\n    comments: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? Object.assign(() => {}, {\n              each: { oneOfNodeTypes: [\"CommentBlock\", \"CommentLine\"] },\n            })\n          : assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n      optional: true,\n    },\n    tokens: {\n      // todo(ts): add Token type\n      validate: assertEach(Object.assign(() => {}, { type: \"any\" })),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ForInStatement\", {\n  visitor: [\"left\", \"right\", \"body\"],\n  aliases: [\n    \"Scopable\",\n    \"Statement\",\n    \"For\",\n    \"BlockParent\",\n    \"Loop\",\n    \"ForXStatement\",\n  ],\n  fields: {\n    left: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"VariableDeclaration\", \"LVal\")\n          : assertNodeType(\n              \"VariableDeclaration\",\n              \"Identifier\",\n              \"MemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"ForStatement\", {\n  visitor: [\"init\", \"test\", \"update\", \"body\"],\n  aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n  fields: {\n    init: {\n      validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n      optional: true,\n    },\n    test: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    update: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\nexport const functionCommon = () => ({\n  params: validateArrayOfType(\"Identifier\", \"Pattern\", \"RestElement\"),\n  generator: {\n    default: false,\n  },\n  async: {\n    default: false,\n  },\n});\n\nexport const functionTypeAnnotationCommon = () => ({\n  returnType: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n      : assertNodeType(\n          \"TypeAnnotation\",\n          \"TSTypeAnnotation\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n  typeParameters: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\")\n      : assertNodeType(\n          \"TypeParameterDeclaration\",\n          \"TSTypeParameterDeclaration\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n});\n\nexport const functionDeclarationCommon = () => ({\n  ...functionCommon(),\n  declare: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  id: {\n    validate: assertNodeType(\"Identifier\"),\n    optional: true, // May be null for `export default function`\n  },\n});\n\ndefineType(\"FunctionDeclaration\", {\n  builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n  visitor: [\n    \"id\",\n    \"typeParameters\",\n    \"params\",\n    \"predicate\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...functionDeclarationCommon(),\n    ...functionTypeAnnotationCommon(),\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Statement\",\n    \"Pureish\",\n    \"Declaration\",\n  ],\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const identifier = assertNodeType(\"Identifier\");\n\n          return function (parent, key, node) {\n            if (!is(\"ExportDefaultDeclaration\", parent)) {\n              identifier(node, \"id\", node.id);\n            }\n          };\n        })(),\n});\n\ndefineType(\"FunctionExpression\", {\n  inherits: \"FunctionDeclaration\",\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Expression\",\n    \"Pureish\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n});\n\nexport const patternLikeCommon = () => ({\n  typeAnnotation: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n      : assertNodeType(\n          \"TypeAnnotation\",\n          \"TSTypeAnnotation\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n  optional: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  decorators: {\n    validate: arrayOfType(\"Decorator\"),\n    optional: true,\n  },\n});\n\ndefineType(\"Identifier\", {\n  builder: [\"name\"],\n  visitor: [\"typeAnnotation\", \"decorators\" /* for legacy param decorators */],\n  aliases: [\"Expression\", \"PatternLike\", \"LVal\", \"TSEntityName\"],\n  fields: {\n    ...patternLikeCommon(),\n    name: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"string\"),\n              Object.assign(\n                function (node, key, val) {\n                  if (!isValidIdentifier(val, false)) {\n                    throw new TypeError(\n                      `\"${val}\" is not a valid identifier name`,\n                    );\n                  }\n                } as Validator,\n                { type: \"string\" },\n              ),\n            )\n          : assertValueType(\"string\"),\n    },\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? function (parent, key, node) {\n          const match = /\\.(\\w+)$/.exec(key);\n          if (!match) return;\n\n          const [, parentKey] = match;\n          const nonComp = { computed: false };\n\n          // We can't check if `parent.property === node`, because nodes are validated\n          // before replacing them in the AST.\n          if (parentKey === \"property\") {\n            if (is(\"MemberExpression\", parent, nonComp)) return;\n            if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n          } else if (parentKey === \"key\") {\n            if (is(\"Property\", parent, nonComp)) return;\n            if (is(\"Method\", parent, nonComp)) return;\n          } else if (parentKey === \"exported\") {\n            if (is(\"ExportSpecifier\", parent)) return;\n          } else if (parentKey === \"imported\") {\n            if (is(\"ImportSpecifier\", parent, { imported: node })) return;\n          } else if (parentKey === \"meta\") {\n            if (is(\"MetaProperty\", parent, { meta: node })) return;\n          }\n\n          if (\n            // Ideally we should call isStrictReservedWord if this node is a descendant\n            // of a block in strict mode. Also, we should pass the inModule option so\n            // we can disable \"await\" in module.\n            (isKeyword(node.name) || isReservedWord(node.name, false)) &&\n            // Even if \"this\" is a keyword, we are using the Identifier\n            // node to represent it.\n            node.name !== \"this\"\n          ) {\n            throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n          }\n        }\n      : undefined,\n});\n\ndefineType(\"IfStatement\", {\n  visitor: [\"test\", \"consequent\", \"alternate\"],\n  aliases: [\"Statement\", \"Conditional\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    consequent: {\n      validate: assertNodeType(\"Statement\"),\n    },\n    alternate: {\n      optional: true,\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"LabeledStatement\", {\n  visitor: [\"label\", \"body\"],\n  aliases: [\"Statement\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"StringLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NumericLiteral\", {\n  builder: [\"value\"],\n  deprecatedAlias: \"NumberLiteral\",\n  fields: {\n    value: {\n      validate: chain(\n        assertValueType(\"number\"),\n        Object.assign(\n          function (node, key, val) {\n            if (1 / val < 0 || !Number.isFinite(val)) {\n              const error = new Error(\n                \"NumericLiterals must be non-negative finite numbers. \" +\n                  `You can use t.valueToNode(${val}) instead.`,\n              );\n              if (process.env.BABEL_8_BREAKING) {\n                // TODO(@nicolo-ribaudo) Fix regenerator to not pass negative\n                // numbers here.\n                if (!IS_STANDALONE) {\n                  if (!new Error().stack.includes(\"regenerator\")) {\n                    throw error;\n                  }\n                }\n              } else {\n                // TODO: Enable this warning once regenerator is fixed.\n                // https://github.com/facebook/regenerator/pull/680\n                // console.warn(error);\n              }\n            }\n          } satisfies Validator,\n          { type: \"number\" },\n        ),\n      ),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NullLiteral\", {\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"BooleanLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"boolean\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"RegExpLiteral\", {\n  builder: [\"pattern\", \"flags\"],\n  deprecatedAlias: \"RegexLiteral\",\n  aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n  fields: {\n    pattern: {\n      validate: assertValueType(\"string\"),\n    },\n    flags: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"string\"),\n              Object.assign(\n                function (node, key, val) {\n                  const invalid = /[^gimsuy]/.exec(val);\n                  if (invalid) {\n                    throw new TypeError(\n                      `\"${invalid[0]}\" is not a valid RegExp flag`,\n                    );\n                  }\n                } as Validator,\n                { type: \"string\" },\n              ),\n            )\n          : assertValueType(\"string\"),\n      default: \"\",\n    },\n  },\n});\n\ndefineType(\"LogicalExpression\", {\n  builder: [\"operator\", \"left\", \"right\"],\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Binary\", \"Expression\"],\n  fields: {\n    operator: {\n      validate: assertOneOf(...LOGICAL_OPERATORS),\n    },\n    left: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"MemberExpression\", {\n  builder: [\n    \"object\",\n    \"property\",\n    \"computed\",\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? [\"optional\"]\n      : []),\n  ],\n  visitor: [\"object\", \"property\"],\n  aliases: [\"Expression\", \"LVal\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\", \"Super\"),\n    },\n    property: {\n      validate: (function () {\n        const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = function (\n          node: t.MemberExpression,\n          key,\n          val,\n        ) {\n          const validator: Validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n        // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n        validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"PrivateName\"];\n        return validator;\n      })(),\n    },\n    computed: {\n      default: false,\n    },\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }\n      : {}),\n  },\n});\n\ndefineType(\"NewExpression\", { inherits: \"CallExpression\" });\n\ndefineType(\"Program\", {\n  // Note: We explicitly leave 'interpreter' out here because it is\n  // conceptually comment-like, and Babel does not traverse comments either.\n  visitor: [\"directives\", \"body\"],\n  builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n  fields: {\n    sourceType: {\n      validate: assertOneOf(\"script\", \"module\"),\n      default: \"script\",\n    },\n    interpreter: {\n      validate: assertNodeType(\"InterpreterDirective\"),\n      default: null,\n      optional: true,\n    },\n    directives: {\n      validate: arrayOfType(\"Directive\"),\n      default: [],\n    },\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"Block\"],\n});\n\ndefineType(\"ObjectExpression\", {\n  visitor: [\"properties\"],\n  aliases: [\"Expression\"],\n  fields: {\n    properties: validateArrayOfType(\n      \"ObjectMethod\",\n      \"ObjectProperty\",\n      \"SpreadElement\",\n    ),\n  },\n});\n\ndefineType(\"ObjectMethod\", {\n  builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    kind: {\n      validate: assertOneOf(\"method\", \"get\", \"set\"),\n      ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n        ? { default: \"method\" }\n        : {}),\n    },\n    computed: {\n      default: false,\n    },\n    key: {\n      validate: (function () {\n        const normal = assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = function (node: t.ObjectMethod, key, val) {\n          const validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n        // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n        validator.oneOfNodeTypes = [\n          \"Expression\",\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        ];\n        return validator;\n      })(),\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n  aliases: [\n    \"UserWhitespacable\",\n    \"Function\",\n    \"Scopable\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Method\",\n    \"ObjectMember\",\n  ],\n});\n\ndefineType(\"ObjectProperty\", {\n  builder: [\n    \"key\",\n    \"value\",\n    \"computed\",\n    \"shorthand\",\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? [\"decorators\"]\n      : []),\n  ],\n  fields: {\n    computed: {\n      default: false,\n    },\n    key: {\n      validate: (function () {\n        const normal = process.env.BABEL_8_BREAKING\n          ? assertNodeType(\n              \"Identifier\",\n              \"StringLiteral\",\n              \"NumericLiteral\",\n              \"BigIntLiteral\",\n              \"PrivateName\",\n            )\n          : assertNodeType(\n              \"Identifier\",\n              \"StringLiteral\",\n              \"NumericLiteral\",\n              \"BigIntLiteral\",\n              // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n              \"DecimalLiteral\",\n              \"PrivateName\",\n            );\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.ObjectProperty, key, val) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          } as Validator,\n          {\n            // todo(ts): can be discriminated union by `computed` property\n            oneOfNodeTypes: process.env.BABEL_8_BREAKING\n              ? [\n                  \"Expression\",\n                  \"Identifier\",\n                  \"StringLiteral\",\n                  \"NumericLiteral\",\n                  \"BigIntLiteral\",\n                  \"PrivateName\",\n                ]\n              : [\n                  \"Expression\",\n                  \"Identifier\",\n                  \"StringLiteral\",\n                  \"NumericLiteral\",\n                  \"BigIntLiteral\",\n                  \"DecimalLiteral\",\n                  \"PrivateName\",\n                ],\n          },\n        );\n        return validator;\n      })(),\n    },\n    value: {\n      // Value may be PatternLike if this is an AssignmentProperty\n      // https://github.com/babel/babylon/issues/434\n      validate: assertNodeType(\"Expression\", \"PatternLike\"),\n    },\n    shorthand: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"boolean\"),\n              Object.assign(\n                function (node: t.ObjectProperty, key, shorthand) {\n                  if (!shorthand) return;\n\n                  if (node.computed) {\n                    throw new TypeError(\n                      \"Property shorthand of ObjectProperty cannot be true if computed is true\",\n                    );\n                  }\n\n                  if (!is(\"Identifier\", node.key)) {\n                    throw new TypeError(\n                      \"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\",\n                    );\n                  }\n                } as Validator,\n                { type: \"boolean\" },\n              ),\n            )\n          : assertValueType(\"boolean\"),\n      default: false,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n  visitor: [\"key\", \"value\", \"decorators\"],\n  aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const pattern = assertNodeType(\n            \"Identifier\",\n            \"Pattern\",\n            \"TSAsExpression\",\n            \"TSSatisfiesExpression\",\n            \"TSNonNullExpression\",\n            \"TSTypeAssertion\",\n          );\n          const expression = assertNodeType(\"Expression\");\n\n          return function (parent, key, node) {\n            const validator = is(\"ObjectPattern\", parent)\n              ? pattern\n              : expression;\n            validator(node, \"value\", node.value);\n          };\n        })(),\n});\n\ndefineType(\"RestElement\", {\n  visitor: [\"argument\", \"typeAnnotation\"],\n  builder: [\"argument\"],\n  aliases: [\"LVal\", \"PatternLike\"],\n  deprecatedAlias: \"RestProperty\",\n  fields: {\n    ...patternLikeCommon(),\n    argument: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\")\n          : assertNodeType(\n              \"Identifier\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"MemberExpression\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? function (parent: t.ArrayPattern | t.ObjectPattern, key) {\n          const match = /(\\w+)\\[(\\d+)\\]/.exec(key);\n          if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n\n          const [, listKey, index] = match as unknown as [\n            string,\n            keyof typeof parent,\n            string,\n          ];\n          if ((parent[listKey] as t.Node[]).length > +index + 1) {\n            throw new TypeError(\n              `RestElement must be last element of ${listKey}`,\n            );\n          }\n        }\n      : undefined,\n});\n\ndefineType(\"ReturnStatement\", {\n  visitor: [\"argument\"],\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"SequenceExpression\", {\n  visitor: [\"expressions\"],\n  fields: {\n    expressions: validateArrayOfType(\"Expression\"),\n  },\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"ParenthesizedExpression\", {\n  visitor: [\"expression\"],\n  aliases: [\"Expression\", \"ExpressionWrapper\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"SwitchCase\", {\n  visitor: [\"test\", \"consequent\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    consequent: validateArrayOfType(\"Statement\"),\n  },\n});\n\ndefineType(\"SwitchStatement\", {\n  visitor: [\"discriminant\", \"cases\"],\n  aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n  fields: {\n    discriminant: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    cases: validateArrayOfType(\"SwitchCase\"),\n  },\n});\n\ndefineType(\"ThisExpression\", {\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"ThrowStatement\", {\n  visitor: [\"argument\"],\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"TryStatement\", {\n  visitor: [\"block\", \"handler\", \"finalizer\"],\n  aliases: [\"Statement\"],\n  fields: {\n    block: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"BlockStatement\"),\n              Object.assign(\n                function (node: t.TryStatement) {\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (!node.handler && !node.finalizer) {\n                    throw new TypeError(\n                      \"TryStatement expects either a handler or finalizer, or both\",\n                    );\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"BlockStatement\"] },\n              ),\n            )\n          : assertNodeType(\"BlockStatement\"),\n    },\n    handler: {\n      optional: true,\n      validate: assertNodeType(\"CatchClause\"),\n    },\n    finalizer: {\n      optional: true,\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"UnaryExpression\", {\n  builder: [\"operator\", \"argument\", \"prefix\"],\n  fields: {\n    prefix: {\n      default: true,\n    },\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    operator: {\n      validate: assertOneOf(...UNARY_OPERATORS),\n    },\n  },\n  visitor: [\"argument\"],\n  aliases: [\"UnaryLike\", \"Expression\"],\n});\n\ndefineType(\"UpdateExpression\", {\n  builder: [\"operator\", \"argument\", \"prefix\"],\n  fields: {\n    prefix: {\n      default: false,\n    },\n    argument: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"Expression\")\n          : assertNodeType(\"Identifier\", \"MemberExpression\"),\n    },\n    operator: {\n      validate: assertOneOf(...UPDATE_OPERATORS),\n    },\n  },\n  visitor: [\"argument\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"VariableDeclaration\", {\n  builder: [\"kind\", \"declarations\"],\n  visitor: [\"declarations\"],\n  aliases: [\"Statement\", \"Declaration\"],\n  fields: {\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    kind: {\n      validate: assertOneOf(\n        \"var\",\n        \"let\",\n        \"const\",\n        // https://github.com/tc39/proposal-explicit-resource-management\n        \"using\",\n        // https://github.com/tc39/proposal-async-explicit-resource-management\n        \"await using\",\n      ),\n    },\n    declarations: validateArrayOfType(\"VariableDeclarator\"),\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? (() => {\n          const withoutInit = assertNodeType(\"Identifier\");\n\n          return function (parent, key, node: t.VariableDeclaration) {\n            if (is(\"ForXStatement\", parent, { left: node })) {\n              if (node.declarations.length !== 1) {\n                throw new TypeError(\n                  `Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`,\n                );\n              }\n            } else {\n              node.declarations.forEach(decl => {\n                if (!decl.init) withoutInit(decl, \"id\", decl.id);\n              });\n            }\n          };\n        })()\n      : undefined,\n});\n\ndefineType(\"VariableDeclarator\", {\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\")\n          : assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n    },\n    definite: {\n      optional: true,\n      validate: assertValueType(\"boolean\"),\n    },\n    init: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"WhileStatement\", {\n  visitor: [\"test\", \"body\"],\n  aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"WithStatement\", {\n  visitor: [\"object\", \"body\"],\n  aliases: [\"Statement\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\n// --- ES2015 ---\ndefineType(\"AssignmentPattern\", {\n  visitor: [\"left\", \"right\", \"decorators\" /* for legacy param decorators */],\n  builder: [\"left\", \"right\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    left: {\n      validate: assertNodeType(\n        \"Identifier\",\n        \"ObjectPattern\",\n        \"ArrayPattern\",\n        \"MemberExpression\",\n        \"TSAsExpression\",\n        \"TSSatisfiesExpression\",\n        \"TSTypeAssertion\",\n        \"TSNonNullExpression\",\n      ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    // For TypeScript\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ArrayPattern\", {\n  visitor: [\"elements\", \"typeAnnotation\"],\n  builder: [\"elements\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    elements: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(assertNodeOrValueType(\"null\", \"PatternLike\", \"LVal\")),\n      ),\n    },\n  },\n});\n\ndefineType(\"ArrowFunctionExpression\", {\n  builder: [\"params\", \"body\", \"async\"],\n  visitor: [\"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Expression\",\n    \"Pureish\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    expression: {\n      // https://github.com/babel/babylon/issues/505\n      validate: assertValueType(\"boolean\"),\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\", \"Expression\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassBody\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\n      \"ClassMethod\",\n      \"ClassPrivateMethod\",\n      \"ClassProperty\",\n      \"ClassPrivateProperty\",\n      \"ClassAccessorProperty\",\n      \"TSDeclareMethod\",\n      \"TSIndexSignature\",\n      \"StaticBlock\",\n    ),\n  },\n});\n\ndefineType(\"ClassExpression\", {\n  builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n  visitor: [\n    \"decorators\",\n    \"id\",\n    \"typeParameters\",\n    \"superClass\",\n    process.env.BABEL_8_BREAKING ? \"superTypeArguments\" : \"superTypeParameters\",\n    \"mixins\",\n    \"implements\",\n    \"body\",\n  ],\n  aliases: [\"Scopable\", \"Class\", \"Expression\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n    typeParameters: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n          )\n        : assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"ClassBody\"),\n    },\n    superClass: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n    [process.env.BABEL_8_BREAKING\n      ? \"superTypeArguments\"\n      : \"superTypeParameters\"]: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n    implements: {\n      validate: arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n        \"ClassImplements\",\n      ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    mixins: {\n      validate: assertNodeType(\"InterfaceExtends\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassDeclaration\", {\n  inherits: \"ClassExpression\",\n  aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      // The id may be omitted if this is the child of an\n      // ExportDefaultDeclaration.\n      optional: true,\n    },\n    typeParameters: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n          )\n        : assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"ClassBody\"),\n    },\n    superClass: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n    [process.env.BABEL_8_BREAKING\n      ? \"superTypeArguments\"\n      : \"superTypeParameters\"]: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n    implements: {\n      validate: arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n        \"ClassImplements\",\n      ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    mixins: {\n      validate: assertNodeType(\"InterfaceExtends\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    abstract: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n  },\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const identifier = assertNodeType(\"Identifier\");\n          return function (parent, key, node) {\n            if (!is(\"ExportDefaultDeclaration\", parent)) {\n              identifier(node, \"id\", node.id);\n            }\n          };\n        })(),\n});\n\nexport const importAttributes = {\n  attributes: {\n    optional: true,\n    validate: arrayOfType(\"ImportAttribute\"),\n  },\n  assertions: {\n    deprecated: true,\n    optional: true,\n    validate: arrayOfType(\"ImportAttribute\"),\n  },\n};\n\ndefineType(\"ExportAllDeclaration\", {\n  builder: [\"source\"],\n  visitor: [\"source\", \"attributes\", \"assertions\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"ExportDefaultDeclaration\", {\n  visitor: [\"declaration\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    declaration: validateType(\n      \"TSDeclareFunction\",\n      \"FunctionDeclaration\",\n      \"ClassDeclaration\",\n      \"Expression\",\n    ),\n    exportKind: validateOptional(assertOneOf(\"value\")),\n  },\n});\n\ndefineType(\"ExportNamedDeclaration\", {\n  builder: [\"declaration\", \"specifiers\", \"source\"],\n  visitor: process.env\n    ? [\"declaration\", \"specifiers\", \"source\", \"attributes\"]\n    : [\"declaration\", \"specifiers\", \"source\", \"attributes\", \"assertions\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    declaration: {\n      optional: true,\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"Declaration\"),\n              Object.assign(\n                function (node: t.ExportNamedDeclaration, key, val) {\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (val && node.specifiers.length) {\n                    throw new TypeError(\n                      \"Only declaration or specifiers is allowed on ExportNamedDeclaration\",\n                    );\n                  }\n\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (val && node.source) {\n                    throw new TypeError(\n                      \"Cannot export a declaration from a source\",\n                    );\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"Declaration\"] },\n              ),\n            )\n          : assertNodeType(\"Declaration\"),\n    },\n    ...importAttributes,\n    specifiers: {\n      default: [],\n      validate: arrayOf(\n        (function () {\n          const sourced = assertNodeType(\n            \"ExportSpecifier\",\n            \"ExportDefaultSpecifier\",\n            \"ExportNamespaceSpecifier\",\n          );\n          const sourceless = assertNodeType(\"ExportSpecifier\");\n\n          if (\n            !process.env.BABEL_8_BREAKING &&\n            !process.env.BABEL_TYPES_8_BREAKING\n          )\n            return sourced;\n\n          return Object.assign(\n            function (node: t.ExportNamedDeclaration, key, val) {\n              const validator = node.source ? sourced : sourceless;\n              validator(node, key, val);\n            } as Validator,\n            {\n              oneOfNodeTypes: [\n                \"ExportSpecifier\",\n                \"ExportDefaultSpecifier\",\n                \"ExportNamespaceSpecifier\",\n              ],\n            },\n          );\n        })(),\n      ),\n    },\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n      optional: true,\n    },\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n  },\n});\n\ndefineType(\"ExportSpecifier\", {\n  visitor: [\"local\", \"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    exported: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    exportKind: {\n      // And TypeScript's \"export { type foo } from\"\n      validate: assertOneOf(\"type\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ForOfStatement\", {\n  visitor: [\"left\", \"right\", \"body\"],\n  builder: [\"left\", \"right\", \"body\", \"await\"],\n  aliases: [\n    \"Scopable\",\n    \"Statement\",\n    \"For\",\n    \"BlockParent\",\n    \"Loop\",\n    \"ForXStatement\",\n  ],\n  fields: {\n    left: {\n      validate: (function () {\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          !process.env.BABEL_TYPES_8_BREAKING\n        ) {\n          return assertNodeType(\"VariableDeclaration\", \"LVal\");\n        }\n\n        const declaration = assertNodeType(\"VariableDeclaration\");\n        const lval = assertNodeType(\n          \"Identifier\",\n          \"MemberExpression\",\n          \"ArrayPattern\",\n          \"ObjectPattern\",\n          \"TSAsExpression\",\n          \"TSSatisfiesExpression\",\n          \"TSTypeAssertion\",\n          \"TSNonNullExpression\",\n        );\n\n        return Object.assign(\n          function (node, key, val) {\n            if (is(\"VariableDeclaration\", val)) {\n              declaration(node, key, val);\n            } else {\n              lval(node, key, val);\n            }\n          } as Validator,\n          {\n            oneOfNodeTypes: [\n              \"VariableDeclaration\",\n              \"Identifier\",\n              \"MemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ],\n          },\n        );\n      })(),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n    await: {\n      default: false,\n    },\n  },\n});\n\ndefineType(\"ImportDeclaration\", {\n  builder: [\"specifiers\", \"source\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"specifiers\", \"source\", \"attributes\"]\n    : [\"specifiers\", \"source\", \"attributes\", \"assertions\"],\n  aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n  fields: {\n    ...importAttributes,\n    module: {\n      optional: true,\n      validate: assertValueType(\"boolean\"),\n    },\n    phase: {\n      default: null,\n      validate: assertOneOf(\"source\", \"defer\"),\n    },\n    specifiers: validateArrayOfType(\n      \"ImportSpecifier\",\n      \"ImportDefaultSpecifier\",\n      \"ImportNamespaceSpecifier\",\n    ),\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n    importKind: {\n      // Handle TypeScript/Flowtype's extension \"import type foo from\"\n      // TypeScript doesn't support typeof\n      validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ImportDefaultSpecifier\", {\n  visitor: [\"local\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"ImportNamespaceSpecifier\", {\n  visitor: [\"local\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"ImportSpecifier\", {\n  visitor: [\"imported\", \"local\"],\n  builder: [\"local\", \"imported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    imported: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    importKind: {\n      // Handle Flowtype's extension \"import {typeof foo} from\"\n      // And TypeScript's \"import { type foo } from\"\n      validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ImportExpression\", {\n  visitor: [\"source\", \"options\"],\n  aliases: [\"Expression\"],\n  fields: {\n    phase: {\n      default: null,\n      validate: assertOneOf(\"source\", \"defer\"),\n    },\n    source: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    options: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"MetaProperty\", {\n  visitor: [\"meta\", \"property\"],\n  aliases: [\"Expression\"],\n  fields: {\n    meta: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"Identifier\"),\n              Object.assign(\n                function (node: t.MetaProperty, key, val) {\n                  let property;\n                  switch (val.name) {\n                    case \"function\":\n                      property = \"sent\";\n                      break;\n                    case \"new\":\n                      property = \"target\";\n                      break;\n                    case \"import\":\n                      property = \"meta\";\n                      break;\n                  }\n                  if (!is(\"Identifier\", node.property, { name: property })) {\n                    throw new TypeError(\"Unrecognised MetaProperty\");\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"Identifier\"] },\n              ),\n            )\n          : assertNodeType(\"Identifier\"),\n    },\n    property: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\nexport const classMethodOrPropertyCommon = () => ({\n  abstract: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  accessibility: {\n    validate: assertOneOf(\"public\", \"private\", \"protected\"),\n    optional: true,\n  },\n  static: {\n    default: false,\n  },\n  override: {\n    default: false,\n  },\n  computed: {\n    default: false,\n  },\n  optional: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  key: {\n    validate: chain(\n      (function () {\n        const normal = assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const computed = assertNodeType(\"Expression\");\n\n        return function (node: any, key: string, val: any) {\n          const validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n      })(),\n      assertNodeType(\n        \"Identifier\",\n        \"StringLiteral\",\n        \"NumericLiteral\",\n        \"BigIntLiteral\",\n        \"Expression\",\n      ),\n    ),\n  },\n});\n\nexport const classMethodOrDeclareMethodCommon = () => ({\n  ...functionCommon(),\n  ...classMethodOrPropertyCommon(),\n  params: validateArrayOfType(\n    \"Identifier\",\n    \"Pattern\",\n    \"RestElement\",\n    \"TSParameterProperty\",\n  ),\n  kind: {\n    validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n    default: \"method\",\n  },\n  access: {\n    validate: chain(\n      assertValueType(\"string\"),\n      assertOneOf(\"public\", \"private\", \"protected\"),\n    ),\n    optional: true,\n  },\n  decorators: {\n    validate: arrayOfType(\"Decorator\"),\n    optional: true,\n  },\n});\n\ndefineType(\"ClassMethod\", {\n  aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n  builder: [\n    \"kind\",\n    \"key\",\n    \"params\",\n    \"body\",\n    \"computed\",\n    \"static\",\n    \"generator\",\n    \"async\",\n  ],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...functionTypeAnnotationCommon(),\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"ObjectPattern\", {\n  visitor: [\n    \"properties\",\n    \"typeAnnotation\",\n    \"decorators\" /* for legacy param decorators */,\n  ],\n  builder: [\"properties\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    properties: validateArrayOfType(\"RestElement\", \"ObjectProperty\"),\n  },\n});\n\ndefineType(\"SpreadElement\", {\n  visitor: [\"argument\"],\n  aliases: [\"UnaryLike\"],\n  deprecatedAlias: \"SpreadProperty\",\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\n  \"Super\",\n  process.env.BABEL_8_BREAKING\n    ? undefined\n    : {\n        aliases: [\"Expression\"],\n      },\n);\n\ndefineType(\"TaggedTemplateExpression\", {\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"tag\", \"typeArguments\", \"quasi\"]\n    : [\"tag\", \"typeParameters\", \"quasi\"],\n  builder: [\"tag\", \"quasi\"],\n  aliases: [\"Expression\"],\n  fields: {\n    tag: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    quasi: {\n      validate: assertNodeType(\"TemplateLiteral\"),\n    },\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TemplateElement\", {\n  builder: [\"value\", \"tail\"],\n  fields: {\n    value: {\n      validate: chain(\n        assertShape({\n          raw: {\n            validate: assertValueType(\"string\"),\n          },\n          cooked: {\n            validate: assertValueType(\"string\"),\n            optional: true,\n          },\n        }),\n        function templateElementCookedValidator(node: t.TemplateElement) {\n          const raw = node.value.raw;\n\n          let unterminatedCalled = false;\n\n          const error = () => {\n            // unreachable\n            throw new Error(\"Internal @babel/types error.\");\n          };\n          const { str, firstInvalidLoc } = readStringContents(\n            \"template\",\n            raw,\n            0,\n            0,\n            0,\n            {\n              unterminated() {\n                unterminatedCalled = true;\n              },\n              strictNumericEscape: error,\n              invalidEscapeSequence: error,\n              numericSeparatorInEscapeSequence: error,\n              unexpectedNumericSeparator: error,\n              invalidDigit: error,\n              invalidCodePoint: error,\n            },\n          );\n          if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n\n          node.value.cooked = firstInvalidLoc ? null : str;\n        },\n      ),\n    },\n    tail: {\n      default: false,\n    },\n  },\n});\n\ndefineType(\"TemplateLiteral\", {\n  visitor: [\"quasis\", \"expressions\"],\n  aliases: [\"Expression\", \"Literal\"],\n  fields: {\n    quasis: validateArrayOfType(\"TemplateElement\"),\n    expressions: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(\n          assertNodeType(\n            \"Expression\",\n            // For TypeScript template literal types\n            \"TSType\",\n          ),\n        ),\n        function (node: t.TemplateLiteral, key, val) {\n          if (node.quasis.length !== val.length + 1) {\n            throw new TypeError(\n              `Number of ${\n                node.type\n              } quasis should be exactly one more than the number of expressions.\\nExpected ${\n                val.length + 1\n              } quasis but got ${node.quasis.length}`,\n            );\n          }\n        } as Validator,\n      ),\n    },\n  },\n});\n\ndefineType(\"YieldExpression\", {\n  builder: [\"argument\", \"delegate\"],\n  visitor: [\"argument\"],\n  aliases: [\"Expression\", \"Terminatorless\"],\n  fields: {\n    delegate: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"boolean\"),\n              Object.assign(\n                function (node: t.YieldExpression, key, val) {\n                  if (val && !node.argument) {\n                    throw new TypeError(\n                      \"Property delegate of YieldExpression cannot be true if there is no argument\",\n                    );\n                  }\n                } as Validator,\n                { type: \"boolean\" },\n              ),\n            )\n          : assertValueType(\"boolean\"),\n      default: false,\n    },\n    argument: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\n// --- ES2017 ---\ndefineType(\"AwaitExpression\", {\n  builder: [\"argument\"],\n  visitor: [\"argument\"],\n  aliases: [\"Expression\", \"Terminatorless\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\n// --- ES2019 ---\ndefineType(\"Import\", {\n  aliases: [\"Expression\"],\n});\n\n// --- ES2020 ---\ndefineType(\"BigIntLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"ExportNamespaceSpecifier\", {\n  visitor: [\"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    exported: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"OptionalMemberExpression\", {\n  builder: [\"object\", \"property\", \"computed\", \"optional\"],\n  visitor: [\"object\", \"property\"],\n  aliases: [\"Expression\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    property: {\n      validate: (function () {\n        const normal = assertNodeType(\"Identifier\");\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.OptionalMemberExpression, key, val) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          } as Validator,\n          // todo(ts): can be discriminated union by `computed` property\n          { oneOfNodeTypes: [\"Expression\", \"Identifier\"] },\n        );\n        return validator;\n      })(),\n    },\n    computed: {\n      default: false,\n    },\n    optional: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"boolean\")\n          : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n    },\n  },\n});\n\ndefineType(\"OptionalCallExpression\", {\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"callee\", \"arguments\", \"typeArguments\"]\n    : [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n  builder: [\"callee\", \"arguments\", \"optional\"],\n  aliases: [\"Expression\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    arguments: validateArrayOfType(\n      \"Expression\",\n      \"SpreadElement\",\n      \"ArgumentPlaceholder\",\n    ),\n    optional: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"boolean\")\n          : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n    },\n    typeArguments: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterInstantiation\",\n            \"TSTypeParameterInstantiation\",\n          )\n        : assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          typeParameters: {\n            validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\n// --- ES2022 ---\ndefineType(\"ClassProperty\", {\n  visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\n    \"key\",\n    \"value\",\n    \"typeAnnotation\",\n    \"decorators\",\n    \"computed\",\n    \"static\",\n  ],\n  aliases: [\"Property\"],\n  fields: {\n    ...classMethodOrPropertyCommon(),\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassAccessorProperty\", {\n  visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\n    \"key\",\n    \"value\",\n    \"typeAnnotation\",\n    \"decorators\",\n    \"computed\",\n    \"static\",\n  ],\n  aliases: [\"Property\", \"Accessor\"],\n  fields: {\n    ...classMethodOrPropertyCommon(),\n    key: {\n      validate: chain(\n        (function () {\n          const normal = assertNodeType(\n            \"Identifier\",\n            \"StringLiteral\",\n            \"NumericLiteral\",\n            \"BigIntLiteral\",\n            \"PrivateName\",\n          );\n          const computed = assertNodeType(\"Expression\");\n\n          return function (node: any, key: string, val: any) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          };\n        })(),\n        assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n          \"Expression\",\n          \"PrivateName\",\n        ),\n      ),\n    },\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassPrivateProperty\", {\n  visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\"key\", \"value\", \"decorators\", \"static\"],\n  aliases: [\"Property\", \"Private\"],\n  fields: {\n    key: {\n      validate: assertNodeType(\"PrivateName\"),\n    },\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    static: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassPrivateMethod\", {\n  builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  aliases: [\n    \"Function\",\n    \"Scopable\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Method\",\n    \"Private\",\n  ],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...functionTypeAnnotationCommon(),\n    kind: {\n      validate: assertOneOf(\"get\", \"set\", \"method\"),\n      default: \"method\",\n    },\n    key: {\n      validate: assertNodeType(\"PrivateName\"),\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"PrivateName\", {\n  visitor: [\"id\"],\n  aliases: [\"Private\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"StaticBlock\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"],\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/flow.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/flow.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/flow.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -54,5 +54,6 @@
 defineInterfaceishType("DeclareClass");
 defineType("DeclareFunction", {
-  visitor: ["id"],
+  builder: ["id"],
+  visitor: ["id", "predicate"],
   aliases: ["FlowDeclaration", "Statement", "Declaration"],
   fields: {
@@ -134,5 +135,6 @@
 });
 defineType("FunctionTypeAnnotation", {
-  visitor: ["typeParameters", "params", "rest", "returnType"],
+  builder: ["typeParameters", "params", "rest", "returnType"],
+  visitor: ["typeParameters", "this", "params", "rest", "returnType"],
   aliases: ["FlowType"],
   fields: {
@@ -443,5 +445,6 @@
 defineType("EnumBooleanMember", {
   aliases: ["EnumMember"],
-  visitor: ["id"],
+  builder: ["id"],
+  visitor: ["id", "init"],
   fields: {
     id: (0, _utils.validateType)("Identifier"),
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/flow.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/flow.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/flow.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_core","require","_utils","defineType","defineAliasedType","defineInterfaceishType","name","isDeclareClass","builder","visitor","aliases","fields","Object","assign","id","validateType","typeParameters","validateOptionalType","extends","validateOptional","arrayOfType","mixins","implements","body","elementType","value","validate","assertValueType","predicate","kind","assertOneOf","typeAnnotation","right","supertype","impltype","declaration","specifiers","source","default","importAttributes","exportKind","params","validateArrayOfType","rest","this","returnType","optional","types","properties","indexers","callProperties","internalSlots","exact","inexact","static","method","key","variance","proto","argument","qualification","expression","bound","explicitType","members","hasUnknownMembers","init","objectType","indexType"],"sources":["../../src/definitions/flow.ts"],"sourcesContent":["import { importAttributes } from \"./core.ts\";\nimport {\n  defineAliasedType,\n  arrayOfType,\n  assertOneOf,\n  assertValueType,\n  validate,\n  validateArrayOfType,\n  validateOptional,\n  validateOptionalType,\n  validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Flow\");\n\nconst defineInterfaceishType = (\n  name: \"DeclareClass\" | \"DeclareInterface\" | \"InterfaceDeclaration\",\n) => {\n  const isDeclareClass = name === \"DeclareClass\";\n\n  defineType(name, {\n    builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n    visitor: [\n      \"id\",\n      \"typeParameters\",\n      \"extends\",\n      ...(isDeclareClass ? [\"mixins\", \"implements\"] : []),\n      \"body\",\n    ],\n    aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n    fields: {\n      id: validateType(\"Identifier\"),\n      typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n      extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n      ...(isDeclareClass\n        ? {\n            mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n            implements: validateOptional(arrayOfType(\"ClassImplements\")),\n          }\n        : {}),\n      body: validateType(\"ObjectTypeAnnotation\"),\n    },\n  });\n};\n\ndefineType(\"AnyTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ArrayTypeAnnotation\", {\n  visitor: [\"elementType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    elementType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"BooleanTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"NullLiteralTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ClassImplements\", {\n  visitor: [\"id\", \"typeParameters\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineInterfaceishType(\"DeclareClass\");\n\ndefineType(\"DeclareFunction\", {\n  visitor: [\"id\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    predicate: validateOptionalType(\"DeclaredPredicate\"),\n  },\n});\n\ndefineInterfaceishType(\"DeclareInterface\");\n\ndefineType(\"DeclareModule\", {\n  builder: [\"id\", \"body\", \"kind\"],\n  visitor: [\"id\", \"body\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    body: validateType(\"BlockStatement\"),\n    kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\")),\n  },\n});\n\ndefineType(\"DeclareModuleExports\", {\n  visitor: [\"typeAnnotation\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    typeAnnotation: validateType(\"TypeAnnotation\"),\n  },\n});\n\ndefineType(\"DeclareTypeAlias\", {\n  visitor: [\"id\", \"typeParameters\", \"right\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    right: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"DeclareOpaqueType\", {\n  visitor: [\"id\", \"typeParameters\", \"supertype\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    supertype: validateOptionalType(\"FlowType\"),\n    impltype: validateOptionalType(\"FlowType\"),\n  },\n});\n\ndefineType(\"DeclareVariable\", {\n  visitor: [\"id\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"DeclareExportDeclaration\", {\n  visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    declaration: validateOptionalType(\"Flow\"),\n    specifiers: validateOptional(\n      arrayOfType(\"ExportSpecifier\", \"ExportNamespaceSpecifier\"),\n    ),\n    source: validateOptionalType(\"StringLiteral\"),\n    default: validateOptional(assertValueType(\"boolean\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"DeclareExportAllDeclaration\", {\n  visitor: [\"source\", \"attributes\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    source: validateType(\"StringLiteral\"),\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"DeclaredPredicate\", {\n  visitor: [\"value\"],\n  aliases: [\"FlowPredicate\"],\n  fields: {\n    value: validateType(\"Flow\"),\n  },\n});\n\ndefineType(\"ExistsTypeAnnotation\", {\n  aliases: [\"FlowType\"],\n});\n\ndefineType(\"FunctionTypeAnnotation\", {\n  visitor: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    params: validateArrayOfType(\"FunctionTypeParam\"),\n    rest: validateOptionalType(\"FunctionTypeParam\"),\n    this: validateOptionalType(\"FunctionTypeParam\"),\n    returnType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"FunctionTypeParam\", {\n  visitor: [\"name\", \"typeAnnotation\"],\n  fields: {\n    name: validateOptionalType(\"Identifier\"),\n    typeAnnotation: validateType(\"FlowType\"),\n    optional: validateOptional(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"GenericTypeAnnotation\", {\n  visitor: [\"id\", \"typeParameters\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"InferredPredicate\", {\n  aliases: [\"FlowPredicate\"],\n});\n\ndefineType(\"InterfaceExtends\", {\n  visitor: [\"id\", \"typeParameters\"],\n  fields: {\n    id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineInterfaceishType(\"InterfaceDeclaration\");\n\ndefineType(\"InterfaceTypeAnnotation\", {\n  visitor: [\"extends\", \"body\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n    body: validateType(\"ObjectTypeAnnotation\"),\n  },\n});\n\ndefineType(\"IntersectionTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"MixedTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"EmptyTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"NullableTypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    typeAnnotation: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"NumberLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"number\")),\n  },\n});\n\ndefineType(\"NumberTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ObjectTypeAnnotation\", {\n  visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n  aliases: [\"FlowType\"],\n  builder: [\n    \"properties\",\n    \"indexers\",\n    \"callProperties\",\n    \"internalSlots\",\n    \"exact\",\n  ],\n  fields: {\n    properties: validate(\n      arrayOfType(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\"),\n    ),\n    indexers: {\n      validate: arrayOfType(\"ObjectTypeIndexer\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    callProperties: {\n      validate: arrayOfType(\"ObjectTypeCallProperty\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    internalSlots: {\n      validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    exact: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n    // If the inexact flag is present then this is an object type, and not a\n    // declare class, declare interface, or interface. If it is true, the\n    // object uses ... to express that it is inexact.\n    inexact: validateOptional(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeInternalSlot\", {\n  visitor: [\"id\", \"value\"],\n  builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    value: validateType(\"FlowType\"),\n    optional: validate(assertValueType(\"boolean\")),\n    static: validate(assertValueType(\"boolean\")),\n    method: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeCallProperty\", {\n  visitor: [\"value\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    value: validateType(\"FlowType\"),\n    static: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeIndexer\", {\n  visitor: [\"variance\", \"id\", \"key\", \"value\"],\n  builder: [\"id\", \"key\", \"value\", \"variance\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    id: validateOptionalType(\"Identifier\"),\n    key: validateType(\"FlowType\"),\n    value: validateType(\"FlowType\"),\n    static: validate(assertValueType(\"boolean\")),\n    variance: validateOptionalType(\"Variance\"),\n  },\n});\n\ndefineType(\"ObjectTypeProperty\", {\n  visitor: [\"key\", \"value\", \"variance\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    key: validateType(\"Identifier\", \"StringLiteral\"),\n    value: validateType(\"FlowType\"),\n    kind: validate(assertOneOf(\"init\", \"get\", \"set\")),\n    static: validate(assertValueType(\"boolean\")),\n    proto: validate(assertValueType(\"boolean\")),\n    optional: validate(assertValueType(\"boolean\")),\n    variance: validateOptionalType(\"Variance\"),\n    method: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeSpreadProperty\", {\n  visitor: [\"argument\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    argument: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"OpaqueType\", {\n  visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    supertype: validateOptionalType(\"FlowType\"),\n    impltype: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"QualifiedTypeIdentifier\", {\n  visitor: [\"qualification\", \"id\"],\n  builder: [\"id\", \"qualification\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    qualification: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n  },\n});\n\ndefineType(\"StringLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"string\")),\n  },\n});\n\ndefineType(\"StringTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"SymbolTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ThisTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"TupleTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"TypeofTypeAnnotation\", {\n  visitor: [\"argument\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    argument: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeAlias\", {\n  visitor: [\"id\", \"typeParameters\", \"right\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    right: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeCastExpression\", {\n  visitor: [\"expression\", \"typeAnnotation\"],\n  aliases: [\"ExpressionWrapper\", \"Expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeAnnotation: validateType(\"TypeAnnotation\"),\n  },\n});\n\ndefineType(\"TypeParameter\", {\n  visitor: [\"bound\", \"default\", \"variance\"],\n  fields: {\n    name: validate(assertValueType(\"string\")),\n    bound: validateOptionalType(\"TypeAnnotation\"),\n    default: validateOptionalType(\"FlowType\"),\n    variance: validateOptionalType(\"Variance\"),\n  },\n});\n\ndefineType(\"TypeParameterDeclaration\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validate(arrayOfType(\"TypeParameter\")),\n  },\n});\n\ndefineType(\"TypeParameterInstantiation\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"UnionTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"Variance\", {\n  builder: [\"kind\"],\n  fields: {\n    kind: validate(assertOneOf(\"minus\", \"plus\")),\n  },\n});\n\ndefineType(\"VoidTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\n// Enums\ndefineType(\"EnumDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"body\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    body: validateType(\n      \"EnumBooleanBody\",\n      \"EnumNumberBody\",\n      \"EnumStringBody\",\n      \"EnumSymbolBody\",\n    ),\n  },\n});\n\ndefineType(\"EnumBooleanBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumBooleanMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumNumberBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumNumberMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumStringBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumStringMember\", \"EnumDefaultedMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumSymbolBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"EnumDefaultedMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumBooleanMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"BooleanLiteral\"),\n  },\n});\n\ndefineType(\"EnumNumberMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"NumericLiteral\"),\n  },\n});\n\ndefineType(\"EnumStringMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"StringLiteral\"),\n  },\n});\n\ndefineType(\"EnumDefaultedMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"IndexedAccessType\", {\n  visitor: [\"objectType\", \"indexType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    objectType: validateType(\"FlowType\"),\n    indexType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"OptionalIndexedAccessType\", {\n  visitor: [\"objectType\", \"indexType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    objectType: validateType(\"FlowType\"),\n    indexType: validateType(\"FlowType\"),\n    optional: validate(assertValueType(\"boolean\")),\n  },\n});\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_core","require","_utils","defineType","defineAliasedType","defineInterfaceishType","name","isDeclareClass","builder","visitor","aliases","fields","Object","assign","id","validateType","typeParameters","validateOptionalType","extends","validateOptional","arrayOfType","mixins","implements","body","elementType","value","validate","assertValueType","predicate","kind","assertOneOf","typeAnnotation","right","supertype","impltype","declaration","specifiers","source","default","importAttributes","exportKind","params","validateArrayOfType","rest","this","returnType","optional","types","properties","indexers","callProperties","internalSlots","exact","inexact","static","method","key","variance","proto","argument","qualification","expression","bound","explicitType","members","hasUnknownMembers","init","objectType","indexType"],"sources":["../../src/definitions/flow.ts"],"sourcesContent":["import { importAttributes } from \"./core.ts\";\nimport {\n  defineAliasedType,\n  arrayOfType,\n  assertOneOf,\n  assertValueType,\n  validate,\n  validateArrayOfType,\n  validateOptional,\n  validateOptionalType,\n  validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Flow\");\n\nconst defineInterfaceishType = (\n  name: \"DeclareClass\" | \"DeclareInterface\" | \"InterfaceDeclaration\",\n) => {\n  const isDeclareClass = name === \"DeclareClass\";\n\n  defineType(name, {\n    builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n    visitor: [\n      \"id\",\n      \"typeParameters\",\n      \"extends\",\n      ...(isDeclareClass ? [\"mixins\", \"implements\"] : []),\n      \"body\",\n    ],\n    aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n    fields: {\n      id: validateType(\"Identifier\"),\n      typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n      extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n      ...(isDeclareClass\n        ? {\n            mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n            implements: validateOptional(arrayOfType(\"ClassImplements\")),\n          }\n        : {}),\n      body: validateType(\"ObjectTypeAnnotation\"),\n    },\n  });\n};\n\ndefineType(\"AnyTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ArrayTypeAnnotation\", {\n  visitor: [\"elementType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    elementType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"BooleanTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"NullLiteralTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ClassImplements\", {\n  visitor: [\"id\", \"typeParameters\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineInterfaceishType(\"DeclareClass\");\n\ndefineType(\"DeclareFunction\", {\n  builder: [\"id\"],\n  visitor: [\"id\", \"predicate\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    predicate: validateOptionalType(\"DeclaredPredicate\"),\n  },\n});\n\ndefineInterfaceishType(\"DeclareInterface\");\n\ndefineType(\"DeclareModule\", {\n  builder: [\"id\", \"body\", \"kind\"],\n  visitor: [\"id\", \"body\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    body: validateType(\"BlockStatement\"),\n    kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\")),\n  },\n});\n\ndefineType(\"DeclareModuleExports\", {\n  visitor: [\"typeAnnotation\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    typeAnnotation: validateType(\"TypeAnnotation\"),\n  },\n});\n\ndefineType(\"DeclareTypeAlias\", {\n  visitor: [\"id\", \"typeParameters\", \"right\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    right: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"DeclareOpaqueType\", {\n  visitor: [\"id\", \"typeParameters\", \"supertype\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    supertype: validateOptionalType(\"FlowType\"),\n    impltype: validateOptionalType(\"FlowType\"),\n  },\n});\n\ndefineType(\"DeclareVariable\", {\n  visitor: [\"id\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"DeclareExportDeclaration\", {\n  visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    declaration: validateOptionalType(\"Flow\"),\n    specifiers: validateOptional(\n      arrayOfType(\"ExportSpecifier\", \"ExportNamespaceSpecifier\"),\n    ),\n    source: validateOptionalType(\"StringLiteral\"),\n    default: validateOptional(assertValueType(\"boolean\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"DeclareExportAllDeclaration\", {\n  visitor: [\"source\", \"attributes\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    source: validateType(\"StringLiteral\"),\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"DeclaredPredicate\", {\n  visitor: [\"value\"],\n  aliases: [\"FlowPredicate\"],\n  fields: {\n    value: validateType(\"Flow\"),\n  },\n});\n\ndefineType(\"ExistsTypeAnnotation\", {\n  aliases: [\"FlowType\"],\n});\n\ndefineType(\"FunctionTypeAnnotation\", {\n  builder: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n  visitor: [\"typeParameters\", \"this\", \"params\", \"rest\", \"returnType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    params: validateArrayOfType(\"FunctionTypeParam\"),\n    rest: validateOptionalType(\"FunctionTypeParam\"),\n    this: validateOptionalType(\"FunctionTypeParam\"),\n    returnType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"FunctionTypeParam\", {\n  visitor: [\"name\", \"typeAnnotation\"],\n  fields: {\n    name: validateOptionalType(\"Identifier\"),\n    typeAnnotation: validateType(\"FlowType\"),\n    optional: validateOptional(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"GenericTypeAnnotation\", {\n  visitor: [\"id\", \"typeParameters\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"InferredPredicate\", {\n  aliases: [\"FlowPredicate\"],\n});\n\ndefineType(\"InterfaceExtends\", {\n  visitor: [\"id\", \"typeParameters\"],\n  fields: {\n    id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineInterfaceishType(\"InterfaceDeclaration\");\n\ndefineType(\"InterfaceTypeAnnotation\", {\n  visitor: [\"extends\", \"body\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n    body: validateType(\"ObjectTypeAnnotation\"),\n  },\n});\n\ndefineType(\"IntersectionTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"MixedTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"EmptyTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"NullableTypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    typeAnnotation: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"NumberLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"number\")),\n  },\n});\n\ndefineType(\"NumberTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ObjectTypeAnnotation\", {\n  visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n  aliases: [\"FlowType\"],\n  builder: [\n    \"properties\",\n    \"indexers\",\n    \"callProperties\",\n    \"internalSlots\",\n    \"exact\",\n  ],\n  fields: {\n    properties: validate(\n      arrayOfType(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\"),\n    ),\n    indexers: {\n      validate: arrayOfType(\"ObjectTypeIndexer\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    callProperties: {\n      validate: arrayOfType(\"ObjectTypeCallProperty\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    internalSlots: {\n      validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    exact: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n    // If the inexact flag is present then this is an object type, and not a\n    // declare class, declare interface, or interface. If it is true, the\n    // object uses ... to express that it is inexact.\n    inexact: validateOptional(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeInternalSlot\", {\n  visitor: [\"id\", \"value\"],\n  builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    value: validateType(\"FlowType\"),\n    optional: validate(assertValueType(\"boolean\")),\n    static: validate(assertValueType(\"boolean\")),\n    method: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeCallProperty\", {\n  visitor: [\"value\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    value: validateType(\"FlowType\"),\n    static: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeIndexer\", {\n  visitor: [\"variance\", \"id\", \"key\", \"value\"],\n  builder: [\"id\", \"key\", \"value\", \"variance\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    id: validateOptionalType(\"Identifier\"),\n    key: validateType(\"FlowType\"),\n    value: validateType(\"FlowType\"),\n    static: validate(assertValueType(\"boolean\")),\n    variance: validateOptionalType(\"Variance\"),\n  },\n});\n\ndefineType(\"ObjectTypeProperty\", {\n  visitor: [\"key\", \"value\", \"variance\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    key: validateType(\"Identifier\", \"StringLiteral\"),\n    value: validateType(\"FlowType\"),\n    kind: validate(assertOneOf(\"init\", \"get\", \"set\")),\n    static: validate(assertValueType(\"boolean\")),\n    proto: validate(assertValueType(\"boolean\")),\n    optional: validate(assertValueType(\"boolean\")),\n    variance: validateOptionalType(\"Variance\"),\n    method: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeSpreadProperty\", {\n  visitor: [\"argument\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    argument: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"OpaqueType\", {\n  visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    supertype: validateOptionalType(\"FlowType\"),\n    impltype: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"QualifiedTypeIdentifier\", {\n  visitor: [\"qualification\", \"id\"],\n  builder: [\"id\", \"qualification\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    qualification: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n  },\n});\n\ndefineType(\"StringLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"string\")),\n  },\n});\n\ndefineType(\"StringTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"SymbolTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ThisTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"TupleTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"TypeofTypeAnnotation\", {\n  visitor: [\"argument\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    argument: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeAlias\", {\n  visitor: [\"id\", \"typeParameters\", \"right\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    right: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeCastExpression\", {\n  visitor: [\"expression\", \"typeAnnotation\"],\n  aliases: [\"ExpressionWrapper\", \"Expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeAnnotation: validateType(\"TypeAnnotation\"),\n  },\n});\n\ndefineType(\"TypeParameter\", {\n  visitor: [\"bound\", \"default\", \"variance\"],\n  fields: {\n    name: validate(assertValueType(\"string\")),\n    bound: validateOptionalType(\"TypeAnnotation\"),\n    default: validateOptionalType(\"FlowType\"),\n    variance: validateOptionalType(\"Variance\"),\n  },\n});\n\ndefineType(\"TypeParameterDeclaration\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validate(arrayOfType(\"TypeParameter\")),\n  },\n});\n\ndefineType(\"TypeParameterInstantiation\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"UnionTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"Variance\", {\n  builder: [\"kind\"],\n  fields: {\n    kind: validate(assertOneOf(\"minus\", \"plus\")),\n  },\n});\n\ndefineType(\"VoidTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\n// Enums\ndefineType(\"EnumDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"body\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    body: validateType(\n      \"EnumBooleanBody\",\n      \"EnumNumberBody\",\n      \"EnumStringBody\",\n      \"EnumSymbolBody\",\n    ),\n  },\n});\n\ndefineType(\"EnumBooleanBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumBooleanMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumNumberBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumNumberMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumStringBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumStringMember\", \"EnumDefaultedMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumSymbolBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"EnumDefaultedMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumBooleanMember\", {\n  aliases: [\"EnumMember\"],\n  builder: [\"id\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"BooleanLiteral\"),\n  },\n});\n\ndefineType(\"EnumNumberMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"NumericLiteral\"),\n  },\n});\n\ndefineType(\"EnumStringMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"StringLiteral\"),\n  },\n});\n\ndefineType(\"EnumDefaultedMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"IndexedAccessType\", {\n  visitor: [\"objectType\", \"indexType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    objectType: validateType(\"FlowType\"),\n    indexType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"OptionalIndexedAccessType\", {\n  visitor: [\"objectType\", \"indexType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    objectType: validateType(\"FlowType\"),\n    indexType: validateType(\"FlowType\"),\n    optional: validate(assertValueType(\"boolean\")),\n  },\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/jsx.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/jsx.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/jsx.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -96,7 +96,7 @@
 defineType("JSXOpeningElement", {
   builder: ["name", "attributes", "selfClosing"],
-  visitor: ["name", "attributes"],
+  visitor: ["name", "typeParameters", "typeArguments", "attributes"],
   aliases: ["Immutable"],
-  fields: {
+  fields: Object.assign({
     name: {
       validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
@@ -106,9 +106,14 @@
     },
     attributes: (0, _utils.validateArrayOfType)("JSXAttribute", "JSXSpreadAttribute"),
-    typeParameters: {
-      validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+    typeArguments: {
+      validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
       optional: true
     }
-  }
+  }, {
+    typeParameters: {
+      validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+      optional: true
+    }
+  })
 });
 defineType("JSXSpreadAttribute", {
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/jsx.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/jsx.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/jsx.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_utils","require","defineType","defineAliasedType","visitor","aliases","fields","name","validate","assertNodeType","value","optional","builder","Object","assign","openingElement","closingElement","children","validateArrayOfType","selfClosing","assertValueType","expression","object","property","namespace","default","attributes","typeParameters","argument","openingFragment","closingFragment"],"sources":["../../src/definitions/jsx.ts"],"sourcesContent":["import {\n  defineAliasedType,\n  assertNodeType,\n  assertValueType,\n  validateArrayOfType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"JSX\");\n\ndefineType(\"JSXAttribute\", {\n  visitor: [\"name\", \"value\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\"),\n    },\n    value: {\n      optional: true,\n      validate: assertNodeType(\n        \"JSXElement\",\n        \"JSXFragment\",\n        \"StringLiteral\",\n        \"JSXExpressionContainer\",\n      ),\n    },\n  },\n});\n\ndefineType(\"JSXClosingElement\", {\n  visitor: [\"name\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\n        \"JSXIdentifier\",\n        \"JSXMemberExpression\",\n        \"JSXNamespacedName\",\n      ),\n    },\n  },\n});\n\ndefineType(\"JSXElement\", {\n  builder: process.env.BABEL_8_BREAKING\n    ? [\"openingElement\", \"closingElement\", \"children\"]\n    : [\"openingElement\", \"closingElement\", \"children\", \"selfClosing\"],\n  visitor: [\"openingElement\", \"children\", \"closingElement\"],\n  aliases: [\"Immutable\", \"Expression\"],\n  fields: {\n    openingElement: {\n      validate: assertNodeType(\"JSXOpeningElement\"),\n    },\n    closingElement: {\n      optional: true,\n      validate: assertNodeType(\"JSXClosingElement\"),\n    },\n    children: validateArrayOfType(\n      \"JSXText\",\n      \"JSXExpressionContainer\",\n      \"JSXSpreadChild\",\n      \"JSXElement\",\n      \"JSXFragment\",\n    ),\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          selfClosing: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"JSXEmptyExpression\", {});\n\ndefineType(\"JSXExpressionContainer\", {\n  visitor: [\"expression\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\"),\n    },\n  },\n});\n\ndefineType(\"JSXSpreadChild\", {\n  visitor: [\"expression\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"JSXIdentifier\", {\n  builder: [\"name\"],\n  fields: {\n    name: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"JSXMemberExpression\", {\n  visitor: [\"object\", \"property\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\"),\n    },\n    property: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n  },\n});\n\ndefineType(\"JSXNamespacedName\", {\n  visitor: [\"namespace\", \"name\"],\n  fields: {\n    namespace: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n    name: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n  },\n});\n\ndefineType(\"JSXOpeningElement\", {\n  builder: [\"name\", \"attributes\", \"selfClosing\"],\n  visitor: [\"name\", \"attributes\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\n        \"JSXIdentifier\",\n        \"JSXMemberExpression\",\n        \"JSXNamespacedName\",\n      ),\n    },\n    selfClosing: {\n      default: false,\n    },\n    attributes: validateArrayOfType(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n    typeParameters: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"JSXSpreadAttribute\", {\n  visitor: [\"argument\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"JSXText\", {\n  aliases: [\"Immutable\"],\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"JSXFragment\", {\n  builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n  visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n  aliases: [\"Immutable\", \"Expression\"],\n  fields: {\n    openingFragment: {\n      validate: assertNodeType(\"JSXOpeningFragment\"),\n    },\n    closingFragment: {\n      validate: assertNodeType(\"JSXClosingFragment\"),\n    },\n    children: validateArrayOfType(\n      \"JSXText\",\n      \"JSXExpressionContainer\",\n      \"JSXSpreadChild\",\n      \"JSXElement\",\n      \"JSXFragment\",\n    ),\n  },\n});\n\ndefineType(\"JSXOpeningFragment\", {\n  aliases: [\"Immutable\"],\n});\n\ndefineType(\"JSXClosingFragment\", {\n  aliases: [\"Immutable\"],\n});\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_utils","require","defineType","defineAliasedType","visitor","aliases","fields","name","validate","assertNodeType","value","optional","builder","Object","assign","openingElement","closingElement","children","validateArrayOfType","selfClosing","assertValueType","expression","object","property","namespace","default","attributes","typeArguments","typeParameters","argument","openingFragment","closingFragment"],"sources":["../../src/definitions/jsx.ts"],"sourcesContent":["import {\n  defineAliasedType,\n  assertNodeType,\n  assertValueType,\n  validateArrayOfType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"JSX\");\n\ndefineType(\"JSXAttribute\", {\n  visitor: [\"name\", \"value\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\"),\n    },\n    value: {\n      optional: true,\n      validate: assertNodeType(\n        \"JSXElement\",\n        \"JSXFragment\",\n        \"StringLiteral\",\n        \"JSXExpressionContainer\",\n      ),\n    },\n  },\n});\n\ndefineType(\"JSXClosingElement\", {\n  visitor: [\"name\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\n        \"JSXIdentifier\",\n        \"JSXMemberExpression\",\n        \"JSXNamespacedName\",\n      ),\n    },\n  },\n});\n\ndefineType(\"JSXElement\", {\n  builder: process.env.BABEL_8_BREAKING\n    ? [\"openingElement\", \"closingElement\", \"children\"]\n    : [\"openingElement\", \"closingElement\", \"children\", \"selfClosing\"],\n  visitor: [\"openingElement\", \"children\", \"closingElement\"],\n  aliases: [\"Immutable\", \"Expression\"],\n  fields: {\n    openingElement: {\n      validate: assertNodeType(\"JSXOpeningElement\"),\n    },\n    closingElement: {\n      optional: true,\n      validate: assertNodeType(\"JSXClosingElement\"),\n    },\n    children: validateArrayOfType(\n      \"JSXText\",\n      \"JSXExpressionContainer\",\n      \"JSXSpreadChild\",\n      \"JSXElement\",\n      \"JSXFragment\",\n    ),\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          selfClosing: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"JSXEmptyExpression\", {});\n\ndefineType(\"JSXExpressionContainer\", {\n  visitor: [\"expression\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\"),\n    },\n  },\n});\n\ndefineType(\"JSXSpreadChild\", {\n  visitor: [\"expression\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"JSXIdentifier\", {\n  builder: [\"name\"],\n  fields: {\n    name: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"JSXMemberExpression\", {\n  visitor: [\"object\", \"property\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\"),\n    },\n    property: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n  },\n});\n\ndefineType(\"JSXNamespacedName\", {\n  visitor: [\"namespace\", \"name\"],\n  fields: {\n    namespace: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n    name: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n  },\n});\n\ndefineType(\"JSXOpeningElement\", {\n  builder: [\"name\", \"attributes\", \"selfClosing\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"name\", \"typeArguments\", \"attributes\"]\n    : [\"name\", \"typeParameters\", \"typeArguments\", \"attributes\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\n        \"JSXIdentifier\",\n        \"JSXMemberExpression\",\n        \"JSXNamespacedName\",\n      ),\n    },\n    selfClosing: {\n      default: false,\n    },\n    attributes: validateArrayOfType(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n    typeArguments: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterInstantiation\",\n            \"TSTypeParameterInstantiation\",\n          )\n        : assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          typeParameters: {\n            validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"JSXSpreadAttribute\", {\n  visitor: [\"argument\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"JSXText\", {\n  aliases: [\"Immutable\"],\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"JSXFragment\", {\n  builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n  visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n  aliases: [\"Immutable\", \"Expression\"],\n  fields: {\n    openingFragment: {\n      validate: assertNodeType(\"JSXOpeningFragment\"),\n    },\n    closingFragment: {\n      validate: assertNodeType(\"JSXClosingFragment\"),\n    },\n    children: validateArrayOfType(\n      \"JSXText\",\n      \"JSXExpressionContainer\",\n      \"JSXSpreadChild\",\n      \"JSXElement\",\n      \"JSXFragment\",\n    ),\n  },\n});\n\ndefineType(\"JSXOpeningFragment\", {\n  aliases: [\"Immutable\"],\n});\n\ndefineType(\"JSXClosingFragment\", {\n  aliases: [\"Immutable\"],\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/typescript.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/typescript.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/typescript.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -137,5 +137,5 @@
   fields: {
     typeName: (0, _utils.validateType)("TSEntityName"),
-    typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+    ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
   }
 });
@@ -155,5 +155,5 @@
   fields: {
     exprName: (0, _utils.validateType)("TSEntityName", "TSImportType"),
-    typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+    ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
   }
 });
@@ -290,14 +290,13 @@
   }
 });
-const expressionWithTypeArguments = {
-  aliases: ["TSType"],
-  visitor: ["expression", "typeParameters"],
-  fields: {
-    expression: (0, _utils.validateType)("TSEntityName"),
-    typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
-  }
-};
 {
-  defineType("TSExpressionWithTypeArguments", expressionWithTypeArguments);
+  defineType("TSExpressionWithTypeArguments", {
+    aliases: ["TSType"],
+    visitor: ["expression", "typeParameters"],
+    fields: {
+      expression: (0, _utils.validateType)("TSEntityName"),
+      typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+    }
+  });
 }
 defineType("TSInterfaceDeclaration", {
@@ -333,5 +332,5 @@
   fields: {
     expression: (0, _utils.validateType)("Expression"),
-    typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+    ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
   }
 });
@@ -354,15 +353,24 @@
   }
 });
-defineType("TSEnumDeclaration", {
-  aliases: ["Statement", "Declaration"],
-  visitor: ["id", "members"],
-  fields: {
-    declare: (0, _utils.validateOptional)(bool),
-    const: (0, _utils.validateOptional)(bool),
-    id: (0, _utils.validateType)("Identifier"),
-    members: (0, _utils.validateArrayOfType)("TSEnumMember"),
-    initializer: (0, _utils.validateOptionalType)("Expression")
-  }
-});
+defineType("TSEnumBody", {
+  visitor: ["members"],
+  fields: {
+    members: (0, _utils.validateArrayOfType)("TSEnumMember")
+  }
+});
+{
+  defineType("TSEnumDeclaration", {
+    aliases: ["Statement", "Declaration"],
+    visitor: ["id", "members"],
+    fields: {
+      declare: (0, _utils.validateOptional)(bool),
+      const: (0, _utils.validateOptional)(bool),
+      id: (0, _utils.validateType)("Identifier"),
+      members: (0, _utils.validateArrayOfType)("TSEnumMember"),
+      initializer: (0, _utils.validateOptionalType)("Expression"),
+      body: (0, _utils.validateOptionalType)("TSEnumBody")
+    }
+  });
+}
 defineType("TSEnumMember", {
   visitor: ["id", "initializer"],
@@ -375,13 +383,15 @@
   aliases: ["Statement", "Declaration"],
   visitor: ["id", "body"],
-  fields: {
+  fields: Object.assign({
     kind: {
       validate: (0, _utils.assertOneOf)("global", "module", "namespace")
     },
-    declare: (0, _utils.validateOptional)(bool),
-    global: (0, _utils.validateOptional)(bool),
+    declare: (0, _utils.validateOptional)(bool)
+  }, {
+    global: (0, _utils.validateOptional)(bool)
+  }, {
     id: (0, _utils.validateType)("Identifier", "StringLiteral"),
     body: (0, _utils.validateType)("TSModuleBlock", "TSModuleDeclaration")
-  }
+  })
 });
 defineType("TSModuleBlock", {
@@ -394,9 +404,10 @@
 defineType("TSImportType", {
   aliases: ["TSType"],
-  visitor: ["argument", "qualifier", "typeParameters"],
+  builder: ["argument", "qualifier", "typeParameters"],
+  visitor: ["argument", "options", "qualifier", "typeParameters"],
   fields: {
     argument: (0, _utils.validateType)("StringLiteral"),
     qualifier: (0, _utils.validateOptionalType)("TSEntityName"),
-    typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation"),
+    ["typeParameters"]: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation"),
     options: {
       validate: (0, _utils.assertNodeType)("Expression"),
Index: imaps-frontend/node_modules/@babel/types/lib/definitions/typescript.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/definitions/typescript.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/definitions/typescript.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_utils","require","_core","_is","defineType","defineAliasedType","bool","assertValueType","tSFunctionTypeAnnotationCommon","returnType","validate","assertNodeType","optional","typeParameters","aliases","visitor","fields","accessibility","assertOneOf","readonly","parameter","override","decorators","arrayOfType","Object","assign","functionDeclarationCommon","classMethodOrDeclareMethodCommon","left","validateType","right","signatureDeclarationCommon","validateOptionalType","validateArrayOfType","callConstructSignatureDeclaration","namedTypeElementCommon","key","computed","default","validateOptional","typeAnnotation","kind","static","parameters","tsKeywordTypes","type","fnOrCtrBase","abstract","typeName","builder","parameterName","asserts","exprName","members","elementType","elementTypes","label","unionOrIntersection","types","checkType","extendsType","trueType","falseType","typeParameter","operator","objectType","indexType","nameType","literal","unaryExpression","unaryOperator","validator","parent","node","is","argument","oneOfNodeTypes","expressionWithTypeArguments","expression","declare","id","extends","body","TSTypeExpression","const","initializer","global","qualifier","options","isExport","moduleReference","importKind","params","name","in","out","constraint"],"sources":["../../src/definitions/typescript.ts"],"sourcesContent":["import {\n  defineAliasedType,\n  arrayOfType,\n  assertNodeType,\n  assertOneOf,\n  assertValueType,\n  validate,\n  validateArrayOfType,\n  validateOptional,\n  validateOptionalType,\n  validateType,\n} from \"./utils.ts\";\nimport {\n  functionDeclarationCommon,\n  classMethodOrDeclareMethodCommon,\n} from \"./core.ts\";\nimport is from \"../validators/is.ts\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n  returnType: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TSTypeAnnotation\")\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n    optional: true,\n  },\n  typeParameters: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TSTypeParameterDeclaration\")\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n    optional: true,\n  },\n});\n\ndefineType(\"TSParameterProperty\", {\n  aliases: [\"LVal\"], // TODO: This isn't usable in general as an LVal. Should have a \"Parameter\" alias.\n  visitor: [\"parameter\"],\n  fields: {\n    accessibility: {\n      validate: assertOneOf(\"public\", \"private\", \"protected\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    parameter: {\n      validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n    },\n    override: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSDeclareFunction\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n  fields: {\n    ...functionDeclarationCommon(),\n    ...tSFunctionTypeAnnotationCommon(),\n  },\n});\n\ndefineType(\"TSDeclareMethod\", {\n  visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...tSFunctionTypeAnnotationCommon(),\n  },\n});\n\ndefineType(\"TSQualifiedName\", {\n  aliases: [\"TSEntityName\"],\n  visitor: [\"left\", \"right\"],\n  fields: {\n    left: validateType(\"TSEntityName\"),\n    right: validateType(\"Identifier\"),\n  },\n});\n\nconst signatureDeclarationCommon = () => ({\n  typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n  [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n    \"ArrayPattern\",\n    \"Identifier\",\n    \"ObjectPattern\",\n    \"RestElement\",\n  ),\n  [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n    validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n  fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n  \"TSConstructSignatureDeclaration\",\n  callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n  key: validateType(\"Expression\"),\n  computed: { default: false },\n  optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\"key\", \"typeAnnotation\"],\n  fields: {\n    ...namedTypeElementCommon(),\n    readonly: validateOptional(bool),\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n    kind: {\n      validate: assertOneOf(\"get\", \"set\"),\n    },\n  },\n});\n\ndefineType(\"TSMethodSignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\n    \"key\",\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n  fields: {\n    ...signatureDeclarationCommon(),\n    ...namedTypeElementCommon(),\n    kind: {\n      validate: assertOneOf(\"method\", \"get\", \"set\"),\n    },\n  },\n});\n\ndefineType(\"TSIndexSignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\"parameters\", \"typeAnnotation\"],\n  fields: {\n    readonly: validateOptional(bool),\n    static: validateOptional(bool),\n    parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n  },\n});\n\nconst tsKeywordTypes = [\n  \"TSAnyKeyword\",\n  \"TSBooleanKeyword\",\n  \"TSBigIntKeyword\",\n  \"TSIntrinsicKeyword\",\n  \"TSNeverKeyword\",\n  \"TSNullKeyword\",\n  \"TSNumberKeyword\",\n  \"TSObjectKeyword\",\n  \"TSStringKeyword\",\n  \"TSSymbolKeyword\",\n  \"TSUndefinedKeyword\",\n  \"TSUnknownKeyword\",\n  \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n  defineType(type, {\n    aliases: [\"TSType\", \"TSBaseType\"],\n    visitor: [],\n    fields: {},\n  });\n}\n\ndefineType(\"TSThisType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [],\n  fields: {},\n});\n\nconst fnOrCtrBase = {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n};\n\ndefineType(\"TSFunctionType\", {\n  ...fnOrCtrBase,\n  fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n  ...fnOrCtrBase,\n  fields: {\n    ...signatureDeclarationCommon(),\n    abstract: validateOptional(bool),\n  },\n});\n\ndefineType(\"TSTypeReference\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeName\", \"typeParameters\"],\n  fields: {\n    typeName: validateType(\"TSEntityName\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"TSTypePredicate\", {\n  aliases: [\"TSType\"],\n  visitor: [\"parameterName\", \"typeAnnotation\"],\n  builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n  fields: {\n    parameterName: validateType(\"Identifier\", \"TSThisType\"),\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n    asserts: validateOptional(bool),\n  },\n});\n\ndefineType(\"TSTypeQuery\", {\n  aliases: [\"TSType\"],\n  visitor: [\"exprName\", \"typeParameters\"],\n  fields: {\n    exprName: validateType(\"TSEntityName\", \"TSImportType\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"TSTypeLiteral\", {\n  aliases: [\"TSType\"],\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"TSTypeElement\"),\n  },\n});\n\ndefineType(\"TSArrayType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"elementType\"],\n  fields: {\n    elementType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTupleType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"elementTypes\"],\n  fields: {\n    elementTypes: validateArrayOfType(\"TSType\", \"TSNamedTupleMember\"),\n  },\n});\n\ndefineType(\"TSOptionalType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSRestType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n  visitor: [\"label\", \"elementType\"],\n  builder: [\"label\", \"elementType\", \"optional\"],\n  fields: {\n    label: validateType(\"Identifier\"),\n    optional: {\n      validate: bool,\n      default: false,\n    },\n    elementType: validateType(\"TSType\"),\n  },\n});\n\nconst unionOrIntersection = {\n  aliases: [\"TSType\"],\n  visitor: [\"types\"],\n  fields: {\n    types: validateArrayOfType(\"TSType\"),\n  },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n  fields: {\n    checkType: validateType(\"TSType\"),\n    extendsType: validateType(\"TSType\"),\n    trueType: validateType(\"TSType\"),\n    falseType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSInferType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeParameter\"],\n  fields: {\n    typeParameter: validateType(\"TSTypeParameter\"),\n  },\n});\n\ndefineType(\"TSParenthesizedType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTypeOperator\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    operator: validate(assertValueType(\"string\")),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"objectType\", \"indexType\"],\n  fields: {\n    objectType: validateType(\"TSType\"),\n    indexType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSMappedType\", {\n  aliases: [\"TSType\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n    : [\"typeParameter\", \"nameType\", \"typeAnnotation\"],\n  builder: process.env.BABEL_8_BREAKING\n    ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n    : [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n  fields: {\n    ...(process.env.BABEL_8_BREAKING\n      ? {\n          key: validateType(\"Identifier\"),\n          constraint: validateType(\"TSType\"),\n        }\n      : {\n          typeParameter: validateType(\"TSTypeParameter\"),\n        }),\n    readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n    optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n    typeAnnotation: validateOptionalType(\"TSType\"),\n    nameType: validateOptionalType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSLiteralType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [\"literal\"],\n  fields: {\n    literal: {\n      validate: (function () {\n        const unaryExpression = assertNodeType(\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const unaryOperator = assertOneOf(\"-\");\n\n        const literal = assertNodeType(\n          \"NumericLiteral\",\n          \"StringLiteral\",\n          \"BooleanLiteral\",\n          \"BigIntLiteral\",\n          \"TemplateLiteral\",\n        );\n        function validator(parent: any, key: string, node: any) {\n          // type A = -1 | 1;\n          if (is(\"UnaryExpression\", node)) {\n            // check operator first\n            unaryOperator(node, \"operator\", node.operator);\n            unaryExpression(node, \"argument\", node.argument);\n          } else {\n            // type A = 'foo' | 'bar' | false | 1;\n            literal(parent, key, node);\n          }\n        }\n\n        validator.oneOfNodeTypes = [\n          \"NumericLiteral\",\n          \"StringLiteral\",\n          \"BooleanLiteral\",\n          \"BigIntLiteral\",\n          \"TemplateLiteral\",\n          \"UnaryExpression\",\n        ];\n\n        return validator;\n      })(),\n    },\n  },\n});\n\nconst expressionWithTypeArguments = {\n  aliases: [\"TSType\"],\n  visitor: [\"expression\", \"typeParameters\"],\n  fields: {\n    expression: validateType(\"TSEntityName\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n};\n\nif (process.env.BABEL_8_BREAKING) {\n  defineType(\"TSClassImplements\", expressionWithTypeArguments);\n  defineType(\"TSInterfaceHeritage\", expressionWithTypeArguments);\n} else {\n  defineType(\"TSExpressionWithTypeArguments\", expressionWithTypeArguments);\n}\n\ndefineType(\"TSInterfaceDeclaration\", {\n  // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n  fields: {\n    declare: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n    extends: validateOptional(\n      arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n      ),\n    ),\n    body: validateType(\"TSInterfaceBody\"),\n  },\n});\n\ndefineType(\"TSInterfaceBody\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"TSTypeElement\"),\n  },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n  fields: {\n    declare: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n  aliases: [\"Expression\"],\n  visitor: [\"expression\", \"typeParameters\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\nconst TSTypeExpression = {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"expression\", \"typeAnnotation\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"typeAnnotation\", \"expression\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSEnumDeclaration\", {\n  // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"members\"],\n  fields: {\n    declare: validateOptional(bool),\n    const: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    members: validateArrayOfType(\"TSEnumMember\"),\n    initializer: validateOptionalType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSEnumMember\", {\n  visitor: [\"id\", \"initializer\"],\n  fields: {\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    initializer: validateOptionalType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"body\"],\n  fields: {\n    kind: {\n      validate: assertOneOf(\"global\", \"module\", \"namespace\"),\n    },\n    declare: validateOptional(bool),\n    global: validateOptional(bool),\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    body: validateType(\"TSModuleBlock\", \"TSModuleDeclaration\"),\n  },\n});\n\ndefineType(\"TSModuleBlock\", {\n  aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"Statement\"),\n  },\n});\n\ndefineType(\"TSImportType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"argument\", \"qualifier\", \"typeParameters\"],\n  fields: {\n    argument: validateType(\"StringLiteral\"),\n    qualifier: validateOptionalType(\"TSEntityName\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    options: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n  aliases: [\"Statement\"],\n  visitor: [\"id\", \"moduleReference\"],\n  fields: {\n    isExport: validate(bool),\n    id: validateType(\"Identifier\"),\n    moduleReference: validateType(\"TSEntityName\", \"TSExternalModuleReference\"),\n    importKind: {\n      validate: assertOneOf(\"type\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"StringLiteral\"),\n  },\n});\n\ndefineType(\"TSNonNullExpression\", {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSExportAssignment\", {\n  aliases: [\"Statement\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n  aliases: [\"Statement\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: {\n      validate: assertNodeType(\"TSType\"),\n    },\n  },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validateArrayOfType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validateArrayOfType(\"TSTypeParameter\"),\n  },\n});\n\ndefineType(\"TSTypeParameter\", {\n  builder: [\"constraint\", \"default\", \"name\"],\n  visitor: [\"constraint\", \"default\"],\n  fields: {\n    name: {\n      validate: !process.env.BABEL_8_BREAKING\n        ? assertValueType(\"string\")\n        : assertNodeType(\"Identifier\"),\n    },\n    in: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    out: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    const: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    constraint: {\n      validate: assertNodeType(\"TSType\"),\n      optional: true,\n    },\n    default: {\n      validate: assertNodeType(\"TSType\"),\n      optional: true,\n    },\n  },\n});\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_utils","require","_core","_is","defineType","defineAliasedType","bool","assertValueType","tSFunctionTypeAnnotationCommon","returnType","validate","assertNodeType","optional","typeParameters","aliases","visitor","fields","accessibility","assertOneOf","readonly","parameter","override","decorators","arrayOfType","Object","assign","functionDeclarationCommon","classMethodOrDeclareMethodCommon","left","validateType","right","signatureDeclarationCommon","validateOptionalType","validateArrayOfType","callConstructSignatureDeclaration","namedTypeElementCommon","key","computed","default","validateOptional","typeAnnotation","kind","static","parameters","tsKeywordTypes","type","fnOrCtrBase","abstract","typeName","builder","parameterName","asserts","exprName","members","elementType","elementTypes","label","unionOrIntersection","types","checkType","extendsType","trueType","falseType","typeParameter","operator","objectType","indexType","nameType","literal","unaryExpression","unaryOperator","validator","parent","node","is","argument","oneOfNodeTypes","expression","declare","id","extends","body","TSTypeExpression","const","initializer","global","qualifier","options","isExport","moduleReference","importKind","params","name","in","out","constraint"],"sources":["../../src/definitions/typescript.ts"],"sourcesContent":["import {\n  defineAliasedType,\n  arrayOfType,\n  assertNodeType,\n  assertOneOf,\n  assertValueType,\n  validate,\n  validateArrayOfType,\n  validateOptional,\n  validateOptionalType,\n  validateType,\n} from \"./utils.ts\";\nimport {\n  functionDeclarationCommon,\n  classMethodOrDeclareMethodCommon,\n} from \"./core.ts\";\nimport is from \"../validators/is.ts\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n  returnType: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TSTypeAnnotation\")\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n    optional: true,\n  },\n  typeParameters: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TSTypeParameterDeclaration\")\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n    optional: true,\n  },\n});\n\ndefineType(\"TSParameterProperty\", {\n  aliases: [\"LVal\"], // TODO: This isn't usable in general as an LVal. Should have a \"Parameter\" alias.\n  visitor: [\"parameter\"],\n  fields: {\n    accessibility: {\n      validate: assertOneOf(\"public\", \"private\", \"protected\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    parameter: {\n      validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n    },\n    override: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSDeclareFunction\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n  fields: {\n    ...functionDeclarationCommon(),\n    ...tSFunctionTypeAnnotationCommon(),\n  },\n});\n\ndefineType(\"TSDeclareMethod\", {\n  visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...tSFunctionTypeAnnotationCommon(),\n  },\n});\n\ndefineType(\"TSQualifiedName\", {\n  aliases: [\"TSEntityName\"],\n  visitor: [\"left\", \"right\"],\n  fields: {\n    left: validateType(\"TSEntityName\"),\n    right: validateType(\"Identifier\"),\n  },\n});\n\nconst signatureDeclarationCommon = () => ({\n  typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n  [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n    \"ArrayPattern\",\n    \"Identifier\",\n    \"ObjectPattern\",\n    \"RestElement\",\n  ),\n  [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n    validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n  fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n  \"TSConstructSignatureDeclaration\",\n  callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n  key: validateType(\"Expression\"),\n  computed: { default: false },\n  optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\"key\", \"typeAnnotation\"],\n  fields: {\n    ...namedTypeElementCommon(),\n    readonly: validateOptional(bool),\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n    kind: {\n      validate: assertOneOf(\"get\", \"set\"),\n    },\n  },\n});\n\ndefineType(\"TSMethodSignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\n    \"key\",\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n  fields: {\n    ...signatureDeclarationCommon(),\n    ...namedTypeElementCommon(),\n    kind: {\n      validate: assertOneOf(\"method\", \"get\", \"set\"),\n    },\n  },\n});\n\ndefineType(\"TSIndexSignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\"parameters\", \"typeAnnotation\"],\n  fields: {\n    readonly: validateOptional(bool),\n    static: validateOptional(bool),\n    parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n  },\n});\n\nconst tsKeywordTypes = [\n  \"TSAnyKeyword\",\n  \"TSBooleanKeyword\",\n  \"TSBigIntKeyword\",\n  \"TSIntrinsicKeyword\",\n  \"TSNeverKeyword\",\n  \"TSNullKeyword\",\n  \"TSNumberKeyword\",\n  \"TSObjectKeyword\",\n  \"TSStringKeyword\",\n  \"TSSymbolKeyword\",\n  \"TSUndefinedKeyword\",\n  \"TSUnknownKeyword\",\n  \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n  defineType(type, {\n    aliases: [\"TSType\", \"TSBaseType\"],\n    visitor: [],\n    fields: {},\n  });\n}\n\ndefineType(\"TSThisType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [],\n  fields: {},\n});\n\nconst fnOrCtrBase = {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n};\n\ndefineType(\"TSFunctionType\", {\n  ...fnOrCtrBase,\n  fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n  ...fnOrCtrBase,\n  fields: {\n    ...signatureDeclarationCommon(),\n    abstract: validateOptional(bool),\n  },\n});\n\ndefineType(\"TSTypeReference\", {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"typeName\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  fields: {\n    typeName: validateType(\"TSEntityName\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"TSTypePredicate\", {\n  aliases: [\"TSType\"],\n  visitor: [\"parameterName\", \"typeAnnotation\"],\n  builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n  fields: {\n    parameterName: validateType(\"Identifier\", \"TSThisType\"),\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n    asserts: validateOptional(bool),\n  },\n});\n\ndefineType(\"TSTypeQuery\", {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"exprName\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  fields: {\n    exprName: validateType(\"TSEntityName\", \"TSImportType\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"TSTypeLiteral\", {\n  aliases: [\"TSType\"],\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"TSTypeElement\"),\n  },\n});\n\ndefineType(\"TSArrayType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"elementType\"],\n  fields: {\n    elementType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTupleType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"elementTypes\"],\n  fields: {\n    elementTypes: validateArrayOfType(\"TSType\", \"TSNamedTupleMember\"),\n  },\n});\n\ndefineType(\"TSOptionalType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSRestType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n  visitor: [\"label\", \"elementType\"],\n  builder: [\"label\", \"elementType\", \"optional\"],\n  fields: {\n    label: validateType(\"Identifier\"),\n    optional: {\n      validate: bool,\n      default: false,\n    },\n    elementType: validateType(\"TSType\"),\n  },\n});\n\nconst unionOrIntersection = {\n  aliases: [\"TSType\"],\n  visitor: [\"types\"],\n  fields: {\n    types: validateArrayOfType(\"TSType\"),\n  },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n  fields: {\n    checkType: validateType(\"TSType\"),\n    extendsType: validateType(\"TSType\"),\n    trueType: validateType(\"TSType\"),\n    falseType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSInferType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeParameter\"],\n  fields: {\n    typeParameter: validateType(\"TSTypeParameter\"),\n  },\n});\n\ndefineType(\"TSParenthesizedType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTypeOperator\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    operator: validate(assertValueType(\"string\")),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"objectType\", \"indexType\"],\n  fields: {\n    objectType: validateType(\"TSType\"),\n    indexType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSMappedType\", {\n  aliases: [\"TSType\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n    : [\"typeParameter\", \"nameType\", \"typeAnnotation\"],\n  builder: process.env.BABEL_8_BREAKING\n    ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n    : [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n  fields: {\n    ...(process.env.BABEL_8_BREAKING\n      ? {\n          key: validateType(\"Identifier\"),\n          constraint: validateType(\"TSType\"),\n        }\n      : {\n          typeParameter: validateType(\"TSTypeParameter\"),\n        }),\n    readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n    optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n    typeAnnotation: validateOptionalType(\"TSType\"),\n    nameType: validateOptionalType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSLiteralType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [\"literal\"],\n  fields: {\n    literal: {\n      validate: (function () {\n        const unaryExpression = assertNodeType(\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const unaryOperator = assertOneOf(\"-\");\n\n        const literal = assertNodeType(\n          \"NumericLiteral\",\n          \"StringLiteral\",\n          \"BooleanLiteral\",\n          \"BigIntLiteral\",\n          \"TemplateLiteral\",\n        );\n        function validator(parent: any, key: string, node: any) {\n          // type A = -1 | 1;\n          if (is(\"UnaryExpression\", node)) {\n            // check operator first\n            unaryOperator(node, \"operator\", node.operator);\n            unaryExpression(node, \"argument\", node.argument);\n          } else {\n            // type A = 'foo' | 'bar' | false | 1;\n            literal(parent, key, node);\n          }\n        }\n\n        validator.oneOfNodeTypes = [\n          \"NumericLiteral\",\n          \"StringLiteral\",\n          \"BooleanLiteral\",\n          \"BigIntLiteral\",\n          \"TemplateLiteral\",\n          \"UnaryExpression\",\n        ];\n\n        return validator;\n      })(),\n    },\n  },\n});\n\nif (process.env.BABEL_8_BREAKING) {\n  defineType(\"TSClassImplements\", {\n    aliases: [\"TSType\"],\n    visitor: [\"expression\", \"typeArguments\"],\n    fields: {\n      expression: validateType(\"TSEntityName\"),\n      typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    },\n  });\n  defineType(\"TSInterfaceHeritage\", {\n    aliases: [\"TSType\"],\n    visitor: [\"expression\", \"typeArguments\"],\n    fields: {\n      expression: validateType(\"TSEntityName\"),\n      typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    },\n  });\n} else {\n  defineType(\"TSExpressionWithTypeArguments\", {\n    aliases: [\"TSType\"],\n    visitor: [\"expression\", \"typeParameters\"],\n    fields: {\n      expression: validateType(\"TSEntityName\"),\n      typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    },\n  });\n}\n\ndefineType(\"TSInterfaceDeclaration\", {\n  // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n  fields: {\n    declare: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n    extends: validateOptional(\n      arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n      ),\n    ),\n    body: validateType(\"TSInterfaceBody\"),\n  },\n});\n\ndefineType(\"TSInterfaceBody\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"TSTypeElement\"),\n  },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n  fields: {\n    declare: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n  aliases: [\"Expression\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"expression\", \"typeArguments\"]\n    : [\"expression\", \"typeParameters\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\nconst TSTypeExpression = {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"expression\", \"typeAnnotation\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"typeAnnotation\", \"expression\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSEnumBody\", {\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"TSEnumMember\"),\n  },\n});\n\nif (process.env.BABEL_8_BREAKING) {\n  defineType(\"TSEnumDeclaration\", {\n    // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n    aliases: [\"Statement\", \"Declaration\"],\n    visitor: [\"id\", \"body\"],\n    fields: {\n      declare: validateOptional(bool),\n      const: validateOptional(bool),\n      id: validateType(\"Identifier\"),\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      body: validateType(\"TSEnumBody\"),\n    },\n  });\n} else {\n  defineType(\"TSEnumDeclaration\", {\n    // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n    aliases: [\"Statement\", \"Declaration\"],\n    visitor: [\"id\", \"members\"],\n    fields: {\n      declare: validateOptional(bool),\n      const: validateOptional(bool),\n      id: validateType(\"Identifier\"),\n      members: validateArrayOfType(\"TSEnumMember\"),\n      initializer: validateOptionalType(\"Expression\"),\n      body: validateOptionalType(\"TSEnumBody\"),\n    },\n  });\n}\n\ndefineType(\"TSEnumMember\", {\n  visitor: [\"id\", \"initializer\"],\n  fields: {\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    initializer: validateOptionalType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"body\"],\n  fields: {\n    kind: {\n      validate: assertOneOf(\"global\", \"module\", \"namespace\"),\n    },\n    declare: validateOptional(bool),\n    ...(!process.env.BABEL_8_BREAKING && { global: validateOptional(bool) }),\n    id: process.env.BABEL_8_BREAKING\n      ? validateType(\"TSEntityName\", \"StringLiteral\")\n      : validateType(\"Identifier\", \"StringLiteral\"),\n    body: process.env.BABEL_8_BREAKING\n      ? validateType(\"TSModuleBlock\")\n      : validateType(\"TSModuleBlock\", \"TSModuleDeclaration\"),\n  },\n});\n\ndefineType(\"TSModuleBlock\", {\n  aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"Statement\"),\n  },\n});\n\ndefineType(\"TSImportType\", {\n  aliases: [\"TSType\"],\n  builder: [\n    \"argument\",\n    \"qualifier\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  visitor: [\n    \"argument\",\n    \"options\",\n    \"qualifier\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  fields: {\n    argument: process.env.BABEL_8_BREAKING\n      ? validateType(\"TSLiteralType\")\n      : validateType(\"StringLiteral\"),\n    qualifier: validateOptionalType(\"TSEntityName\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n    options: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n  aliases: [\"Statement\"],\n  visitor: [\"id\", \"moduleReference\"],\n  fields: {\n    isExport: validate(bool),\n    id: validateType(\"Identifier\"),\n    moduleReference: validateType(\"TSEntityName\", \"TSExternalModuleReference\"),\n    importKind: {\n      validate: assertOneOf(\"type\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"StringLiteral\"),\n  },\n});\n\ndefineType(\"TSNonNullExpression\", {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSExportAssignment\", {\n  aliases: [\"Statement\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n  aliases: [\"Statement\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: {\n      validate: assertNodeType(\"TSType\"),\n    },\n  },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validateArrayOfType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validateArrayOfType(\"TSTypeParameter\"),\n  },\n});\n\ndefineType(\"TSTypeParameter\", {\n  builder: [\"constraint\", \"default\", \"name\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"name\", \"constraint\", \"default\"]\n    : [\"constraint\", \"default\"],\n  fields: {\n    name: {\n      validate: !process.env.BABEL_8_BREAKING\n        ? assertValueType(\"string\")\n        : assertNodeType(\"Identifier\"),\n    },\n    in: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    out: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    const: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    constraint: {\n      validate: assertNodeType(\"TSType\"),\n      optional: true,\n    },\n    default: {\n      validate: assertNodeType(\"TSType\"),\n      optional: true,\n    },\n  },\n});\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/index-legacy.d.ts
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/index-legacy.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/index-legacy.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -43,5 +43,5 @@
 }
 
-export type Node = Accessor | AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | Binary | BinaryExpression | BindExpression | Block | BlockParent | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | Class | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | CompletionStatement | Conditional | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | Declaration | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBody | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | Expression | ExpressionStatement | ExpressionWrapper | File | Flow | FlowBaseAnnotation | FlowDeclaration | FlowPredicate | FlowType | For | ForInStatement | ForOfStatement | ForStatement | ForXStatement | Function | FunctionDeclaration | FunctionExpression | FunctionParent | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Immutable | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportOrExportDeclaration | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSX | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LVal | LabeledStatement | Literal | LogicalExpression | Loop | MemberExpression | MetaProperty | Method | Miscellaneous | MixedTypeAnnotation | ModuleDeclaration | ModuleExpression | ModuleSpecifier | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMember | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | Pattern | PatternLike | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | Private | PrivateName | Program | Property | Pureish | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | Scopable | SequenceExpression | SpreadElement | SpreadProperty | Standardized | Statement | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBaseType | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEntityName | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeElement | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | Terminatorless | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeScript | TypeofTypeAnnotation | UnaryExpression | UnaryLike | UnionTypeAnnotation | UpdateExpression | UserWhitespacable | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | While | WhileStatement | WithStatement | YieldExpression;
+export type Node = Accessor | AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | Binary | BinaryExpression | BindExpression | Block | BlockParent | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | Class | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | CompletionStatement | Conditional | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | Declaration | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBody | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | Expression | ExpressionStatement | ExpressionWrapper | File | Flow | FlowBaseAnnotation | FlowDeclaration | FlowPredicate | FlowType | For | ForInStatement | ForOfStatement | ForStatement | ForXStatement | Function | FunctionDeclaration | FunctionExpression | FunctionParent | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Immutable | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportOrExportDeclaration | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSX | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LVal | LabeledStatement | Literal | LogicalExpression | Loop | MemberExpression | MetaProperty | Method | Miscellaneous | MixedTypeAnnotation | ModuleDeclaration | ModuleExpression | ModuleSpecifier | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMember | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | Pattern | PatternLike | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | Private | PrivateName | Program | Property | Pureish | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | Scopable | SequenceExpression | SpreadElement | SpreadProperty | Standardized | Statement | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBaseType | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEntityName | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeElement | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | Terminatorless | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeScript | TypeofTypeAnnotation | UnaryExpression | UnaryLike | UnionTypeAnnotation | UpdateExpression | UserWhitespacable | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | While | WhileStatement | WithStatement | YieldExpression;
 
 export interface ArrayExpression extends BaseNode {
@@ -1146,5 +1146,6 @@
   attributes: Array<JSXAttribute | JSXSpreadAttribute>;
   selfClosing: boolean;
-  typeParameters: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+  typeArguments: TypeParameterInstantiation | null;
+  typeParameters: TSTypeParameterInstantiation | null;
 }
 
@@ -1578,8 +1579,14 @@
 }
 
+export interface TSEnumBody extends BaseNode {
+  type: "TSEnumBody";
+  members: Array<TSEnumMember>;
+}
+
 export interface TSEnumDeclaration extends BaseNode {
   type: "TSEnumDeclaration";
   id: Identifier;
   members: Array<TSEnumMember>;
+  body: TSEnumBody | null;
   const: boolean | null;
   declare: boolean | null;
@@ -1733,5 +1740,5 @@
 export type JSX = JSXAttribute | JSXClosingElement | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXSpreadChild | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXSpreadAttribute | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment;
 export type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;
-export type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter;
+export type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter;
 export type TSTypeElement = TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature;
 export type TSType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSImportType;
@@ -2030,4 +2037,5 @@
 export function tsSatisfiesExpression(expression: Expression, typeAnnotation: TSType): TSSatisfiesExpression;
 export function tsTypeAssertion(typeAnnotation: TSType, expression: Expression): TSTypeAssertion;
+export function tsEnumBody(members: Array<TSEnumMember>): TSEnumBody;
 export function tsEnumDeclaration(id: Identifier, members: Array<TSEnumMember>): TSEnumDeclaration;
 export function tsEnumMember(id: Identifier | StringLiteral, initializer?: Expression | null): TSEnumMember;
@@ -2482,4 +2490,6 @@
 export function isTSEntityName(node: object | null | undefined, opts?: object | null): node is TSEntityName;
 export function assertTSEntityName(node: object | null | undefined, opts?: object | null): void;
+export function isTSEnumBody(node: object | null | undefined, opts?: object | null): node is TSEnumBody;
+export function assertTSEnumBody(node: object | null | undefined, opts?: object | null): void;
 export function isTSEnumDeclaration(node: object | null | undefined, opts?: object | null): node is TSEnumDeclaration;
 export function assertTSEnumDeclaration(node: object | null | undefined, opts?: object | null): void;
Index: imaps-frontend/node_modules/@babel/types/lib/index.d.ts
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/index.d.ts	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/index.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -242,4 +242,5 @@
 declare function assertTSSatisfiesExpression(node: object | null | undefined, opts?: object | null): asserts node is TSSatisfiesExpression;
 declare function assertTSTypeAssertion(node: object | null | undefined, opts?: object | null): asserts node is TSTypeAssertion;
+declare function assertTSEnumBody(node: object | null | undefined, opts?: object | null): asserts node is TSEnumBody;
 declare function assertTSEnumDeclaration(node: object | null | undefined, opts?: object | null): asserts node is TSEnumDeclaration;
 declare function assertTSEnumMember(node: object | null | undefined, opts?: object | null): asserts node is TSEnumMember;
@@ -642,4 +643,6 @@
 declare function tsTypeAssertion(typeAnnotation: TSType, expression: Expression): TSTypeAssertion;
 
+declare function tsEnumBody(members: Array<TSEnumMember>): TSEnumBody;
+
 declare function tsEnumDeclaration(id: Identifier, members: Array<TSEnumMember>): TSEnumDeclaration;
 
@@ -743,57 +746,57 @@
 declare function removeComments<T extends Node>(node: T): T;
 
-declare const STANDARDIZED_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const EXPRESSION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const BINARY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const SCOPABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const BLOCKPARENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const BLOCK_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const STATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const TERMINATORLESS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const COMPLETIONSTATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const CONDITIONAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const LOOP_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const WHILE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const EXPRESSIONWRAPPER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FOR_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FORXSTATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FUNCTION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FUNCTIONPARENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const PUREISH_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const DECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const PATTERNLIKE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const LVAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const TSENTITYNAME_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const LITERAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const IMMUTABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const USERWHITESPACABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const METHOD_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const OBJECTMEMBER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const PROPERTY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const UNARYLIKE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const PATTERN_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const CLASS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const IMPORTOREXPORTDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const EXPORTDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const MODULESPECIFIER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const ACCESSOR_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const PRIVATE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FLOW_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FLOWTYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FLOWBASEANNOTATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FLOWDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const FLOWPREDICATE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const ENUMBODY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const ENUMMEMBER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const JSX_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const MISCELLANEOUS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const TYPESCRIPT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const TSTYPEELEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const TSTYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
-declare const TSBASETYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const STANDARDIZED_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const EXPRESSION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const BINARY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const SCOPABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const BLOCKPARENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const BLOCK_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const STATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TERMINATORLESS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const COMPLETIONSTATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const CONDITIONAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const LOOP_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const WHILE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const EXPRESSIONWRAPPER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FOR_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FORXSTATEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FUNCTION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FUNCTIONPARENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PUREISH_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const DECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PATTERNLIKE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const LVAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSENTITYNAME_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const LITERAL_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const IMMUTABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const USERWHITESPACABLE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const METHOD_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const OBJECTMEMBER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PROPERTY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const UNARYLIKE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PATTERN_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const CLASS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const IMPORTOREXPORTDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const EXPORTDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const MODULESPECIFIER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const ACCESSOR_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const PRIVATE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOW_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWTYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWBASEANNOTATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const FLOWPREDICATE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const ENUMBODY_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const ENUMMEMBER_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const JSX_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const MISCELLANEOUS_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TYPESCRIPT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSTYPEELEMENT_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSTYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const TSBASETYPE_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
 /**
  * @deprecated migrate to IMPORTOREXPORTDECLARATION_TYPES.
  */
-declare const MODULEDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
+declare const MODULEDECLARATION_TYPES: ("AnyTypeAnnotation" | "ArgumentPlaceholder" | "ArrayExpression" | "ArrayPattern" | "ArrayTypeAnnotation" | "ArrowFunctionExpression" | "AssignmentExpression" | "AssignmentPattern" | "AwaitExpression" | "BigIntLiteral" | "BinaryExpression" | "BindExpression" | "BlockStatement" | "BooleanLiteral" | "BooleanLiteralTypeAnnotation" | "BooleanTypeAnnotation" | "BreakStatement" | "CallExpression" | "CatchClause" | "ClassAccessorProperty" | "ClassBody" | "ClassDeclaration" | "ClassExpression" | "ClassImplements" | "ClassMethod" | "ClassPrivateMethod" | "ClassPrivateProperty" | "ClassProperty" | "ConditionalExpression" | "ContinueStatement" | "DebuggerStatement" | "DecimalLiteral" | "DeclareClass" | "DeclareExportAllDeclaration" | "DeclareExportDeclaration" | "DeclareFunction" | "DeclareInterface" | "DeclareModule" | "DeclareModuleExports" | "DeclareOpaqueType" | "DeclareTypeAlias" | "DeclareVariable" | "DeclaredPredicate" | "Decorator" | "Directive" | "DirectiveLiteral" | "DoExpression" | "DoWhileStatement" | "EmptyStatement" | "EmptyTypeAnnotation" | "EnumBooleanBody" | "EnumBooleanMember" | "EnumDeclaration" | "EnumDefaultedMember" | "EnumNumberBody" | "EnumNumberMember" | "EnumStringBody" | "EnumStringMember" | "EnumSymbolBody" | "ExistsTypeAnnotation" | "ExportAllDeclaration" | "ExportDefaultDeclaration" | "ExportDefaultSpecifier" | "ExportNamedDeclaration" | "ExportNamespaceSpecifier" | "ExportSpecifier" | "ExpressionStatement" | "File" | "ForInStatement" | "ForOfStatement" | "ForStatement" | "FunctionDeclaration" | "FunctionExpression" | "FunctionTypeAnnotation" | "FunctionTypeParam" | "GenericTypeAnnotation" | "Identifier" | "IfStatement" | "Import" | "ImportAttribute" | "ImportDeclaration" | "ImportDefaultSpecifier" | "ImportExpression" | "ImportNamespaceSpecifier" | "ImportSpecifier" | "IndexedAccessType" | "InferredPredicate" | "InterfaceDeclaration" | "InterfaceExtends" | "InterfaceTypeAnnotation" | "InterpreterDirective" | "IntersectionTypeAnnotation" | "JSXAttribute" | "JSXClosingElement" | "JSXClosingFragment" | "JSXElement" | "JSXEmptyExpression" | "JSXExpressionContainer" | "JSXFragment" | "JSXIdentifier" | "JSXMemberExpression" | "JSXNamespacedName" | "JSXOpeningElement" | "JSXOpeningFragment" | "JSXSpreadAttribute" | "JSXSpreadChild" | "JSXText" | "LabeledStatement" | "LogicalExpression" | "MemberExpression" | "MetaProperty" | "MixedTypeAnnotation" | "ModuleExpression" | "NewExpression" | "Noop" | "NullLiteral" | "NullLiteralTypeAnnotation" | "NullableTypeAnnotation" | "NumberLiteral" | "NumberLiteralTypeAnnotation" | "NumberTypeAnnotation" | "NumericLiteral" | "ObjectExpression" | "ObjectMethod" | "ObjectPattern" | "ObjectProperty" | "ObjectTypeAnnotation" | "ObjectTypeCallProperty" | "ObjectTypeIndexer" | "ObjectTypeInternalSlot" | "ObjectTypeProperty" | "ObjectTypeSpreadProperty" | "OpaqueType" | "OptionalCallExpression" | "OptionalIndexedAccessType" | "OptionalMemberExpression" | "ParenthesizedExpression" | "PipelineBareFunction" | "PipelinePrimaryTopicReference" | "PipelineTopicExpression" | "Placeholder" | "PrivateName" | "Program" | "QualifiedTypeIdentifier" | "RecordExpression" | "RegExpLiteral" | "RegexLiteral" | "RestElement" | "RestProperty" | "ReturnStatement" | "SequenceExpression" | "SpreadElement" | "SpreadProperty" | "StaticBlock" | "StringLiteral" | "StringLiteralTypeAnnotation" | "StringTypeAnnotation" | "Super" | "SwitchCase" | "SwitchStatement" | "SymbolTypeAnnotation" | "TSAnyKeyword" | "TSArrayType" | "TSAsExpression" | "TSBigIntKeyword" | "TSBooleanKeyword" | "TSCallSignatureDeclaration" | "TSConditionalType" | "TSConstructSignatureDeclaration" | "TSConstructorType" | "TSDeclareFunction" | "TSDeclareMethod" | "TSEnumBody" | "TSEnumDeclaration" | "TSEnumMember" | "TSExportAssignment" | "TSExpressionWithTypeArguments" | "TSExternalModuleReference" | "TSFunctionType" | "TSImportEqualsDeclaration" | "TSImportType" | "TSIndexSignature" | "TSIndexedAccessType" | "TSInferType" | "TSInstantiationExpression" | "TSInterfaceBody" | "TSInterfaceDeclaration" | "TSIntersectionType" | "TSIntrinsicKeyword" | "TSLiteralType" | "TSMappedType" | "TSMethodSignature" | "TSModuleBlock" | "TSModuleDeclaration" | "TSNamedTupleMember" | "TSNamespaceExportDeclaration" | "TSNeverKeyword" | "TSNonNullExpression" | "TSNullKeyword" | "TSNumberKeyword" | "TSObjectKeyword" | "TSOptionalType" | "TSParameterProperty" | "TSParenthesizedType" | "TSPropertySignature" | "TSQualifiedName" | "TSRestType" | "TSSatisfiesExpression" | "TSStringKeyword" | "TSSymbolKeyword" | "TSThisType" | "TSTupleType" | "TSTypeAliasDeclaration" | "TSTypeAnnotation" | "TSTypeAssertion" | "TSTypeLiteral" | "TSTypeOperator" | "TSTypeParameter" | "TSTypeParameterDeclaration" | "TSTypeParameterInstantiation" | "TSTypePredicate" | "TSTypeQuery" | "TSTypeReference" | "TSUndefinedKeyword" | "TSUnionType" | "TSUnknownKeyword" | "TSVoidKeyword" | "TaggedTemplateExpression" | "TemplateElement" | "TemplateLiteral" | "ThisExpression" | "ThisTypeAnnotation" | "ThrowStatement" | "TopicReference" | "TryStatement" | "TupleExpression" | "TupleTypeAnnotation" | "TypeAlias" | "TypeAnnotation" | "TypeCastExpression" | "TypeParameter" | "TypeParameterDeclaration" | "TypeParameterInstantiation" | "TypeofTypeAnnotation" | "UnaryExpression" | "UnionTypeAnnotation" | "UpdateExpression" | "V8IntrinsicIdentifier" | "VariableDeclaration" | "VariableDeclarator" | "Variance" | "VoidTypeAnnotation" | "WhileStatement" | "WithStatement" | "YieldExpression" | keyof Aliases)[];
 
 declare const STATEMENT_OR_BLOCK_KEYS: string[];
@@ -1357,4 +1360,5 @@
 declare function isTSSatisfiesExpression(node: Node | null | undefined, opts?: Opts<TSSatisfiesExpression> | null): node is TSSatisfiesExpression;
 declare function isTSTypeAssertion(node: Node | null | undefined, opts?: Opts<TSTypeAssertion> | null): node is TSTypeAssertion;
+declare function isTSEnumBody(node: Node | null | undefined, opts?: Opts<TSEnumBody> | null): node is TSEnumBody;
 declare function isTSEnumDeclaration(node: Node | null | undefined, opts?: Opts<TSEnumDeclaration> | null): node is TSEnumDeclaration;
 declare function isTSEnumMember(node: Node | null | undefined, opts?: Opts<TSEnumMember> | null): node is TSEnumMember;
@@ -1478,5 +1482,5 @@
 }
 type CommentTypeShorthand = "leading" | "inner" | "trailing";
-type Node = AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | BinaryExpression | BindExpression | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | ExpressionStatement | File | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LabeledStatement | LogicalExpression | MemberExpression | MetaProperty | MixedTypeAnnotation | ModuleExpression | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | PrivateName | Program | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | SequenceExpression | SpreadElement | SpreadProperty | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeofTypeAnnotation | UnaryExpression | UnionTypeAnnotation | UpdateExpression | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | WhileStatement | WithStatement | YieldExpression;
+type Node = AnyTypeAnnotation | ArgumentPlaceholder | ArrayExpression | ArrayPattern | ArrayTypeAnnotation | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | BinaryExpression | BindExpression | BlockStatement | BooleanLiteral | BooleanLiteralTypeAnnotation | BooleanTypeAnnotation | BreakStatement | CallExpression | CatchClause | ClassAccessorProperty | ClassBody | ClassDeclaration | ClassExpression | ClassImplements | ClassMethod | ClassPrivateMethod | ClassPrivateProperty | ClassProperty | ConditionalExpression | ContinueStatement | DebuggerStatement | DecimalLiteral | DeclareClass | DeclareExportAllDeclaration | DeclareExportDeclaration | DeclareFunction | DeclareInterface | DeclareModule | DeclareModuleExports | DeclareOpaqueType | DeclareTypeAlias | DeclareVariable | DeclaredPredicate | Decorator | Directive | DirectiveLiteral | DoExpression | DoWhileStatement | EmptyStatement | EmptyTypeAnnotation | EnumBooleanBody | EnumBooleanMember | EnumDeclaration | EnumDefaultedMember | EnumNumberBody | EnumNumberMember | EnumStringBody | EnumStringMember | EnumSymbolBody | ExistsTypeAnnotation | ExportAllDeclaration | ExportDefaultDeclaration | ExportDefaultSpecifier | ExportNamedDeclaration | ExportNamespaceSpecifier | ExportSpecifier | ExpressionStatement | File | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | FunctionTypeAnnotation | FunctionTypeParam | GenericTypeAnnotation | Identifier | IfStatement | Import | ImportAttribute | ImportDeclaration | ImportDefaultSpecifier | ImportExpression | ImportNamespaceSpecifier | ImportSpecifier | IndexedAccessType | InferredPredicate | InterfaceDeclaration | InterfaceExtends | InterfaceTypeAnnotation | InterpreterDirective | IntersectionTypeAnnotation | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText | LabeledStatement | LogicalExpression | MemberExpression | MetaProperty | MixedTypeAnnotation | ModuleExpression | NewExpression | Noop | NullLiteral | NullLiteralTypeAnnotation | NullableTypeAnnotation | NumberLiteral | NumberLiteralTypeAnnotation | NumberTypeAnnotation | NumericLiteral | ObjectExpression | ObjectMethod | ObjectPattern | ObjectProperty | ObjectTypeAnnotation | ObjectTypeCallProperty | ObjectTypeIndexer | ObjectTypeInternalSlot | ObjectTypeProperty | ObjectTypeSpreadProperty | OpaqueType | OptionalCallExpression | OptionalIndexedAccessType | OptionalMemberExpression | ParenthesizedExpression | PipelineBareFunction | PipelinePrimaryTopicReference | PipelineTopicExpression | Placeholder | PrivateName | Program | QualifiedTypeIdentifier | RecordExpression | RegExpLiteral | RegexLiteral | RestElement | RestProperty | ReturnStatement | SequenceExpression | SpreadElement | SpreadProperty | StaticBlock | StringLiteral | StringLiteralTypeAnnotation | StringTypeAnnotation | Super | SwitchCase | SwitchStatement | SymbolTypeAnnotation | TSAnyKeyword | TSArrayType | TSAsExpression | TSBigIntKeyword | TSBooleanKeyword | TSCallSignatureDeclaration | TSConditionalType | TSConstructSignatureDeclaration | TSConstructorType | TSDeclareFunction | TSDeclareMethod | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSExportAssignment | TSExpressionWithTypeArguments | TSExternalModuleReference | TSFunctionType | TSImportEqualsDeclaration | TSImportType | TSIndexSignature | TSIndexedAccessType | TSInferType | TSInstantiationExpression | TSInterfaceBody | TSInterfaceDeclaration | TSIntersectionType | TSIntrinsicKeyword | TSLiteralType | TSMappedType | TSMethodSignature | TSModuleBlock | TSModuleDeclaration | TSNamedTupleMember | TSNamespaceExportDeclaration | TSNeverKeyword | TSNonNullExpression | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSOptionalType | TSParameterProperty | TSParenthesizedType | TSPropertySignature | TSQualifiedName | TSRestType | TSSatisfiesExpression | TSStringKeyword | TSSymbolKeyword | TSThisType | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeLiteral | TSTypeOperator | TSTypeParameter | TSTypeParameterDeclaration | TSTypeParameterInstantiation | TSTypePredicate | TSTypeQuery | TSTypeReference | TSUndefinedKeyword | TSUnionType | TSUnknownKeyword | TSVoidKeyword | TaggedTemplateExpression | TemplateElement | TemplateLiteral | ThisExpression | ThisTypeAnnotation | ThrowStatement | TopicReference | TryStatement | TupleExpression | TupleTypeAnnotation | TypeAlias | TypeAnnotation | TypeCastExpression | TypeParameter | TypeParameterDeclaration | TypeParameterInstantiation | TypeofTypeAnnotation | UnaryExpression | UnionTypeAnnotation | UpdateExpression | V8IntrinsicIdentifier | VariableDeclaration | VariableDeclarator | Variance | VoidTypeAnnotation | WhileStatement | WithStatement | YieldExpression;
 interface ArrayExpression extends BaseNode {
     type: "ArrayExpression";
@@ -2458,5 +2462,6 @@
     attributes: Array<JSXAttribute | JSXSpreadAttribute>;
     selfClosing: boolean;
-    typeParameters?: TypeParameterInstantiation | TSTypeParameterInstantiation | null;
+    typeArguments?: TypeParameterInstantiation | null;
+    typeParameters?: TSTypeParameterInstantiation | null;
 }
 interface JSXSpreadAttribute extends BaseNode {
@@ -2816,8 +2821,13 @@
     expression: Expression;
 }
+interface TSEnumBody extends BaseNode {
+    type: "TSEnumBody";
+    members: Array<TSEnumMember>;
+}
 interface TSEnumDeclaration extends BaseNode {
     type: "TSEnumDeclaration";
     id: Identifier;
     members: Array<TSEnumMember>;
+    body?: TSEnumBody | null;
     const?: boolean | null;
     declare?: boolean | null;
@@ -2937,5 +2947,5 @@
 type JSX = JSXAttribute | JSXClosingElement | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXSpreadChild | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXSpreadAttribute | JSXText | JSXFragment | JSXOpeningFragment | JSXClosingFragment;
 type Miscellaneous = Noop | Placeholder | V8IntrinsicIdentifier;
-type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter;
+type TypeScript = TSParameterProperty | TSDeclareFunction | TSDeclareMethod | TSQualifiedName | TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature | TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSNamedTupleMember | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSInterfaceDeclaration | TSInterfaceBody | TSTypeAliasDeclaration | TSInstantiationExpression | TSAsExpression | TSSatisfiesExpression | TSTypeAssertion | TSEnumBody | TSEnumDeclaration | TSEnumMember | TSModuleDeclaration | TSModuleBlock | TSImportType | TSImportEqualsDeclaration | TSExternalModuleReference | TSNonNullExpression | TSExportAssignment | TSNamespaceExportDeclaration | TSTypeAnnotation | TSTypeParameterInstantiation | TSTypeParameterDeclaration | TSTypeParameter;
 type TSTypeElement = TSCallSignatureDeclaration | TSConstructSignatureDeclaration | TSPropertySignature | TSMethodSignature | TSIndexSignature;
 type TSType = TSAnyKeyword | TSBooleanKeyword | TSBigIntKeyword | TSIntrinsicKeyword | TSNeverKeyword | TSNullKeyword | TSNumberKeyword | TSObjectKeyword | TSStringKeyword | TSSymbolKeyword | TSUndefinedKeyword | TSUnknownKeyword | TSVoidKeyword | TSThisType | TSFunctionType | TSConstructorType | TSTypeReference | TSTypePredicate | TSTypeQuery | TSTypeLiteral | TSArrayType | TSTupleType | TSOptionalType | TSRestType | TSUnionType | TSIntersectionType | TSConditionalType | TSInferType | TSParenthesizedType | TSTypeOperator | TSIndexedAccessType | TSMappedType | TSLiteralType | TSExpressionWithTypeArguments | TSImportType;
@@ -3170,6 +3180,7 @@
     TSDeclareFunction: BlockStatement | DoWhileStatement | ExportDefaultDeclaration | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
     TSDeclareMethod: ClassBody;
+    TSEnumBody: TSEnumDeclaration;
     TSEnumDeclaration: BlockStatement | DoWhileStatement | ExportNamedDeclaration | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
-    TSEnumMember: TSEnumDeclaration;
+    TSEnumMember: TSEnumBody | TSEnumDeclaration;
     TSExportAssignment: BlockStatement | DoWhileStatement | ForInStatement | ForOfStatement | ForStatement | IfStatement | LabeledStatement | Program | StaticBlock | SwitchCase | TSModuleBlock | WhileStatement | WithStatement;
     TSExpressionWithTypeArguments: ClassDeclaration | ClassExpression | TSArrayType | TSAsExpression | TSConditionalType | TSIndexedAccessType | TSInterfaceDeclaration | TSIntersectionType | TSMappedType | TSNamedTupleMember | TSOptionalType | TSParenthesizedType | TSRestType | TSSatisfiesExpression | TSTupleType | TSTypeAliasDeclaration | TSTypeAnnotation | TSTypeAssertion | TSTypeOperator | TSTypeParameter | TSTypeParameterInstantiation | TSUnionType | TemplateLiteral;
@@ -3262,3 +3273,3 @@
 };
 
-export { ACCESSOR_TYPES, ALIAS_KEYS, ASSIGNMENT_OPERATORS, Accessor, Aliases, AnyTypeAnnotation, ArgumentPlaceholder, ArrayExpression, ArrayPattern, ArrayTypeAnnotation, ArrowFunctionExpression, AssignmentExpression, AssignmentPattern, AwaitExpression, BINARY_OPERATORS, BINARY_TYPES, BLOCKPARENT_TYPES, BLOCK_SCOPED_SYMBOL, BLOCK_TYPES, BOOLEAN_BINARY_OPERATORS, BOOLEAN_NUMBER_BINARY_OPERATORS, BOOLEAN_UNARY_OPERATORS, BUILDER_KEYS, BigIntLiteral, Binary, BinaryExpression, BindExpression, Block, BlockParent, BlockStatement, BooleanLiteral, BooleanLiteralTypeAnnotation, BooleanTypeAnnotation, BreakStatement, CLASS_TYPES, COMMENT_KEYS, COMPARISON_BINARY_OPERATORS, COMPLETIONSTATEMENT_TYPES, CONDITIONAL_TYPES, CallExpression, CatchClause, Class, ClassAccessorProperty, ClassBody, ClassDeclaration, ClassExpression, ClassImplements, ClassMethod, ClassPrivateMethod, ClassPrivateProperty, ClassProperty, Comment, CommentBlock, CommentLine, CommentTypeShorthand, CompletionStatement, Conditional, ConditionalExpression, ContinueStatement, DECLARATION_TYPES, DEPRECATED_ALIASES, DEPRECATED_KEYS, DebuggerStatement, DecimalLiteral, Declaration, DeclareClass, DeclareExportAllDeclaration, DeclareExportDeclaration, DeclareFunction, DeclareInterface, DeclareModule, DeclareModuleExports, DeclareOpaqueType, DeclareTypeAlias, DeclareVariable, DeclaredPredicate, Decorator, DeprecatedAliases, Directive, DirectiveLiteral, DoExpression, DoWhileStatement, ENUMBODY_TYPES, ENUMMEMBER_TYPES, EQUALITY_BINARY_OPERATORS, EXPORTDECLARATION_TYPES, EXPRESSIONWRAPPER_TYPES, EXPRESSION_TYPES, EmptyStatement, EmptyTypeAnnotation, EnumBody, EnumBooleanBody, EnumBooleanMember, EnumDeclaration, EnumDefaultedMember, EnumMember, EnumNumberBody, EnumNumberMember, EnumStringBody, EnumStringMember, EnumSymbolBody, ExistsTypeAnnotation, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportDefaultSpecifier, ExportNamedDeclaration, ExportNamespaceSpecifier, ExportSpecifier, Expression, ExpressionStatement, ExpressionWrapper, FLATTENABLE_KEYS, FLIPPED_ALIAS_KEYS, FLOWBASEANNOTATION_TYPES, FLOWDECLARATION_TYPES, FLOWPREDICATE_TYPES, FLOWTYPE_TYPES, FLOW_TYPES, FORXSTATEMENT_TYPES, FOR_INIT_KEYS, FOR_TYPES, FUNCTIONPARENT_TYPES, FUNCTION_TYPES, FieldOptions, File, Flow, FlowBaseAnnotation, FlowDeclaration, FlowPredicate, FlowType, For, ForInStatement, ForOfStatement, ForStatement, ForXStatement, Function, FunctionDeclaration, FunctionExpression, FunctionParent, FunctionTypeAnnotation, FunctionTypeParam, GenericTypeAnnotation, IMMUTABLE_TYPES, IMPORTOREXPORTDECLARATION_TYPES, INHERIT_KEYS, Identifier, IfStatement, Immutable, Import, ImportAttribute, ImportDeclaration, ImportDefaultSpecifier, ImportExpression, ImportNamespaceSpecifier, ImportOrExportDeclaration, ImportSpecifier, IndexedAccessType, InferredPredicate, InterfaceDeclaration, InterfaceExtends, InterfaceTypeAnnotation, InterpreterDirective, IntersectionTypeAnnotation, JSX, JSXAttribute, JSXClosingElement, JSXClosingFragment, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXFragment, JSXIdentifier, JSXMemberExpression, JSXNamespacedName, JSXOpeningElement, JSXOpeningFragment, JSXSpreadAttribute, JSXSpreadChild, JSXText, JSX_TYPES, LITERAL_TYPES, LOGICAL_OPERATORS, LOOP_TYPES, LVAL_TYPES, LVal, LabeledStatement, Literal, LogicalExpression, Loop, METHOD_TYPES, MISCELLANEOUS_TYPES, MODULEDECLARATION_TYPES, MODULESPECIFIER_TYPES, MemberExpression, MetaProperty, Method, Miscellaneous, MixedTypeAnnotation, ModuleDeclaration, ModuleExpression, ModuleSpecifier, NODE_FIELDS, NODE_PARENT_VALIDATIONS, NOT_LOCAL_BINDING, NUMBER_BINARY_OPERATORS, NUMBER_UNARY_OPERATORS, NewExpression, Node, Noop, NullLiteral, NullLiteralTypeAnnotation, NullableTypeAnnotation, NumberLiteral, NumberLiteralTypeAnnotation, NumberTypeAnnotation, NumericLiteral, OBJECTMEMBER_TYPES, ObjectExpression, ObjectMember, ObjectMethod, ObjectPattern, ObjectProperty, ObjectTypeAnnotation, ObjectTypeCallProperty, ObjectTypeIndexer, ObjectTypeInternalSlot, ObjectTypeProperty, ObjectTypeSpreadProperty, OpaqueType, OptionalCallExpression, OptionalIndexedAccessType, OptionalMemberExpression, PATTERNLIKE_TYPES, PATTERN_TYPES, PLACEHOLDERS, PLACEHOLDERS_ALIAS, PLACEHOLDERS_FLIPPED_ALIAS, PRIVATE_TYPES, PROPERTY_TYPES, PUREISH_TYPES, ParentMaps, ParenthesizedExpression, Pattern, PatternLike, PipelineBareFunction, PipelinePrimaryTopicReference, PipelineTopicExpression, Placeholder, Private, PrivateName, Program, Property, Pureish, QualifiedTypeIdentifier, RecordExpression, RegExpLiteral, RegexLiteral, Options as RemovePropertiesOptions, RestElement, RestProperty, ReturnStatement, SCOPABLE_TYPES, STANDARDIZED_TYPES, STATEMENT_OR_BLOCK_KEYS, STATEMENT_TYPES, STRING_UNARY_OPERATORS, Scopable, SequenceExpression, SourceLocation, SpreadElement, SpreadProperty, Standardized, Statement, StaticBlock, StringLiteral, StringLiteralTypeAnnotation, StringTypeAnnotation, Super, SwitchCase, SwitchStatement, SymbolTypeAnnotation, TERMINATORLESS_TYPES, TSAnyKeyword, TSArrayType, TSAsExpression, TSBASETYPE_TYPES, TSBaseType, TSBigIntKeyword, TSBooleanKeyword, TSCallSignatureDeclaration, TSConditionalType, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSDeclareMethod, TSENTITYNAME_TYPES, TSEntityName, TSEnumDeclaration, TSEnumMember, TSExportAssignment, TSExpressionWithTypeArguments, TSExternalModuleReference, TSFunctionType, TSImportEqualsDeclaration, TSImportType, TSIndexSignature, TSIndexedAccessType, TSInferType, TSInstantiationExpression, TSInterfaceBody, TSInterfaceDeclaration, TSIntersectionType, TSIntrinsicKeyword, TSLiteralType, TSMappedType, TSMethodSignature, TSModuleBlock, TSModuleDeclaration, TSNamedTupleMember, TSNamespaceExportDeclaration, TSNeverKeyword, TSNonNullExpression, TSNullKeyword, TSNumberKeyword, TSObjectKeyword, TSOptionalType, TSParameterProperty, TSParenthesizedType, TSPropertySignature, TSQualifiedName, TSRestType, TSSatisfiesExpression, TSStringKeyword, TSSymbolKeyword, TSTYPEELEMENT_TYPES, TSTYPE_TYPES, TSThisType, TSTupleType, TSType, TSTypeAliasDeclaration, TSTypeAnnotation, TSTypeAssertion, TSTypeElement, TSTypeLiteral, TSTypeOperator, TSTypeParameter, TSTypeParameterDeclaration, TSTypeParameterInstantiation, TSTypePredicate, TSTypeQuery, TSTypeReference, TSUndefinedKeyword, TSUnionType, TSUnknownKeyword, TSVoidKeyword, TYPES, TYPESCRIPT_TYPES, TaggedTemplateExpression, TemplateElement, TemplateLiteral, Terminatorless, ThisExpression, ThisTypeAnnotation, ThrowStatement, TopicReference, TraversalAncestors, TraversalHandler, TraversalHandlers, TryStatement, TupleExpression, TupleTypeAnnotation, TypeAlias, TypeAnnotation, TypeCastExpression, TypeParameter, TypeParameterDeclaration, TypeParameterInstantiation, TypeScript, TypeofTypeAnnotation, UNARYLIKE_TYPES, UNARY_OPERATORS, UPDATE_OPERATORS, USERWHITESPACABLE_TYPES, UnaryExpression, UnaryLike, UnionTypeAnnotation, UpdateExpression, UserWhitespacable, V8IntrinsicIdentifier, VISITOR_KEYS, VariableDeclaration, VariableDeclarator, Variance, VoidTypeAnnotation, WHILE_TYPES, While, WhileStatement, WithStatement, YieldExpression, deprecationWarning as __internal__deprecationWarning, addComment, addComments, anyTypeAnnotation, appendToMemberExpression, argumentPlaceholder, arrayExpression, arrayPattern, arrayTypeAnnotation, arrowFunctionExpression, assertAccessor, assertAnyTypeAnnotation, assertArgumentPlaceholder, assertArrayExpression, assertArrayPattern, assertArrayTypeAnnotation, assertArrowFunctionExpression, assertAssignmentExpression, assertAssignmentPattern, assertAwaitExpression, assertBigIntLiteral, assertBinary, assertBinaryExpression, assertBindExpression, assertBlock, assertBlockParent, assertBlockStatement, assertBooleanLiteral, assertBooleanLiteralTypeAnnotation, assertBooleanTypeAnnotation, assertBreakStatement, assertCallExpression, assertCatchClause, assertClass, assertClassAccessorProperty, assertClassBody, assertClassDeclaration, assertClassExpression, assertClassImplements, assertClassMethod, assertClassPrivateMethod, assertClassPrivateProperty, assertClassProperty, assertCompletionStatement, assertConditional, assertConditionalExpression, assertContinueStatement, assertDebuggerStatement, assertDecimalLiteral, assertDeclaration, assertDeclareClass, assertDeclareExportAllDeclaration, assertDeclareExportDeclaration, assertDeclareFunction, assertDeclareInterface, assertDeclareModule, assertDeclareModuleExports, assertDeclareOpaqueType, assertDeclareTypeAlias, assertDeclareVariable, assertDeclaredPredicate, assertDecorator, assertDirective, assertDirectiveLiteral, assertDoExpression, assertDoWhileStatement, assertEmptyStatement, assertEmptyTypeAnnotation, assertEnumBody, assertEnumBooleanBody, assertEnumBooleanMember, assertEnumDeclaration, assertEnumDefaultedMember, assertEnumMember, assertEnumNumberBody, assertEnumNumberMember, assertEnumStringBody, assertEnumStringMember, assertEnumSymbolBody, assertExistsTypeAnnotation, assertExportAllDeclaration, assertExportDeclaration, assertExportDefaultDeclaration, assertExportDefaultSpecifier, assertExportNamedDeclaration, assertExportNamespaceSpecifier, assertExportSpecifier, assertExpression, assertExpressionStatement, assertExpressionWrapper, assertFile, assertFlow, assertFlowBaseAnnotation, assertFlowDeclaration, assertFlowPredicate, assertFlowType, assertFor, assertForInStatement, assertForOfStatement, assertForStatement, assertForXStatement, assertFunction, assertFunctionDeclaration, assertFunctionExpression, assertFunctionParent, assertFunctionTypeAnnotation, assertFunctionTypeParam, assertGenericTypeAnnotation, assertIdentifier, assertIfStatement, assertImmutable, assertImport, assertImportAttribute, assertImportDeclaration, assertImportDefaultSpecifier, assertImportExpression, assertImportNamespaceSpecifier, assertImportOrExportDeclaration, assertImportSpecifier, assertIndexedAccessType, assertInferredPredicate, assertInterfaceDeclaration, assertInterfaceExtends, assertInterfaceTypeAnnotation, assertInterpreterDirective, assertIntersectionTypeAnnotation, assertJSX, assertJSXAttribute, assertJSXClosingElement, assertJSXClosingFragment, assertJSXElement, assertJSXEmptyExpression, assertJSXExpressionContainer, assertJSXFragment, assertJSXIdentifier, assertJSXMemberExpression, assertJSXNamespacedName, assertJSXOpeningElement, assertJSXOpeningFragment, assertJSXSpreadAttribute, assertJSXSpreadChild, assertJSXText, assertLVal, assertLabeledStatement, assertLiteral, assertLogicalExpression, assertLoop, assertMemberExpression, assertMetaProperty, assertMethod, assertMiscellaneous, assertMixedTypeAnnotation, assertModuleDeclaration, assertModuleExpression, assertModuleSpecifier, assertNewExpression, assertNode, assertNoop, assertNullLiteral, assertNullLiteralTypeAnnotation, assertNullableTypeAnnotation, assertNumberLiteral, assertNumberLiteralTypeAnnotation, assertNumberTypeAnnotation, assertNumericLiteral, assertObjectExpression, assertObjectMember, assertObjectMethod, assertObjectPattern, assertObjectProperty, assertObjectTypeAnnotation, assertObjectTypeCallProperty, assertObjectTypeIndexer, assertObjectTypeInternalSlot, assertObjectTypeProperty, assertObjectTypeSpreadProperty, assertOpaqueType, assertOptionalCallExpression, assertOptionalIndexedAccessType, assertOptionalMemberExpression, assertParenthesizedExpression, assertPattern, assertPatternLike, assertPipelineBareFunction, assertPipelinePrimaryTopicReference, assertPipelineTopicExpression, assertPlaceholder, assertPrivate, assertPrivateName, assertProgram, assertProperty, assertPureish, assertQualifiedTypeIdentifier, assertRecordExpression, assertRegExpLiteral, assertRegexLiteral, assertRestElement, assertRestProperty, assertReturnStatement, assertScopable, assertSequenceExpression, assertSpreadElement, assertSpreadProperty, assertStandardized, assertStatement, assertStaticBlock, assertStringLiteral, assertStringLiteralTypeAnnotation, assertStringTypeAnnotation, assertSuper, assertSwitchCase, assertSwitchStatement, assertSymbolTypeAnnotation, assertTSAnyKeyword, assertTSArrayType, assertTSAsExpression, assertTSBaseType, assertTSBigIntKeyword, assertTSBooleanKeyword, assertTSCallSignatureDeclaration, assertTSConditionalType, assertTSConstructSignatureDeclaration, assertTSConstructorType, assertTSDeclareFunction, assertTSDeclareMethod, assertTSEntityName, assertTSEnumDeclaration, assertTSEnumMember, assertTSExportAssignment, assertTSExpressionWithTypeArguments, assertTSExternalModuleReference, assertTSFunctionType, assertTSImportEqualsDeclaration, assertTSImportType, assertTSIndexSignature, assertTSIndexedAccessType, assertTSInferType, assertTSInstantiationExpression, assertTSInterfaceBody, assertTSInterfaceDeclaration, assertTSIntersectionType, assertTSIntrinsicKeyword, assertTSLiteralType, assertTSMappedType, assertTSMethodSignature, assertTSModuleBlock, assertTSModuleDeclaration, assertTSNamedTupleMember, assertTSNamespaceExportDeclaration, assertTSNeverKeyword, assertTSNonNullExpression, assertTSNullKeyword, assertTSNumberKeyword, assertTSObjectKeyword, assertTSOptionalType, assertTSParameterProperty, assertTSParenthesizedType, assertTSPropertySignature, assertTSQualifiedName, assertTSRestType, assertTSSatisfiesExpression, assertTSStringKeyword, assertTSSymbolKeyword, assertTSThisType, assertTSTupleType, assertTSType, assertTSTypeAliasDeclaration, assertTSTypeAnnotation, assertTSTypeAssertion, assertTSTypeElement, assertTSTypeLiteral, assertTSTypeOperator, assertTSTypeParameter, assertTSTypeParameterDeclaration, assertTSTypeParameterInstantiation, assertTSTypePredicate, assertTSTypeQuery, assertTSTypeReference, assertTSUndefinedKeyword, assertTSUnionType, assertTSUnknownKeyword, assertTSVoidKeyword, assertTaggedTemplateExpression, assertTemplateElement, assertTemplateLiteral, assertTerminatorless, assertThisExpression, assertThisTypeAnnotation, assertThrowStatement, assertTopicReference, assertTryStatement, assertTupleExpression, assertTupleTypeAnnotation, assertTypeAlias, assertTypeAnnotation, assertTypeCastExpression, assertTypeParameter, assertTypeParameterDeclaration, assertTypeParameterInstantiation, assertTypeScript, assertTypeofTypeAnnotation, assertUnaryExpression, assertUnaryLike, assertUnionTypeAnnotation, assertUpdateExpression, assertUserWhitespacable, assertV8IntrinsicIdentifier, assertVariableDeclaration, assertVariableDeclarator, assertVariance, assertVoidTypeAnnotation, assertWhile, assertWhileStatement, assertWithStatement, assertYieldExpression, assignmentExpression, assignmentPattern, awaitExpression, bigIntLiteral, binaryExpression, bindExpression, blockStatement, booleanLiteral, booleanLiteralTypeAnnotation, booleanTypeAnnotation, breakStatement, buildMatchMemberExpression, buildUndefinedNode, callExpression, catchClause, classAccessorProperty, classBody, classDeclaration, classExpression, classImplements, classMethod, classPrivateMethod, classPrivateProperty, classProperty, clone, cloneDeep, cloneDeepWithoutLoc, cloneNode, cloneWithoutLoc, conditionalExpression, continueStatement, createFlowUnionType, createTSUnionType, _default$4 as createTypeAnnotationBasedOnTypeof, createFlowUnionType as createUnionTypeAnnotation, debuggerStatement, decimalLiteral, declareClass, declareExportAllDeclaration, declareExportDeclaration, declareFunction, declareInterface, declareModule, declareModuleExports, declareOpaqueType, declareTypeAlias, declareVariable, declaredPredicate, decorator, directive, directiveLiteral, doExpression, doWhileStatement, emptyStatement, emptyTypeAnnotation, ensureBlock, enumBooleanBody, enumBooleanMember, enumDeclaration, enumDefaultedMember, enumNumberBody, enumNumberMember, enumStringBody, enumStringMember, enumSymbolBody, existsTypeAnnotation, exportAllDeclaration, exportDefaultDeclaration, exportDefaultSpecifier, exportNamedDeclaration, exportNamespaceSpecifier, exportSpecifier, expressionStatement, file, forInStatement, forOfStatement, forStatement, functionDeclaration, functionExpression, functionTypeAnnotation, functionTypeParam, genericTypeAnnotation, getAssignmentIdentifiers, getBindingIdentifiers, getFunctionName, _default as getOuterBindingIdentifiers, identifier, ifStatement, _import as import, importAttribute, importDeclaration, importDefaultSpecifier, importExpression, importNamespaceSpecifier, importSpecifier, indexedAccessType, inferredPredicate, inheritInnerComments, inheritLeadingComments, inheritTrailingComments, inherits, inheritsComments, interfaceDeclaration, interfaceExtends, interfaceTypeAnnotation, interpreterDirective, intersectionTypeAnnotation, is, isAccessor, isAnyTypeAnnotation, isArgumentPlaceholder, isArrayExpression, isArrayPattern, isArrayTypeAnnotation, isArrowFunctionExpression, isAssignmentExpression, isAssignmentPattern, isAwaitExpression, isBigIntLiteral, isBinary, isBinaryExpression, isBindExpression, isBinding, isBlock, isBlockParent, isBlockScoped, isBlockStatement, isBooleanLiteral, isBooleanLiteralTypeAnnotation, isBooleanTypeAnnotation, isBreakStatement, isCallExpression, isCatchClause, isClass, isClassAccessorProperty, isClassBody, isClassDeclaration, isClassExpression, isClassImplements, isClassMethod, isClassPrivateMethod, isClassPrivateProperty, isClassProperty, isCompletionStatement, isConditional, isConditionalExpression, isContinueStatement, isDebuggerStatement, isDecimalLiteral, isDeclaration, isDeclareClass, isDeclareExportAllDeclaration, isDeclareExportDeclaration, isDeclareFunction, isDeclareInterface, isDeclareModule, isDeclareModuleExports, isDeclareOpaqueType, isDeclareTypeAlias, isDeclareVariable, isDeclaredPredicate, isDecorator, isDirective, isDirectiveLiteral, isDoExpression, isDoWhileStatement, isEmptyStatement, isEmptyTypeAnnotation, isEnumBody, isEnumBooleanBody, isEnumBooleanMember, isEnumDeclaration, isEnumDefaultedMember, isEnumMember, isEnumNumberBody, isEnumNumberMember, isEnumStringBody, isEnumStringMember, isEnumSymbolBody, isExistsTypeAnnotation, isExportAllDeclaration, isExportDeclaration, isExportDefaultDeclaration, isExportDefaultSpecifier, isExportNamedDeclaration, isExportNamespaceSpecifier, isExportSpecifier, isExpression, isExpressionStatement, isExpressionWrapper, isFile, isFlow, isFlowBaseAnnotation, isFlowDeclaration, isFlowPredicate, isFlowType, isFor, isForInStatement, isForOfStatement, isForStatement, isForXStatement, isFunction, isFunctionDeclaration, isFunctionExpression, isFunctionParent, isFunctionTypeAnnotation, isFunctionTypeParam, isGenericTypeAnnotation, isIdentifier, isIfStatement, isImmutable, isImport, isImportAttribute, isImportDeclaration, isImportDefaultSpecifier, isImportExpression, isImportNamespaceSpecifier, isImportOrExportDeclaration, isImportSpecifier, isIndexedAccessType, isInferredPredicate, isInterfaceDeclaration, isInterfaceExtends, isInterfaceTypeAnnotation, isInterpreterDirective, isIntersectionTypeAnnotation, isJSX, isJSXAttribute, isJSXClosingElement, isJSXClosingFragment, isJSXElement, isJSXEmptyExpression, isJSXExpressionContainer, isJSXFragment, isJSXIdentifier, isJSXMemberExpression, isJSXNamespacedName, isJSXOpeningElement, isJSXOpeningFragment, isJSXSpreadAttribute, isJSXSpreadChild, isJSXText, isLVal, isLabeledStatement, isLet, isLiteral, isLogicalExpression, isLoop, isMemberExpression, isMetaProperty, isMethod, isMiscellaneous, isMixedTypeAnnotation, isModuleDeclaration, isModuleExpression, isModuleSpecifier, isNewExpression, isNode, isNodesEquivalent, isNoop, isNullLiteral, isNullLiteralTypeAnnotation, isNullableTypeAnnotation, isNumberLiteral, isNumberLiteralTypeAnnotation, isNumberTypeAnnotation, isNumericLiteral, isObjectExpression, isObjectMember, isObjectMethod, isObjectPattern, isObjectProperty, isObjectTypeAnnotation, isObjectTypeCallProperty, isObjectTypeIndexer, isObjectTypeInternalSlot, isObjectTypeProperty, isObjectTypeSpreadProperty, isOpaqueType, isOptionalCallExpression, isOptionalIndexedAccessType, isOptionalMemberExpression, isParenthesizedExpression, isPattern, isPatternLike, isPipelineBareFunction, isPipelinePrimaryTopicReference, isPipelineTopicExpression, isPlaceholder, isPlaceholderType, isPrivate, isPrivateName, isProgram, isProperty, isPureish, isQualifiedTypeIdentifier, isRecordExpression, isReferenced, isRegExpLiteral, isRegexLiteral, isRestElement, isRestProperty, isReturnStatement, isScopable, isScope, isSequenceExpression, isSpecifierDefault, isSpreadElement, isSpreadProperty, isStandardized, isStatement, isStaticBlock, isStringLiteral, isStringLiteralTypeAnnotation, isStringTypeAnnotation, isSuper, isSwitchCase, isSwitchStatement, isSymbolTypeAnnotation, isTSAnyKeyword, isTSArrayType, isTSAsExpression, isTSBaseType, isTSBigIntKeyword, isTSBooleanKeyword, isTSCallSignatureDeclaration, isTSConditionalType, isTSConstructSignatureDeclaration, isTSConstructorType, isTSDeclareFunction, isTSDeclareMethod, isTSEntityName, isTSEnumDeclaration, isTSEnumMember, isTSExportAssignment, isTSExpressionWithTypeArguments, isTSExternalModuleReference, isTSFunctionType, isTSImportEqualsDeclaration, isTSImportType, isTSIndexSignature, isTSIndexedAccessType, isTSInferType, isTSInstantiationExpression, isTSInterfaceBody, isTSInterfaceDeclaration, isTSIntersectionType, isTSIntrinsicKeyword, isTSLiteralType, isTSMappedType, isTSMethodSignature, isTSModuleBlock, isTSModuleDeclaration, isTSNamedTupleMember, isTSNamespaceExportDeclaration, isTSNeverKeyword, isTSNonNullExpression, isTSNullKeyword, isTSNumberKeyword, isTSObjectKeyword, isTSOptionalType, isTSParameterProperty, isTSParenthesizedType, isTSPropertySignature, isTSQualifiedName, isTSRestType, isTSSatisfiesExpression, isTSStringKeyword, isTSSymbolKeyword, isTSThisType, isTSTupleType, isTSType, isTSTypeAliasDeclaration, isTSTypeAnnotation, isTSTypeAssertion, isTSTypeElement, isTSTypeLiteral, isTSTypeOperator, isTSTypeParameter, isTSTypeParameterDeclaration, isTSTypeParameterInstantiation, isTSTypePredicate, isTSTypeQuery, isTSTypeReference, isTSUndefinedKeyword, isTSUnionType, isTSUnknownKeyword, isTSVoidKeyword, isTaggedTemplateExpression, isTemplateElement, isTemplateLiteral, isTerminatorless, isThisExpression, isThisTypeAnnotation, isThrowStatement, isTopicReference, isTryStatement, isTupleExpression, isTupleTypeAnnotation, isType, isTypeAlias, isTypeAnnotation, isTypeCastExpression, isTypeParameter, isTypeParameterDeclaration, isTypeParameterInstantiation, isTypeScript, isTypeofTypeAnnotation, isUnaryExpression, isUnaryLike, isUnionTypeAnnotation, isUpdateExpression, isUserWhitespacable, isV8IntrinsicIdentifier, isValidES3Identifier, isValidIdentifier, isVar, isVariableDeclaration, isVariableDeclarator, isVariance, isVoidTypeAnnotation, isWhile, isWhileStatement, isWithStatement, isYieldExpression, jsxAttribute as jSXAttribute, jsxClosingElement as jSXClosingElement, jsxClosingFragment as jSXClosingFragment, jsxElement as jSXElement, jsxEmptyExpression as jSXEmptyExpression, jsxExpressionContainer as jSXExpressionContainer, jsxFragment as jSXFragment, jsxIdentifier as jSXIdentifier, jsxMemberExpression as jSXMemberExpression, jsxNamespacedName as jSXNamespacedName, jsxOpeningElement as jSXOpeningElement, jsxOpeningFragment as jSXOpeningFragment, jsxSpreadAttribute as jSXSpreadAttribute, jsxSpreadChild as jSXSpreadChild, jsxText as jSXText, jsxAttribute, jsxClosingElement, jsxClosingFragment, jsxElement, jsxEmptyExpression, jsxExpressionContainer, jsxFragment, jsxIdentifier, jsxMemberExpression, jsxNamespacedName, jsxOpeningElement, jsxOpeningFragment, jsxSpreadAttribute, jsxSpreadChild, jsxText, labeledStatement, logicalExpression, matchesPattern, memberExpression, metaProperty, mixedTypeAnnotation, moduleExpression, newExpression, noop, nullLiteral, nullLiteralTypeAnnotation, nullableTypeAnnotation, NumberLiteral$1 as numberLiteral, numberLiteralTypeAnnotation, numberTypeAnnotation, numericLiteral, objectExpression, objectMethod, objectPattern, objectProperty, objectTypeAnnotation, objectTypeCallProperty, objectTypeIndexer, objectTypeInternalSlot, objectTypeProperty, objectTypeSpreadProperty, opaqueType, optionalCallExpression, optionalIndexedAccessType, optionalMemberExpression, parenthesizedExpression, pipelineBareFunction, pipelinePrimaryTopicReference, pipelineTopicExpression, placeholder, prependToMemberExpression, privateName, program, qualifiedTypeIdentifier, react, recordExpression, regExpLiteral, RegexLiteral$1 as regexLiteral, removeComments, removeProperties, removePropertiesDeep, removeTypeDuplicates, restElement, RestProperty$1 as restProperty, returnStatement, sequenceExpression, shallowEqual, spreadElement, SpreadProperty$1 as spreadProperty, staticBlock, stringLiteral, stringLiteralTypeAnnotation, stringTypeAnnotation, _super as super, switchCase, switchStatement, symbolTypeAnnotation, tsAnyKeyword as tSAnyKeyword, tsArrayType as tSArrayType, tsAsExpression as tSAsExpression, tsBigIntKeyword as tSBigIntKeyword, tsBooleanKeyword as tSBooleanKeyword, tsCallSignatureDeclaration as tSCallSignatureDeclaration, tsConditionalType as tSConditionalType, tsConstructSignatureDeclaration as tSConstructSignatureDeclaration, tsConstructorType as tSConstructorType, tsDeclareFunction as tSDeclareFunction, tsDeclareMethod as tSDeclareMethod, tsEnumDeclaration as tSEnumDeclaration, tsEnumMember as tSEnumMember, tsExportAssignment as tSExportAssignment, tsExpressionWithTypeArguments as tSExpressionWithTypeArguments, tsExternalModuleReference as tSExternalModuleReference, tsFunctionType as tSFunctionType, tsImportEqualsDeclaration as tSImportEqualsDeclaration, tsImportType as tSImportType, tsIndexSignature as tSIndexSignature, tsIndexedAccessType as tSIndexedAccessType, tsInferType as tSInferType, tsInstantiationExpression as tSInstantiationExpression, tsInterfaceBody as tSInterfaceBody, tsInterfaceDeclaration as tSInterfaceDeclaration, tsIntersectionType as tSIntersectionType, tsIntrinsicKeyword as tSIntrinsicKeyword, tsLiteralType as tSLiteralType, tsMappedType as tSMappedType, tsMethodSignature as tSMethodSignature, tsModuleBlock as tSModuleBlock, tsModuleDeclaration as tSModuleDeclaration, tsNamedTupleMember as tSNamedTupleMember, tsNamespaceExportDeclaration as tSNamespaceExportDeclaration, tsNeverKeyword as tSNeverKeyword, tsNonNullExpression as tSNonNullExpression, tsNullKeyword as tSNullKeyword, tsNumberKeyword as tSNumberKeyword, tsObjectKeyword as tSObjectKeyword, tsOptionalType as tSOptionalType, tsParameterProperty as tSParameterProperty, tsParenthesizedType as tSParenthesizedType, tsPropertySignature as tSPropertySignature, tsQualifiedName as tSQualifiedName, tsRestType as tSRestType, tsSatisfiesExpression as tSSatisfiesExpression, tsStringKeyword as tSStringKeyword, tsSymbolKeyword as tSSymbolKeyword, tsThisType as tSThisType, tsTupleType as tSTupleType, tsTypeAliasDeclaration as tSTypeAliasDeclaration, tsTypeAnnotation as tSTypeAnnotation, tsTypeAssertion as tSTypeAssertion, tsTypeLiteral as tSTypeLiteral, tsTypeOperator as tSTypeOperator, tsTypeParameter as tSTypeParameter, tsTypeParameterDeclaration as tSTypeParameterDeclaration, tsTypeParameterInstantiation as tSTypeParameterInstantiation, tsTypePredicate as tSTypePredicate, tsTypeQuery as tSTypeQuery, tsTypeReference as tSTypeReference, tsUndefinedKeyword as tSUndefinedKeyword, tsUnionType as tSUnionType, tsUnknownKeyword as tSUnknownKeyword, tsVoidKeyword as tSVoidKeyword, taggedTemplateExpression, templateElement, templateLiteral, thisExpression, thisTypeAnnotation, throwStatement, toBindingIdentifierName, toBlock, toComputedKey, _default$3 as toExpression, toIdentifier, toKeyAlias, _default$2 as toStatement, topicReference, traverse, traverseFast, tryStatement, tsAnyKeyword, tsArrayType, tsAsExpression, tsBigIntKeyword, tsBooleanKeyword, tsCallSignatureDeclaration, tsConditionalType, tsConstructSignatureDeclaration, tsConstructorType, tsDeclareFunction, tsDeclareMethod, tsEnumDeclaration, tsEnumMember, tsExportAssignment, tsExpressionWithTypeArguments, tsExternalModuleReference, tsFunctionType, tsImportEqualsDeclaration, tsImportType, tsIndexSignature, tsIndexedAccessType, tsInferType, tsInstantiationExpression, tsInterfaceBody, tsInterfaceDeclaration, tsIntersectionType, tsIntrinsicKeyword, tsLiteralType, tsMappedType, tsMethodSignature, tsModuleBlock, tsModuleDeclaration, tsNamedTupleMember, tsNamespaceExportDeclaration, tsNeverKeyword, tsNonNullExpression, tsNullKeyword, tsNumberKeyword, tsObjectKeyword, tsOptionalType, tsParameterProperty, tsParenthesizedType, tsPropertySignature, tsQualifiedName, tsRestType, tsSatisfiesExpression, tsStringKeyword, tsSymbolKeyword, tsThisType, tsTupleType, tsTypeAliasDeclaration, tsTypeAnnotation, tsTypeAssertion, tsTypeLiteral, tsTypeOperator, tsTypeParameter, tsTypeParameterDeclaration, tsTypeParameterInstantiation, tsTypePredicate, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, tsUnknownKeyword, tsVoidKeyword, tupleExpression, tupleTypeAnnotation, typeAlias, typeAnnotation, typeCastExpression, typeParameter, typeParameterDeclaration, typeParameterInstantiation, typeofTypeAnnotation, unaryExpression, unionTypeAnnotation, updateExpression, v8IntrinsicIdentifier, validate, _default$1 as valueToNode, variableDeclaration, variableDeclarator, variance, voidTypeAnnotation, whileStatement, withStatement, yieldExpression };
+export { ACCESSOR_TYPES, ALIAS_KEYS, ASSIGNMENT_OPERATORS, Accessor, Aliases, AnyTypeAnnotation, ArgumentPlaceholder, ArrayExpression, ArrayPattern, ArrayTypeAnnotation, ArrowFunctionExpression, AssignmentExpression, AssignmentPattern, AwaitExpression, BINARY_OPERATORS, BINARY_TYPES, BLOCKPARENT_TYPES, BLOCK_SCOPED_SYMBOL, BLOCK_TYPES, BOOLEAN_BINARY_OPERATORS, BOOLEAN_NUMBER_BINARY_OPERATORS, BOOLEAN_UNARY_OPERATORS, BUILDER_KEYS, BigIntLiteral, Binary, BinaryExpression, BindExpression, Block, BlockParent, BlockStatement, BooleanLiteral, BooleanLiteralTypeAnnotation, BooleanTypeAnnotation, BreakStatement, CLASS_TYPES, COMMENT_KEYS, COMPARISON_BINARY_OPERATORS, COMPLETIONSTATEMENT_TYPES, CONDITIONAL_TYPES, CallExpression, CatchClause, Class, ClassAccessorProperty, ClassBody, ClassDeclaration, ClassExpression, ClassImplements, ClassMethod, ClassPrivateMethod, ClassPrivateProperty, ClassProperty, Comment, CommentBlock, CommentLine, CommentTypeShorthand, CompletionStatement, Conditional, ConditionalExpression, ContinueStatement, DECLARATION_TYPES, DEPRECATED_ALIASES, DEPRECATED_KEYS, DebuggerStatement, DecimalLiteral, Declaration, DeclareClass, DeclareExportAllDeclaration, DeclareExportDeclaration, DeclareFunction, DeclareInterface, DeclareModule, DeclareModuleExports, DeclareOpaqueType, DeclareTypeAlias, DeclareVariable, DeclaredPredicate, Decorator, DeprecatedAliases, Directive, DirectiveLiteral, DoExpression, DoWhileStatement, ENUMBODY_TYPES, ENUMMEMBER_TYPES, EQUALITY_BINARY_OPERATORS, EXPORTDECLARATION_TYPES, EXPRESSIONWRAPPER_TYPES, EXPRESSION_TYPES, EmptyStatement, EmptyTypeAnnotation, EnumBody, EnumBooleanBody, EnumBooleanMember, EnumDeclaration, EnumDefaultedMember, EnumMember, EnumNumberBody, EnumNumberMember, EnumStringBody, EnumStringMember, EnumSymbolBody, ExistsTypeAnnotation, ExportAllDeclaration, ExportDeclaration, ExportDefaultDeclaration, ExportDefaultSpecifier, ExportNamedDeclaration, ExportNamespaceSpecifier, ExportSpecifier, Expression, ExpressionStatement, ExpressionWrapper, FLATTENABLE_KEYS, FLIPPED_ALIAS_KEYS, FLOWBASEANNOTATION_TYPES, FLOWDECLARATION_TYPES, FLOWPREDICATE_TYPES, FLOWTYPE_TYPES, FLOW_TYPES, FORXSTATEMENT_TYPES, FOR_INIT_KEYS, FOR_TYPES, FUNCTIONPARENT_TYPES, FUNCTION_TYPES, FieldOptions, File, Flow, FlowBaseAnnotation, FlowDeclaration, FlowPredicate, FlowType, For, ForInStatement, ForOfStatement, ForStatement, ForXStatement, Function, FunctionDeclaration, FunctionExpression, FunctionParent, FunctionTypeAnnotation, FunctionTypeParam, GenericTypeAnnotation, IMMUTABLE_TYPES, IMPORTOREXPORTDECLARATION_TYPES, INHERIT_KEYS, Identifier, IfStatement, Immutable, Import, ImportAttribute, ImportDeclaration, ImportDefaultSpecifier, ImportExpression, ImportNamespaceSpecifier, ImportOrExportDeclaration, ImportSpecifier, IndexedAccessType, InferredPredicate, InterfaceDeclaration, InterfaceExtends, InterfaceTypeAnnotation, InterpreterDirective, IntersectionTypeAnnotation, JSX, JSXAttribute, JSXClosingElement, JSXClosingFragment, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXFragment, JSXIdentifier, JSXMemberExpression, JSXNamespacedName, JSXOpeningElement, JSXOpeningFragment, JSXSpreadAttribute, JSXSpreadChild, JSXText, JSX_TYPES, LITERAL_TYPES, LOGICAL_OPERATORS, LOOP_TYPES, LVAL_TYPES, LVal, LabeledStatement, Literal, LogicalExpression, Loop, METHOD_TYPES, MISCELLANEOUS_TYPES, MODULEDECLARATION_TYPES, MODULESPECIFIER_TYPES, MemberExpression, MetaProperty, Method, Miscellaneous, MixedTypeAnnotation, ModuleDeclaration, ModuleExpression, ModuleSpecifier, NODE_FIELDS, NODE_PARENT_VALIDATIONS, NOT_LOCAL_BINDING, NUMBER_BINARY_OPERATORS, NUMBER_UNARY_OPERATORS, NewExpression, Node, Noop, NullLiteral, NullLiteralTypeAnnotation, NullableTypeAnnotation, NumberLiteral, NumberLiteralTypeAnnotation, NumberTypeAnnotation, NumericLiteral, OBJECTMEMBER_TYPES, ObjectExpression, ObjectMember, ObjectMethod, ObjectPattern, ObjectProperty, ObjectTypeAnnotation, ObjectTypeCallProperty, ObjectTypeIndexer, ObjectTypeInternalSlot, ObjectTypeProperty, ObjectTypeSpreadProperty, OpaqueType, OptionalCallExpression, OptionalIndexedAccessType, OptionalMemberExpression, PATTERNLIKE_TYPES, PATTERN_TYPES, PLACEHOLDERS, PLACEHOLDERS_ALIAS, PLACEHOLDERS_FLIPPED_ALIAS, PRIVATE_TYPES, PROPERTY_TYPES, PUREISH_TYPES, ParentMaps, ParenthesizedExpression, Pattern, PatternLike, PipelineBareFunction, PipelinePrimaryTopicReference, PipelineTopicExpression, Placeholder, Private, PrivateName, Program, Property, Pureish, QualifiedTypeIdentifier, RecordExpression, RegExpLiteral, RegexLiteral, Options as RemovePropertiesOptions, RestElement, RestProperty, ReturnStatement, SCOPABLE_TYPES, STANDARDIZED_TYPES, STATEMENT_OR_BLOCK_KEYS, STATEMENT_TYPES, STRING_UNARY_OPERATORS, Scopable, SequenceExpression, SourceLocation, SpreadElement, SpreadProperty, Standardized, Statement, StaticBlock, StringLiteral, StringLiteralTypeAnnotation, StringTypeAnnotation, Super, SwitchCase, SwitchStatement, SymbolTypeAnnotation, TERMINATORLESS_TYPES, TSAnyKeyword, TSArrayType, TSAsExpression, TSBASETYPE_TYPES, TSBaseType, TSBigIntKeyword, TSBooleanKeyword, TSCallSignatureDeclaration, TSConditionalType, TSConstructSignatureDeclaration, TSConstructorType, TSDeclareFunction, TSDeclareMethod, TSENTITYNAME_TYPES, TSEntityName, TSEnumBody, TSEnumDeclaration, TSEnumMember, TSExportAssignment, TSExpressionWithTypeArguments, TSExternalModuleReference, TSFunctionType, TSImportEqualsDeclaration, TSImportType, TSIndexSignature, TSIndexedAccessType, TSInferType, TSInstantiationExpression, TSInterfaceBody, TSInterfaceDeclaration, TSIntersectionType, TSIntrinsicKeyword, TSLiteralType, TSMappedType, TSMethodSignature, TSModuleBlock, TSModuleDeclaration, TSNamedTupleMember, TSNamespaceExportDeclaration, TSNeverKeyword, TSNonNullExpression, TSNullKeyword, TSNumberKeyword, TSObjectKeyword, TSOptionalType, TSParameterProperty, TSParenthesizedType, TSPropertySignature, TSQualifiedName, TSRestType, TSSatisfiesExpression, TSStringKeyword, TSSymbolKeyword, TSTYPEELEMENT_TYPES, TSTYPE_TYPES, TSThisType, TSTupleType, TSType, TSTypeAliasDeclaration, TSTypeAnnotation, TSTypeAssertion, TSTypeElement, TSTypeLiteral, TSTypeOperator, TSTypeParameter, TSTypeParameterDeclaration, TSTypeParameterInstantiation, TSTypePredicate, TSTypeQuery, TSTypeReference, TSUndefinedKeyword, TSUnionType, TSUnknownKeyword, TSVoidKeyword, TYPES, TYPESCRIPT_TYPES, TaggedTemplateExpression, TemplateElement, TemplateLiteral, Terminatorless, ThisExpression, ThisTypeAnnotation, ThrowStatement, TopicReference, TraversalAncestors, TraversalHandler, TraversalHandlers, TryStatement, TupleExpression, TupleTypeAnnotation, TypeAlias, TypeAnnotation, TypeCastExpression, TypeParameter, TypeParameterDeclaration, TypeParameterInstantiation, TypeScript, TypeofTypeAnnotation, UNARYLIKE_TYPES, UNARY_OPERATORS, UPDATE_OPERATORS, USERWHITESPACABLE_TYPES, UnaryExpression, UnaryLike, UnionTypeAnnotation, UpdateExpression, UserWhitespacable, V8IntrinsicIdentifier, VISITOR_KEYS, VariableDeclaration, VariableDeclarator, Variance, VoidTypeAnnotation, WHILE_TYPES, While, WhileStatement, WithStatement, YieldExpression, deprecationWarning as __internal__deprecationWarning, addComment, addComments, anyTypeAnnotation, appendToMemberExpression, argumentPlaceholder, arrayExpression, arrayPattern, arrayTypeAnnotation, arrowFunctionExpression, assertAccessor, assertAnyTypeAnnotation, assertArgumentPlaceholder, assertArrayExpression, assertArrayPattern, assertArrayTypeAnnotation, assertArrowFunctionExpression, assertAssignmentExpression, assertAssignmentPattern, assertAwaitExpression, assertBigIntLiteral, assertBinary, assertBinaryExpression, assertBindExpression, assertBlock, assertBlockParent, assertBlockStatement, assertBooleanLiteral, assertBooleanLiteralTypeAnnotation, assertBooleanTypeAnnotation, assertBreakStatement, assertCallExpression, assertCatchClause, assertClass, assertClassAccessorProperty, assertClassBody, assertClassDeclaration, assertClassExpression, assertClassImplements, assertClassMethod, assertClassPrivateMethod, assertClassPrivateProperty, assertClassProperty, assertCompletionStatement, assertConditional, assertConditionalExpression, assertContinueStatement, assertDebuggerStatement, assertDecimalLiteral, assertDeclaration, assertDeclareClass, assertDeclareExportAllDeclaration, assertDeclareExportDeclaration, assertDeclareFunction, assertDeclareInterface, assertDeclareModule, assertDeclareModuleExports, assertDeclareOpaqueType, assertDeclareTypeAlias, assertDeclareVariable, assertDeclaredPredicate, assertDecorator, assertDirective, assertDirectiveLiteral, assertDoExpression, assertDoWhileStatement, assertEmptyStatement, assertEmptyTypeAnnotation, assertEnumBody, assertEnumBooleanBody, assertEnumBooleanMember, assertEnumDeclaration, assertEnumDefaultedMember, assertEnumMember, assertEnumNumberBody, assertEnumNumberMember, assertEnumStringBody, assertEnumStringMember, assertEnumSymbolBody, assertExistsTypeAnnotation, assertExportAllDeclaration, assertExportDeclaration, assertExportDefaultDeclaration, assertExportDefaultSpecifier, assertExportNamedDeclaration, assertExportNamespaceSpecifier, assertExportSpecifier, assertExpression, assertExpressionStatement, assertExpressionWrapper, assertFile, assertFlow, assertFlowBaseAnnotation, assertFlowDeclaration, assertFlowPredicate, assertFlowType, assertFor, assertForInStatement, assertForOfStatement, assertForStatement, assertForXStatement, assertFunction, assertFunctionDeclaration, assertFunctionExpression, assertFunctionParent, assertFunctionTypeAnnotation, assertFunctionTypeParam, assertGenericTypeAnnotation, assertIdentifier, assertIfStatement, assertImmutable, assertImport, assertImportAttribute, assertImportDeclaration, assertImportDefaultSpecifier, assertImportExpression, assertImportNamespaceSpecifier, assertImportOrExportDeclaration, assertImportSpecifier, assertIndexedAccessType, assertInferredPredicate, assertInterfaceDeclaration, assertInterfaceExtends, assertInterfaceTypeAnnotation, assertInterpreterDirective, assertIntersectionTypeAnnotation, assertJSX, assertJSXAttribute, assertJSXClosingElement, assertJSXClosingFragment, assertJSXElement, assertJSXEmptyExpression, assertJSXExpressionContainer, assertJSXFragment, assertJSXIdentifier, assertJSXMemberExpression, assertJSXNamespacedName, assertJSXOpeningElement, assertJSXOpeningFragment, assertJSXSpreadAttribute, assertJSXSpreadChild, assertJSXText, assertLVal, assertLabeledStatement, assertLiteral, assertLogicalExpression, assertLoop, assertMemberExpression, assertMetaProperty, assertMethod, assertMiscellaneous, assertMixedTypeAnnotation, assertModuleDeclaration, assertModuleExpression, assertModuleSpecifier, assertNewExpression, assertNode, assertNoop, assertNullLiteral, assertNullLiteralTypeAnnotation, assertNullableTypeAnnotation, assertNumberLiteral, assertNumberLiteralTypeAnnotation, assertNumberTypeAnnotation, assertNumericLiteral, assertObjectExpression, assertObjectMember, assertObjectMethod, assertObjectPattern, assertObjectProperty, assertObjectTypeAnnotation, assertObjectTypeCallProperty, assertObjectTypeIndexer, assertObjectTypeInternalSlot, assertObjectTypeProperty, assertObjectTypeSpreadProperty, assertOpaqueType, assertOptionalCallExpression, assertOptionalIndexedAccessType, assertOptionalMemberExpression, assertParenthesizedExpression, assertPattern, assertPatternLike, assertPipelineBareFunction, assertPipelinePrimaryTopicReference, assertPipelineTopicExpression, assertPlaceholder, assertPrivate, assertPrivateName, assertProgram, assertProperty, assertPureish, assertQualifiedTypeIdentifier, assertRecordExpression, assertRegExpLiteral, assertRegexLiteral, assertRestElement, assertRestProperty, assertReturnStatement, assertScopable, assertSequenceExpression, assertSpreadElement, assertSpreadProperty, assertStandardized, assertStatement, assertStaticBlock, assertStringLiteral, assertStringLiteralTypeAnnotation, assertStringTypeAnnotation, assertSuper, assertSwitchCase, assertSwitchStatement, assertSymbolTypeAnnotation, assertTSAnyKeyword, assertTSArrayType, assertTSAsExpression, assertTSBaseType, assertTSBigIntKeyword, assertTSBooleanKeyword, assertTSCallSignatureDeclaration, assertTSConditionalType, assertTSConstructSignatureDeclaration, assertTSConstructorType, assertTSDeclareFunction, assertTSDeclareMethod, assertTSEntityName, assertTSEnumBody, assertTSEnumDeclaration, assertTSEnumMember, assertTSExportAssignment, assertTSExpressionWithTypeArguments, assertTSExternalModuleReference, assertTSFunctionType, assertTSImportEqualsDeclaration, assertTSImportType, assertTSIndexSignature, assertTSIndexedAccessType, assertTSInferType, assertTSInstantiationExpression, assertTSInterfaceBody, assertTSInterfaceDeclaration, assertTSIntersectionType, assertTSIntrinsicKeyword, assertTSLiteralType, assertTSMappedType, assertTSMethodSignature, assertTSModuleBlock, assertTSModuleDeclaration, assertTSNamedTupleMember, assertTSNamespaceExportDeclaration, assertTSNeverKeyword, assertTSNonNullExpression, assertTSNullKeyword, assertTSNumberKeyword, assertTSObjectKeyword, assertTSOptionalType, assertTSParameterProperty, assertTSParenthesizedType, assertTSPropertySignature, assertTSQualifiedName, assertTSRestType, assertTSSatisfiesExpression, assertTSStringKeyword, assertTSSymbolKeyword, assertTSThisType, assertTSTupleType, assertTSType, assertTSTypeAliasDeclaration, assertTSTypeAnnotation, assertTSTypeAssertion, assertTSTypeElement, assertTSTypeLiteral, assertTSTypeOperator, assertTSTypeParameter, assertTSTypeParameterDeclaration, assertTSTypeParameterInstantiation, assertTSTypePredicate, assertTSTypeQuery, assertTSTypeReference, assertTSUndefinedKeyword, assertTSUnionType, assertTSUnknownKeyword, assertTSVoidKeyword, assertTaggedTemplateExpression, assertTemplateElement, assertTemplateLiteral, assertTerminatorless, assertThisExpression, assertThisTypeAnnotation, assertThrowStatement, assertTopicReference, assertTryStatement, assertTupleExpression, assertTupleTypeAnnotation, assertTypeAlias, assertTypeAnnotation, assertTypeCastExpression, assertTypeParameter, assertTypeParameterDeclaration, assertTypeParameterInstantiation, assertTypeScript, assertTypeofTypeAnnotation, assertUnaryExpression, assertUnaryLike, assertUnionTypeAnnotation, assertUpdateExpression, assertUserWhitespacable, assertV8IntrinsicIdentifier, assertVariableDeclaration, assertVariableDeclarator, assertVariance, assertVoidTypeAnnotation, assertWhile, assertWhileStatement, assertWithStatement, assertYieldExpression, assignmentExpression, assignmentPattern, awaitExpression, bigIntLiteral, binaryExpression, bindExpression, blockStatement, booleanLiteral, booleanLiteralTypeAnnotation, booleanTypeAnnotation, breakStatement, buildMatchMemberExpression, buildUndefinedNode, callExpression, catchClause, classAccessorProperty, classBody, classDeclaration, classExpression, classImplements, classMethod, classPrivateMethod, classPrivateProperty, classProperty, clone, cloneDeep, cloneDeepWithoutLoc, cloneNode, cloneWithoutLoc, conditionalExpression, continueStatement, createFlowUnionType, createTSUnionType, _default$4 as createTypeAnnotationBasedOnTypeof, createFlowUnionType as createUnionTypeAnnotation, debuggerStatement, decimalLiteral, declareClass, declareExportAllDeclaration, declareExportDeclaration, declareFunction, declareInterface, declareModule, declareModuleExports, declareOpaqueType, declareTypeAlias, declareVariable, declaredPredicate, decorator, directive, directiveLiteral, doExpression, doWhileStatement, emptyStatement, emptyTypeAnnotation, ensureBlock, enumBooleanBody, enumBooleanMember, enumDeclaration, enumDefaultedMember, enumNumberBody, enumNumberMember, enumStringBody, enumStringMember, enumSymbolBody, existsTypeAnnotation, exportAllDeclaration, exportDefaultDeclaration, exportDefaultSpecifier, exportNamedDeclaration, exportNamespaceSpecifier, exportSpecifier, expressionStatement, file, forInStatement, forOfStatement, forStatement, functionDeclaration, functionExpression, functionTypeAnnotation, functionTypeParam, genericTypeAnnotation, getAssignmentIdentifiers, getBindingIdentifiers, getFunctionName, _default as getOuterBindingIdentifiers, identifier, ifStatement, _import as import, importAttribute, importDeclaration, importDefaultSpecifier, importExpression, importNamespaceSpecifier, importSpecifier, indexedAccessType, inferredPredicate, inheritInnerComments, inheritLeadingComments, inheritTrailingComments, inherits, inheritsComments, interfaceDeclaration, interfaceExtends, interfaceTypeAnnotation, interpreterDirective, intersectionTypeAnnotation, is, isAccessor, isAnyTypeAnnotation, isArgumentPlaceholder, isArrayExpression, isArrayPattern, isArrayTypeAnnotation, isArrowFunctionExpression, isAssignmentExpression, isAssignmentPattern, isAwaitExpression, isBigIntLiteral, isBinary, isBinaryExpression, isBindExpression, isBinding, isBlock, isBlockParent, isBlockScoped, isBlockStatement, isBooleanLiteral, isBooleanLiteralTypeAnnotation, isBooleanTypeAnnotation, isBreakStatement, isCallExpression, isCatchClause, isClass, isClassAccessorProperty, isClassBody, isClassDeclaration, isClassExpression, isClassImplements, isClassMethod, isClassPrivateMethod, isClassPrivateProperty, isClassProperty, isCompletionStatement, isConditional, isConditionalExpression, isContinueStatement, isDebuggerStatement, isDecimalLiteral, isDeclaration, isDeclareClass, isDeclareExportAllDeclaration, isDeclareExportDeclaration, isDeclareFunction, isDeclareInterface, isDeclareModule, isDeclareModuleExports, isDeclareOpaqueType, isDeclareTypeAlias, isDeclareVariable, isDeclaredPredicate, isDecorator, isDirective, isDirectiveLiteral, isDoExpression, isDoWhileStatement, isEmptyStatement, isEmptyTypeAnnotation, isEnumBody, isEnumBooleanBody, isEnumBooleanMember, isEnumDeclaration, isEnumDefaultedMember, isEnumMember, isEnumNumberBody, isEnumNumberMember, isEnumStringBody, isEnumStringMember, isEnumSymbolBody, isExistsTypeAnnotation, isExportAllDeclaration, isExportDeclaration, isExportDefaultDeclaration, isExportDefaultSpecifier, isExportNamedDeclaration, isExportNamespaceSpecifier, isExportSpecifier, isExpression, isExpressionStatement, isExpressionWrapper, isFile, isFlow, isFlowBaseAnnotation, isFlowDeclaration, isFlowPredicate, isFlowType, isFor, isForInStatement, isForOfStatement, isForStatement, isForXStatement, isFunction, isFunctionDeclaration, isFunctionExpression, isFunctionParent, isFunctionTypeAnnotation, isFunctionTypeParam, isGenericTypeAnnotation, isIdentifier, isIfStatement, isImmutable, isImport, isImportAttribute, isImportDeclaration, isImportDefaultSpecifier, isImportExpression, isImportNamespaceSpecifier, isImportOrExportDeclaration, isImportSpecifier, isIndexedAccessType, isInferredPredicate, isInterfaceDeclaration, isInterfaceExtends, isInterfaceTypeAnnotation, isInterpreterDirective, isIntersectionTypeAnnotation, isJSX, isJSXAttribute, isJSXClosingElement, isJSXClosingFragment, isJSXElement, isJSXEmptyExpression, isJSXExpressionContainer, isJSXFragment, isJSXIdentifier, isJSXMemberExpression, isJSXNamespacedName, isJSXOpeningElement, isJSXOpeningFragment, isJSXSpreadAttribute, isJSXSpreadChild, isJSXText, isLVal, isLabeledStatement, isLet, isLiteral, isLogicalExpression, isLoop, isMemberExpression, isMetaProperty, isMethod, isMiscellaneous, isMixedTypeAnnotation, isModuleDeclaration, isModuleExpression, isModuleSpecifier, isNewExpression, isNode, isNodesEquivalent, isNoop, isNullLiteral, isNullLiteralTypeAnnotation, isNullableTypeAnnotation, isNumberLiteral, isNumberLiteralTypeAnnotation, isNumberTypeAnnotation, isNumericLiteral, isObjectExpression, isObjectMember, isObjectMethod, isObjectPattern, isObjectProperty, isObjectTypeAnnotation, isObjectTypeCallProperty, isObjectTypeIndexer, isObjectTypeInternalSlot, isObjectTypeProperty, isObjectTypeSpreadProperty, isOpaqueType, isOptionalCallExpression, isOptionalIndexedAccessType, isOptionalMemberExpression, isParenthesizedExpression, isPattern, isPatternLike, isPipelineBareFunction, isPipelinePrimaryTopicReference, isPipelineTopicExpression, isPlaceholder, isPlaceholderType, isPrivate, isPrivateName, isProgram, isProperty, isPureish, isQualifiedTypeIdentifier, isRecordExpression, isReferenced, isRegExpLiteral, isRegexLiteral, isRestElement, isRestProperty, isReturnStatement, isScopable, isScope, isSequenceExpression, isSpecifierDefault, isSpreadElement, isSpreadProperty, isStandardized, isStatement, isStaticBlock, isStringLiteral, isStringLiteralTypeAnnotation, isStringTypeAnnotation, isSuper, isSwitchCase, isSwitchStatement, isSymbolTypeAnnotation, isTSAnyKeyword, isTSArrayType, isTSAsExpression, isTSBaseType, isTSBigIntKeyword, isTSBooleanKeyword, isTSCallSignatureDeclaration, isTSConditionalType, isTSConstructSignatureDeclaration, isTSConstructorType, isTSDeclareFunction, isTSDeclareMethod, isTSEntityName, isTSEnumBody, isTSEnumDeclaration, isTSEnumMember, isTSExportAssignment, isTSExpressionWithTypeArguments, isTSExternalModuleReference, isTSFunctionType, isTSImportEqualsDeclaration, isTSImportType, isTSIndexSignature, isTSIndexedAccessType, isTSInferType, isTSInstantiationExpression, isTSInterfaceBody, isTSInterfaceDeclaration, isTSIntersectionType, isTSIntrinsicKeyword, isTSLiteralType, isTSMappedType, isTSMethodSignature, isTSModuleBlock, isTSModuleDeclaration, isTSNamedTupleMember, isTSNamespaceExportDeclaration, isTSNeverKeyword, isTSNonNullExpression, isTSNullKeyword, isTSNumberKeyword, isTSObjectKeyword, isTSOptionalType, isTSParameterProperty, isTSParenthesizedType, isTSPropertySignature, isTSQualifiedName, isTSRestType, isTSSatisfiesExpression, isTSStringKeyword, isTSSymbolKeyword, isTSThisType, isTSTupleType, isTSType, isTSTypeAliasDeclaration, isTSTypeAnnotation, isTSTypeAssertion, isTSTypeElement, isTSTypeLiteral, isTSTypeOperator, isTSTypeParameter, isTSTypeParameterDeclaration, isTSTypeParameterInstantiation, isTSTypePredicate, isTSTypeQuery, isTSTypeReference, isTSUndefinedKeyword, isTSUnionType, isTSUnknownKeyword, isTSVoidKeyword, isTaggedTemplateExpression, isTemplateElement, isTemplateLiteral, isTerminatorless, isThisExpression, isThisTypeAnnotation, isThrowStatement, isTopicReference, isTryStatement, isTupleExpression, isTupleTypeAnnotation, isType, isTypeAlias, isTypeAnnotation, isTypeCastExpression, isTypeParameter, isTypeParameterDeclaration, isTypeParameterInstantiation, isTypeScript, isTypeofTypeAnnotation, isUnaryExpression, isUnaryLike, isUnionTypeAnnotation, isUpdateExpression, isUserWhitespacable, isV8IntrinsicIdentifier, isValidES3Identifier, isValidIdentifier, isVar, isVariableDeclaration, isVariableDeclarator, isVariance, isVoidTypeAnnotation, isWhile, isWhileStatement, isWithStatement, isYieldExpression, jsxAttribute as jSXAttribute, jsxClosingElement as jSXClosingElement, jsxClosingFragment as jSXClosingFragment, jsxElement as jSXElement, jsxEmptyExpression as jSXEmptyExpression, jsxExpressionContainer as jSXExpressionContainer, jsxFragment as jSXFragment, jsxIdentifier as jSXIdentifier, jsxMemberExpression as jSXMemberExpression, jsxNamespacedName as jSXNamespacedName, jsxOpeningElement as jSXOpeningElement, jsxOpeningFragment as jSXOpeningFragment, jsxSpreadAttribute as jSXSpreadAttribute, jsxSpreadChild as jSXSpreadChild, jsxText as jSXText, jsxAttribute, jsxClosingElement, jsxClosingFragment, jsxElement, jsxEmptyExpression, jsxExpressionContainer, jsxFragment, jsxIdentifier, jsxMemberExpression, jsxNamespacedName, jsxOpeningElement, jsxOpeningFragment, jsxSpreadAttribute, jsxSpreadChild, jsxText, labeledStatement, logicalExpression, matchesPattern, memberExpression, metaProperty, mixedTypeAnnotation, moduleExpression, newExpression, noop, nullLiteral, nullLiteralTypeAnnotation, nullableTypeAnnotation, NumberLiteral$1 as numberLiteral, numberLiteralTypeAnnotation, numberTypeAnnotation, numericLiteral, objectExpression, objectMethod, objectPattern, objectProperty, objectTypeAnnotation, objectTypeCallProperty, objectTypeIndexer, objectTypeInternalSlot, objectTypeProperty, objectTypeSpreadProperty, opaqueType, optionalCallExpression, optionalIndexedAccessType, optionalMemberExpression, parenthesizedExpression, pipelineBareFunction, pipelinePrimaryTopicReference, pipelineTopicExpression, placeholder, prependToMemberExpression, privateName, program, qualifiedTypeIdentifier, react, recordExpression, regExpLiteral, RegexLiteral$1 as regexLiteral, removeComments, removeProperties, removePropertiesDeep, removeTypeDuplicates, restElement, RestProperty$1 as restProperty, returnStatement, sequenceExpression, shallowEqual, spreadElement, SpreadProperty$1 as spreadProperty, staticBlock, stringLiteral, stringLiteralTypeAnnotation, stringTypeAnnotation, _super as super, switchCase, switchStatement, symbolTypeAnnotation, tsAnyKeyword as tSAnyKeyword, tsArrayType as tSArrayType, tsAsExpression as tSAsExpression, tsBigIntKeyword as tSBigIntKeyword, tsBooleanKeyword as tSBooleanKeyword, tsCallSignatureDeclaration as tSCallSignatureDeclaration, tsConditionalType as tSConditionalType, tsConstructSignatureDeclaration as tSConstructSignatureDeclaration, tsConstructorType as tSConstructorType, tsDeclareFunction as tSDeclareFunction, tsDeclareMethod as tSDeclareMethod, tsEnumBody as tSEnumBody, tsEnumDeclaration as tSEnumDeclaration, tsEnumMember as tSEnumMember, tsExportAssignment as tSExportAssignment, tsExpressionWithTypeArguments as tSExpressionWithTypeArguments, tsExternalModuleReference as tSExternalModuleReference, tsFunctionType as tSFunctionType, tsImportEqualsDeclaration as tSImportEqualsDeclaration, tsImportType as tSImportType, tsIndexSignature as tSIndexSignature, tsIndexedAccessType as tSIndexedAccessType, tsInferType as tSInferType, tsInstantiationExpression as tSInstantiationExpression, tsInterfaceBody as tSInterfaceBody, tsInterfaceDeclaration as tSInterfaceDeclaration, tsIntersectionType as tSIntersectionType, tsIntrinsicKeyword as tSIntrinsicKeyword, tsLiteralType as tSLiteralType, tsMappedType as tSMappedType, tsMethodSignature as tSMethodSignature, tsModuleBlock as tSModuleBlock, tsModuleDeclaration as tSModuleDeclaration, tsNamedTupleMember as tSNamedTupleMember, tsNamespaceExportDeclaration as tSNamespaceExportDeclaration, tsNeverKeyword as tSNeverKeyword, tsNonNullExpression as tSNonNullExpression, tsNullKeyword as tSNullKeyword, tsNumberKeyword as tSNumberKeyword, tsObjectKeyword as tSObjectKeyword, tsOptionalType as tSOptionalType, tsParameterProperty as tSParameterProperty, tsParenthesizedType as tSParenthesizedType, tsPropertySignature as tSPropertySignature, tsQualifiedName as tSQualifiedName, tsRestType as tSRestType, tsSatisfiesExpression as tSSatisfiesExpression, tsStringKeyword as tSStringKeyword, tsSymbolKeyword as tSSymbolKeyword, tsThisType as tSThisType, tsTupleType as tSTupleType, tsTypeAliasDeclaration as tSTypeAliasDeclaration, tsTypeAnnotation as tSTypeAnnotation, tsTypeAssertion as tSTypeAssertion, tsTypeLiteral as tSTypeLiteral, tsTypeOperator as tSTypeOperator, tsTypeParameter as tSTypeParameter, tsTypeParameterDeclaration as tSTypeParameterDeclaration, tsTypeParameterInstantiation as tSTypeParameterInstantiation, tsTypePredicate as tSTypePredicate, tsTypeQuery as tSTypeQuery, tsTypeReference as tSTypeReference, tsUndefinedKeyword as tSUndefinedKeyword, tsUnionType as tSUnionType, tsUnknownKeyword as tSUnknownKeyword, tsVoidKeyword as tSVoidKeyword, taggedTemplateExpression, templateElement, templateLiteral, thisExpression, thisTypeAnnotation, throwStatement, toBindingIdentifierName, toBlock, toComputedKey, _default$3 as toExpression, toIdentifier, toKeyAlias, _default$2 as toStatement, topicReference, traverse, traverseFast, tryStatement, tsAnyKeyword, tsArrayType, tsAsExpression, tsBigIntKeyword, tsBooleanKeyword, tsCallSignatureDeclaration, tsConditionalType, tsConstructSignatureDeclaration, tsConstructorType, tsDeclareFunction, tsDeclareMethod, tsEnumBody, tsEnumDeclaration, tsEnumMember, tsExportAssignment, tsExpressionWithTypeArguments, tsExternalModuleReference, tsFunctionType, tsImportEqualsDeclaration, tsImportType, tsIndexSignature, tsIndexedAccessType, tsInferType, tsInstantiationExpression, tsInterfaceBody, tsInterfaceDeclaration, tsIntersectionType, tsIntrinsicKeyword, tsLiteralType, tsMappedType, tsMethodSignature, tsModuleBlock, tsModuleDeclaration, tsNamedTupleMember, tsNamespaceExportDeclaration, tsNeverKeyword, tsNonNullExpression, tsNullKeyword, tsNumberKeyword, tsObjectKeyword, tsOptionalType, tsParameterProperty, tsParenthesizedType, tsPropertySignature, tsQualifiedName, tsRestType, tsSatisfiesExpression, tsStringKeyword, tsSymbolKeyword, tsThisType, tsTupleType, tsTypeAliasDeclaration, tsTypeAnnotation, tsTypeAssertion, tsTypeLiteral, tsTypeOperator, tsTypeParameter, tsTypeParameterDeclaration, tsTypeParameterInstantiation, tsTypePredicate, tsTypeQuery, tsTypeReference, tsUndefinedKeyword, tsUnionType, tsUnknownKeyword, tsVoidKeyword, tupleExpression, tupleTypeAnnotation, typeAlias, typeAnnotation, typeCastExpression, typeParameter, typeParameterDeclaration, typeParameterInstantiation, typeofTypeAnnotation, unaryExpression, unionTypeAnnotation, updateExpression, v8IntrinsicIdentifier, validate, _default$1 as valueToNode, variableDeclaration, variableDeclarator, variance, voidTypeAnnotation, whileStatement, withStatement, yieldExpression };
Index: imaps-frontend/node_modules/@babel/types/lib/index.js.flow
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/index.js.flow	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/index.js.flow	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1120,5 +1120,6 @@
   attributes: Array<BabelNodeJSXAttribute | BabelNodeJSXSpreadAttribute>;
   selfClosing?: boolean;
-  typeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+  typeArguments?: BabelNodeTypeParameterInstantiation;
+  typeParameters?: BabelNodeTSTypeParameterInstantiation;
 }
 
@@ -1549,8 +1550,14 @@
 }
 
+declare class BabelNodeTSEnumBody extends BabelNode {
+  type: "TSEnumBody";
+  members: Array<BabelNodeTSEnumMember>;
+}
+
 declare class BabelNodeTSEnumDeclaration extends BabelNode {
   type: "TSEnumDeclaration";
   id: BabelNodeIdentifier;
   members: Array<BabelNodeTSEnumMember>;
+  body?: BabelNodeTSEnumBody;
   declare?: boolean;
   initializer?: BabelNodeExpression;
@@ -1680,5 +1687,5 @@
 type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment;
 type BabelNodeMiscellaneous = BabelNodeNoop | BabelNodePlaceholder | BabelNodeV8IntrinsicIdentifier;
-type BabelNodeTypeScript = BabelNodeTSParameterProperty | BabelNodeTSDeclareFunction | BabelNodeTSDeclareMethod | BabelNodeTSQualifiedName | BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature | BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSNamedTupleMember | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSInterfaceDeclaration | BabelNodeTSInterfaceBody | BabelNodeTSTypeAliasDeclaration | BabelNodeTSInstantiationExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSEnumDeclaration | BabelNodeTSEnumMember | BabelNodeTSModuleDeclaration | BabelNodeTSModuleBlock | BabelNodeTSImportType | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExternalModuleReference | BabelNodeTSNonNullExpression | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration | BabelNodeTSTypeAnnotation | BabelNodeTSTypeParameterInstantiation | BabelNodeTSTypeParameterDeclaration | BabelNodeTSTypeParameter;
+type BabelNodeTypeScript = BabelNodeTSParameterProperty | BabelNodeTSDeclareFunction | BabelNodeTSDeclareMethod | BabelNodeTSQualifiedName | BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature | BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSNamedTupleMember | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSInterfaceDeclaration | BabelNodeTSInterfaceBody | BabelNodeTSTypeAliasDeclaration | BabelNodeTSInstantiationExpression | BabelNodeTSAsExpression | BabelNodeTSSatisfiesExpression | BabelNodeTSTypeAssertion | BabelNodeTSEnumBody | BabelNodeTSEnumDeclaration | BabelNodeTSEnumMember | BabelNodeTSModuleDeclaration | BabelNodeTSModuleBlock | BabelNodeTSImportType | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExternalModuleReference | BabelNodeTSNonNullExpression | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration | BabelNodeTSTypeAnnotation | BabelNodeTSTypeParameterInstantiation | BabelNodeTSTypeParameterDeclaration | BabelNodeTSTypeParameter;
 type BabelNodeTSTypeElement = BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature;
 type BabelNodeTSType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSImportType;
@@ -1925,4 +1932,5 @@
   declare export function tsSatisfiesExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTSType): BabelNodeTSSatisfiesExpression;
   declare export function tsTypeAssertion(typeAnnotation: BabelNodeTSType, expression: BabelNodeExpression): BabelNodeTSTypeAssertion;
+  declare export function tsEnumBody(members: Array<BabelNodeTSEnumMember>): BabelNodeTSEnumBody;
   declare export function tsEnumDeclaration(id: BabelNodeIdentifier, members: Array<BabelNodeTSEnumMember>): BabelNodeTSEnumDeclaration;
   declare export function tsEnumMember(id: BabelNodeIdentifier | BabelNodeStringLiteral, initializer?: BabelNodeExpression): BabelNodeTSEnumMember;
@@ -2411,4 +2419,6 @@
   declare export function isTSTypeAssertion(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAssertion)
   declare export function assertTSTypeAssertion(node: ?Object, opts?: ?Object): void
+  declare export function isTSEnumBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumBody)
+  declare export function assertTSEnumBody(node: ?Object, opts?: ?Object): void
   declare export function isTSEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumDeclaration)
   declare export function assertTSEnumDeclaration(node: ?Object, opts?: ?Object): void
Index: imaps-frontend/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -35,15 +35,16 @@
       continue;
     }
-    if ((0, _index.isTSTypeReference)(node) && node.typeParameters) {
+    const typeArgumentsKey = "typeParameters";
+    if ((0, _index.isTSTypeReference)(node) && node[typeArgumentsKey]) {
+      const typeArguments = node[typeArgumentsKey];
       const name = getQualifiedName(node.typeName);
       if (generics.has(name)) {
         let existing = generics.get(name);
-        if (existing.typeParameters) {
-          if (node.typeParameters) {
-            existing.typeParameters.params.push(...node.typeParameters.params);
-            existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params);
-          }
+        const existingTypeArguments = existing[typeArgumentsKey];
+        if (existingTypeArguments) {
+          existingTypeArguments.params.push(...typeArguments.params);
+          existingTypeArguments.params = removeTypeDuplicates(existingTypeArguments.params);
         } else {
-          existing = node.typeParameters;
+          existing = typeArguments;
         }
       } else {
Index: imaps-frontend/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_index","require","getQualifiedName","node","isIdentifier","name","right","left","removeTypeDuplicates","nodesIn","nodes","Array","from","generics","Map","bases","typeGroups","Set","types","i","length","includes","isTSAnyKeyword","isTSBaseType","set","type","isTSUnionType","has","push","add","isTSTypeReference","typeParameters","typeName","existing","get","params","baseType","genericName"],"sources":["../../../src/modifications/typescript/removeTypeDuplicates.ts"],"sourcesContent":["import {\n  isIdentifier,\n  isTSAnyKeyword,\n  isTSTypeReference,\n  isTSUnionType,\n  isTSBaseType,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.TSTypeReference[\"typeName\"]): string {\n  return isIdentifier(node)\n    ? node.name\n    : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n  nodesIn: ReadonlyArray<t.TSType>,\n): Array<t.TSType> {\n  const nodes = Array.from(nodesIn);\n\n  const generics = new Map<string, t.TSTypeReference>();\n  const bases = new Map<t.TSBaseType[\"type\"], t.TSBaseType>();\n\n  // store union type groups to circular references\n  const typeGroups = new Set<t.TSType[]>();\n\n  const types: t.TSType[] = [];\n\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (!node) continue;\n\n    // detect duplicates\n    if (types.includes(node)) {\n      continue;\n    }\n\n    // this type matches anything\n    if (isTSAnyKeyword(node)) {\n      return [node];\n    }\n\n    // Analogue of FlowBaseAnnotation\n    if (isTSBaseType(node)) {\n      bases.set(node.type, node);\n      continue;\n    }\n\n    if (isTSUnionType(node)) {\n      if (!typeGroups.has(node.types)) {\n        nodes.push(...node.types);\n        typeGroups.add(node.types);\n      }\n      continue;\n    }\n\n    // todo: support merging tuples: number[]\n    if (isTSTypeReference(node) && node.typeParameters) {\n      const name = getQualifiedName(node.typeName);\n\n      if (generics.has(name)) {\n        let existing: t.TypeScript = generics.get(name);\n        if (existing.typeParameters) {\n          if (node.typeParameters) {\n            existing.typeParameters.params.push(...node.typeParameters.params);\n            existing.typeParameters.params = removeTypeDuplicates(\n              existing.typeParameters.params,\n            );\n          }\n        } else {\n          existing = node.typeParameters;\n        }\n      } else {\n        generics.set(name, node);\n      }\n\n      continue;\n    }\n\n    types.push(node);\n  }\n\n  // add back in bases\n  for (const [, baseType] of bases) {\n    types.push(baseType);\n  }\n\n  // add back in generics\n  for (const [, genericName] of generics) {\n    types.push(genericName);\n  }\n\n  return types;\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_index","require","getQualifiedName","node","isIdentifier","name","right","left","removeTypeDuplicates","nodesIn","nodes","Array","from","generics","Map","bases","typeGroups","Set","types","i","length","includes","isTSAnyKeyword","isTSBaseType","set","type","isTSUnionType","has","push","add","typeArgumentsKey","isTSTypeReference","typeArguments","typeName","existing","get","existingTypeArguments","params","baseType","genericName"],"sources":["../../../src/modifications/typescript/removeTypeDuplicates.ts"],"sourcesContent":["import {\n  isIdentifier,\n  isTSAnyKeyword,\n  isTSTypeReference,\n  isTSUnionType,\n  isTSBaseType,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.TSTypeReference[\"typeName\"]): string {\n  return isIdentifier(node)\n    ? node.name\n    : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n  nodesIn: ReadonlyArray<t.TSType>,\n): Array<t.TSType> {\n  const nodes = Array.from(nodesIn);\n\n  const generics = new Map<string, t.TSTypeReference>();\n  const bases = new Map<t.TSBaseType[\"type\"], t.TSBaseType>();\n\n  // store union type groups to circular references\n  const typeGroups = new Set<t.TSType[]>();\n\n  const types: t.TSType[] = [];\n\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (!node) continue;\n\n    // detect duplicates\n    if (types.includes(node)) {\n      continue;\n    }\n\n    // this type matches anything\n    if (isTSAnyKeyword(node)) {\n      return [node];\n    }\n\n    // Analogue of FlowBaseAnnotation\n    if (isTSBaseType(node)) {\n      bases.set(node.type, node);\n      continue;\n    }\n\n    if (isTSUnionType(node)) {\n      if (!typeGroups.has(node.types)) {\n        nodes.push(...node.types);\n        typeGroups.add(node.types);\n      }\n      continue;\n    }\n\n    // todo: support merging tuples: number[]\n    const typeArgumentsKey = process.env.BABEL_8_BREAKING\n      ? \"typeArguments\"\n      : \"typeParameters\";\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    if (isTSTypeReference(node) && node[typeArgumentsKey]) {\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      const typeArguments = node[typeArgumentsKey];\n      const name = getQualifiedName(node.typeName);\n\n      if (generics.has(name)) {\n        let existing: t.TypeScript = generics.get(name);\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n        const existingTypeArguments = existing[typeArgumentsKey];\n        if (existingTypeArguments) {\n          existingTypeArguments.params.push(...typeArguments.params);\n          existingTypeArguments.params = removeTypeDuplicates(\n            existingTypeArguments.params,\n          );\n        } else {\n          existing = typeArguments;\n        }\n      } else {\n        generics.set(name, node);\n      }\n\n      continue;\n    }\n\n    types.push(node);\n  }\n\n  // add back in bases\n  for (const [, baseType] of bases) {\n    types.push(baseType);\n  }\n\n  // add back in generics\n  for (const [, genericName] of generics) {\n    types.push(genericName);\n  }\n\n  return types;\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/lib/validators/generated/index.js
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/validators/generated/index.js	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/validators/generated/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -219,4 +219,5 @@
 exports.isTSDeclareMethod = isTSDeclareMethod;
 exports.isTSEntityName = isTSEntityName;
+exports.isTSEnumBody = isTSEnumBody;
 exports.isTSEnumDeclaration = isTSEnumDeclaration;
 exports.isTSEnumMember = isTSEnumMember;
@@ -1490,4 +1491,9 @@
   return opts == null || (0, _shallowEqual.default)(node, opts);
 }
+function isTSEnumBody(node, opts) {
+  if (!node) return false;
+  if (node.type !== "TSEnumBody") return false;
+  return opts == null || (0, _shallowEqual.default)(node, opts);
+}
 function isTSEnumDeclaration(node, opts) {
   if (!node) return false;
@@ -2619,4 +2625,5 @@
     case "TSSatisfiesExpression":
     case "TSTypeAssertion":
+    case "TSEnumBody":
     case "TSEnumDeclaration":
     case "TSEnumMember":
Index: imaps-frontend/node_modules/@babel/types/lib/validators/generated/index.js.map
===================================================================
--- imaps-frontend/node_modules/@babel/types/lib/validators/generated/index.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/lib/validators/generated/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,1 +1,1 @@
-{"version":3,"names":["_shallowEqual","require","_deprecationWarning","isArrayExpression","node","opts","type","shallowEqual","isAssignmentExpression","isBinaryExpression","isInterpreterDirective","isDirective","isDirectiveLiteral","isBlockStatement","isBreakStatement","isCallExpression","isCatchClause","isConditionalExpression","isContinueStatement","isDebuggerStatement","isDoWhileStatement","isEmptyStatement","isExpressionStatement","isFile","isForInStatement","isForStatement","isFunctionDeclaration","isFunctionExpression","isIdentifier","isIfStatement","isLabeledStatement","isStringLiteral","isNumericLiteral","isNullLiteral","isBooleanLiteral","isRegExpLiteral","isLogicalExpression","isMemberExpression","isNewExpression","isProgram","isObjectExpression","isObjectMethod","isObjectProperty","isRestElement","isReturnStatement","isSequenceExpression","isParenthesizedExpression","isSwitchCase","isSwitchStatement","isThisExpression","isThrowStatement","isTryStatement","isUnaryExpression","isUpdateExpression","isVariableDeclaration","isVariableDeclarator","isWhileStatement","isWithStatement","isAssignmentPattern","isArrayPattern","isArrowFunctionExpression","isClassBody","isClassExpression","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isExportSpecifier","isForOfStatement","isImportDeclaration","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isImportExpression","isMetaProperty","isClassMethod","isObjectPattern","isSpreadElement","isSuper","isTaggedTemplateExpression","isTemplateElement","isTemplateLiteral","isYieldExpression","isAwaitExpression","isImport","isBigIntLiteral","isExportNamespaceSpecifier","isOptionalMemberExpression","isOptionalCallExpression","isClassProperty","isClassAccessorProperty","isClassPrivateProperty","isClassPrivateMethod","isPrivateName","isStaticBlock","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isBooleanLiteralTypeAnnotation","isNullLiteralTypeAnnotation","isClassImplements","isDeclareClass","isDeclareFunction","isDeclareInterface","isDeclareModule","isDeclareModuleExports","isDeclareTypeAlias","isDeclareOpaqueType","isDeclareVariable","isDeclareExportDeclaration","isDeclareExportAllDeclaration","isDeclaredPredicate","isExistsTypeAnnotation","isFunctionTypeAnnotation","isFunctionTypeParam","isGenericTypeAnnotation","isInferredPredicate","isInterfaceExtends","isInterfaceDeclaration","isInterfaceTypeAnnotation","isIntersectionTypeAnnotation","isMixedTypeAnnotation","isEmptyTypeAnnotation","isNullableTypeAnnotation","isNumberLiteralTypeAnnotation","isNumberTypeAnnotation","isObjectTypeAnnotation","isObjectTypeInternalSlot","isObjectTypeCallProperty","isObjectTypeIndexer","isObjectTypeProperty","isObjectTypeSpreadProperty","isOpaqueType","isQualifiedTypeIdentifier","isStringLiteralTypeAnnotation","isStringTypeAnnotation","isSymbolTypeAnnotation","isThisTypeAnnotation","isTupleTypeAnnotation","isTypeofTypeAnnotation","isTypeAlias","isTypeAnnotation","isTypeCastExpression","isTypeParameter","isTypeParameterDeclaration","isTypeParameterInstantiation","isUnionTypeAnnotation","isVariance","isVoidTypeAnnotation","isEnumDeclaration","isEnumBooleanBody","isEnumNumberBody","isEnumStringBody","isEnumSymbolBody","isEnumBooleanMember","isEnumNumberMember","isEnumStringMember","isEnumDefaultedMember","isIndexedAccessType","isOptionalIndexedAccessType","isJSXAttribute","isJSXClosingElement","isJSXElement","isJSXEmptyExpression","isJSXExpressionContainer","isJSXSpreadChild","isJSXIdentifier","isJSXMemberExpression","isJSXNamespacedName","isJSXOpeningElement","isJSXSpreadAttribute","isJSXText","isJSXFragment","isJSXOpeningFragment","isJSXClosingFragment","isNoop","isPlaceholder","isV8IntrinsicIdentifier","isArgumentPlaceholder","isBindExpression","isImportAttribute","isDecorator","isDoExpression","isExportDefaultSpecifier","isRecordExpression","isTupleExpression","isDecimalLiteral","isModuleExpression","isTopicReference","isPipelineTopicExpression","isPipelineBareFunction","isPipelinePrimaryTopicReference","isTSParameterProperty","isTSDeclareFunction","isTSDeclareMethod","isTSQualifiedName","isTSCallSignatureDeclaration","isTSConstructSignatureDeclaration","isTSPropertySignature","isTSMethodSignature","isTSIndexSignature","isTSAnyKeyword","isTSBooleanKeyword","isTSBigIntKeyword","isTSIntrinsicKeyword","isTSNeverKeyword","isTSNullKeyword","isTSNumberKeyword","isTSObjectKeyword","isTSStringKeyword","isTSSymbolKeyword","isTSUndefinedKeyword","isTSUnknownKeyword","isTSVoidKeyword","isTSThisType","isTSFunctionType","isTSConstructorType","isTSTypeReference","isTSTypePredicate","isTSTypeQuery","isTSTypeLiteral","isTSArrayType","isTSTupleType","isTSOptionalType","isTSRestType","isTSNamedTupleMember","isTSUnionType","isTSIntersectionType","isTSConditionalType","isTSInferType","isTSParenthesizedType","isTSTypeOperator","isTSIndexedAccessType","isTSMappedType","isTSLiteralType","isTSExpressionWithTypeArguments","isTSInterfaceDeclaration","isTSInterfaceBody","isTSTypeAliasDeclaration","isTSInstantiationExpression","isTSAsExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTSEnumDeclaration","isTSEnumMember","isTSModuleDeclaration","isTSModuleBlock","isTSImportType","isTSImportEqualsDeclaration","isTSExternalModuleReference","isTSNonNullExpression","isTSExportAssignment","isTSNamespaceExportDeclaration","isTSTypeAnnotation","isTSTypeParameterInstantiation","isTSTypeParameterDeclaration","isTSTypeParameter","isStandardized","expectedNode","isExpression","isBinary","isScopable","isBlockParent","isBlock","isStatement","isTerminatorless","isCompletionStatement","isConditional","isLoop","isWhile","isExpressionWrapper","isFor","isForXStatement","isFunction","isFunctionParent","isPureish","isDeclaration","isPatternLike","isLVal","isTSEntityName","isLiteral","isImmutable","isUserWhitespacable","isMethod","isObjectMember","isProperty","isUnaryLike","isPattern","isClass","isImportOrExportDeclaration","isExportDeclaration","isModuleSpecifier","isAccessor","isPrivate","isFlow","isFlowType","isFlowBaseAnnotation","isFlowDeclaration","isFlowPredicate","isEnumBody","isEnumMember","isJSX","isMiscellaneous","isTypeScript","isTSTypeElement","isTSType","isTSBaseType","isNumberLiteral","deprecationWarning","isRegexLiteral","isRestProperty","isSpreadProperty","isModuleDeclaration"],"sources":["../../../src/validators/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/* eslint-disable no-fallthrough */\n\nimport shallowEqual from \"../../utils/shallowEqual.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\ntype Opts<Obj> = Partial<{\n  [Prop in keyof Obj]: Obj[Prop] extends t.Node\n    ? t.Node\n    : Obj[Prop] extends t.Node[]\n      ? t.Node[]\n      : Obj[Prop];\n}>;\n\nexport function isArrayExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayExpression> | null,\n): node is t.ArrayExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AssignmentExpression> | null,\n): node is t.AssignmentExpression {\n  if (!node) return false;\n\n  if (node.type !== \"AssignmentExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBinaryExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BinaryExpression> | null,\n): node is t.BinaryExpression {\n  if (!node) return false;\n\n  if (node.type !== \"BinaryExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterpreterDirective(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterpreterDirective> | null,\n): node is t.InterpreterDirective {\n  if (!node) return false;\n\n  if (node.type !== \"InterpreterDirective\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDirective(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Directive> | null,\n): node is t.Directive {\n  if (!node) return false;\n\n  if (node.type !== \"Directive\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDirectiveLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DirectiveLiteral> | null,\n): node is t.DirectiveLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"DirectiveLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BlockStatement> | null,\n): node is t.BlockStatement {\n  if (!node) return false;\n\n  if (node.type !== \"BlockStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBreakStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BreakStatement> | null,\n): node is t.BreakStatement {\n  if (!node) return false;\n\n  if (node.type !== \"BreakStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCallExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CallExpression> | null,\n): node is t.CallExpression {\n  if (!node) return false;\n\n  if (node.type !== \"CallExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCatchClause(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CatchClause> | null,\n): node is t.CatchClause {\n  if (!node) return false;\n\n  if (node.type !== \"CatchClause\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isConditionalExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ConditionalExpression> | null,\n): node is t.ConditionalExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ConditionalExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isContinueStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ContinueStatement> | null,\n): node is t.ContinueStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ContinueStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDebuggerStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DebuggerStatement> | null,\n): node is t.DebuggerStatement {\n  if (!node) return false;\n\n  if (node.type !== \"DebuggerStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDoWhileStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DoWhileStatement> | null,\n): node is t.DoWhileStatement {\n  if (!node) return false;\n\n  if (node.type !== \"DoWhileStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EmptyStatement> | null,\n): node is t.EmptyStatement {\n  if (!node) return false;\n\n  if (node.type !== \"EmptyStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExpressionStatement> | null,\n): node is t.ExpressionStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ExpressionStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFile(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.File> | null,\n): node is t.File {\n  if (!node) return false;\n\n  if (node.type !== \"File\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForInStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForInStatement> | null,\n): node is t.ForInStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForInStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForStatement> | null,\n): node is t.ForStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionDeclaration> | null,\n): node is t.FunctionDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionExpression> | null,\n): node is t.FunctionExpression {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Identifier> | null,\n): node is t.Identifier {\n  if (!node) return false;\n\n  if (node.type !== \"Identifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIfStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IfStatement> | null,\n): node is t.IfStatement {\n  if (!node) return false;\n\n  if (node.type !== \"IfStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLabeledStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LabeledStatement> | null,\n): node is t.LabeledStatement {\n  if (!node) return false;\n\n  if (node.type !== \"LabeledStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringLiteral> | null,\n): node is t.StringLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"StringLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumericLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumericLiteral> | null,\n): node is t.NumericLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"NumericLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullLiteral> | null,\n): node is t.NullLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"NullLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanLiteral> | null,\n): node is t.BooleanLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRegExpLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RegExpLiteral> | null,\n): node is t.RegExpLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"RegExpLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLogicalExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LogicalExpression> | null,\n): node is t.LogicalExpression {\n  if (!node) return false;\n\n  if (node.type !== \"LogicalExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MemberExpression> | null,\n): node is t.MemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"MemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNewExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NewExpression> | null,\n): node is t.NewExpression {\n  if (!node) return false;\n\n  if (node.type !== \"NewExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isProgram(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Program> | null,\n): node is t.Program {\n  if (!node) return false;\n\n  if (node.type !== \"Program\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectExpression> | null,\n): node is t.ObjectExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectMethod> | null,\n): node is t.ObjectMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectProperty> | null,\n): node is t.ObjectProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRestElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RestElement> | null,\n): node is t.RestElement {\n  if (!node) return false;\n\n  if (node.type !== \"RestElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isReturnStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ReturnStatement> | null,\n): node is t.ReturnStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ReturnStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSequenceExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SequenceExpression> | null,\n): node is t.SequenceExpression {\n  if (!node) return false;\n\n  if (node.type !== \"SequenceExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isParenthesizedExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ParenthesizedExpression> | null,\n): node is t.ParenthesizedExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ParenthesizedExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchCase(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SwitchCase> | null,\n): node is t.SwitchCase {\n  if (!node) return false;\n\n  if (node.type !== \"SwitchCase\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SwitchStatement> | null,\n): node is t.SwitchStatement {\n  if (!node) return false;\n\n  if (node.type !== \"SwitchStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThisExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThisExpression> | null,\n): node is t.ThisExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ThisExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThrowStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThrowStatement> | null,\n): node is t.ThrowStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ThrowStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTryStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TryStatement> | null,\n): node is t.TryStatement {\n  if (!node) return false;\n\n  if (node.type !== \"TryStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnaryExpression> | null,\n): node is t.UnaryExpression {\n  if (!node) return false;\n\n  if (node.type !== \"UnaryExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUpdateExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UpdateExpression> | null,\n): node is t.UpdateExpression {\n  if (!node) return false;\n\n  if (node.type !== \"UpdateExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VariableDeclaration> | null,\n): node is t.VariableDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"VariableDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclarator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VariableDeclarator> | null,\n): node is t.VariableDeclarator {\n  if (!node) return false;\n\n  if (node.type !== \"VariableDeclarator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWhileStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.WhileStatement> | null,\n): node is t.WhileStatement {\n  if (!node) return false;\n\n  if (node.type !== \"WhileStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWithStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.WithStatement> | null,\n): node is t.WithStatement {\n  if (!node) return false;\n\n  if (node.type !== \"WithStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AssignmentPattern> | null,\n): node is t.AssignmentPattern {\n  if (!node) return false;\n\n  if (node.type !== \"AssignmentPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayPattern> | null,\n): node is t.ArrayPattern {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrowFunctionExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrowFunctionExpression> | null,\n): node is t.ArrowFunctionExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ArrowFunctionExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassBody> | null,\n): node is t.ClassBody {\n  if (!node) return false;\n\n  if (node.type !== \"ClassBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassExpression> | null,\n): node is t.ClassExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ClassExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassDeclaration> | null,\n): node is t.ClassDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ClassDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportAllDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportAllDeclaration> | null,\n): node is t.ExportAllDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportAllDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDefaultDeclaration> | null,\n): node is t.ExportDefaultDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportDefaultDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamedDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportNamedDeclaration> | null,\n): node is t.ExportNamedDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportNamedDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportSpecifier> | null,\n): node is t.ExportSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForOfStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForOfStatement> | null,\n): node is t.ForOfStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForOfStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportDeclaration> | null,\n): node is t.ImportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ImportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDefaultSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportDefaultSpecifier> | null,\n): node is t.ImportDefaultSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportDefaultSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportNamespaceSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportNamespaceSpecifier> | null,\n): node is t.ImportNamespaceSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportNamespaceSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportSpecifier> | null,\n): node is t.ImportSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportExpression> | null,\n): node is t.ImportExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ImportExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMetaProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MetaProperty> | null,\n): node is t.MetaProperty {\n  if (!node) return false;\n\n  if (node.type !== \"MetaProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassMethod> | null,\n): node is t.ClassMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ClassMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectPattern> | null,\n): node is t.ObjectPattern {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSpreadElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SpreadElement> | null,\n): node is t.SpreadElement {\n  if (!node) return false;\n\n  if (node.type !== \"SpreadElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSuper(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Super> | null,\n): node is t.Super {\n  if (!node) return false;\n\n  if (node.type !== \"Super\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTaggedTemplateExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TaggedTemplateExpression> | null,\n): node is t.TaggedTemplateExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TaggedTemplateExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TemplateElement> | null,\n): node is t.TemplateElement {\n  if (!node) return false;\n\n  if (node.type !== \"TemplateElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TemplateLiteral> | null,\n): node is t.TemplateLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"TemplateLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isYieldExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.YieldExpression> | null,\n): node is t.YieldExpression {\n  if (!node) return false;\n\n  if (node.type !== \"YieldExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAwaitExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AwaitExpression> | null,\n): node is t.AwaitExpression {\n  if (!node) return false;\n\n  if (node.type !== \"AwaitExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImport(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Import> | null,\n): node is t.Import {\n  if (!node) return false;\n\n  if (node.type !== \"Import\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BigIntLiteral> | null,\n): node is t.BigIntLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"BigIntLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamespaceSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportNamespaceSpecifier> | null,\n): node is t.ExportNamespaceSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportNamespaceSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalMemberExpression> | null,\n): node is t.OptionalMemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalMemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalCallExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalCallExpression> | null,\n): node is t.OptionalCallExpression {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalCallExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassProperty> | null,\n): node is t.ClassProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassAccessorProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassAccessorProperty> | null,\n): node is t.ClassAccessorProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassAccessorProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassPrivateProperty> | null,\n): node is t.ClassPrivateProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassPrivateProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassPrivateMethod> | null,\n): node is t.ClassPrivateMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ClassPrivateMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivateName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PrivateName> | null,\n): node is t.PrivateName {\n  if (!node) return false;\n\n  if (node.type !== \"PrivateName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStaticBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StaticBlock> | null,\n): node is t.StaticBlock {\n  if (!node) return false;\n\n  if (node.type !== \"StaticBlock\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAnyTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AnyTypeAnnotation> | null,\n): node is t.AnyTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"AnyTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayTypeAnnotation> | null,\n): node is t.ArrayTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanTypeAnnotation> | null,\n): node is t.BooleanTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanLiteralTypeAnnotation> | null,\n): node is t.BooleanLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullLiteralTypeAnnotation> | null,\n): node is t.NullLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassImplements(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassImplements> | null,\n): node is t.ClassImplements {\n  if (!node) return false;\n\n  if (node.type !== \"ClassImplements\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareClass(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareClass> | null,\n): node is t.DeclareClass {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareClass\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareFunction> | null,\n): node is t.DeclareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareInterface(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareInterface> | null,\n): node is t.DeclareInterface {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareInterface\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModule(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareModule> | null,\n): node is t.DeclareModule {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareModule\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModuleExports(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareModuleExports> | null,\n): node is t.DeclareModuleExports {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareModuleExports\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareTypeAlias(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareTypeAlias> | null,\n): node is t.DeclareTypeAlias {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareTypeAlias\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareOpaqueType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareOpaqueType> | null,\n): node is t.DeclareOpaqueType {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareOpaqueType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareVariable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareVariable> | null,\n): node is t.DeclareVariable {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareVariable\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareExportDeclaration> | null,\n): node is t.DeclareExportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareExportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportAllDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareExportAllDeclaration> | null,\n): node is t.DeclareExportAllDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareExportAllDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaredPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclaredPredicate> | null,\n): node is t.DeclaredPredicate {\n  if (!node) return false;\n\n  if (node.type !== \"DeclaredPredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExistsTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExistsTypeAnnotation> | null,\n): node is t.ExistsTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ExistsTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionTypeAnnotation> | null,\n): node is t.FunctionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeParam(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionTypeParam> | null,\n): node is t.FunctionTypeParam {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionTypeParam\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isGenericTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.GenericTypeAnnotation> | null,\n): node is t.GenericTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"GenericTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInferredPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InferredPredicate> | null,\n): node is t.InferredPredicate {\n  if (!node) return false;\n\n  if (node.type !== \"InferredPredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceExtends(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceExtends> | null,\n): node is t.InterfaceExtends {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceExtends\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceDeclaration> | null,\n): node is t.InterfaceDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceTypeAnnotation> | null,\n): node is t.InterfaceTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIntersectionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IntersectionTypeAnnotation> | null,\n): node is t.IntersectionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"IntersectionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMixedTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MixedTypeAnnotation> | null,\n): node is t.MixedTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"MixedTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EmptyTypeAnnotation> | null,\n): node is t.EmptyTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"EmptyTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullableTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullableTypeAnnotation> | null,\n): node is t.NullableTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NullableTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberLiteralTypeAnnotation> | null,\n): node is t.NumberLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberTypeAnnotation> | null,\n): node is t.NumberTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NumberTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeAnnotation> | null,\n): node is t.ObjectTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeInternalSlot(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeInternalSlot> | null,\n): node is t.ObjectTypeInternalSlot {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeInternalSlot\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeCallProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeCallProperty> | null,\n): node is t.ObjectTypeCallProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeCallProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeIndexer(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeIndexer> | null,\n): node is t.ObjectTypeIndexer {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeIndexer\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeProperty> | null,\n): node is t.ObjectTypeProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeSpreadProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeSpreadProperty> | null,\n): node is t.ObjectTypeSpreadProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOpaqueType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OpaqueType> | null,\n): node is t.OpaqueType {\n  if (!node) return false;\n\n  if (node.type !== \"OpaqueType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isQualifiedTypeIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.QualifiedTypeIdentifier> | null,\n): node is t.QualifiedTypeIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"QualifiedTypeIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringLiteralTypeAnnotation> | null,\n): node is t.StringLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringTypeAnnotation> | null,\n): node is t.StringTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"StringTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSymbolTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SymbolTypeAnnotation> | null,\n): node is t.SymbolTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"SymbolTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThisTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThisTypeAnnotation> | null,\n): node is t.ThisTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ThisTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TupleTypeAnnotation> | null,\n): node is t.TupleTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TupleTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeofTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeofTypeAnnotation> | null,\n): node is t.TypeofTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeofTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAlias(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeAlias> | null,\n): node is t.TypeAlias {\n  if (!node) return false;\n\n  if (node.type !== \"TypeAlias\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeAnnotation> | null,\n): node is t.TypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeCastExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeCastExpression> | null,\n): node is t.TypeCastExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TypeCastExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameter(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameter> | null,\n): node is t.TypeParameter {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameter\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameterDeclaration> | null,\n): node is t.TypeParameterDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameterDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterInstantiation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameterInstantiation> | null,\n): node is t.TypeParameterInstantiation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameterInstantiation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnionTypeAnnotation> | null,\n): node is t.UnionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"UnionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariance(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Variance> | null,\n): node is t.Variance {\n  if (!node) return false;\n\n  if (node.type !== \"Variance\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VoidTypeAnnotation> | null,\n): node is t.VoidTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"VoidTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumDeclaration> | null,\n): node is t.EnumDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"EnumDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBooleanBody> | null,\n): node is t.EnumBooleanBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumBooleanBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumNumberBody> | null,\n): node is t.EnumNumberBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumNumberBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumStringBody> | null,\n): node is t.EnumStringBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumStringBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumSymbolBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumSymbolBody> | null,\n): node is t.EnumSymbolBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumSymbolBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBooleanMember> | null,\n): node is t.EnumBooleanMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumBooleanMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumNumberMember> | null,\n): node is t.EnumNumberMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumNumberMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumStringMember> | null,\n): node is t.EnumStringMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumStringMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDefaultedMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumDefaultedMember> | null,\n): node is t.EnumDefaultedMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumDefaultedMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IndexedAccessType> | null,\n): node is t.IndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"IndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalIndexedAccessType> | null,\n): node is t.OptionalIndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalIndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXAttribute> | null,\n): node is t.JSXAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"JSXAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXClosingElement> | null,\n): node is t.JSXClosingElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXClosingElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXElement> | null,\n): node is t.JSXElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXEmptyExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXEmptyExpression> | null,\n): node is t.JSXEmptyExpression {\n  if (!node) return false;\n\n  if (node.type !== \"JSXEmptyExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXExpressionContainer(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXExpressionContainer> | null,\n): node is t.JSXExpressionContainer {\n  if (!node) return false;\n\n  if (node.type !== \"JSXExpressionContainer\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadChild(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXSpreadChild> | null,\n): node is t.JSXSpreadChild {\n  if (!node) return false;\n\n  if (node.type !== \"JSXSpreadChild\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXIdentifier> | null,\n): node is t.JSXIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"JSXIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXMemberExpression> | null,\n): node is t.JSXMemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"JSXMemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXNamespacedName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXNamespacedName> | null,\n): node is t.JSXNamespacedName {\n  if (!node) return false;\n\n  if (node.type !== \"JSXNamespacedName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXOpeningElement> | null,\n): node is t.JSXOpeningElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXOpeningElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXSpreadAttribute> | null,\n): node is t.JSXSpreadAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"JSXSpreadAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXText(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXText> | null,\n): node is t.JSXText {\n  if (!node) return false;\n\n  if (node.type !== \"JSXText\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXFragment> | null,\n): node is t.JSXFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXOpeningFragment> | null,\n): node is t.JSXOpeningFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXOpeningFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXClosingFragment> | null,\n): node is t.JSXClosingFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXClosingFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNoop(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Noop> | null,\n): node is t.Noop {\n  if (!node) return false;\n\n  if (node.type !== \"Noop\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPlaceholder(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Placeholder> | null,\n): node is t.Placeholder {\n  if (!node) return false;\n\n  if (node.type !== \"Placeholder\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isV8IntrinsicIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.V8IntrinsicIdentifier> | null,\n): node is t.V8IntrinsicIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"V8IntrinsicIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArgumentPlaceholder(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArgumentPlaceholder> | null,\n): node is t.ArgumentPlaceholder {\n  if (!node) return false;\n\n  if (node.type !== \"ArgumentPlaceholder\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBindExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BindExpression> | null,\n): node is t.BindExpression {\n  if (!node) return false;\n\n  if (node.type !== \"BindExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportAttribute> | null,\n): node is t.ImportAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"ImportAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDecorator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Decorator> | null,\n): node is t.Decorator {\n  if (!node) return false;\n\n  if (node.type !== \"Decorator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDoExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DoExpression> | null,\n): node is t.DoExpression {\n  if (!node) return false;\n\n  if (node.type !== \"DoExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDefaultSpecifier> | null,\n): node is t.ExportDefaultSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportDefaultSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRecordExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RecordExpression> | null,\n): node is t.RecordExpression {\n  if (!node) return false;\n\n  if (node.type !== \"RecordExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TupleExpression> | null,\n): node is t.TupleExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TupleExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDecimalLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DecimalLiteral> | null,\n): node is t.DecimalLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"DecimalLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleExpression> | null,\n): node is t.ModuleExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ModuleExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTopicReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TopicReference> | null,\n): node is t.TopicReference {\n  if (!node) return false;\n\n  if (node.type !== \"TopicReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineTopicExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelineTopicExpression> | null,\n): node is t.PipelineTopicExpression {\n  if (!node) return false;\n\n  if (node.type !== \"PipelineTopicExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineBareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelineBareFunction> | null,\n): node is t.PipelineBareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"PipelineBareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelinePrimaryTopicReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelinePrimaryTopicReference> | null,\n): node is t.PipelinePrimaryTopicReference {\n  if (!node) return false;\n\n  if (node.type !== \"PipelinePrimaryTopicReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParameterProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSParameterProperty> | null,\n): node is t.TSParameterProperty {\n  if (!node) return false;\n\n  if (node.type !== \"TSParameterProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSDeclareFunction> | null,\n): node is t.TSDeclareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"TSDeclareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSDeclareMethod> | null,\n): node is t.TSDeclareMethod {\n  if (!node) return false;\n\n  if (node.type !== \"TSDeclareMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSQualifiedName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSQualifiedName> | null,\n): node is t.TSQualifiedName {\n  if (!node) return false;\n\n  if (node.type !== \"TSQualifiedName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSCallSignatureDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSCallSignatureDeclaration> | null,\n): node is t.TSCallSignatureDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSCallSignatureDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructSignatureDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConstructSignatureDeclaration> | null,\n): node is t.TSConstructSignatureDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSPropertySignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSPropertySignature> | null,\n): node is t.TSPropertySignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSPropertySignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMethodSignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSMethodSignature> | null,\n): node is t.TSMethodSignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSMethodSignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexSignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIndexSignature> | null,\n): node is t.TSIndexSignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSIndexSignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAnyKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSAnyKeyword> | null,\n): node is t.TSAnyKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSAnyKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBooleanKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBooleanKeyword> | null,\n): node is t.TSBooleanKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSBooleanKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBigIntKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBigIntKeyword> | null,\n): node is t.TSBigIntKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSBigIntKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntrinsicKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIntrinsicKeyword> | null,\n): node is t.TSIntrinsicKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSIntrinsicKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNeverKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNeverKeyword> | null,\n): node is t.TSNeverKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNeverKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNullKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNullKeyword> | null,\n): node is t.TSNullKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNullKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNumberKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNumberKeyword> | null,\n): node is t.TSNumberKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNumberKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSObjectKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSObjectKeyword> | null,\n): node is t.TSObjectKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSObjectKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSStringKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSStringKeyword> | null,\n): node is t.TSStringKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSStringKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSymbolKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSSymbolKeyword> | null,\n): node is t.TSSymbolKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSSymbolKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUndefinedKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUndefinedKeyword> | null,\n): node is t.TSUndefinedKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSUndefinedKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnknownKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUnknownKeyword> | null,\n): node is t.TSUnknownKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSUnknownKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSVoidKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSVoidKeyword> | null,\n): node is t.TSVoidKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSVoidKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSThisType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSThisType> | null,\n): node is t.TSThisType {\n  if (!node) return false;\n\n  if (node.type !== \"TSThisType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSFunctionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSFunctionType> | null,\n): node is t.TSFunctionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSFunctionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructorType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConstructorType> | null,\n): node is t.TSConstructorType {\n  if (!node) return false;\n\n  if (node.type !== \"TSConstructorType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeReference> | null,\n): node is t.TSTypeReference {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypePredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypePredicate> | null,\n): node is t.TSTypePredicate {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypePredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeQuery(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeQuery> | null,\n): node is t.TSTypeQuery {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeQuery\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeLiteral> | null,\n): node is t.TSTypeLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSArrayType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSArrayType> | null,\n): node is t.TSArrayType {\n  if (!node) return false;\n\n  if (node.type !== \"TSArrayType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTupleType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTupleType> | null,\n): node is t.TSTupleType {\n  if (!node) return false;\n\n  if (node.type !== \"TSTupleType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSOptionalType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSOptionalType> | null,\n): node is t.TSOptionalType {\n  if (!node) return false;\n\n  if (node.type !== \"TSOptionalType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSRestType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSRestType> | null,\n): node is t.TSRestType {\n  if (!node) return false;\n\n  if (node.type !== \"TSRestType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamedTupleMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNamedTupleMember> | null,\n): node is t.TSNamedTupleMember {\n  if (!node) return false;\n\n  if (node.type !== \"TSNamedTupleMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUnionType> | null,\n): node is t.TSUnionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSUnionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntersectionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIntersectionType> | null,\n): node is t.TSIntersectionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSIntersectionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConditionalType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConditionalType> | null,\n): node is t.TSConditionalType {\n  if (!node) return false;\n\n  if (node.type !== \"TSConditionalType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInferType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInferType> | null,\n): node is t.TSInferType {\n  if (!node) return false;\n\n  if (node.type !== \"TSInferType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParenthesizedType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSParenthesizedType> | null,\n): node is t.TSParenthesizedType {\n  if (!node) return false;\n\n  if (node.type !== \"TSParenthesizedType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeOperator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeOperator> | null,\n): node is t.TSTypeOperator {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeOperator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIndexedAccessType> | null,\n): node is t.TSIndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"TSIndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMappedType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSMappedType> | null,\n): node is t.TSMappedType {\n  if (!node) return false;\n\n  if (node.type !== \"TSMappedType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSLiteralType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSLiteralType> | null,\n): node is t.TSLiteralType {\n  if (!node) return false;\n\n  if (node.type !== \"TSLiteralType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExpressionWithTypeArguments(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExpressionWithTypeArguments> | null,\n): node is t.TSExpressionWithTypeArguments {\n  if (!node) return false;\n\n  if (node.type !== \"TSExpressionWithTypeArguments\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInterfaceDeclaration> | null,\n): node is t.TSInterfaceDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSInterfaceDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInterfaceBody> | null,\n): node is t.TSInterfaceBody {\n  if (!node) return false;\n\n  if (node.type !== \"TSInterfaceBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAliasDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAliasDeclaration> | null,\n): node is t.TSTypeAliasDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAliasDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInstantiationExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInstantiationExpression> | null,\n): node is t.TSInstantiationExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSInstantiationExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAsExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSAsExpression> | null,\n): node is t.TSAsExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSAsExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSatisfiesExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSSatisfiesExpression> | null,\n): node is t.TSSatisfiesExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSSatisfiesExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAssertion(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAssertion> | null,\n): node is t.TSTypeAssertion {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAssertion\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumDeclaration> | null,\n): node is t.TSEnumDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumMember> | null,\n): node is t.TSEnumMember {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSModuleDeclaration> | null,\n): node is t.TSModuleDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSModuleDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSModuleBlock> | null,\n): node is t.TSModuleBlock {\n  if (!node) return false;\n\n  if (node.type !== \"TSModuleBlock\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSImportType> | null,\n): node is t.TSImportType {\n  if (!node) return false;\n\n  if (node.type !== \"TSImportType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportEqualsDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSImportEqualsDeclaration> | null,\n): node is t.TSImportEqualsDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSImportEqualsDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExternalModuleReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExternalModuleReference> | null,\n): node is t.TSExternalModuleReference {\n  if (!node) return false;\n\n  if (node.type !== \"TSExternalModuleReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNonNullExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNonNullExpression> | null,\n): node is t.TSNonNullExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSNonNullExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExportAssignment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExportAssignment> | null,\n): node is t.TSExportAssignment {\n  if (!node) return false;\n\n  if (node.type !== \"TSExportAssignment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamespaceExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNamespaceExportDeclaration> | null,\n): node is t.TSNamespaceExportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAnnotation> | null,\n): node is t.TSTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterInstantiation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameterInstantiation> | null,\n): node is t.TSTypeParameterInstantiation {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameterInstantiation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameterDeclaration> | null,\n): node is t.TSTypeParameterDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameterDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameter(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameter> | null,\n): node is t.TSTypeParameter {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameter\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStandardized(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Standardized> | null,\n): node is t.Standardized {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ArrayExpression\":\n    case \"AssignmentExpression\":\n    case \"BinaryExpression\":\n    case \"InterpreterDirective\":\n    case \"Directive\":\n    case \"DirectiveLiteral\":\n    case \"BlockStatement\":\n    case \"BreakStatement\":\n    case \"CallExpression\":\n    case \"CatchClause\":\n    case \"ConditionalExpression\":\n    case \"ContinueStatement\":\n    case \"DebuggerStatement\":\n    case \"DoWhileStatement\":\n    case \"EmptyStatement\":\n    case \"ExpressionStatement\":\n    case \"File\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Identifier\":\n    case \"IfStatement\":\n    case \"LabeledStatement\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"LogicalExpression\":\n    case \"MemberExpression\":\n    case \"NewExpression\":\n    case \"Program\":\n    case \"ObjectExpression\":\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n    case \"RestElement\":\n    case \"ReturnStatement\":\n    case \"SequenceExpression\":\n    case \"ParenthesizedExpression\":\n    case \"SwitchCase\":\n    case \"SwitchStatement\":\n    case \"ThisExpression\":\n    case \"ThrowStatement\":\n    case \"TryStatement\":\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n    case \"VariableDeclaration\":\n    case \"VariableDeclarator\":\n    case \"WhileStatement\":\n    case \"WithStatement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassBody\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ExportSpecifier\":\n    case \"ForOfStatement\":\n    case \"ImportDeclaration\":\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n    case \"ImportExpression\":\n    case \"MetaProperty\":\n    case \"ClassMethod\":\n    case \"ObjectPattern\":\n    case \"SpreadElement\":\n    case \"Super\":\n    case \"TaggedTemplateExpression\":\n    case \"TemplateElement\":\n    case \"TemplateLiteral\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n    case \"Import\":\n    case \"BigIntLiteral\":\n    case \"ExportNamespaceSpecifier\":\n    case \"OptionalMemberExpression\":\n    case \"OptionalCallExpression\":\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n    case \"PrivateName\":\n    case \"StaticBlock\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Identifier\":\n        case \"StringLiteral\":\n        case \"BlockStatement\":\n        case \"ClassBody\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Expression> | null,\n): node is t.Expression {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ArrayExpression\":\n    case \"AssignmentExpression\":\n    case \"BinaryExpression\":\n    case \"CallExpression\":\n    case \"ConditionalExpression\":\n    case \"FunctionExpression\":\n    case \"Identifier\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"LogicalExpression\":\n    case \"MemberExpression\":\n    case \"NewExpression\":\n    case \"ObjectExpression\":\n    case \"SequenceExpression\":\n    case \"ParenthesizedExpression\":\n    case \"ThisExpression\":\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassExpression\":\n    case \"ImportExpression\":\n    case \"MetaProperty\":\n    case \"Super\":\n    case \"TaggedTemplateExpression\":\n    case \"TemplateLiteral\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n    case \"Import\":\n    case \"BigIntLiteral\":\n    case \"OptionalMemberExpression\":\n    case \"OptionalCallExpression\":\n    case \"TypeCastExpression\":\n    case \"JSXElement\":\n    case \"JSXFragment\":\n    case \"BindExpression\":\n    case \"DoExpression\":\n    case \"RecordExpression\":\n    case \"TupleExpression\":\n    case \"DecimalLiteral\":\n    case \"ModuleExpression\":\n    case \"TopicReference\":\n    case \"PipelineTopicExpression\":\n    case \"PipelineBareFunction\":\n    case \"PipelinePrimaryTopicReference\":\n    case \"TSInstantiationExpression\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Expression\":\n        case \"Identifier\":\n        case \"StringLiteral\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBinary(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Binary> | null,\n): node is t.Binary {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BinaryExpression\":\n    case \"LogicalExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isScopable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Scopable> | null,\n): node is t.Scopable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"CatchClause\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Program\":\n    case \"ObjectMethod\":\n    case \"SwitchStatement\":\n    case \"WhileStatement\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n    case \"ForOfStatement\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockParent(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BlockParent> | null,\n): node is t.BlockParent {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"CatchClause\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Program\":\n    case \"ObjectMethod\":\n    case \"SwitchStatement\":\n    case \"WhileStatement\":\n    case \"ArrowFunctionExpression\":\n    case \"ForOfStatement\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Block> | null,\n): node is t.Block {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"Program\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Statement> | null,\n): node is t.Statement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"DebuggerStatement\":\n    case \"DoWhileStatement\":\n    case \"EmptyStatement\":\n    case \"ExpressionStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"IfStatement\":\n    case \"LabeledStatement\":\n    case \"ReturnStatement\":\n    case \"SwitchStatement\":\n    case \"ThrowStatement\":\n    case \"TryStatement\":\n    case \"VariableDeclaration\":\n    case \"WhileStatement\":\n    case \"WithStatement\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ForOfStatement\":\n    case \"ImportDeclaration\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n    case \"EnumDeclaration\":\n    case \"TSDeclareFunction\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSEnumDeclaration\":\n    case \"TSModuleDeclaration\":\n    case \"TSImportEqualsDeclaration\":\n    case \"TSExportAssignment\":\n    case \"TSNamespaceExportDeclaration\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Statement\":\n        case \"Declaration\":\n        case \"BlockStatement\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTerminatorless(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Terminatorless> | null,\n): node is t.Terminatorless {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"ReturnStatement\":\n    case \"ThrowStatement\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCompletionStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CompletionStatement> | null,\n): node is t.CompletionStatement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"ReturnStatement\":\n    case \"ThrowStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isConditional(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Conditional> | null,\n): node is t.Conditional {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ConditionalExpression\":\n    case \"IfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLoop(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Loop> | null,\n): node is t.Loop {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"WhileStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWhile(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.While> | null,\n): node is t.While {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DoWhileStatement\":\n    case \"WhileStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionWrapper(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExpressionWrapper> | null,\n): node is t.ExpressionWrapper {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExpressionStatement\":\n    case \"ParenthesizedExpression\":\n    case \"TypeCastExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFor(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.For> | null,\n): node is t.For {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForXStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForXStatement> | null,\n): node is t.ForXStatement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ForInStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Function> | null,\n): node is t.Function {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ObjectMethod\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParent(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionParent> | null,\n): node is t.FunctionParent {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ObjectMethod\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPureish(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Pureish> | null,\n): node is t.Pureish {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"ArrowFunctionExpression\":\n    case \"BigIntLiteral\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Declaration> | null,\n): node is t.Declaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"VariableDeclaration\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ImportDeclaration\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n    case \"EnumDeclaration\":\n    case \"TSDeclareFunction\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSEnumDeclaration\":\n    case \"TSModuleDeclaration\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Declaration\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPatternLike(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PatternLike> | null,\n): node is t.PatternLike {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"RestElement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Pattern\":\n        case \"Identifier\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLVal(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LVal> | null,\n): node is t.LVal {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"MemberExpression\":\n    case \"RestElement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n    case \"TSParameterProperty\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Pattern\":\n        case \"Identifier\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEntityName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEntityName> | null,\n): node is t.TSEntityName {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"TSQualifiedName\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Identifier\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Literal> | null,\n): node is t.Literal {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"TemplateLiteral\":\n    case \"BigIntLiteral\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImmutable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Immutable> | null,\n): node is t.Immutable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"BigIntLiteral\":\n    case \"JSXAttribute\":\n    case \"JSXClosingElement\":\n    case \"JSXElement\":\n    case \"JSXExpressionContainer\":\n    case \"JSXSpreadChild\":\n    case \"JSXOpeningElement\":\n    case \"JSXText\":\n    case \"JSXFragment\":\n    case \"JSXOpeningFragment\":\n    case \"JSXClosingFragment\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUserWhitespacable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UserWhitespacable> | null,\n): node is t.UserWhitespacable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n    case \"ObjectTypeInternalSlot\":\n    case \"ObjectTypeCallProperty\":\n    case \"ObjectTypeIndexer\":\n    case \"ObjectTypeProperty\":\n    case \"ObjectTypeSpreadProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Method> | null,\n): node is t.Method {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectMember> | null,\n): node is t.ObjectMember {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Property> | null,\n): node is t.Property {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectProperty\":\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n    case \"ClassPrivateProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryLike(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnaryLike> | null,\n): node is t.UnaryLike {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"UnaryExpression\":\n    case \"SpreadElement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Pattern> | null,\n): node is t.Pattern {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Pattern\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClass(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Class> | null,\n): node is t.Class {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportOrExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportOrExportDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ImportDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDeclaration> | null,\n): node is t.ExportDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleSpecifier> | null,\n): node is t.ModuleSpecifier {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportSpecifier\":\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n    case \"ExportNamespaceSpecifier\":\n    case \"ExportDefaultSpecifier\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAccessor(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Accessor> | null,\n): node is t.Accessor {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassAccessorProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Private> | null,\n): node is t.Private {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n    case \"PrivateName\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlow(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Flow> | null,\n): node is t.Flow {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"ArrayTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"BooleanLiteralTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"ClassImplements\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"DeclaredPredicate\":\n    case \"ExistsTypeAnnotation\":\n    case \"FunctionTypeAnnotation\":\n    case \"FunctionTypeParam\":\n    case \"GenericTypeAnnotation\":\n    case \"InferredPredicate\":\n    case \"InterfaceExtends\":\n    case \"InterfaceDeclaration\":\n    case \"InterfaceTypeAnnotation\":\n    case \"IntersectionTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NullableTypeAnnotation\":\n    case \"NumberLiteralTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"ObjectTypeAnnotation\":\n    case \"ObjectTypeInternalSlot\":\n    case \"ObjectTypeCallProperty\":\n    case \"ObjectTypeIndexer\":\n    case \"ObjectTypeProperty\":\n    case \"ObjectTypeSpreadProperty\":\n    case \"OpaqueType\":\n    case \"QualifiedTypeIdentifier\":\n    case \"StringLiteralTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"TupleTypeAnnotation\":\n    case \"TypeofTypeAnnotation\":\n    case \"TypeAlias\":\n    case \"TypeAnnotation\":\n    case \"TypeCastExpression\":\n    case \"TypeParameter\":\n    case \"TypeParameterDeclaration\":\n    case \"TypeParameterInstantiation\":\n    case \"UnionTypeAnnotation\":\n    case \"Variance\":\n    case \"VoidTypeAnnotation\":\n    case \"EnumDeclaration\":\n    case \"EnumBooleanBody\":\n    case \"EnumNumberBody\":\n    case \"EnumStringBody\":\n    case \"EnumSymbolBody\":\n    case \"EnumBooleanMember\":\n    case \"EnumNumberMember\":\n    case \"EnumStringMember\":\n    case \"EnumDefaultedMember\":\n    case \"IndexedAccessType\":\n    case \"OptionalIndexedAccessType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowType> | null,\n): node is t.FlowType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"ArrayTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"BooleanLiteralTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"ExistsTypeAnnotation\":\n    case \"FunctionTypeAnnotation\":\n    case \"GenericTypeAnnotation\":\n    case \"InterfaceTypeAnnotation\":\n    case \"IntersectionTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NullableTypeAnnotation\":\n    case \"NumberLiteralTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"ObjectTypeAnnotation\":\n    case \"StringLiteralTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"TupleTypeAnnotation\":\n    case \"TypeofTypeAnnotation\":\n    case \"UnionTypeAnnotation\":\n    case \"VoidTypeAnnotation\":\n    case \"IndexedAccessType\":\n    case \"OptionalIndexedAccessType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowBaseAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowBaseAnnotation> | null,\n): node is t.FlowBaseAnnotation {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"VoidTypeAnnotation\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowDeclaration> | null,\n): node is t.FlowDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowPredicate> | null,\n): node is t.FlowPredicate {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DeclaredPredicate\":\n    case \"InferredPredicate\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBody> | null,\n): node is t.EnumBody {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"EnumBooleanBody\":\n    case \"EnumNumberBody\":\n    case \"EnumStringBody\":\n    case \"EnumSymbolBody\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumMember> | null,\n): node is t.EnumMember {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"EnumBooleanMember\":\n    case \"EnumNumberMember\":\n    case \"EnumStringMember\":\n    case \"EnumDefaultedMember\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSX(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSX> | null,\n): node is t.JSX {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"JSXAttribute\":\n    case \"JSXClosingElement\":\n    case \"JSXElement\":\n    case \"JSXEmptyExpression\":\n    case \"JSXExpressionContainer\":\n    case \"JSXSpreadChild\":\n    case \"JSXIdentifier\":\n    case \"JSXMemberExpression\":\n    case \"JSXNamespacedName\":\n    case \"JSXOpeningElement\":\n    case \"JSXSpreadAttribute\":\n    case \"JSXText\":\n    case \"JSXFragment\":\n    case \"JSXOpeningFragment\":\n    case \"JSXClosingFragment\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMiscellaneous(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Miscellaneous> | null,\n): node is t.Miscellaneous {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Noop\":\n    case \"Placeholder\":\n    case \"V8IntrinsicIdentifier\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeScript(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeScript> | null,\n): node is t.TypeScript {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSParameterProperty\":\n    case \"TSDeclareFunction\":\n    case \"TSDeclareMethod\":\n    case \"TSQualifiedName\":\n    case \"TSCallSignatureDeclaration\":\n    case \"TSConstructSignatureDeclaration\":\n    case \"TSPropertySignature\":\n    case \"TSMethodSignature\":\n    case \"TSIndexSignature\":\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSFunctionType\":\n    case \"TSConstructorType\":\n    case \"TSTypeReference\":\n    case \"TSTypePredicate\":\n    case \"TSTypeQuery\":\n    case \"TSTypeLiteral\":\n    case \"TSArrayType\":\n    case \"TSTupleType\":\n    case \"TSOptionalType\":\n    case \"TSRestType\":\n    case \"TSNamedTupleMember\":\n    case \"TSUnionType\":\n    case \"TSIntersectionType\":\n    case \"TSConditionalType\":\n    case \"TSInferType\":\n    case \"TSParenthesizedType\":\n    case \"TSTypeOperator\":\n    case \"TSIndexedAccessType\":\n    case \"TSMappedType\":\n    case \"TSLiteralType\":\n    case \"TSExpressionWithTypeArguments\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSInterfaceBody\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSInstantiationExpression\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSEnumDeclaration\":\n    case \"TSEnumMember\":\n    case \"TSModuleDeclaration\":\n    case \"TSModuleBlock\":\n    case \"TSImportType\":\n    case \"TSImportEqualsDeclaration\":\n    case \"TSExternalModuleReference\":\n    case \"TSNonNullExpression\":\n    case \"TSExportAssignment\":\n    case \"TSNamespaceExportDeclaration\":\n    case \"TSTypeAnnotation\":\n    case \"TSTypeParameterInstantiation\":\n    case \"TSTypeParameterDeclaration\":\n    case \"TSTypeParameter\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeElement> | null,\n): node is t.TSTypeElement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSCallSignatureDeclaration\":\n    case \"TSConstructSignatureDeclaration\":\n    case \"TSPropertySignature\":\n    case \"TSMethodSignature\":\n    case \"TSIndexSignature\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSType> | null,\n): node is t.TSType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSFunctionType\":\n    case \"TSConstructorType\":\n    case \"TSTypeReference\":\n    case \"TSTypePredicate\":\n    case \"TSTypeQuery\":\n    case \"TSTypeLiteral\":\n    case \"TSArrayType\":\n    case \"TSTupleType\":\n    case \"TSOptionalType\":\n    case \"TSRestType\":\n    case \"TSUnionType\":\n    case \"TSIntersectionType\":\n    case \"TSConditionalType\":\n    case \"TSInferType\":\n    case \"TSParenthesizedType\":\n    case \"TSTypeOperator\":\n    case \"TSIndexedAccessType\":\n    case \"TSMappedType\":\n    case \"TSLiteralType\":\n    case \"TSExpressionWithTypeArguments\":\n    case \"TSImportType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBaseType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBaseType> | null,\n): node is t.TSBaseType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSLiteralType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isNumericLiteral`\n */\nexport function isNumberLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberLiteral> | null,\n): boolean {\n  deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n  if (!node) return false;\n\n  if (node.type !== \"NumberLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRegExpLiteral`\n */\nexport function isRegexLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RegexLiteral> | null,\n): boolean {\n  deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n  if (!node) return false;\n\n  if (node.type !== \"RegexLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRestElement`\n */\nexport function isRestProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RestProperty> | null,\n): boolean {\n  deprecationWarning(\"isRestProperty\", \"isRestElement\");\n  if (!node) return false;\n\n  if (node.type !== \"RestProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isSpreadElement`\n */\nexport function isSpreadProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SpreadProperty> | null,\n): boolean {\n  deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n  if (!node) return false;\n\n  if (node.type !== \"SpreadProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isImportOrExportDeclaration`\n */\nexport function isModuleDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n  deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n  return isImportOrExportDeclaration(node, opts);\n}\n"],"mappings":"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","ignoreList":[]}
+{"version":3,"names":["_shallowEqual","require","_deprecationWarning","isArrayExpression","node","opts","type","shallowEqual","isAssignmentExpression","isBinaryExpression","isInterpreterDirective","isDirective","isDirectiveLiteral","isBlockStatement","isBreakStatement","isCallExpression","isCatchClause","isConditionalExpression","isContinueStatement","isDebuggerStatement","isDoWhileStatement","isEmptyStatement","isExpressionStatement","isFile","isForInStatement","isForStatement","isFunctionDeclaration","isFunctionExpression","isIdentifier","isIfStatement","isLabeledStatement","isStringLiteral","isNumericLiteral","isNullLiteral","isBooleanLiteral","isRegExpLiteral","isLogicalExpression","isMemberExpression","isNewExpression","isProgram","isObjectExpression","isObjectMethod","isObjectProperty","isRestElement","isReturnStatement","isSequenceExpression","isParenthesizedExpression","isSwitchCase","isSwitchStatement","isThisExpression","isThrowStatement","isTryStatement","isUnaryExpression","isUpdateExpression","isVariableDeclaration","isVariableDeclarator","isWhileStatement","isWithStatement","isAssignmentPattern","isArrayPattern","isArrowFunctionExpression","isClassBody","isClassExpression","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isExportSpecifier","isForOfStatement","isImportDeclaration","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isImportExpression","isMetaProperty","isClassMethod","isObjectPattern","isSpreadElement","isSuper","isTaggedTemplateExpression","isTemplateElement","isTemplateLiteral","isYieldExpression","isAwaitExpression","isImport","isBigIntLiteral","isExportNamespaceSpecifier","isOptionalMemberExpression","isOptionalCallExpression","isClassProperty","isClassAccessorProperty","isClassPrivateProperty","isClassPrivateMethod","isPrivateName","isStaticBlock","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isBooleanLiteralTypeAnnotation","isNullLiteralTypeAnnotation","isClassImplements","isDeclareClass","isDeclareFunction","isDeclareInterface","isDeclareModule","isDeclareModuleExports","isDeclareTypeAlias","isDeclareOpaqueType","isDeclareVariable","isDeclareExportDeclaration","isDeclareExportAllDeclaration","isDeclaredPredicate","isExistsTypeAnnotation","isFunctionTypeAnnotation","isFunctionTypeParam","isGenericTypeAnnotation","isInferredPredicate","isInterfaceExtends","isInterfaceDeclaration","isInterfaceTypeAnnotation","isIntersectionTypeAnnotation","isMixedTypeAnnotation","isEmptyTypeAnnotation","isNullableTypeAnnotation","isNumberLiteralTypeAnnotation","isNumberTypeAnnotation","isObjectTypeAnnotation","isObjectTypeInternalSlot","isObjectTypeCallProperty","isObjectTypeIndexer","isObjectTypeProperty","isObjectTypeSpreadProperty","isOpaqueType","isQualifiedTypeIdentifier","isStringLiteralTypeAnnotation","isStringTypeAnnotation","isSymbolTypeAnnotation","isThisTypeAnnotation","isTupleTypeAnnotation","isTypeofTypeAnnotation","isTypeAlias","isTypeAnnotation","isTypeCastExpression","isTypeParameter","isTypeParameterDeclaration","isTypeParameterInstantiation","isUnionTypeAnnotation","isVariance","isVoidTypeAnnotation","isEnumDeclaration","isEnumBooleanBody","isEnumNumberBody","isEnumStringBody","isEnumSymbolBody","isEnumBooleanMember","isEnumNumberMember","isEnumStringMember","isEnumDefaultedMember","isIndexedAccessType","isOptionalIndexedAccessType","isJSXAttribute","isJSXClosingElement","isJSXElement","isJSXEmptyExpression","isJSXExpressionContainer","isJSXSpreadChild","isJSXIdentifier","isJSXMemberExpression","isJSXNamespacedName","isJSXOpeningElement","isJSXSpreadAttribute","isJSXText","isJSXFragment","isJSXOpeningFragment","isJSXClosingFragment","isNoop","isPlaceholder","isV8IntrinsicIdentifier","isArgumentPlaceholder","isBindExpression","isImportAttribute","isDecorator","isDoExpression","isExportDefaultSpecifier","isRecordExpression","isTupleExpression","isDecimalLiteral","isModuleExpression","isTopicReference","isPipelineTopicExpression","isPipelineBareFunction","isPipelinePrimaryTopicReference","isTSParameterProperty","isTSDeclareFunction","isTSDeclareMethod","isTSQualifiedName","isTSCallSignatureDeclaration","isTSConstructSignatureDeclaration","isTSPropertySignature","isTSMethodSignature","isTSIndexSignature","isTSAnyKeyword","isTSBooleanKeyword","isTSBigIntKeyword","isTSIntrinsicKeyword","isTSNeverKeyword","isTSNullKeyword","isTSNumberKeyword","isTSObjectKeyword","isTSStringKeyword","isTSSymbolKeyword","isTSUndefinedKeyword","isTSUnknownKeyword","isTSVoidKeyword","isTSThisType","isTSFunctionType","isTSConstructorType","isTSTypeReference","isTSTypePredicate","isTSTypeQuery","isTSTypeLiteral","isTSArrayType","isTSTupleType","isTSOptionalType","isTSRestType","isTSNamedTupleMember","isTSUnionType","isTSIntersectionType","isTSConditionalType","isTSInferType","isTSParenthesizedType","isTSTypeOperator","isTSIndexedAccessType","isTSMappedType","isTSLiteralType","isTSExpressionWithTypeArguments","isTSInterfaceDeclaration","isTSInterfaceBody","isTSTypeAliasDeclaration","isTSInstantiationExpression","isTSAsExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTSEnumBody","isTSEnumDeclaration","isTSEnumMember","isTSModuleDeclaration","isTSModuleBlock","isTSImportType","isTSImportEqualsDeclaration","isTSExternalModuleReference","isTSNonNullExpression","isTSExportAssignment","isTSNamespaceExportDeclaration","isTSTypeAnnotation","isTSTypeParameterInstantiation","isTSTypeParameterDeclaration","isTSTypeParameter","isStandardized","expectedNode","isExpression","isBinary","isScopable","isBlockParent","isBlock","isStatement","isTerminatorless","isCompletionStatement","isConditional","isLoop","isWhile","isExpressionWrapper","isFor","isForXStatement","isFunction","isFunctionParent","isPureish","isDeclaration","isPatternLike","isLVal","isTSEntityName","isLiteral","isImmutable","isUserWhitespacable","isMethod","isObjectMember","isProperty","isUnaryLike","isPattern","isClass","isImportOrExportDeclaration","isExportDeclaration","isModuleSpecifier","isAccessor","isPrivate","isFlow","isFlowType","isFlowBaseAnnotation","isFlowDeclaration","isFlowPredicate","isEnumBody","isEnumMember","isJSX","isMiscellaneous","isTypeScript","isTSTypeElement","isTSType","isTSBaseType","isNumberLiteral","deprecationWarning","isRegexLiteral","isRestProperty","isSpreadProperty","isModuleDeclaration"],"sources":["../../../src/validators/generated/index.ts"],"sourcesContent":["/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/* eslint-disable no-fallthrough */\n\nimport shallowEqual from \"../../utils/shallowEqual.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\ntype Opts<Obj> = Partial<{\n  [Prop in keyof Obj]: Obj[Prop] extends t.Node\n    ? t.Node\n    : Obj[Prop] extends t.Node[]\n      ? t.Node[]\n      : Obj[Prop];\n}>;\n\nexport function isArrayExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayExpression> | null,\n): node is t.ArrayExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AssignmentExpression> | null,\n): node is t.AssignmentExpression {\n  if (!node) return false;\n\n  if (node.type !== \"AssignmentExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBinaryExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BinaryExpression> | null,\n): node is t.BinaryExpression {\n  if (!node) return false;\n\n  if (node.type !== \"BinaryExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterpreterDirective(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterpreterDirective> | null,\n): node is t.InterpreterDirective {\n  if (!node) return false;\n\n  if (node.type !== \"InterpreterDirective\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDirective(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Directive> | null,\n): node is t.Directive {\n  if (!node) return false;\n\n  if (node.type !== \"Directive\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDirectiveLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DirectiveLiteral> | null,\n): node is t.DirectiveLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"DirectiveLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BlockStatement> | null,\n): node is t.BlockStatement {\n  if (!node) return false;\n\n  if (node.type !== \"BlockStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBreakStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BreakStatement> | null,\n): node is t.BreakStatement {\n  if (!node) return false;\n\n  if (node.type !== \"BreakStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCallExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CallExpression> | null,\n): node is t.CallExpression {\n  if (!node) return false;\n\n  if (node.type !== \"CallExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCatchClause(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CatchClause> | null,\n): node is t.CatchClause {\n  if (!node) return false;\n\n  if (node.type !== \"CatchClause\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isConditionalExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ConditionalExpression> | null,\n): node is t.ConditionalExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ConditionalExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isContinueStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ContinueStatement> | null,\n): node is t.ContinueStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ContinueStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDebuggerStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DebuggerStatement> | null,\n): node is t.DebuggerStatement {\n  if (!node) return false;\n\n  if (node.type !== \"DebuggerStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDoWhileStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DoWhileStatement> | null,\n): node is t.DoWhileStatement {\n  if (!node) return false;\n\n  if (node.type !== \"DoWhileStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EmptyStatement> | null,\n): node is t.EmptyStatement {\n  if (!node) return false;\n\n  if (node.type !== \"EmptyStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExpressionStatement> | null,\n): node is t.ExpressionStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ExpressionStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFile(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.File> | null,\n): node is t.File {\n  if (!node) return false;\n\n  if (node.type !== \"File\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForInStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForInStatement> | null,\n): node is t.ForInStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForInStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForStatement> | null,\n): node is t.ForStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionDeclaration> | null,\n): node is t.FunctionDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionExpression> | null,\n): node is t.FunctionExpression {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Identifier> | null,\n): node is t.Identifier {\n  if (!node) return false;\n\n  if (node.type !== \"Identifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIfStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IfStatement> | null,\n): node is t.IfStatement {\n  if (!node) return false;\n\n  if (node.type !== \"IfStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLabeledStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LabeledStatement> | null,\n): node is t.LabeledStatement {\n  if (!node) return false;\n\n  if (node.type !== \"LabeledStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringLiteral> | null,\n): node is t.StringLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"StringLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumericLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumericLiteral> | null,\n): node is t.NumericLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"NumericLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullLiteral> | null,\n): node is t.NullLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"NullLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanLiteral> | null,\n): node is t.BooleanLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRegExpLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RegExpLiteral> | null,\n): node is t.RegExpLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"RegExpLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLogicalExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LogicalExpression> | null,\n): node is t.LogicalExpression {\n  if (!node) return false;\n\n  if (node.type !== \"LogicalExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MemberExpression> | null,\n): node is t.MemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"MemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNewExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NewExpression> | null,\n): node is t.NewExpression {\n  if (!node) return false;\n\n  if (node.type !== \"NewExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isProgram(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Program> | null,\n): node is t.Program {\n  if (!node) return false;\n\n  if (node.type !== \"Program\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectExpression> | null,\n): node is t.ObjectExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectMethod> | null,\n): node is t.ObjectMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectProperty> | null,\n): node is t.ObjectProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRestElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RestElement> | null,\n): node is t.RestElement {\n  if (!node) return false;\n\n  if (node.type !== \"RestElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isReturnStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ReturnStatement> | null,\n): node is t.ReturnStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ReturnStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSequenceExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SequenceExpression> | null,\n): node is t.SequenceExpression {\n  if (!node) return false;\n\n  if (node.type !== \"SequenceExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isParenthesizedExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ParenthesizedExpression> | null,\n): node is t.ParenthesizedExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ParenthesizedExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchCase(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SwitchCase> | null,\n): node is t.SwitchCase {\n  if (!node) return false;\n\n  if (node.type !== \"SwitchCase\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SwitchStatement> | null,\n): node is t.SwitchStatement {\n  if (!node) return false;\n\n  if (node.type !== \"SwitchStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThisExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThisExpression> | null,\n): node is t.ThisExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ThisExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThrowStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThrowStatement> | null,\n): node is t.ThrowStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ThrowStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTryStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TryStatement> | null,\n): node is t.TryStatement {\n  if (!node) return false;\n\n  if (node.type !== \"TryStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnaryExpression> | null,\n): node is t.UnaryExpression {\n  if (!node) return false;\n\n  if (node.type !== \"UnaryExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUpdateExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UpdateExpression> | null,\n): node is t.UpdateExpression {\n  if (!node) return false;\n\n  if (node.type !== \"UpdateExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VariableDeclaration> | null,\n): node is t.VariableDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"VariableDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclarator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VariableDeclarator> | null,\n): node is t.VariableDeclarator {\n  if (!node) return false;\n\n  if (node.type !== \"VariableDeclarator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWhileStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.WhileStatement> | null,\n): node is t.WhileStatement {\n  if (!node) return false;\n\n  if (node.type !== \"WhileStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWithStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.WithStatement> | null,\n): node is t.WithStatement {\n  if (!node) return false;\n\n  if (node.type !== \"WithStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AssignmentPattern> | null,\n): node is t.AssignmentPattern {\n  if (!node) return false;\n\n  if (node.type !== \"AssignmentPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayPattern> | null,\n): node is t.ArrayPattern {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrowFunctionExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrowFunctionExpression> | null,\n): node is t.ArrowFunctionExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ArrowFunctionExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassBody> | null,\n): node is t.ClassBody {\n  if (!node) return false;\n\n  if (node.type !== \"ClassBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassExpression> | null,\n): node is t.ClassExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ClassExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassDeclaration> | null,\n): node is t.ClassDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ClassDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportAllDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportAllDeclaration> | null,\n): node is t.ExportAllDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportAllDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDefaultDeclaration> | null,\n): node is t.ExportDefaultDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportDefaultDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamedDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportNamedDeclaration> | null,\n): node is t.ExportNamedDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportNamedDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportSpecifier> | null,\n): node is t.ExportSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForOfStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForOfStatement> | null,\n): node is t.ForOfStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForOfStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportDeclaration> | null,\n): node is t.ImportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ImportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDefaultSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportDefaultSpecifier> | null,\n): node is t.ImportDefaultSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportDefaultSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportNamespaceSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportNamespaceSpecifier> | null,\n): node is t.ImportNamespaceSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportNamespaceSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportSpecifier> | null,\n): node is t.ImportSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportExpression> | null,\n): node is t.ImportExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ImportExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMetaProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MetaProperty> | null,\n): node is t.MetaProperty {\n  if (!node) return false;\n\n  if (node.type !== \"MetaProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassMethod> | null,\n): node is t.ClassMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ClassMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectPattern> | null,\n): node is t.ObjectPattern {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSpreadElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SpreadElement> | null,\n): node is t.SpreadElement {\n  if (!node) return false;\n\n  if (node.type !== \"SpreadElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSuper(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Super> | null,\n): node is t.Super {\n  if (!node) return false;\n\n  if (node.type !== \"Super\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTaggedTemplateExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TaggedTemplateExpression> | null,\n): node is t.TaggedTemplateExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TaggedTemplateExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TemplateElement> | null,\n): node is t.TemplateElement {\n  if (!node) return false;\n\n  if (node.type !== \"TemplateElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TemplateLiteral> | null,\n): node is t.TemplateLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"TemplateLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isYieldExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.YieldExpression> | null,\n): node is t.YieldExpression {\n  if (!node) return false;\n\n  if (node.type !== \"YieldExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAwaitExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AwaitExpression> | null,\n): node is t.AwaitExpression {\n  if (!node) return false;\n\n  if (node.type !== \"AwaitExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImport(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Import> | null,\n): node is t.Import {\n  if (!node) return false;\n\n  if (node.type !== \"Import\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BigIntLiteral> | null,\n): node is t.BigIntLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"BigIntLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamespaceSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportNamespaceSpecifier> | null,\n): node is t.ExportNamespaceSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportNamespaceSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalMemberExpression> | null,\n): node is t.OptionalMemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalMemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalCallExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalCallExpression> | null,\n): node is t.OptionalCallExpression {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalCallExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassProperty> | null,\n): node is t.ClassProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassAccessorProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassAccessorProperty> | null,\n): node is t.ClassAccessorProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassAccessorProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassPrivateProperty> | null,\n): node is t.ClassPrivateProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassPrivateProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassPrivateMethod> | null,\n): node is t.ClassPrivateMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ClassPrivateMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivateName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PrivateName> | null,\n): node is t.PrivateName {\n  if (!node) return false;\n\n  if (node.type !== \"PrivateName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStaticBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StaticBlock> | null,\n): node is t.StaticBlock {\n  if (!node) return false;\n\n  if (node.type !== \"StaticBlock\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAnyTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AnyTypeAnnotation> | null,\n): node is t.AnyTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"AnyTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayTypeAnnotation> | null,\n): node is t.ArrayTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanTypeAnnotation> | null,\n): node is t.BooleanTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanLiteralTypeAnnotation> | null,\n): node is t.BooleanLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullLiteralTypeAnnotation> | null,\n): node is t.NullLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassImplements(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassImplements> | null,\n): node is t.ClassImplements {\n  if (!node) return false;\n\n  if (node.type !== \"ClassImplements\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareClass(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareClass> | null,\n): node is t.DeclareClass {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareClass\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareFunction> | null,\n): node is t.DeclareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareInterface(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareInterface> | null,\n): node is t.DeclareInterface {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareInterface\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModule(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareModule> | null,\n): node is t.DeclareModule {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareModule\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModuleExports(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareModuleExports> | null,\n): node is t.DeclareModuleExports {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareModuleExports\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareTypeAlias(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareTypeAlias> | null,\n): node is t.DeclareTypeAlias {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareTypeAlias\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareOpaqueType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareOpaqueType> | null,\n): node is t.DeclareOpaqueType {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareOpaqueType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareVariable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareVariable> | null,\n): node is t.DeclareVariable {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareVariable\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareExportDeclaration> | null,\n): node is t.DeclareExportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareExportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportAllDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareExportAllDeclaration> | null,\n): node is t.DeclareExportAllDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareExportAllDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaredPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclaredPredicate> | null,\n): node is t.DeclaredPredicate {\n  if (!node) return false;\n\n  if (node.type !== \"DeclaredPredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExistsTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExistsTypeAnnotation> | null,\n): node is t.ExistsTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ExistsTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionTypeAnnotation> | null,\n): node is t.FunctionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeParam(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionTypeParam> | null,\n): node is t.FunctionTypeParam {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionTypeParam\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isGenericTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.GenericTypeAnnotation> | null,\n): node is t.GenericTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"GenericTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInferredPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InferredPredicate> | null,\n): node is t.InferredPredicate {\n  if (!node) return false;\n\n  if (node.type !== \"InferredPredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceExtends(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceExtends> | null,\n): node is t.InterfaceExtends {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceExtends\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceDeclaration> | null,\n): node is t.InterfaceDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceTypeAnnotation> | null,\n): node is t.InterfaceTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIntersectionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IntersectionTypeAnnotation> | null,\n): node is t.IntersectionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"IntersectionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMixedTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MixedTypeAnnotation> | null,\n): node is t.MixedTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"MixedTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EmptyTypeAnnotation> | null,\n): node is t.EmptyTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"EmptyTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullableTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullableTypeAnnotation> | null,\n): node is t.NullableTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NullableTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberLiteralTypeAnnotation> | null,\n): node is t.NumberLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberTypeAnnotation> | null,\n): node is t.NumberTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NumberTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeAnnotation> | null,\n): node is t.ObjectTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeInternalSlot(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeInternalSlot> | null,\n): node is t.ObjectTypeInternalSlot {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeInternalSlot\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeCallProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeCallProperty> | null,\n): node is t.ObjectTypeCallProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeCallProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeIndexer(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeIndexer> | null,\n): node is t.ObjectTypeIndexer {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeIndexer\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeProperty> | null,\n): node is t.ObjectTypeProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeSpreadProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeSpreadProperty> | null,\n): node is t.ObjectTypeSpreadProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOpaqueType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OpaqueType> | null,\n): node is t.OpaqueType {\n  if (!node) return false;\n\n  if (node.type !== \"OpaqueType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isQualifiedTypeIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.QualifiedTypeIdentifier> | null,\n): node is t.QualifiedTypeIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"QualifiedTypeIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringLiteralTypeAnnotation> | null,\n): node is t.StringLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringTypeAnnotation> | null,\n): node is t.StringTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"StringTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSymbolTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SymbolTypeAnnotation> | null,\n): node is t.SymbolTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"SymbolTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThisTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThisTypeAnnotation> | null,\n): node is t.ThisTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ThisTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TupleTypeAnnotation> | null,\n): node is t.TupleTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TupleTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeofTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeofTypeAnnotation> | null,\n): node is t.TypeofTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeofTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAlias(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeAlias> | null,\n): node is t.TypeAlias {\n  if (!node) return false;\n\n  if (node.type !== \"TypeAlias\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeAnnotation> | null,\n): node is t.TypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeCastExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeCastExpression> | null,\n): node is t.TypeCastExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TypeCastExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameter(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameter> | null,\n): node is t.TypeParameter {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameter\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameterDeclaration> | null,\n): node is t.TypeParameterDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameterDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterInstantiation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameterInstantiation> | null,\n): node is t.TypeParameterInstantiation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameterInstantiation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnionTypeAnnotation> | null,\n): node is t.UnionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"UnionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariance(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Variance> | null,\n): node is t.Variance {\n  if (!node) return false;\n\n  if (node.type !== \"Variance\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VoidTypeAnnotation> | null,\n): node is t.VoidTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"VoidTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumDeclaration> | null,\n): node is t.EnumDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"EnumDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBooleanBody> | null,\n): node is t.EnumBooleanBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumBooleanBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumNumberBody> | null,\n): node is t.EnumNumberBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumNumberBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumStringBody> | null,\n): node is t.EnumStringBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumStringBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumSymbolBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumSymbolBody> | null,\n): node is t.EnumSymbolBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumSymbolBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBooleanMember> | null,\n): node is t.EnumBooleanMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumBooleanMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumNumberMember> | null,\n): node is t.EnumNumberMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumNumberMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumStringMember> | null,\n): node is t.EnumStringMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumStringMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDefaultedMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumDefaultedMember> | null,\n): node is t.EnumDefaultedMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumDefaultedMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IndexedAccessType> | null,\n): node is t.IndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"IndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalIndexedAccessType> | null,\n): node is t.OptionalIndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalIndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXAttribute> | null,\n): node is t.JSXAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"JSXAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXClosingElement> | null,\n): node is t.JSXClosingElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXClosingElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXElement> | null,\n): node is t.JSXElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXEmptyExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXEmptyExpression> | null,\n): node is t.JSXEmptyExpression {\n  if (!node) return false;\n\n  if (node.type !== \"JSXEmptyExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXExpressionContainer(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXExpressionContainer> | null,\n): node is t.JSXExpressionContainer {\n  if (!node) return false;\n\n  if (node.type !== \"JSXExpressionContainer\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadChild(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXSpreadChild> | null,\n): node is t.JSXSpreadChild {\n  if (!node) return false;\n\n  if (node.type !== \"JSXSpreadChild\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXIdentifier> | null,\n): node is t.JSXIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"JSXIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXMemberExpression> | null,\n): node is t.JSXMemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"JSXMemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXNamespacedName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXNamespacedName> | null,\n): node is t.JSXNamespacedName {\n  if (!node) return false;\n\n  if (node.type !== \"JSXNamespacedName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXOpeningElement> | null,\n): node is t.JSXOpeningElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXOpeningElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXSpreadAttribute> | null,\n): node is t.JSXSpreadAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"JSXSpreadAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXText(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXText> | null,\n): node is t.JSXText {\n  if (!node) return false;\n\n  if (node.type !== \"JSXText\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXFragment> | null,\n): node is t.JSXFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXOpeningFragment> | null,\n): node is t.JSXOpeningFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXOpeningFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXClosingFragment> | null,\n): node is t.JSXClosingFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXClosingFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNoop(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Noop> | null,\n): node is t.Noop {\n  if (!node) return false;\n\n  if (node.type !== \"Noop\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPlaceholder(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Placeholder> | null,\n): node is t.Placeholder {\n  if (!node) return false;\n\n  if (node.type !== \"Placeholder\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isV8IntrinsicIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.V8IntrinsicIdentifier> | null,\n): node is t.V8IntrinsicIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"V8IntrinsicIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArgumentPlaceholder(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArgumentPlaceholder> | null,\n): node is t.ArgumentPlaceholder {\n  if (!node) return false;\n\n  if (node.type !== \"ArgumentPlaceholder\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBindExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BindExpression> | null,\n): node is t.BindExpression {\n  if (!node) return false;\n\n  if (node.type !== \"BindExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportAttribute> | null,\n): node is t.ImportAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"ImportAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDecorator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Decorator> | null,\n): node is t.Decorator {\n  if (!node) return false;\n\n  if (node.type !== \"Decorator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDoExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DoExpression> | null,\n): node is t.DoExpression {\n  if (!node) return false;\n\n  if (node.type !== \"DoExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDefaultSpecifier> | null,\n): node is t.ExportDefaultSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportDefaultSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRecordExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RecordExpression> | null,\n): node is t.RecordExpression {\n  if (!node) return false;\n\n  if (node.type !== \"RecordExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TupleExpression> | null,\n): node is t.TupleExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TupleExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDecimalLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DecimalLiteral> | null,\n): node is t.DecimalLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"DecimalLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleExpression> | null,\n): node is t.ModuleExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ModuleExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTopicReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TopicReference> | null,\n): node is t.TopicReference {\n  if (!node) return false;\n\n  if (node.type !== \"TopicReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineTopicExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelineTopicExpression> | null,\n): node is t.PipelineTopicExpression {\n  if (!node) return false;\n\n  if (node.type !== \"PipelineTopicExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineBareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelineBareFunction> | null,\n): node is t.PipelineBareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"PipelineBareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelinePrimaryTopicReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelinePrimaryTopicReference> | null,\n): node is t.PipelinePrimaryTopicReference {\n  if (!node) return false;\n\n  if (node.type !== \"PipelinePrimaryTopicReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParameterProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSParameterProperty> | null,\n): node is t.TSParameterProperty {\n  if (!node) return false;\n\n  if (node.type !== \"TSParameterProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSDeclareFunction> | null,\n): node is t.TSDeclareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"TSDeclareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSDeclareMethod> | null,\n): node is t.TSDeclareMethod {\n  if (!node) return false;\n\n  if (node.type !== \"TSDeclareMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSQualifiedName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSQualifiedName> | null,\n): node is t.TSQualifiedName {\n  if (!node) return false;\n\n  if (node.type !== \"TSQualifiedName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSCallSignatureDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSCallSignatureDeclaration> | null,\n): node is t.TSCallSignatureDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSCallSignatureDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructSignatureDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConstructSignatureDeclaration> | null,\n): node is t.TSConstructSignatureDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSPropertySignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSPropertySignature> | null,\n): node is t.TSPropertySignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSPropertySignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMethodSignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSMethodSignature> | null,\n): node is t.TSMethodSignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSMethodSignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexSignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIndexSignature> | null,\n): node is t.TSIndexSignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSIndexSignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAnyKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSAnyKeyword> | null,\n): node is t.TSAnyKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSAnyKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBooleanKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBooleanKeyword> | null,\n): node is t.TSBooleanKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSBooleanKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBigIntKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBigIntKeyword> | null,\n): node is t.TSBigIntKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSBigIntKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntrinsicKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIntrinsicKeyword> | null,\n): node is t.TSIntrinsicKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSIntrinsicKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNeverKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNeverKeyword> | null,\n): node is t.TSNeverKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNeverKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNullKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNullKeyword> | null,\n): node is t.TSNullKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNullKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNumberKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNumberKeyword> | null,\n): node is t.TSNumberKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNumberKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSObjectKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSObjectKeyword> | null,\n): node is t.TSObjectKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSObjectKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSStringKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSStringKeyword> | null,\n): node is t.TSStringKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSStringKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSymbolKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSSymbolKeyword> | null,\n): node is t.TSSymbolKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSSymbolKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUndefinedKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUndefinedKeyword> | null,\n): node is t.TSUndefinedKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSUndefinedKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnknownKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUnknownKeyword> | null,\n): node is t.TSUnknownKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSUnknownKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSVoidKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSVoidKeyword> | null,\n): node is t.TSVoidKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSVoidKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSThisType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSThisType> | null,\n): node is t.TSThisType {\n  if (!node) return false;\n\n  if (node.type !== \"TSThisType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSFunctionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSFunctionType> | null,\n): node is t.TSFunctionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSFunctionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructorType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConstructorType> | null,\n): node is t.TSConstructorType {\n  if (!node) return false;\n\n  if (node.type !== \"TSConstructorType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeReference> | null,\n): node is t.TSTypeReference {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypePredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypePredicate> | null,\n): node is t.TSTypePredicate {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypePredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeQuery(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeQuery> | null,\n): node is t.TSTypeQuery {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeQuery\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeLiteral> | null,\n): node is t.TSTypeLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSArrayType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSArrayType> | null,\n): node is t.TSArrayType {\n  if (!node) return false;\n\n  if (node.type !== \"TSArrayType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTupleType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTupleType> | null,\n): node is t.TSTupleType {\n  if (!node) return false;\n\n  if (node.type !== \"TSTupleType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSOptionalType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSOptionalType> | null,\n): node is t.TSOptionalType {\n  if (!node) return false;\n\n  if (node.type !== \"TSOptionalType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSRestType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSRestType> | null,\n): node is t.TSRestType {\n  if (!node) return false;\n\n  if (node.type !== \"TSRestType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamedTupleMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNamedTupleMember> | null,\n): node is t.TSNamedTupleMember {\n  if (!node) return false;\n\n  if (node.type !== \"TSNamedTupleMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUnionType> | null,\n): node is t.TSUnionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSUnionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntersectionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIntersectionType> | null,\n): node is t.TSIntersectionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSIntersectionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConditionalType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConditionalType> | null,\n): node is t.TSConditionalType {\n  if (!node) return false;\n\n  if (node.type !== \"TSConditionalType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInferType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInferType> | null,\n): node is t.TSInferType {\n  if (!node) return false;\n\n  if (node.type !== \"TSInferType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParenthesizedType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSParenthesizedType> | null,\n): node is t.TSParenthesizedType {\n  if (!node) return false;\n\n  if (node.type !== \"TSParenthesizedType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeOperator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeOperator> | null,\n): node is t.TSTypeOperator {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeOperator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIndexedAccessType> | null,\n): node is t.TSIndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"TSIndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMappedType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSMappedType> | null,\n): node is t.TSMappedType {\n  if (!node) return false;\n\n  if (node.type !== \"TSMappedType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSLiteralType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSLiteralType> | null,\n): node is t.TSLiteralType {\n  if (!node) return false;\n\n  if (node.type !== \"TSLiteralType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExpressionWithTypeArguments(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExpressionWithTypeArguments> | null,\n): node is t.TSExpressionWithTypeArguments {\n  if (!node) return false;\n\n  if (node.type !== \"TSExpressionWithTypeArguments\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInterfaceDeclaration> | null,\n): node is t.TSInterfaceDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSInterfaceDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInterfaceBody> | null,\n): node is t.TSInterfaceBody {\n  if (!node) return false;\n\n  if (node.type !== \"TSInterfaceBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAliasDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAliasDeclaration> | null,\n): node is t.TSTypeAliasDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAliasDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInstantiationExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInstantiationExpression> | null,\n): node is t.TSInstantiationExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSInstantiationExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAsExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSAsExpression> | null,\n): node is t.TSAsExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSAsExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSatisfiesExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSSatisfiesExpression> | null,\n): node is t.TSSatisfiesExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSSatisfiesExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAssertion(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAssertion> | null,\n): node is t.TSTypeAssertion {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAssertion\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumBody> | null,\n): node is t.TSEnumBody {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumDeclaration> | null,\n): node is t.TSEnumDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumMember> | null,\n): node is t.TSEnumMember {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSModuleDeclaration> | null,\n): node is t.TSModuleDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSModuleDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSModuleBlock> | null,\n): node is t.TSModuleBlock {\n  if (!node) return false;\n\n  if (node.type !== \"TSModuleBlock\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSImportType> | null,\n): node is t.TSImportType {\n  if (!node) return false;\n\n  if (node.type !== \"TSImportType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportEqualsDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSImportEqualsDeclaration> | null,\n): node is t.TSImportEqualsDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSImportEqualsDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExternalModuleReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExternalModuleReference> | null,\n): node is t.TSExternalModuleReference {\n  if (!node) return false;\n\n  if (node.type !== \"TSExternalModuleReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNonNullExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNonNullExpression> | null,\n): node is t.TSNonNullExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSNonNullExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExportAssignment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExportAssignment> | null,\n): node is t.TSExportAssignment {\n  if (!node) return false;\n\n  if (node.type !== \"TSExportAssignment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamespaceExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNamespaceExportDeclaration> | null,\n): node is t.TSNamespaceExportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAnnotation> | null,\n): node is t.TSTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterInstantiation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameterInstantiation> | null,\n): node is t.TSTypeParameterInstantiation {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameterInstantiation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameterDeclaration> | null,\n): node is t.TSTypeParameterDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameterDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameter(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameter> | null,\n): node is t.TSTypeParameter {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameter\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStandardized(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Standardized> | null,\n): node is t.Standardized {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ArrayExpression\":\n    case \"AssignmentExpression\":\n    case \"BinaryExpression\":\n    case \"InterpreterDirective\":\n    case \"Directive\":\n    case \"DirectiveLiteral\":\n    case \"BlockStatement\":\n    case \"BreakStatement\":\n    case \"CallExpression\":\n    case \"CatchClause\":\n    case \"ConditionalExpression\":\n    case \"ContinueStatement\":\n    case \"DebuggerStatement\":\n    case \"DoWhileStatement\":\n    case \"EmptyStatement\":\n    case \"ExpressionStatement\":\n    case \"File\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Identifier\":\n    case \"IfStatement\":\n    case \"LabeledStatement\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"LogicalExpression\":\n    case \"MemberExpression\":\n    case \"NewExpression\":\n    case \"Program\":\n    case \"ObjectExpression\":\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n    case \"RestElement\":\n    case \"ReturnStatement\":\n    case \"SequenceExpression\":\n    case \"ParenthesizedExpression\":\n    case \"SwitchCase\":\n    case \"SwitchStatement\":\n    case \"ThisExpression\":\n    case \"ThrowStatement\":\n    case \"TryStatement\":\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n    case \"VariableDeclaration\":\n    case \"VariableDeclarator\":\n    case \"WhileStatement\":\n    case \"WithStatement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassBody\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ExportSpecifier\":\n    case \"ForOfStatement\":\n    case \"ImportDeclaration\":\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n    case \"ImportExpression\":\n    case \"MetaProperty\":\n    case \"ClassMethod\":\n    case \"ObjectPattern\":\n    case \"SpreadElement\":\n    case \"Super\":\n    case \"TaggedTemplateExpression\":\n    case \"TemplateElement\":\n    case \"TemplateLiteral\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n    case \"Import\":\n    case \"BigIntLiteral\":\n    case \"ExportNamespaceSpecifier\":\n    case \"OptionalMemberExpression\":\n    case \"OptionalCallExpression\":\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n    case \"PrivateName\":\n    case \"StaticBlock\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Identifier\":\n        case \"StringLiteral\":\n        case \"BlockStatement\":\n        case \"ClassBody\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Expression> | null,\n): node is t.Expression {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ArrayExpression\":\n    case \"AssignmentExpression\":\n    case \"BinaryExpression\":\n    case \"CallExpression\":\n    case \"ConditionalExpression\":\n    case \"FunctionExpression\":\n    case \"Identifier\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"LogicalExpression\":\n    case \"MemberExpression\":\n    case \"NewExpression\":\n    case \"ObjectExpression\":\n    case \"SequenceExpression\":\n    case \"ParenthesizedExpression\":\n    case \"ThisExpression\":\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassExpression\":\n    case \"ImportExpression\":\n    case \"MetaProperty\":\n    case \"Super\":\n    case \"TaggedTemplateExpression\":\n    case \"TemplateLiteral\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n    case \"Import\":\n    case \"BigIntLiteral\":\n    case \"OptionalMemberExpression\":\n    case \"OptionalCallExpression\":\n    case \"TypeCastExpression\":\n    case \"JSXElement\":\n    case \"JSXFragment\":\n    case \"BindExpression\":\n    case \"DoExpression\":\n    case \"RecordExpression\":\n    case \"TupleExpression\":\n    case \"DecimalLiteral\":\n    case \"ModuleExpression\":\n    case \"TopicReference\":\n    case \"PipelineTopicExpression\":\n    case \"PipelineBareFunction\":\n    case \"PipelinePrimaryTopicReference\":\n    case \"TSInstantiationExpression\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Expression\":\n        case \"Identifier\":\n        case \"StringLiteral\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBinary(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Binary> | null,\n): node is t.Binary {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BinaryExpression\":\n    case \"LogicalExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isScopable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Scopable> | null,\n): node is t.Scopable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"CatchClause\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Program\":\n    case \"ObjectMethod\":\n    case \"SwitchStatement\":\n    case \"WhileStatement\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n    case \"ForOfStatement\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockParent(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BlockParent> | null,\n): node is t.BlockParent {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"CatchClause\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Program\":\n    case \"ObjectMethod\":\n    case \"SwitchStatement\":\n    case \"WhileStatement\":\n    case \"ArrowFunctionExpression\":\n    case \"ForOfStatement\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Block> | null,\n): node is t.Block {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"Program\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Statement> | null,\n): node is t.Statement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"DebuggerStatement\":\n    case \"DoWhileStatement\":\n    case \"EmptyStatement\":\n    case \"ExpressionStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"IfStatement\":\n    case \"LabeledStatement\":\n    case \"ReturnStatement\":\n    case \"SwitchStatement\":\n    case \"ThrowStatement\":\n    case \"TryStatement\":\n    case \"VariableDeclaration\":\n    case \"WhileStatement\":\n    case \"WithStatement\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ForOfStatement\":\n    case \"ImportDeclaration\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n    case \"EnumDeclaration\":\n    case \"TSDeclareFunction\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSEnumDeclaration\":\n    case \"TSModuleDeclaration\":\n    case \"TSImportEqualsDeclaration\":\n    case \"TSExportAssignment\":\n    case \"TSNamespaceExportDeclaration\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Statement\":\n        case \"Declaration\":\n        case \"BlockStatement\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTerminatorless(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Terminatorless> | null,\n): node is t.Terminatorless {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"ReturnStatement\":\n    case \"ThrowStatement\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCompletionStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CompletionStatement> | null,\n): node is t.CompletionStatement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"ReturnStatement\":\n    case \"ThrowStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isConditional(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Conditional> | null,\n): node is t.Conditional {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ConditionalExpression\":\n    case \"IfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLoop(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Loop> | null,\n): node is t.Loop {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"WhileStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWhile(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.While> | null,\n): node is t.While {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DoWhileStatement\":\n    case \"WhileStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionWrapper(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExpressionWrapper> | null,\n): node is t.ExpressionWrapper {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExpressionStatement\":\n    case \"ParenthesizedExpression\":\n    case \"TypeCastExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFor(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.For> | null,\n): node is t.For {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForXStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForXStatement> | null,\n): node is t.ForXStatement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ForInStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Function> | null,\n): node is t.Function {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ObjectMethod\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParent(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionParent> | null,\n): node is t.FunctionParent {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ObjectMethod\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPureish(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Pureish> | null,\n): node is t.Pureish {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"ArrowFunctionExpression\":\n    case \"BigIntLiteral\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Declaration> | null,\n): node is t.Declaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"VariableDeclaration\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ImportDeclaration\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n    case \"EnumDeclaration\":\n    case \"TSDeclareFunction\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSEnumDeclaration\":\n    case \"TSModuleDeclaration\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Declaration\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPatternLike(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PatternLike> | null,\n): node is t.PatternLike {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"RestElement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Pattern\":\n        case \"Identifier\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLVal(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LVal> | null,\n): node is t.LVal {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"MemberExpression\":\n    case \"RestElement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n    case \"TSParameterProperty\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Pattern\":\n        case \"Identifier\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEntityName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEntityName> | null,\n): node is t.TSEntityName {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"TSQualifiedName\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Identifier\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Literal> | null,\n): node is t.Literal {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"TemplateLiteral\":\n    case \"BigIntLiteral\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImmutable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Immutable> | null,\n): node is t.Immutable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"BigIntLiteral\":\n    case \"JSXAttribute\":\n    case \"JSXClosingElement\":\n    case \"JSXElement\":\n    case \"JSXExpressionContainer\":\n    case \"JSXSpreadChild\":\n    case \"JSXOpeningElement\":\n    case \"JSXText\":\n    case \"JSXFragment\":\n    case \"JSXOpeningFragment\":\n    case \"JSXClosingFragment\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUserWhitespacable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UserWhitespacable> | null,\n): node is t.UserWhitespacable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n    case \"ObjectTypeInternalSlot\":\n    case \"ObjectTypeCallProperty\":\n    case \"ObjectTypeIndexer\":\n    case \"ObjectTypeProperty\":\n    case \"ObjectTypeSpreadProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Method> | null,\n): node is t.Method {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectMember> | null,\n): node is t.ObjectMember {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Property> | null,\n): node is t.Property {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectProperty\":\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n    case \"ClassPrivateProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryLike(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnaryLike> | null,\n): node is t.UnaryLike {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"UnaryExpression\":\n    case \"SpreadElement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Pattern> | null,\n): node is t.Pattern {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Pattern\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClass(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Class> | null,\n): node is t.Class {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportOrExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportOrExportDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ImportDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDeclaration> | null,\n): node is t.ExportDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleSpecifier> | null,\n): node is t.ModuleSpecifier {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportSpecifier\":\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n    case \"ExportNamespaceSpecifier\":\n    case \"ExportDefaultSpecifier\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAccessor(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Accessor> | null,\n): node is t.Accessor {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassAccessorProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Private> | null,\n): node is t.Private {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n    case \"PrivateName\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlow(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Flow> | null,\n): node is t.Flow {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"ArrayTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"BooleanLiteralTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"ClassImplements\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"DeclaredPredicate\":\n    case \"ExistsTypeAnnotation\":\n    case \"FunctionTypeAnnotation\":\n    case \"FunctionTypeParam\":\n    case \"GenericTypeAnnotation\":\n    case \"InferredPredicate\":\n    case \"InterfaceExtends\":\n    case \"InterfaceDeclaration\":\n    case \"InterfaceTypeAnnotation\":\n    case \"IntersectionTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NullableTypeAnnotation\":\n    case \"NumberLiteralTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"ObjectTypeAnnotation\":\n    case \"ObjectTypeInternalSlot\":\n    case \"ObjectTypeCallProperty\":\n    case \"ObjectTypeIndexer\":\n    case \"ObjectTypeProperty\":\n    case \"ObjectTypeSpreadProperty\":\n    case \"OpaqueType\":\n    case \"QualifiedTypeIdentifier\":\n    case \"StringLiteralTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"TupleTypeAnnotation\":\n    case \"TypeofTypeAnnotation\":\n    case \"TypeAlias\":\n    case \"TypeAnnotation\":\n    case \"TypeCastExpression\":\n    case \"TypeParameter\":\n    case \"TypeParameterDeclaration\":\n    case \"TypeParameterInstantiation\":\n    case \"UnionTypeAnnotation\":\n    case \"Variance\":\n    case \"VoidTypeAnnotation\":\n    case \"EnumDeclaration\":\n    case \"EnumBooleanBody\":\n    case \"EnumNumberBody\":\n    case \"EnumStringBody\":\n    case \"EnumSymbolBody\":\n    case \"EnumBooleanMember\":\n    case \"EnumNumberMember\":\n    case \"EnumStringMember\":\n    case \"EnumDefaultedMember\":\n    case \"IndexedAccessType\":\n    case \"OptionalIndexedAccessType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowType> | null,\n): node is t.FlowType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"ArrayTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"BooleanLiteralTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"ExistsTypeAnnotation\":\n    case \"FunctionTypeAnnotation\":\n    case \"GenericTypeAnnotation\":\n    case \"InterfaceTypeAnnotation\":\n    case \"IntersectionTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NullableTypeAnnotation\":\n    case \"NumberLiteralTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"ObjectTypeAnnotation\":\n    case \"StringLiteralTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"TupleTypeAnnotation\":\n    case \"TypeofTypeAnnotation\":\n    case \"UnionTypeAnnotation\":\n    case \"VoidTypeAnnotation\":\n    case \"IndexedAccessType\":\n    case \"OptionalIndexedAccessType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowBaseAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowBaseAnnotation> | null,\n): node is t.FlowBaseAnnotation {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"VoidTypeAnnotation\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowDeclaration> | null,\n): node is t.FlowDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowPredicate> | null,\n): node is t.FlowPredicate {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DeclaredPredicate\":\n    case \"InferredPredicate\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBody> | null,\n): node is t.EnumBody {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"EnumBooleanBody\":\n    case \"EnumNumberBody\":\n    case \"EnumStringBody\":\n    case \"EnumSymbolBody\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumMember> | null,\n): node is t.EnumMember {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"EnumBooleanMember\":\n    case \"EnumNumberMember\":\n    case \"EnumStringMember\":\n    case \"EnumDefaultedMember\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSX(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSX> | null,\n): node is t.JSX {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"JSXAttribute\":\n    case \"JSXClosingElement\":\n    case \"JSXElement\":\n    case \"JSXEmptyExpression\":\n    case \"JSXExpressionContainer\":\n    case \"JSXSpreadChild\":\n    case \"JSXIdentifier\":\n    case \"JSXMemberExpression\":\n    case \"JSXNamespacedName\":\n    case \"JSXOpeningElement\":\n    case \"JSXSpreadAttribute\":\n    case \"JSXText\":\n    case \"JSXFragment\":\n    case \"JSXOpeningFragment\":\n    case \"JSXClosingFragment\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMiscellaneous(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Miscellaneous> | null,\n): node is t.Miscellaneous {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Noop\":\n    case \"Placeholder\":\n    case \"V8IntrinsicIdentifier\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeScript(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeScript> | null,\n): node is t.TypeScript {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSParameterProperty\":\n    case \"TSDeclareFunction\":\n    case \"TSDeclareMethod\":\n    case \"TSQualifiedName\":\n    case \"TSCallSignatureDeclaration\":\n    case \"TSConstructSignatureDeclaration\":\n    case \"TSPropertySignature\":\n    case \"TSMethodSignature\":\n    case \"TSIndexSignature\":\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSFunctionType\":\n    case \"TSConstructorType\":\n    case \"TSTypeReference\":\n    case \"TSTypePredicate\":\n    case \"TSTypeQuery\":\n    case \"TSTypeLiteral\":\n    case \"TSArrayType\":\n    case \"TSTupleType\":\n    case \"TSOptionalType\":\n    case \"TSRestType\":\n    case \"TSNamedTupleMember\":\n    case \"TSUnionType\":\n    case \"TSIntersectionType\":\n    case \"TSConditionalType\":\n    case \"TSInferType\":\n    case \"TSParenthesizedType\":\n    case \"TSTypeOperator\":\n    case \"TSIndexedAccessType\":\n    case \"TSMappedType\":\n    case \"TSLiteralType\":\n    case \"TSExpressionWithTypeArguments\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSInterfaceBody\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSInstantiationExpression\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSEnumBody\":\n    case \"TSEnumDeclaration\":\n    case \"TSEnumMember\":\n    case \"TSModuleDeclaration\":\n    case \"TSModuleBlock\":\n    case \"TSImportType\":\n    case \"TSImportEqualsDeclaration\":\n    case \"TSExternalModuleReference\":\n    case \"TSNonNullExpression\":\n    case \"TSExportAssignment\":\n    case \"TSNamespaceExportDeclaration\":\n    case \"TSTypeAnnotation\":\n    case \"TSTypeParameterInstantiation\":\n    case \"TSTypeParameterDeclaration\":\n    case \"TSTypeParameter\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeElement> | null,\n): node is t.TSTypeElement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSCallSignatureDeclaration\":\n    case \"TSConstructSignatureDeclaration\":\n    case \"TSPropertySignature\":\n    case \"TSMethodSignature\":\n    case \"TSIndexSignature\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSType> | null,\n): node is t.TSType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSFunctionType\":\n    case \"TSConstructorType\":\n    case \"TSTypeReference\":\n    case \"TSTypePredicate\":\n    case \"TSTypeQuery\":\n    case \"TSTypeLiteral\":\n    case \"TSArrayType\":\n    case \"TSTupleType\":\n    case \"TSOptionalType\":\n    case \"TSRestType\":\n    case \"TSUnionType\":\n    case \"TSIntersectionType\":\n    case \"TSConditionalType\":\n    case \"TSInferType\":\n    case \"TSParenthesizedType\":\n    case \"TSTypeOperator\":\n    case \"TSIndexedAccessType\":\n    case \"TSMappedType\":\n    case \"TSLiteralType\":\n    case \"TSExpressionWithTypeArguments\":\n    case \"TSImportType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBaseType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBaseType> | null,\n): node is t.TSBaseType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSLiteralType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isNumericLiteral`\n */\nexport function isNumberLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberLiteral> | null,\n): boolean {\n  deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n  if (!node) return false;\n\n  if (node.type !== \"NumberLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRegExpLiteral`\n */\nexport function isRegexLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RegexLiteral> | null,\n): boolean {\n  deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n  if (!node) return false;\n\n  if (node.type !== \"RegexLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRestElement`\n */\nexport function isRestProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RestProperty> | null,\n): boolean {\n  deprecationWarning(\"isRestProperty\", \"isRestElement\");\n  if (!node) return false;\n\n  if (node.type !== \"RestProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isSpreadElement`\n */\nexport function isSpreadProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SpreadProperty> | null,\n): boolean {\n  deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n  if (!node) return false;\n\n  if (node.type !== \"SpreadProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isImportOrExportDeclaration`\n */\nexport function isModuleDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n  deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n  return isImportOrExportDeclaration(node, opts);\n}\n"],"mappings":"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","ignoreList":[]}
Index: imaps-frontend/node_modules/@babel/types/package.json
===================================================================
--- imaps-frontend/node_modules/@babel/types/package.json	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-frontend/node_modules/@babel/types/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,5 @@
 {
   "name": "@babel/types",
-  "version": "7.26.0",
+  "version": "7.26.5",
   "description": "Babel Types is a Lodash-esque utility library for AST nodes",
   "author": "The Babel Team (https://babel.dev/team)",
@@ -29,6 +29,6 @@
   },
   "devDependencies": {
-    "@babel/generator": "^7.26.0",
-    "@babel/parser": "^7.26.0",
+    "@babel/generator": "^7.26.5",
+    "@babel/parser": "^7.26.5",
     "glob": "^7.2.0"
   },
